Skip to content

init [repo]

Setup the source directory, generate the config file, and optionally update the destination directory to match the target state.

By default, if repo is given, chezmoi will guess the full git repo URL, using HTTPS by default, or SSH if the --ssh option is specified, according to the following patterns:

Pattern HTTPS Repo SSH repo
site/user/repo https://site/user/repo.git git@site:user/repo.git

To disable git repo URL guessing pass the --guess-repo-url=false option.

First, if the source directory is not already contain a repository, then if repo is given it is checked out into the source directory, otherwise a new repository is initialized in the source directory.

Second, if a file called .chezmoi.$FORMAT.tmpl exists, where $FORMAT is one of the supported file formats (e.g. json, toml, or yaml) then a new configuration file is created using that file as a template.

Then, if the --apply flag is passed, chezmoi apply is run.

Then, if the --purge flag is passed, chezmoi will remove its source, config, and cache directories.

Finally, if the --purge-binary is passed, chezmoi will attempt to remove its own binary.


Run chezmoi apply after checking out the repo and creating the config file.

--branch branch

Check out branch instead of the default branch.

--config-path path

Write the generated config file to path instead of the default location.

--data bool

Include existing template data when creating the config file. This defaults to true. Set this to false to simulate creating the config file with no existing template data.

--depth depth

Clone the repo with depth depth.

--guess-repo-url bool

Guess the repo URL from the repo argument. This defaults to true.


--one-shot is the equivalent of --apply, --depth=1, --force, --purge, and --purge-binary. It attempts to install your dotfiles with chezmoi and then remove all traces of chezmoi from the system. This is useful for setting up temporary environments (e.g. Docker containers).


Remove the source and config directories after applying.


Attempt to remove the chezmoi binary after applying.


Guess an SSH repo URL instead of an HTTPS repo.


$ chezmoi init user
$ chezmoi init user --apply
$ chezmoi init user --apply --purge
$ chezmoi init user/dots
$ chezmoi init
$ chezmoi init
Back to top