
Your dotfiles — shell config, git config, editor settings, tmux layout, aliases — represent years of accumulated workflow optimization. Losing them when you switch machines, or having different configs across your laptop and work computer, is frustrating. Dotfile managers keep your environment synchronized and version-controlled.
Why Manage Dotfiles
A well-managed dotfile setup means you can go from a fresh machine to your complete development environment in minutes instead of hours. It also means your personal machine and work machine behave identically, which eliminates the “wait, that alias exists on my other computer” problem.
Combined with a dev environment manager like devbox or Nix, dotfiles complete the picture — the environment manager handles tool versions and the dotfile manager handles configuration.
chezmoi
chezmoi is the most feature-rich dotfile manager. It uses a source directory (managed by git) and applies files to your home directory with templating support. Templates let you customize configs per machine — different email in git config for work vs personal, different font size for laptop vs external monitor.
The templating system uses Go templates with access to machine-specific variables (hostname, OS, architecture) and custom data you define. A single git repo produces the right config for every machine without maintaining separate branches.
Secret management is built in. chezmoi integrates with 1Password, Bitwarden, Vault, and system keychains. Secrets in your dotfiles (API tokens, SSH keys) are encrypted in the repository and decrypted on apply. This means your dotfile repo can be public without exposing credentials.
The edit-apply workflow is clean: chezmoi edit ~/.zshrc opens the source template, you make changes, and chezmoi apply updates the actual files. Diff before apply shows exactly what will change.
Best for
Developers who need templating for multi-machine setups and want built-in secret management. The most complete solution for complex dotfile requirements.
GNU Stow
GNU Stow is the simplest approach — it creates symlinks from a structured directory to your home directory. Organize your dotfiles into packages (git, vim, tmux, zsh), and Stow creates the right symlinks with a single command.
The advantage is transparency. There is no template engine, no special format, no abstraction layer. Your dotfiles are plain files in a git repository, and Stow just points your home directory at them. If you understand symlinks, you understand Stow.
The limitation is exactly that simplicity. No templating means no per-machine customization without maintaining branches or manual conditionals in your shell config. No secret management means credentials stay in plaintext or you handle encryption separately.
Best for
Developers who want the simplest possible dotfile management. Single-machine setups or machines with identical configurations. A good starting point before investing in a more complex tool.
yadm
yadm wraps git to manage dotfiles in place — without symlinks or a separate source directory. Your home directory becomes the git repo (with a custom git directory to avoid conflicts), and you manage files with standard git commands. yadm add ~/.zshrc, yadm commit, yadm push.
Alternate files provide per-machine customization without templates. Create .zshrc##os.Darwin and .zshrc##os.Linux, and yadm uses the right one automatically based on the OS. The system supports hostname, distro, and custom class conditions.
yadm also supports encryption for sensitive files using GPG or OpenSSL. Add files to .config/yadm/encrypt and they are encrypted before being pushed to the remote repository.
Best for
Developers comfortable with git who want minimal tooling overhead. The git-native approach means no new commands to learn — just regular git with dotfile-specific extensions.
Verdict
chezmoi is the best overall. Templating, secret management, and the edit-apply workflow handle the complexity of real multi-machine developer setups.
GNU Stow is the best minimal option. If your needs are simple and you value transparency over features, Stow does the job with no learning curve.
yadm is the best for git-native workflows. If you think in git commands and want dotfile management that feels like regular git, yadm is the right fit.
Whatever you choose, the important step is starting. Get your dotfiles into a git repository today. Even without a manager, having a backup and history of your configuration is invaluable. It is a foundational part of any developer productivity setup.