Many machines

One store, different operating systems

A Mac and a Linux box need different shell files but can share plenty else. envkit handles this with OS layers inside the store: a shared layer, plus os/darwin and os/linux.

A file tracked as OS-specific is restored only on that OS. A shared file — a .gitconfig, say — goes to both. On the wrong OS, status reports other-os rather than pretending the file is missing.

The os-layer copy wins over the shared copy for the same path.

Bootstrapping a fresh 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
envkit doctor --secrets   # which secrets still need setting here

On Linux, run envkit setup first if pass has never been initialised there — it prepares the GPG key and password store that back the keychain.

What does not travel

Secrets. The keychain is per-machine by design, so load brings your files and leaves the values to you. envkit doctor --secrets reads every indexed key and reports the ones with no value here — plain doctor skips that, because reading every secret costs a keychain call each and can prompt.

This is the deliberate trade: a store that carried secrets would put every secret on every machine that clones it.