- Shell 72.5%
- JavaScript 11.2%
- Vim Script 7%
- Lua 4.6%
- PowerShell 1.9%
- Other 2.8%
| .chezmoidata | ||
| .chezmoiscripts | ||
| .chezmoitemplates | ||
| .forgejo/workflows | ||
| .github/workflows | ||
| docs | ||
| dot_claude | ||
| dot_local/bin | ||
| dot_vim | ||
| dot_warp/themes | ||
| Library/private_Application Support/private_VSCodium/User | ||
| private_dot_config | ||
| private_dot_gnupg | ||
| private_dot_ssh | ||
| .chezmoi.toml.tmpl | ||
| .chezmoiexternal.toml.tmpl | ||
| .chezmoiignore | ||
| .chezmoiremove | ||
| .envrc | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| CLAUDE.md | ||
| dot_aliases.tmpl | ||
| dot_gitleaks.toml | ||
| dot_opencommit.tmpl | ||
| dot_p10k.zsh.tmpl | ||
| dot_screenrc | ||
| dot_tmux.conf | ||
| dot_zprofile.tmpl | ||
| dot_zshenv.tmpl | ||
| dot_zshrc.tmpl | ||
| LICENSE | ||
| README.md | ||
dotfiles
Personal dotfiles for macOS and Linux, managed by chezmoi.
Quick Start
sh -c "$(curl -fsSL get.chezmoi.io)" -- init --apply mauvehed
This downloads chezmoi, clones this repo, and runs the initial apply. On Linux, system packages (build-essential, zsh, Python build dependencies) are installed via apt first, then Homebrew, 1Password CLI, brew packages, and asdf runtimes are installed automatically.
Set Machine Type
After the first run, edit the chezmoi config to set the machine type:
chezmoi edit-config
Set personal = true or work = true, then re-apply:
chezmoi --force apply
Known hostnames (e.g. cypher, airblade, computah) are auto-detected and don't require manual config.
1Password Integration
Secrets are stored in 1Password and fetched via onepasswordRead in templates. After the initial apply:
eval $(op signin)
chezmoi apply
What's Managed
Shell
| Tool | Purpose |
|---|---|
| Zsh | Shell |
| oh-my-zsh | Shell framework and plugins |
| oh-my-posh | Prompt theme engine |
| fzf | Fuzzy finder with fd integration |
| zoxide | Smart cd replacement |
| eza | Modern ls replacement |
| bat | Cat replacement with syntax highlighting |
Shell Config Load Order
~/.zshenv- XDG dirs, GPG, asdf env vars~/.zprofile- Login shell (minimal)~/.zshrc- Homebrew, PATH, oh-my-zsh plugins, oh-my-posh, fzf, zoxide, asdf, 1Password SSH agent, iTerm2 integration, ssh-tmux wrapper, Python venv auto-activation~/.aliases- Alias aggregator (sources per-platform alias files)
Aliases
Aliases are composed from templates in .chezmoitemplates/:
aliases_all.tmpl- Cross-platform (docker, fzf, eza, bat, zoxide, tailscale, mosh)aliases_git.tmpl- Git shortcuts (ga, gb, gco, gd, gl, gp, gst)aliases_macos.tmpl- macOS-onlyaliases_linuxos.tmpl- Linux-only
Aliases use conditional checks to only activate when the target binary is present.
Dev Tools
| Tool | Purpose |
|---|---|
| asdf | Runtime version manager (Node.js, Python, Go) |
| direnv | Per-directory environment variables (via Homebrew) |
| Neovim | Editor with Lazy plugin manager |
| tmux | Terminal multiplexer with Dracula theme |
| git | With diff-so-fancy, SSH signing via 1Password |
Packages
Homebrew packages are defined in .chezmoidata/packages.yaml and installed via brew bundle. Packages are organized hierarchically:
core- Installed everywherepersonal.core/work.core- Machine-type specificdarwin/linux- OS-specificpersonal.darwin/personal.linux- Machine-type + OS specific
Managed Configs
~/.config/git/config- Global git config (SSH signing, diff-so-fancy, URL rewrites)~/.config/nvim/- Neovim with Lazy plugins~/.config/oh-my-posh/themes/- Custom prompt themes~/.config/iterm2/- iTerm2 profile and Dracula color scheme~/.config/btop/- btop with Dracula theme~/.claude/- Claude Code settings and hooks~/.ssh/- SSH config (keys from 1Password)~/.tmux.conf- tmux with TPM and Dracula theme
Custom Scripts (~/.local/bin/)
git-update- Batch-pull all repos under~/gitwork/*/*/*git-config- Set per-repo git user/email for multiple GitHub orgsgit-upstream- Git upstream managementbrew-update- Homebrew update wrappercrt.sh- Certificate transparency lookuprandkey- Random key generatorcheck_uptime.sh- Warn if uptime exceeds 60 daysfzf-git.sh- fzf git integration helpers
External Resources
Managed via .chezmoiexternal.toml.tmpl with auto-refresh:
- oh-my-zsh + zsh-syntax-highlighting plugin
- MesloLGS Nerd Font files
- fzf shell integrations
- tmux Plugin Manager (TPM)
- git-fuzzy
- Dracula eza color theme
Security
- Secrets are fetched from 1Password at apply time via
onepasswordRead - gitleaks runs via pre-commit hook and GitHub Actions
- Git commits are signed with SSH keys via 1Password
Command Reference
chezmoi diff # Preview changes before applying
chezmoi apply -v # Apply changes verbosely
chezmoi -R apply # Force refresh external resources
chezmoi edit <file> # Edit a managed file
chezmoi add <file> # Add a file to chezmoi
chezmoi add --template <file> # Add as a template
chezmoi execute-template < f.tmpl # Test template rendering
chezmoi data # View all template data
chezmoi update # git pull + chezmoi apply
chezmoi git status # Run git in chezmoi source dir