New Mac Setup#
Use this workflow to configure a new Mac from scratch with the tools and shell environment needed for development and daily work.
Trigger#
Use this when setting up a new Mac or rebuilding a machine after a wipe.
Inputs#
Before starting, have:
- A Mac with macOS up to date
- An Apple ID signed in
- Internet access
- Your Microsoft 365 licence or account credentials
- Your GitHub username and email address
1. Install Homebrew#
Homebrew is the package manager for everything else. Install it first.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"After the installer finishes, follow the printed instructions to add Homebrew to your PATH. On Apple Silicon this is usually:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"Verify:
brew --version2. Install Warp#
Warp is the terminal. Install it via Homebrew:
brew install --cask warpOpen Warp from /Applications and complete the initial setup. From this point forward, use Warp as your terminal.
3. Configure Zsh and Oh My Zsh#
macOS ships with Zsh as the default shell. Oh My Zsh adds themes, plugins, and helpers on top of it.
Install Oh My Zsh:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"After installation, your shell config lives at ~/.zshrc. Open it to make changes:
open ~/.zshrcA minimal starting config:
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="robbyrussell"
plugins=(git z macos)
source $ZSH/oh-my-zsh.shReload the config:
source ~/.zshrc4. Install pyenv and Python#
pyenv manages multiple Python versions without touching the system Python.
Install pyenv:
brew install pyenvAdd pyenv to your shell. Append these lines to ~/.zshrc:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"Reload:
source ~/.zshrcInstall the latest stable Python and set it as the global default:
pyenv install --list | grep " 3\." | tail -5 # see recent 3.x versions
pyenv install 3.13.3 # replace with the version you want
pyenv global 3.13.3Verify:
python --version
pip --version5. Install VS Code#
Install Visual Studio Code via Homebrew:
brew install --cask visual-studio-codeOpen VS Code and install the Shell Command so you can launch it from the terminal:
- Open the Command Palette:
Cmd+Shift+P - Type
shell commandand select Install ‘code’ command in PATH
Verify:
code --version6. Install Rectangle#
Rectangle handles window management with keyboard shortcuts and snap areas. Drag a window to a screen edge to snap it to half, quarter, or full screen, or use keyboard shortcuts for the same actions.
Install via Homebrew:
brew install --cask rectangleAlternatively, download the DMG directly from rectangleapp.com.
Open Rectangle from /Applications. Grant the Accessibility permission when prompted (System Settings → Privacy & Security → Accessibility).
Useful defaults to configure in Rectangle → Settings:
- Snap windows by dragging to screen edges — enabled by default
- Adjust or disable individual shortcuts to avoid conflicts with other apps
- Use Import to load a previously exported
RectangleConfig.jsonfor instant cross-machine parity
7. Install Finicky#
Finicky routes browser links to the right browser based on rules. Useful when you use different browsers for work and personal tasks.
brew install --cask finickyOpen Finicky and set it as the default browser when macOS prompts you.
Create a config file at ~/.finicky.js:
module.exports = {
defaultBrowser: "Safari",
rules: [
{
match: ["*.google.com/*", "*.github.com/*"],
browser: "Google Chrome",
},
],
};Adjust defaultBrowser and rules to match your workflow. Finicky reloads the config automatically when the file is saved.
8. Install Microsoft Office#
Install Microsoft Office (Word, Excel, PowerPoint, Outlook, Teams) via Homebrew:
brew install --cask microsoft-officeAfter installation, open any Office app and sign in with your Microsoft 365 account to activate.
9. Final checks#
Verify each tool is available:
brew --version
warp --version || echo "Check /Applications/Warp.app"
echo $ZSH # should print ~/.oh-my-zsh
python --version
pyenv version
code --versionCheck the macOS login items or System Settings to confirm that Rectangle and Finicky are set to launch at login.
Decision points#
| Decision | Option A | Option B | When to choose |
|---|---|---|---|
| Python version | Latest 3.x stable | Specific project version | Use the latest for general work; pin a version per project with pyenv local |
| Default browser in Finicky | Safari | Chrome | Use Safari as default to save battery; route work URLs to Chrome |
| Oh My Zsh theme | robbyrussell (default) | agnoster or another | Change theme in ZSH_THEME in ~/.zshrc |
| Microsoft Office install | Homebrew cask | Mac App Store | Homebrew is faster; App Store if your licence requires it |
Review#
Before calling the setup complete, confirm:
brew --versionreturns a version number- Warp opens and the prompt shows correctly
echo $ZSHprints the Oh My Zsh pathpython --versionreturns the version you installed via pyenvcode --versionreturns a version number- Rectangle responds to at least one window-snap shortcut
- Finicky is set as the default browser in System Settings → Desktop & Dock → Default web browser
- Microsoft Office opens and shows an active licence
Troubleshooting#
| Problem | Fix |
|---|---|
brew not found after install | Run the eval command printed by the installer, then restart the terminal |
python still points to system Python | Run pyenv init and confirm the pyenv lines are in ~/.zshrc, then source ~/.zshrc |
| Oh My Zsh prompt looks broken (missing symbols) | Install a Nerd Font and set it in Warp’s font settings |
| Rectangle cannot move windows | Go to System Settings → Privacy & Security → Accessibility and enable Rectangle |
| Finicky not intercepting links | Confirm Finicky is the default browser; recheck ~/.finicky.js for syntax errors |
| Office activation fails | Sign out and back in to the Microsoft account, or run the activation flow from Help → Activate |
code command not found | Re-run the Install ‘code’ command in PATH step from the VS Code Command Palette |
Output#
At the end, you should have:
- Homebrew installed and working
- Warp as the primary terminal
- Zsh configured with Oh My Zsh
- pyenv managing Python
- VS Code with the
codeCLI available - Rectangle managing windows
- Finicky routing links to the right browser
- Microsoft Office activated
Notes#
Save these after setup:
- macOS version:
- Date set up:
- Python version installed:
- Oh My Zsh theme chosen:
- Finicky default browser: