You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Shell and terminal config, synced between my Mac (Ghostty) and remote dev VMs. GitHub Dark
Default theme everywhere, zsh with antidote, starship for the prompt, NvChad for editing.
Applied with chezmoi and mise. See
AGENTS.md for how to change things here.
brew install chezmoi # macOS, with Homebrew already present# or, on Linux:
sh -c "$(curl -fsLS get.chezmoi.io)" -- -b ~/.local/bin
chezmoi init --apply https://github.com/andyhite/dotfiles.git
chezmoi apply is safe to re-run any time: it installs what's missing and updates what's
already there. home/.chezmoidata/packages.yaml is the manifest for every installable
thing — CLI tools, language runtimes, Homebrew casks, apt packages, uv tools, herdr
plugins, gh extensions, cross-agent skills. See AGENTS.md for how to add an entry.
Thirteen scripts under home/.chezmoiscripts/ run in numbered order:
Script
Platform
What it does
run_onchange_before_05-apt.sh.tmpl
linux
apt-get update + install per via: apt entry
run_onchange_before_06-homebrew.sh.tmpl
darwin
fails with install instructions if brew isn't on PATH
run_onchange_before_10-mise.sh.tmpl
both
installs mise itself if missing
run_onchange_after_20-brew-bundle.sh.tmpl
darwin
brew bundle against every via: brew/via: cask entry
run_onchange_after_30-mise-install.sh.tmpl
both
mise install --yes for every via: mise entry
run_onchange_after_35-uv-tools.sh.tmpl
both
installs/upgrades every via: uv entry
run_once_after_40-installers.sh.tmpl
both
installs every via: installer entry
run_onchange_after_45-fontcache.sh.tmpl
linux
fc-cache -f on the Nerd Font directory
run_onchange_after_50-completions.sh.tmpl
both
generates zsh completions for tools carapace doesn't cover
applies this repo's chezmoi state on a remote host over ssh.
Making changes
Editing under home/ does not change the live machine — chezmoi copies on apply.
linked/ is live-symlinked into $HOME, so editing it changes the running config
immediately. See AGENTS.md for the edit loop. Commit and push, then
chezmoi update --apply (or just remote <host>) on the other machine.
Justfile is the single source of truth for checks; CI just calls its recipes.
Recipe
What it catches
just data
packages.yaml parses and every entry is well-formed
just templates
every *.tmpl under home/ renders for both platforms
just scripts
every provisioning script renders and passes shellcheck
just zsh-syntax
zsh -n on the zsh config files
just leakguard
work identifiers in tracked content
just gitleaks
token-shaped secrets in a git archive HEAD export
just brewfile
prints the Brewfile the brew-bundle script would generate