macOS

Setting Up a macOS Development Environment from Scratch

A practical checklist for configuring a new Mac for software development — Homebrew, shell setup, essential tools, and the settings worth changing from defaults.

Marcus LeeJune 26, 20263 min read
Share:

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.

bash
xcode-select --install

Homebrew — the package manager

bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Once installed, everything else becomes a one-liner:

bash
brew install git node python go
brew install --cask visual-studio-code docker iterm2

brew 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:

bash
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 defaults

Add to ~/.zshrc:

bash
eval "$(starship init zsh)"
alias ls="eza"

Git configuration

bash
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 true

SSH keys for GitHub/GitLab

bash
ssh-keygen -t ed25519 -C "you@example.com"
eval "$(ssh-agent -s)"
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

The --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:

bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
nvm install --lts

System 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.

Advertisement
Marcus Lee
Marcus Lee

Cloud & DevOps Engineer

Marcus covers Kubernetes, cloud infrastructure, and CI/CD. He's spent a decade running production systems at scale.

Related Articles