Personal macOS setup: shell, terminal, tmux, prompt, and the Homebrew packages behind them.
Each top-level directory is a GNU Stow package:
| Package | Contents | Symlinked to |
|---|---|---|
zshrc |
.zshrc |
$HOME |
tmux |
tmux.conf |
~/.config/tmux |
starship |
starship.toml |
~/.config |
ghostty |
config |
~/.config/ghostty |
Brewfile lists everything installed via Homebrew (formulae, casks, VS Code extensions, Go/npm/krew tools). setup.sh bootstraps a new machine end to end.
git clone <this-repo> ~/dotfiles
cd ~/dotfiles
./setup.shsetup.sh will:
- Install Homebrew if missing.
- Run
brew bundleagainstBrewfile. - Install Oh My Zsh if missing.
- Clone
zsh-autosuggestionsandzsh-syntax-highlightinginto$ZSH_CUSTOM/plugins. - Clone the tmux plugin manager (TPM).
- Stow
zshrcto$HOMEandtmux/starship/ghosttyto~/.config.
After it finishes: restart your shell, then open tmux and press prefix + I to install tmux plugins.
If a target file already exists as a real file (not a symlink), Stow will refuse rather than overwrite it — back it up or remove it first, then re-run ./setup.sh.
- Stow target defaults to
~/.config(see.stowrc);zshrcis the one package stowed to$HOMEinstead, since zsh reads~/.zshrcby default. - Keep
Brewfilein sync with what's actually installed:brew bundle dump --force --file=Brewfilefrom a machine you trust as the source of truth.