Getting started

Install

The AiCE-Lab tap serves every tool we publish, so one tap covers envkit and devlog both.

brew tap aice-lab/tap https://gitlab.com/aice-lab/homebrew-tap.git
brew install envkit

On Linux this also installs pass, which envkit uses as the keychain.

Create a store

The store is a private git repository holding your dotfiles. It is separate from envkit itself, and it is yours.

# on your git host, create an empty PRIVATE repo, then:
git clone git@gitlab.com:you/dotfiles.git ~/dotfiles

Point envkit at it

envkit init --store ~/dotfiles
envkit doctor

doctor should report the config and store as loadable. Run it whenever something looks wrong — it checks the config, the manifest, the store's git remote, and the keychain backend.

Track your first file

envkit add .zshrc
envkit status

status shows every tracked file as in-sync, differs, missing-local, missing-store or other-os.

Back it up

envkit backup
cd ~/dotfiles && git push

envkit copies the tracked files into the store. By default it does not commit or push — the store is a normal git repository and stays under your control. If you want it to do the whole thing:

envkit backup --force-push -m "laptop dotfiles"

That fetches, rebases, commits and pushes. Both forms take --dry-run if you want to see what would happen first.

Restore on another machine

brew tap aice-lab/tap https://gitlab.com/aice-lab/homebrew-tap.git
brew install envkit
git clone git@gitlab.com:you/dotfiles.git ~/dotfiles
envkit init --store ~/dotfiles
envkit load

load will not overwrite a locally-changed file without --force, and every overwrite is backed up to ~/.envkit-backups/ first.

One thing load does not restore: your secrets. The keychain is per-machine. See Secrets for how to move those across.

envkit doctor --secrets     # which indexed keys have no value on this machine