Skip to content
StikyPiston edited this page Dec 19, 2025 · 4 revisions

Keep Management

This page deals with all there is to know about managing your Keeps in Dotkeeper.

Keep Basics

This section will cover the basics of Keeps

Structure of a Keep

A keep's structure is as such:

<keep name>
├── config/
└── keep.json

The config directory is likely where you will store your dotfiles, but you can call it whatever you want.
The keep.json file is what's called the Keep Manifest file. It defines what files are stored in your keep, and where they must be symlinked to.

That means that Dotkeeper is not just a dotfile manager, it's a flexible, easy-to-use Symlink farm that allows you to pretty much manage anything.

Structure of a Manifest

The keep manifest file (keep.json) is written in JSON. This makes the file easy to write, read, and understand, and makes the formatting very flexible.

The following is an example of a keep.json file:

{
	"links": [
		{ "source": "config/directory1", "target": "~/.config/directory1" },
		{ "source": "config/directory2", "target": "~/.config/directory2" }
	]
}

The format for defining symlinks is { "source": "<source relative to the keep's root>", "target": "<where it must be symlinked to>" }

Going Further

Do you want to use the same keep across multiple systems, but want a different config for certain programs on each system. Well, may I interest you in hSpecs, or Hostname-based Specialisations. See the wiki page for it!

If you like using Dotkeeper, please give it a star! It really helps out.
GitHub Repo stars

Clone this wiki locally