- Shell 59%
- TypeScript 41%
Avery's dotfiles #
chezmoi source for shell, Git, jj, desktop apps, and Claude Code (~/.claude) and Pi
(~/.pi/agent) configuration, shared across personal and work machines and agent sandboxes.
Set up a machine #
Install chezmoi and jq (chezmoi uses jq to merge the agents' settings.json), then:
chezmoi init --apply https://tangled.org/did:plc:i3trz6p74rllsbieb43tbhuh
init asks for the machine type and any per-machine settings that type needs, and saves the
answers to ~/.config/chezmoi/chezmoi.toml. Change them later with chezmoi edit-config, then
run chezmoi apply. What each machine type skips is listed in .chezmoiignore.
Claude Code, Pi, and (except on sandboxes) Homebrew are installed separately. If one is missing,
chezmoi apply still writes its config and tells you to apply again once it's installed.
Override settings #
Shared settings live in .chezmoidata/defaults.yaml. To override one on a single machine, set
the same key under [data] in chezmoi.toml:
[data.pi.providers.anthropic.models]
fast = "claude-sonnet-5-5"
- Overrides under
[data]survivechezmoi init, except the Git identity keys, whichinitdiscards; other sections ofchezmoi.tomldo not survive. - Lists replace the default as a whole, so an override must repeat the entries it keeps.
- Turning something off stops managing it but leaves it in place:
- A removed plugin or package stays installed. Uninstall it with
claude plugin uninstall <plugin>, or for a Pi package, runpi remove <source>beforechezmoi apply(afterwards it no longer finds the package in Pi's settings). - With
pi.webSearchUrl = "",~/.pi/agent/web-search.jsonstays; delete it by hand. - With
claude.otelEndpoint = "", the telemetry keys stay inenvin~/.claude/settings.json;chezmoi difflists them as untracked. Delete them by hand. - With
herdr = false, the integrations and~/.config/herdr/stay: runherdr integration uninstall claudeandherdr integration uninstall pi, then delete the directory.
- A removed plugin or package stays installed. Uninstall it with
Make changes #
Edit files in the source (chezmoi cd) and run chezmoi apply, or after changing a live file,
copy it back with chezmoi re-add <file>. re-add silently skips templates (*.tmpl) and the
settings.json files; edit those in the source. Don't chezmoi add a settings.json: that
replaces the merge with a copy of this machine's whole file.
chezmoi diff, status, and apply warn about two kinds of drift in a live settings.json:
values that differ from chezmoi's, which apply overwrites without asking, and settings chezmoi
doesn't track. Run chezmoi diff before apply to catch them; the warnings show what apply
replaces and say which file to change. To silence a key the app writes on its own, add it to
appKeys in that file's modify_settings.json.tmpl.
To push changes from a machine set up with the HTTPS URL, which is read-only, send pushes to the knot over SSH:
chezmoi git -- remote set-url --push origin git@knot.averyrive.rs:did:plc:i3trz6p74rllsbieb43tbhuh