Manage your dotfiles across multiple machines, securely.
-
Flexible: You can share as much configuration across machines as you want, while still being able to control machine-specific details. You only need to maintain a single branch. Your dotfiles can be templates (using
text/template
syntax). Predefined variables allow you to change behaviour depending on operating system, architecture, and hostname. -
Personal and secure: Nothing leaves your machine, unless you want it to. You can use the version control system of your choice to manage your configuration, and you can write the configuration file in the format of your choice.
chezmoi
can retrieve secrets from 1Password, Bitwarden, LastPass, pass, Vault, your Keychain (on macOS), GNOME Keyring (on Linux), or any command-line utility of your choice. You can encrypt individual files withgpg
. You can checkout your dotfiles repo on as many machines as you want without revealing any secrets to anyone. -
Transparent:
chezmoi
includes verbose and dry run modes so you can review exactly what changes it will make to your home directory before making them.chezmoi
's source format uses only regular files and directories that map one-to-one with the files, directories, and symlinks in your home directory that you choose to manage. If you decide not to usechezmoi
in the future, it is easy to move your data elsewhere. -
Robust:
chezmoi
updates all files and symbolic links atomically (usinggoogle/renameio
). You will never be left with incomplete files that could lock you out, even if the update process is interrupted. -
Declarative: you declare the desired state of files, directories, and symbolic links in your home directory and
chezmoi
updates your home directory to match that state. What you want is what you get. -
Fast and easy to use:
chezmoi
runs in fractions of a second and makes most day-to-day operations one line commands.
-
If your system is based on copying files with a shell script or creating symlinks (e.g. using GNU Stow) then handling files that vary from machine to machine requires manual work. You might need to maintain separate config files for separate machines, or run different commands on different machines.
chezmoi
gives you a single command that works on every machine. -
If your system is based on using
git
with a different branches for different machines, then you need manually merge or rebase to ensure that changes you make are applied to each machine.chezmoi
makes it trivial to share common parts while allowing specific per-machine configuration. -
If your system stores secrets in plain text, then your dotfiles repository must be private. With
chezmoi
you never need to store secrets in your repository, so you can make it public. You can check out your repository on your work machine and not fear that this will give your work IT department access to your personal data. -
If your system was written by you for your personal use, then it probably has the minimum functionality that you need.
chezmoi
includes a wide range of functionality out-of-the-box, including dry run and diff modes. -
All systems suffer from the "bootstrap" problem: you need to install your system before you can install your dotfiles.
chezmoi
provides statically-linked binaries, packages for many Linux and BSD distributions, Homebrew formulae, and a initial config file generation mechanism to make overcoming the bootstrap problem as painless as possible.
chezmoi
includes five types of documentation:
- A tutorial guide for getting started with
chezmoi
. - A how-to guide for achieving specific tasks with
chezmoi
. - An FAQ for questions that aren't obvious.
- An explanation for understanding how
chezmoi
works. - A reference for a complete description of
chezmoi
.
See dotfiles.github.io
.
MIT