Comparison Guide #
Comparison table #
|Distribution||Single binary||Python package||Multiple files||Ruby gem||Single script||n/a|
|Install method||Multiple||git submodule||Multiple||Ruby gem||Multiple||n/a|
|Non-root install on bare system||Yes||Difficult||Difficult||Difficult||Yes||Yes|
|Bootstrap requirements||git||Python, git||Perl, git||Ruby, git||git||git|
|Show differences without applying||Yes||No||No||No||Yes||Yes|
|Whole file encryption||Yes||No||No||No||Yes||No|
|Password manager integration||Yes||No||No||No||No||No|
|Machine-to-machine file differences||Templates||Alternative files||Alternative files||Alternative files||Templates||Manual|
|Custom variables in templates||Yes||n/a||n/a||n/a||No||No|
|File creation with initial contents||Yes||No||No||No||No||No|
|Run once scripts||Yes||No||No||No||Manual||No|
|Machine-to-machine symlink differences||Yes||No||No||No||Yes||No|
I already have a system to manage my dotfiles, why should I use chezmoi? #
If you’re using any of the following methods:
- A custom shell script.
- An existing dotfile manager like homeshick, homesick, rcm, GNU Stow, or yadm.
- A bare git repo.
Then you’ve probably run into at least one of the following problems.
…if coping with differences between machines requires special care #
If you want to synchronize your dotfiles across multiple operating systems or distributions, then you may need to manually perform extra steps to cope with differences from machine to machine. You might need to run different commands on different machines, maintain separate per-machine files or branches (with the associated hassle of merging, rebasing, or copying each change), or hope that your custom logic handles the differences correctly.
chezmoi uses a single source of truth (a single branch) and a single command that works on every machine. Individual files can be templates to handle machine to machine differences, if needed.
…if you need to think for a moment before giving anyone access to your dotfiles #
If your system stores secrets in plain text, then you must be very careful about where you clone your dotfiles. If you clone them on your work machine then anyone with access to your work machine (e.g. your IT department) will have access to your home secrets. If you clone it on your home machine then you risk leaking work secrets.
With chezmoi you can store secrets in your password manager or encrypt them, and even store passwords in different ways on different machines. You can clone your dotfiles repository anywhere, and even make your dotfiles repo public, without leaving personal secrets on your work machine or work secrets on your personal machine.
…if your needs are outgrowing your current tool #
If your system was written by you for your personal use, then it probably has the minimum functionality that you needed when you wrote it. If you need more functionality then you have to implement it yourself.
chezmoi includes a huge range of battle-tested functionality out-of-the-box, including dry-run and diff modes, script execution, conflict resolution, Windows support, and much, much more. chezmoi is used by thousands of people, so it is likely that when you hit the limits of your existing dotfile management system, chezmoi already has a tried-and-tested solution ready for you to use.
…if setting up your dotfiles requires more than two short commands #
If your system is written in a scripting language like Python, Perl, or Ruby, then you also need to install a compatible version of that language’s runtime before you can use your system.
chezmoi is distributed as a single stand-alone statically-linked binary with no dependencies that you can simply copy onto your machine and run. chezmoi provides one-line installs, pre-built binaries, packages for Linux and BSD distributions, Homebrew formulae, Scoop and Chocolatey support on Windows, and a initial config file generation mechanism to make installing your dotfiles on a new machine as painless as possible.