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
- Model: dotbot runs symlink +
shelldirectives top to bottom; Dotfiles Pro applies idempotently, so a re-run only changes what drifted. - Machine state: dotbot's
shelldirective and plugins can reach packages, but as imperative steps; Dotfiles Pro installs packages and configures the system declaratively. - Per-machine config: dotbot has no templating; Dotfiles Pro renders config from
host_vars/group_varswith Jinja. - Preview: Dotfiles Pro shows the diff before applying (
--diff); dotbot just runs.
When dotbot is the better choice
- You want a tiny, fast bootstrapper and your "everything else" is a few shell lines.
- You don't need idempotence or drift repair.
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.