How dot compares
How dot differs from chezmoi, yadm, GNU Stow and classic dotfiles repos, and when another tool fits better.
Most dotfiles tools manage files: they put your configuration files in place on each machine. dot manages a Mac: files are one part, and the rest is system preferences, apps, tools and logins, each checked against what you declared.
At a glance
| dot | chezmoi | yadm | GNU Stow | Classic repo | |
|---|---|---|---|---|---|
| Manages | a Mac: preferences, apps, files, logins | files | files | files (symlinks) | files, plus scripts |
| Declares | one line per setting | file templates | files in git | a folder per package | whatever the scripts do |
| Shows drift | dot check, setting by setting |
chezmoi diff, for files |
yadm status, for files |
no | no |
| Applies | only what differs | files | files | links | reruns the scripts |
| Secrets | 1Password, by reference | password managers, in templates | encrypted files | no | no |
| Platforms | macOS | many | many | many | usually one |
chezmoi
chezmoi manages dotfiles across many machines, with templates for the differences between them and integrations with password managers. Choose it if you work across Linux, macOS and Windows, or if your problem is mostly files that vary per machine. dot is macOS only, and treats preferences and apps as first-class, not as scripts.
yadm
yadm is git for your home folder, with alternate files per machine, encryption and a bootstrap script. It suits people who want git to be the whole tool. In dot, git holds the repo, and the Mac’s state is checked setting by setting.
GNU Stow
GNU Stow links files from folders into
your home folder. dot does the same for the files it owns
(config/home/), and adds everything that isn’t a file.
Classic dotfiles repos
Repos such as mathiasbynens/dotfiles or holman/dotfiles are collections of
files and scripts: a bootstrap script and a .macos script of defaults write commands, run by hand. They’re great to read and borrow from. dot
keeps the same spirit (a repo you fork and own) but declares the result
instead of scripting the steps, so it can tell you what drifted and fix only
that.
When dot fits
- You use a Mac, and want a new one to become yours in one step.
- You want to know when your Mac drifts from what you chose.
- You want project secrets out of
.envfiles, and logins without tokens on disk. - You work with coding agents and want them to inspect your setup safely.