Cross-platform dotfiles managed with chezmoi, targeting macOS (work) and Windows/WSL2 (personal).
| File | Description |
|---|---|
.zshrc |
Primary shell config — Powerlevel10k, plugins, lazy-loaded completions |
.zshenv |
Granted (AWS credential management) alias |
.gitconfig |
SSH commit signing, LFS, URL rewrites |
.ssh/config |
Per-host identity, macOS Keychain integration |
.p10k.zsh |
Powerlevel10k theme configuration |
.docker/config.json |
Registry auth, credential store |
.bashrc / .bash_profile |
Minimal — brew and cargo only |
.vimrc |
Vim configuration |
~/.local/share/chezmoi/
├── home/ # .chezmoiroot = home
│ ├── .chezmoi.yaml.tmpl # Auto-detects OS, sets SSH key name
│ ├── .chezmoiexternal.toml # Downloads plugins + theme archives
│ ├── .chezmoiignore # OS-specific file filtering
│ ├── .chezmoidata/packages.yaml # Homebrew packages per OS
│ ├── .chezmoiscripts/ # Package install scripts
│ └── dot_zshrc.tmpl # ... and other dotfile templates
└── README.md
Auto-detection — the config template detects the OS and derives settings automatically. No interactive prompts are needed:
- macOS: SSH key =
github_ed25519, Homebrew at/opt/homebrew, Android Studio JDK - WSL2: SSH key =
id_ed25519, Homebrew at/home/linuxbrew/.linuxbrew, keychain SSH agent, X11 display, clipboard aliases
Plugins are downloaded as archives via .chezmoiexternal.toml (no framework needed):
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply xunholychezmoi init --apply xunholy- Homebrew — packages are installed automatically via chezmoi scripts
- GPG key
095E47AA0B13BA84E7A4E8FB4D5665820FF1D266imported (for encrypted files) - SSH key in
~/.ssh/matching the OS default (github_ed25519on macOS,id_ed25519on WSL2)
chezmoi edit ~/.zshrc # Edit via template
chezmoi diff # Preview changes
chezmoi apply # Apply changes
chezmoi update # Pull + apply latest from remoteChanges are auto-committed and auto-pushed (configured in .chezmoi.yaml.tmpl).