Managed with chezmoi. The repo is the chezmoi
source dir, kept at ~/dotfiles.
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --source ~/dotfiles --apply git@github.com:kylecoberly/dotfiles.git(chezmoi itself comes from brew on macOS; the bootstrap line above installs
it anywhere.)
dot_*,dot_config/— chezmoi source state, applied into$HOMErun_onchange_*.sh.tmpl— package installs + service wiring, re-run when their content (or embedded hashes) change.chezmoiexternal.toml— zsh plugins, cloned/refreshed by chezmoi (tmux plugins stay TPM-managed; tmux.conf bootstraps tpm itself)machine/— installer helpers and Brewfile (never applied to$HOME)theme/— Tokyo Night palette source;./theme/regenerate.shthenchezmoi applytests/—tests/run.shruns hook tests against a sandbox apply
- Config changes: edit in
~/dotfiles(orchezmoi edit),chezmoi apply; autoCommit/autoPush handle git. - Runtime-mutated files (Claude settings): captured by
chezmoi-sync(launchd/systemd, every 30 min) viachezmoi re-add, then pull+apply+push. Failures surface as⚠ syncin the Claude statusline; check~/.cache/chezmoi-sync/last-error. - karabiner.json: rules live in
machine/darwin/karabiner-base.json; amodify_script merges them with each machine's own device state at apply time, so multiple Macs never fight overdevices. - Claude plans (
ExitPlanModehook) and/save-artifactwrite into the Obsidian vault atzz_/plans|artifacts/<account>/<project>/— Obsidian Sync is their transport, not git. The account (personal/work) is detected from the active Claude login at save time.
The pre-chezmoi symlink layout is preserved on the legacy branch.