Personal shell and git config for two machines — a Mac and an Omarchy/Arch box — from one repo and one branch.
shared/ is linked everywhere; macos/ or linux/ is linked according to
uname. The split is done by which files get linked, not by a runtime OS test
inside the configs — so a per-OS setting is a new file in an OS directory, never
an edit to zshrc.
git clone git@github.com:sublimecoder/dotfiles.git ~/dotfiles
~/dotfiles/install.shinstall.sh symlinks each file into $HOME (e.g. shared/zshrc ->
~/.zshrc, shared/bin/* -> ~/.bin/*). Re-run it any time after adding a new
file — it's safe to run repeatedly, and it won't overwrite a real (non-symlink)
file that's already at the destination.
On macOS it also runs brew bundle against macos/Brewfile. On Linux it
reports anything missing from linux/packages.txt and installs nothing.
On a fresh machine, also point git at the commit template:
git config --global init.templatedir ~/.git_templateshared/zshrc,shared/aliases,shared/zshenv— shellshared/zsh/— functions, completions, and config fragments loaded byzshrcshared/vimrc,shared/vim/— vim (being retired; see the port plan)shared/gitconfig,shared/gitmessage,shared/git_template/— gitshared/bin/— small personal scripts, on$PATHviainstall.shmacos/— Brewfile, zprofile, and the Homebrew / gcloud / Android / iCloud bits that exist only therelinux/—packages.txtand the Wayland clipboard aliases
macos/zsh/configs/ and linux/zsh/configs/ link into the same~/.zsh/configs/ as the shared ones, so both halves load through one loader.
Mac: zsh. Omarchy/Arch: bash, the distribution's default — zsh is not
installed there and is deliberately absent from linux/packages.txt. Nothing is
chsh-ed on either machine. shared/zsh/ is linked on Linux but simply unused.
Reasoning, what bash actually costs, and how to reverse it:
docs/shell-decision.md.
If you want to copy any of this, go ahead.