Skip to main content

Reconcile behavior

Each package source has a different convergence model. The important question is whether removed declarations also remove installed tools.

Manager behavior

ManagerInstalls / updatesRemoves when deleted from list?Notes
Homebrewbrew bundle --global --no-upgradeYes, via brew bundle cleanup --global --forceassembled Brewfile is authoritative; installs missing only (upgrades owned by ,update)
misemise install --yes, then mise reshimNo cleanup of old runtimes by this hookrespects project .tool-versions; Node reads .nvmrc
Cargoinstalls missing cratesYeshook uninstalls crates no longer listed
Goinstalls missing module binariesYes, but only binaries this tooling installedstate ledger at ~/.cache/chezmoi/golang-pkgs-state protects hand-installed binaries
Ruby gemsinstalls listed gemsNohook does not uninstall gems removed from the list
pnpminstalls missing globals, uninstalls absent globals, upgrades latestYeskeeps unpinned globals on the newest release; rebuilds the stable link tree
uv Pythoninstalls listed managed Python versionsYeshook uninstalls managed Python versions absent from home/readonly_dot_python-version
uv toolsinstalls listed global toolsmanaged by uv tool hooktool source is home/readonly_dot_default-uv-tools.tmpl
gh extensionsinstalls managed extensionsYeshook prunes extensions no longer listed
Custom packagesdownloads GitHub release assets, DMGs, or source buildsPartialstale launchers/repos are cleaned when safe; dirty source repos are preserved

Notable package decisions

DecisionReason
Homebrew link: false for colliding sem binariesGNU parallel and Ataraxy semantic-git both expose sem; wrappers expose the intended ,parallel and ,sem commands
Pi globals live in pnpm@earendil-works/pi-coding-agent, @earendil-works/pi-tui, pi-mcp-adapter, and pi-subagents are kept together in the managed pnpm list
Custom installer includes ytsurfinstalled outside standard package managers in this setup
git_maven_jar rows are declarativeadd/update rows clone/build/install; removed clean repos are deleted; dirty stale repos are preserved
zip_opt keeps sibling dylibszip extracts to ~/.local/opt/<name>/; removing the row does not delete that directory
FLUX.2 klein weights are command-only,image-local sync downloads ~15 GB; chezmoi apply never pulls them (not gated on downloadLlamaCppModels)

Where to make changes

GoalStart here
Add or remove a Homebrew packageAdd a Homebrew package
Pin a runtimePin a tool version
Add a language-specific CLICargo / Go / Ruby / pnpm / uv recipe pages
Add a GitHub release binary or DMGCustom packages registry
Add a llama.cpp GGUFAdd a llama.cpp model
Wire local FLUX.2 kleinAdd FLUX.2 klein