Packages
dotfix manages Homebrew formulae and casks. It compares three things: what your sets ask for, what Homebrew reports as installed, and what dotfix itself last installed.
That third one is the point. A package dotfix installed and that is now gone was removed deliberately — dotfix says so instead of quietly putting it back. A package that appeared without dotfix is an invitation to adopt it, not drift to be wiped out.
Seeing what differs
Section titled “Seeing what differs”dotfix statusNothing differing prints everything in sync. Otherwise each line starts with a marker:
| Line | What it means |
|---|---|
+ ripgrep (install) | A set asks for it; Homebrew does not have it. |
? node (not in any set) | Installed here, in no set. Adopt it, or ignore it on this machine. |
? fzf (removed here — drop from set or reinstall) | dotfix installed it once and it is gone now. |
- htop (uninstall) | No active set asks for it any more. |
- htop (skipped, still required by ...) | Wanted gone, but another package depends on it. Left alone. |
Formulae are compared as Homebrew leaves — a package installed only as another one’s dependency was never your choice, so dotfix does not mention it.
Applying
Section titled “Applying”dotfix apply --dry-run # show what would happen, change nothingdotfix apply # ask, then do itdotfix apply --yes # skip the questionsInstalls what is missing and removes what is no longer wanted. --no-sync skips the fetch-and-pull that normally runs first.
Adopting what you installed by hand
Section titled “Adopting what you installed by hand”dotfix adoptdotfix walks the unmanaged packages and asks, one at a time, whether to add each to a set or ignore it on this machine. Ignoring is recorded in machines/<name>.toml, so the same package stops being mentioned on this Mac but stays visible on the others.
A package ignored on this Mac stays visible on the others — the decision is per machine, not repository-wide.
Next steps
Section titled “Next steps”- Sets — where adopted packages land.
- Files and shell configuration.