Dotfiles¶
Daily-use lifecycle for this dotfiles install — update, apply, dry-run, check-updates, plus the verify health check.
Operations on the installed state, not the source.
For maintainer work (tests, contract specs, smoke tests, docs site, hook infra) reach for the maint:: subtree —
just maint <module> <recipe> (e.g. just maint test bats test, just maint test contract test).
Common workflows¶
Top-level just update is the routine system refresh — it chains dotfiles::update, sys::pm::update (refresh +
install on every detected package manager), and dotfiles::verify.
update (this module) is the chezmoi-side slice: checks pinned external plugins for newer GitHub releases, upgrades the
chezmoi binary itself, then pulls the latest dotfiles via chezmoi update. OS package refresh lives in sys::pm::*.
check-updates compares the version tags pinned in .chezmoiexternals/externals.toml.tmpl against the latest GitHub
release (or tag) for each plugin. It does not change anything — use it to decide whether to bump tags manually.
apply writes chezmoi's current source state to your home. dry-run shows what would change.
verify checks that core binaries are on $PATH, Brewfile dependencies are satisfied, shell config files and zshrc.d
modules exist, Oh My Zsh plugins are installed, and the git hook layer is wired up — .pre-commit-config.yaml,
.commitlintrc.yaml, the .betterleaks.toml symlink and its personal-config target, plus the pre-commit framework's
dispatcher scripts at .git/hooks/<stage>. A failure means something is missing or broken — read the output to see
which check failed. The maint::test orchestrator shells out to the same dotfiles-verify.sh script, so this is the
single source of truth.
For destructive teardown (remove all chezmoi-managed files + state), see just maint purge — it's a framework-level
operation, not a routine lifecycle one.