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.