yadm alternative: Dotfiles Pro
yadm (Yet Another Dotfiles Manager) wraps git to version the files in your $HOME directly, with alternates for per-machine variants, templating, and built-in encryption. Dotfiles Pro is broader: an Ansible collection that manages the whole machine (packages, system configuration, cloned repositories, and dotfiles) for one laptop or a fleet.
yadm is a great fit if git-tracked home-directory files are all you need. Dotfiles Pro is for when the machine around those files (what's installed, configured, and cloned) has to be managed too.
yadm vs Dotfiles Pro
yadm is git plus a wrapper over the files in your $HOME; Dotfiles Pro is a local Ansible run over the whole machine. Packages and system state are the clearest split. yadm installs nothing itself, but it does give you a hook: yadm bootstrap executes a program you write at ~/.config/yadm/bootstrap, so package installs end up in your own shell script. Dotfiles Pro installs packages and configures services, wsl.conf, and more as declared state that a re-run repairs.
Secrets and teams split the same way. yadm ships built-in encryption but no password-manager integration, where Dotfiles Pro delegates secrets to the bitwarden role or ansible-vault. And yadm has no team model at all, while Dotfiles Pro delivers a shared baseline as a collection each person pulls into their own config repo.
When yadm is the better choice
- You want git history over every change to your home-directory files.
- You don't need packages or system state managed.
- A single self-contained tool with built-in encryption appeals.
When to choose Dotfiles Pro
- Packages, services, and repositories belong in the same apply as your dotfiles.
- Your several machines run from one config repo, and a team can share a baseline collection on top.
- You're on Ubuntu, macOS, or WSL.
Migrating from yadm
Move incrementally: verbatim files go in the dotfiles role's dotfiles_list, structured config (git identity, aliases) becomes vars, templated files host_vars / group_vars and Jinja, shell config a ~/.profile.d/ drop-in. Run both until the playbook owns everything.
See the full alternatives comparison for the scored tables.