Guides
Install
Set up on macOS, Linux, or WSL in 3 to 5 minutes.
You will need: git and curl.
Default shell: Fish, for the shell Ghostty and Zellij start. Your login shell is not changed unless you ask for it (see below).
Install
Download and SHA256-verify the release-pinned installer using the canonical command in the root README, then:
Then restart your terminal or run exec $SHELL.
Verify
Choose a shell
Fish is the default shell. To switch to Zsh or Nushell, set default_shell in the [data] section of this host's ~/.config/chezmoi/chezmoi.toml (the default lives in ~/.dotfiles/defaults/.chezmoidata.toml):
[data]
default_shell = "zsh"
Supported values: zsh, fish, nu.
Then apply the change:
default_shell picks the shell that Ghostty and Zellij launch. To also make Fish or Zsh your login shell, run the installer with --provision and DOTFILES_SET_FISH=1 or DOTFILES_SET_ZSH=1, or run chsh -s "$(command -v zsh)" yourself.
Feature flags
Turn optional tools on or off after setup. Override the defaults from defaults/.chezmoidata.toml in this host's ~/.config/chezmoi/chezmoi.toml:
[data.features]
zellij = true # Zellij multiplexer config
linux_desktop = true # Linux desktop / Wayland configs
niri = true # niri compositor config
ai_theme_sync = false # Wallpaper-aware AI CLI appearance
See Features for every flag. Run dot apply afterwards.
Update
Next steps
- Run
dot help tourto take a guided tour. - Add your own tweaks in
~/.zshrc.local(or files in~/.config/zsh/rc.d.local/),~/.bashrc.local, or~/.config/fish/config.fish.local. They are sourced if present and are not managed by chezmoi. - Read the Utilities and
dotCLI reference.
Advanced
Local source install
Clone the repo first, then run the installer from your local copy:
Minimal install
Select the minimal profile in this host's ~/.config/chezmoi/chezmoi.toml (the tracked source is not edited) and skip toolchain provisioning, even when --provision is also given:
Non-interactive install
Use this mode for CI or scripts that run without user input:
# After the verified download above:
DOTFILES_SILENT=1 DOTFILES_NONINTERACTIVE=1 \
Nix
Offline bundle
On a machine with internet access, create a bundle:
The archive holds ~/.dotfiles, ~/.config/chezmoi and ~/.local/share/mise (plus the Nix store with DOTFILES_BUNDLE_NIX=1). It leaves out your age key: any file in ~/.config/chezmoi that holds an age secret key, usually key.txt. The command names each one it left out; copy it to the target machine separately, since it decrypts every secret. The archive stores absolute paths: extract it as a user with the same home directory path, and note that extraction overwrites files already at those paths.
Copy the archive to the target machine. Then unpack and install:
Uninstall
dot config uninstall removes the checkout, chezmoi's config, state and cache, and the dotfiles caches and logs, but keeps your age key in ~/.config/chezmoi and names it. To remove things by hand instead, note that chezmoi purge deletes ~/.config/chezmoi, the age key with it: copy the key somewhere safe first if you still need to decrypt secrets encrypted to it.
Signed contributions
All commits must be signed. See Contributing for details.