Skip to content

CLI commands

dotfix <COMMAND>
CommandWhat it does
statusShow what differs between this machine and the repository
applyApply incoming changes and removals
adoptTake locally installed packages or edited configs into the repository
setsList or toggle this machine’s sets
doctorVerify the local setup
initSet up dotfix on this machine
Terminal window
dotfix status [--json] [--write-status-line] [--no-sync]

Prints everything in sync, or one line per difference. See Packages for what the markers mean.

OptionEffect
--jsonMachine-readable output
--write-status-lineWrite the shell status line instead of printing a report — this is what the hourly agent runs
--no-syncSkip the fetch-and-pull that normally runs first
Terminal window
dotfix apply [--dry-run] [--yes] [--no-sync]
OptionEffect
--dry-runShow what would happen; change nothing
--yesDo not ask for confirmation
--no-syncSkip the fetch-and-pull that normally runs first
Terminal window
dotfix adopt [--set <name>] [--yes] [--no-sync]

Walks each difference and offers what can be done about it. --set chooses which set adopted packages land in; without it, the machine’s first set is used.

Terminal window
dotfix sets
dotfix sets --enable <name>
dotfix sets --disable <name>
Terminal window
dotfix doctor [--install-agent]

Checks Homebrew, Git, the LaunchAgent, SSH key access, and whatever the machine’s secret provider needs. --install-agent writes the LaunchAgent plist.

Terminal window
dotfix init --set-up-new [--machine <name>] [--yes]
dotfix init --repo <url> [--machine <name>] [--yes]
OptionEffect
--set-up-newBuild a new repository from what is installed here
--repo <url>Clone an existing repository instead
--machine <name>Name this machine; you are prompted if omitted
--yesDo not ask for confirmation