Skip to content

From Dotfile Managers

Dotfile managers focus on one job: keeping dotfiles in sync between a repo and your home directory. Dotkit does that too, but it is also responsible for installing tools and packages and running any other setup steps. If you already use a dotfile manager, you can keep it, wrap it, or replace its symlinking with dotkit link.

If your dotfile manager works well, don’t replace it. Call it from your dotkit file:

stow -t ~ dotfiles

or

chezmoi apply

This is not a special integration. dotkit link is an ordinary command in a dotkit file, exactly like stow is, and swapping one line for the other changes nothing else. Dotkit handles order and bootstrap; your existing tool handles symlinking.

Subfolders are never descended into automatically, so a dotfiles/ folder sitting in your kit is inert until something names it. To have your kit hold the files but not link them, simply don’t reference the folder.

Point dotkit link at the folder:

~/dotfiles/
.zshrc
.gitconfig
.config/nvim/init.lua
Terminal window
dotkit link ~/dotfiles

Every file is symlinked to the corresponding path under ~, mirroring the structure. Existing files are backed up with a timestamp before being replaced.

The destination defaults to ~. Pass a second argument for anywhere else.

  1. Copy your dotfiles into dotfiles/ inside your kit
  2. Add dotkit link dotfiles to your dotkit file
  3. Preview with dotkit link --dry-run dotfiles
  4. Apply with dotkit link dotfiles, or run the whole kit

Existing files are backed up automatically, and a second run reports everything ok and changes nothing.

Dotfile managersdotkit
Symlinks dotfilesYesYes, via dotkit link
Templating, encryptionOftenNo
Installs packages and toolsNoYes
Bootstraps a bare machineSometimesYes
Works inside a project repoRarelyYes, any directory with a .dotkit

The overlap is one command. Everything else is a different job, which is why keeping both is a reasonable answer rather than a compromise.