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/local or 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).