Use command stow . in the dotfiles directory to create the symlinks in the parent (home) directory.
brew bundle dump -f-f overwrites an existing Brewfile.
brew bundle installSecrets are stored encrypted via SOPS with age as the encryption backend. The encrypted file (.zsh_secrets.enc.env) is safe to commit — it's AES-256-GCM ciphertext that can only be decrypted with the matching age private key.
.sops.yamldeclares the age public key used for encryption (safe to commit).zsh_secrets.enc.envcontains the encrypted secrets (safe to commit)~/.zshrcdecrypts and exports them as environment variables at shell startup
# 1. Install tools
brew install sops age
# 2. Generate an age keypair (first time only)
mkdir -p ~/.config/sops/age
age-keygen -o ~/.config/sops/age/keys.txt
# Copy the public key (age1...) into .sops.yaml
# 3. On subsequent machines, copy the private key instead
# Transfer ~/.config/sops/age/keys.txt via AirDrop, USB, or scp
# 4. Stow the dotfiles
cd ~/.dotfiles && stow .
# 5. New shells will auto-decrypt secretssops ~/.dotfiles/.zsh_secrets.enc.env
# Decrypts on the fly in $EDITOR — save and quit to re-encryptSensitive config files (SSH hosts, Git emails) are stored as .enc files in the repo and decrypted on demand. This keeps secrets out of plaintext while still being machine-reproducible.
| Encrypted source (committed) | Decrypted target (generated) |
|---|---|
.ssh/config.fraunhofer.enc |
~/.ssh/config.fraunhofer |
.gitconfig-fraunhofer.enc |
~/.gitconfig-fraunhofer |
.gitconfig-ventx.enc |
~/.gitconfig-ventx |
~/.ssh/configusesInclude ~/.ssh/config.fraunhoferto pull in SSH hosts~/.gitconfigusesincludeIfto conditionally load the per-org email files
sops -e --input-type binary .gitconfig-ventx > .gitconfig-ventx.encThe --input-type binary flag is required for non-YAML/JSON files (plain text configs).
sops .gitconfig-ventx.enc
# Opens decrypted in $EDITOR — save and quit to re-encryptjust decryptDecrypts all .enc config files and writes them to their target locations under ~/. Run this once after cloning the repo on a new machine.