These are my personal dotfiles, managed using chezmoi.
Omarchy Linux (Hyprland) is the source of truth, and changes are synced to macOS.
Everything lives in ~/.local/share/chezmoi, but chezmoi transparently manages $HOME.
# Install chezmoi
brew install chezmoi # macOS
sudo pacman -S chezmoi # Arch/Omarchy
# Initialize from repo
chezmoi init ciryon --branch master
# Review changes before applying
chezmoi diff
chezmoi apply- Edit a dotfile in
$HOMEor withchezmoi edit <path>. - If you edited in
$HOME, bring it into chezmoi:chezmoi add ~/.config/bash/aliases.sh - Commit & push:
chezmoi git add -A chezmoi git commit -m "update: aliases" chezmoi git push
chezmoi update # does git pull + apply
source ~/.zshrc # reload aliases/env if neededchezmoi update- Linux-only configs (Hyprland, Waybar, Rofi, Mako, Walker, etc.) live under
.config/and should be wrapped with:{{ if eq .chezmoi.os "linux" }} # linux-specific config {{ end }} - macOS-only apps (Raycast, iTerm2, etc.) are ignored via
.chezmoiignore.
dot_bashrc,dot_bash_profile: thin shims → load from~/.config/bash/*.shdot_config/bash/: modular bash configscommon.sh(env, exports)aliases.sh(aliases)node.sh(npm / nvm / AWS CodeArtifact helpers)secrets.sh(sources~/.secretsif present, not in git)
dot_config/nvim/: Neovim config (Lua)dot_config/git/,dot_gitconfig: Git configdot_config/hypr/,dot_config/waybar/: Hyprland setup (Linux only)dot_config/kitty/(orghostty/oralacritty/): terminal config
Secrets are never in the repo.
~/.config/bash/secrets.shsources~/.secretsif present..chezmoiignoreexcludes.secrets, SSH keys, GnuPG, and app credentials.
# Example in secrets.sh
[[ -r "$HOME/.secrets" ]] && source "$HOME/.secrets"- Show what’s managed:
chezmoi managed
- Show what would change:
chezmoi diff
- Verify everything matches:
chezmoi verify
- Apply only one file:
chezmoi apply ~/.config/bash/aliases.sh - Open the source repo:
chezmoi cd
# On Linux
chezmoi add <path> # if edited directly in $HOME
chezmoi git add -A
chezmoi git commit -m "message"
chezmoi git push
# On Mac
chezmoi update
source ~/.zshrc # reload shell if aliases/env changed(less common, same idea)
# On Mac
chezmoi add <path>
chezmoi git add -A
chezmoi git commit -m "message"
chezmoi git push
# On Linux
chezmoi update# On editing machine
chezmoi add <file> && chezmoi git add -A && chezmoi git commit -m "msg" && chezmoi git push
# On receiving machine
chezmoi update