Dotbot alternative: Dotfiles Pro
Dotbot bootstraps your dotfiles from a YAML config: it creates symlinks and runs shell commands, with a small plugin ecosystem. It's a capable installer, but it's imperative glue: it runs your setup rather than applying to a declared state. Dotfiles Pro is an idempotent Ansible run that owns the whole machine: packages, system config, repositories, and dotfiles.
Dotbot vs Dotfiles Pro
Dotbot's link and create directives are re-runnable, but shell directives run top to bottom and are only as repeatable as you write them. Dotfiles Pro applies idempotently across packages and system state too, so a re-run only changes what drifted. That same shell directive and the plugin ecosystem do reach packages, just as imperative steps; Dotfiles Pro installs packages and configures the system declaratively.
Two smaller gaps: Dotbot has no templating, where Dotfiles Pro renders config from host_vars / group_vars with Jinja, and Dotbot just runs, where Dotfiles Pro shows you the diff first (--diff).
When Dotbot is the better choice
- You want a tiny, fast bootstrapper and your "everything else" is a few shell lines.
- Your
shellsteps are already safe to re-run, and you don't need drift repair beyond symlinks.
When to choose Dotfiles Pro
- Your
shelldirectives have grown into an unmanagedsetup.sh. - Packages and system state should be declared, not scripted.
- You want idempotent re-runs and per-machine config from one repository.
Migrating from Dotbot
Symlink directives become dotfiles_list entries for the dotfiles role, which links them the same way; shell directives become proper role tasks (apt installs, command/copy/template). Move one piece at a time and run both until the playbook owns everything. The bootstrap-repo migration guide walks the same shape.
See the full alternatives comparison for the scored tables.