The environmental controls that govern my technical eperience; I'm happy to share.
This will keep my configs in sync on multiple (work and personal) computers. I've been lazy about this for far too long and it's all out of control.
I'm using GNU Stow to manage local configs so they can be backed up to a central repository and be consistently available betwen n number of computers.
Work Laptop Personal Laptop
β β
~/dotfiles/ βββ Git Push βββ GitHub βββ Git Pull βββ ~/dotfiles/
β β
GNU Stow creates symlinks GNU Stow creates symlinks
β β
~/.zshrc βββ Oh My Zsh βββββ ~/.zshrc
β β
Terminal displays same environment on both machines (the ideal)As in all technical pursuits, this is built in layers; start building from the bottom after peeling the cellophane.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DOTFILE MANAGEMENT STACK β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Layer 4: Git Repository (GitHub) β
β β’ Version control & sync across machines β
β β’ Backup & collaboration β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Layer 3: GNU Stow (Symlink Manager) β
β β’ Creates symlinks: ~/dotfiles/* β ~/.config/* β
β β’ Package management (zsh/, git/, docker/, etc.) β
β β’ Handles directory structures cleanly β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Layer 2: Oh My Zsh (Shell Framework) β
β β’ Plugin system (ansible, docker, kubectl, etc.) β
β β’ Themes & customizations ~/.oh-my-zsh/custom β
β β’ Command completion & aliases β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Layer 1: macOS (BSD Unix base) β
β β’ Default shell: zsh β
β β’ GNU tools override BSD versions β
β β’ Terminal.app as interface β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ