BD Brian Detering Professor of Programming – University of Southern California
Productivity

Best Dotfile Managers for a Portable Dev Setup

Brian Detering
Brian Detering Tech Writer & Developer

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.

Brian Detering

About Brian Detering

Brian Detering is a software engineer, educator, and tech writer based in Los Angeles. He teaches programming and software engineering at the University of Southern California, where his work spans programming languages, systems architecture, and applied AI. With over a decade of hands-on experience building production systems, Brian writes about the tools and workflows that actually make developers more productive — from CI/CD pipelines and containerization to API testing and security best practices. When he's not teaching or writing code, he's usually benchmarking the latest dev tools or tinkering with homelab infrastructure.

Related Articles