Migrating from GNU Stow to Chezmoi
Chezmoi vs GNU Stow and Simple Symlink Approaches
- Several users report bouncing off Stow multiple times but “sticking” with Chezmoi, citing better UX around copy/sync and templating despite some rough edges and feature bloat.
- Others consider Stow fine for
/usr/localor compiled software, but a hack for dotfiles. Some switched away from Chezmoi back to Stow or to plain symlinks + scripts, finding Chezmoi’s workflow (chezmoi edit, merge steps) annoying. - Templating and file naming in Chezmoi don’t “click” for everyone; some dislike that templates can break normal editor highlighting, though editor plugins exist.
- Chezmoi is praised for: permission management, cross-OS templating,
.chezmoiignore, and especially deep secrets-manager integration (1Password, Bitwarden,pass, etc.).
Nix, Home Manager, and Guix
- A strong contingent argues Nix + Home Manager is the most complete, reproducible approach to “system and user configuration,” not just dotfiles. Benefits cited: temporary dev shells, reproducible environments, fewer ad-hoc tools, packaging custom software, and even configuring entire NixOS machines.
- Others find Nix documentation fragmented and outdated, and say complexity appears when deviating from common cases. Some mention buggy or abandoned Nix packages.
- Several describe using AI tools to generate Nix configs, claiming this removes much of the learning pain.
- Critics note: Nix doesn’t work on Windows, feels overcomplicated for dotfiles alone, and loses much of its value if it can’t control the whole environment (e.g., in corporate macOS setups).
- Guix is mentioned as similar but limited by lack of macOS support.
Other Dotfile Strategies and Tools
- Popular alternatives: yadm (Git-centric, minimal abstraction), rcm, Janus (lighter Chezmoi-like), mise bootstrap features, Ansible, plain Makefiles, and bespoke shell scripts.
- Many users prefer “git repo + symlinks + small script,” valuing transparency, portability, and zero external dependencies. Some run continuous sync (e.g., with Syncthing) or rsync entire home directories with conventions about which side is authoritative.
- Opinions on symlinks split: some dislike edits going straight into the repo and causing cross-machine conflicts; others see this as a feature, with Git showing changes directly.
- Handling per-machine/per-OS variation is a key pain point: addressed via branches, host-specific directories, conditional shell logic, or templating (Chezmoi, Nix, or custom tools).