~/.gitconfig) across multiple machines.
chezmoi is helpful if you have spent time customizing the tools you use (e.g. shells, editors, and version control systems) and want to keep machines running different accounts (e.g. home and work) and/or different operating systems (e.g. Linux, macOS, and Windows) in sync, while still being able to easily cope with differences from machine to machine.
When should you use chezmoi?
chezmoi scales from the trivial to the complex:- Simple use cases: Copying a few dotfiles onto a Raspberry Pi, development container, or virtual machine
- Complex environments: Keeping any number of home and work, Linux, macOS, and Windows machines in sync
curl, wget, or scp).
Key features
Flexible
You can share as much configuration across machines as you want, while still being able to control machine-specific details.Template support
Your dotfiles can be templates using Go
text/template syntax. Predefined variables allow you to change behavior depending on operating system, architecture, and hostname.Cross-platform
Runs on all commonly-used platforms like Linux, macOS, and Windows, plus less common ones like FreeBSD, OpenBSD, and Termux.
Personal and secure
Nothing leaves your machine, unless you want it to. Your configuration remains in a git repo under your control.Password manager integration
Password manager integration
chezmoi can retrieve secrets from:
- 1Password
- AWS Secrets Manager
- Azure Key Vault
- Bitwarden
- Dashlane
- Doppler
- gopass
- KeePassXC
- Keeper
- LastPass
- pass
- passage
- passhole
- Proton Pass
- Vault
- macOS Keychain
- GNOME Keyring
- Any command-line utility of your choice
File encryption
File encryption
You can encrypt individual files with GnuPG or age. You can checkout your dotfiles repo on as many machines as you want without revealing any secrets to anyone.
Configuration format
Configuration format
You can write the configuration file in the format of your choice (TOML, JSON, YAML, etc.).
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 use chezmoi in the future, it is easy to move your data elsewhere.
Declarative and robust
Declare desired state
You declare the desired state of files, directories, and symbolic links in your source of truth.
Fast and easy to use
Using chezmoi feels like using git: the commands are similar and chezmoi runs in fractions of a second.Common one-line operations
What you get is what you want
With chezmoi, you declare the desired state and chezmoi makes it happen. The declarative approach means:- Predictable outcomes: What you specify is what you get
- Idempotent operations: Running commands multiple times produces the same result
- Safe experimentation: Dry run mode (
-n) and verbose mode (-v) let you preview changes - Version control: All changes are tracked in git, giving you a complete history
Ready to get started? Check out the Quick Start guide to install and configure chezmoi.