The same checklist, every time a Mac gets set up (or reset) for development work — worth having written down instead of relying on memory.
Xcode Command Line Tools first
Most development tooling on macOS depends on these being installed — Git, compilers, and headers used by many package managers.
xcode-select --installHomebrew — the package manager
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Once installed, everything else becomes a one-liner:
brew install git node python go
brew install --cask visual-studio-code docker iterm2brew install is for command-line tools and libraries; brew install --cask is for GUI applications — a distinction worth knowing since mixing them up is a common early confusion.
Shell setup
macOS defaults to zsh. A few worthwhile additions:
brew install starship # fast, customizable prompt
brew install fzf # fuzzy finder for files, command history, etc.
brew install eza # a modern replacement for ls with better defaultsAdd to ~/.zshrc:
eval "$(starship init zsh)"
alias ls="eza"Git configuration
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main
git config --global pull.rebase trueSSH keys for GitHub/GitLab
ssh-keygen -t ed25519 -C "you@example.com"
eval "$(ssh-agent -s)"
ssh-add --apple-use-keychain ~/.ssh/id_ed25519The --apple-use-keychain flag stores the passphrase in macOS Keychain so you're not re-entering it every session.
Node version management
Install Node via a version manager, not directly via Homebrew — you'll almost certainly need different Node versions across projects:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
nvm install --ltsSystem settings worth changing
- System Settings → Keyboard → Key Repeat: set to fastest, and Delay Until Repeat to shortest — the defaults are noticeably sluggish for anyone typing all day.
- System Settings → Trackpad → Tap to Click: enable it — clicking by pressing down is slower than a light tap.
defaults write com.apple.dock autohide-delay -float 0— removes the Dock's auto-hide delay, from Terminal, if you keep the Dock hidden.
A minimal but complete toolkit
By the end of this checklist: Homebrew for packages, a version-managed Node/Python setup, a configured shell with a fast prompt and fuzzy search, working Git and SSH auth, and a couple of system settings that remove daily friction. That's enough to be productive — everything else (specific editors, specific languages) layers on top of this base the same way regardless of project.