My macOS shell setup: zsh + antidote + Starship, plus the Homebrew packages I rely on.
- zsh (default macOS shell)
- antidote — fast zsh plugin manager (replaces Oh My Zsh + Antigen)
- Starship — cross-shell prompt
- lsd — modern
lsreplacement - nvm — Node version management (no Homebrew
nodeformula; nvm owns Node) - Plugins: OMZ
git/macos/dotenv, pluszsh-completions,zsh-autosuggestions,zsh-syntax-highlighting
| File | Symlinked to | Purpose |
|---|---|---|
zshrc |
~/.zshrc |
Main shell config |
zsh_plugins.txt |
~/.zsh_plugins.txt |
Antidote plugin list |
Brewfile |
— | Homebrew packages (generated via brew bundle dump) |
bootstrap.sh |
— | One-shot setup script for a new machine |
cd ~/dev
git clone https://github.com/chuckreynolds/dotfiles.git
cd dotfiles
./bootstrap.shThen open a new terminal window. First launch clones all antidote plugins (~10–20s); subsequent launches are fast.
bootstrap.sh installs the latest LTS Node via nvm and sets it as the default. Per-project Node versions are handled via .nvmrc + nvm use.
To switch later:
nvm install --lts # install latest LTS
nvm install 22 # install a specific major
nvm alias default 22 # change global defaultAfter bootstrap.sh runs, ~/.zshrc and ~/.zsh_plugins.txt are symlinks into this repo — any edits you make are already tracked. Just git commit and push.
If those files are regular copies instead of symlinks (e.g. you set them up manually before adopting this repo), sync with:
cp ~/.zshrc ~/dev/dotfiles/zshrc
cp ~/.zsh_plugins.txt ~/dev/dotfiles/zsh_plugins.txtTo refresh the Brewfile after installing new packages:
brew bundle dump --file=~/dev/dotfiles/Brewfile --forcereload— source~/.zshrcdoupdates— runantidote update && brew update && brew upgrade && brew cleanup && claude updateupdaterepos—git pullevery repo in the current directory (parallel)zshconfig— open~/.zshrcin viip— copy current public IP to clipboardsshkey— copy~/.ssh/id_ed25519.pubto clipboardflushdns— flush macOS DNS cachels/ll/l—lsdvariants