A curated, opinionated checklist for spinning up a fresh macOS machine in 2025.
Goal: Be fully productive (coding, design, comms) in ~30 minutes with repeatable commands and sensible defaults.
🔧 System & UX Setup
1. Update macOS
Ensures the latest security patches, Xcode SDKs, and firmware.
- Open System Settings → General → Software Update.
- Install any pending updates, then reboot before continuing.
2. Install Homebrew
The package manager for everything that isn't on the Mac App Store.
1/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"2eval "$(/opt/homebrew/bin/brew shellenv)" # add to ~/.zprofile
3. System Apps
Core utilities that shape the desktop experience.
1brew install --cask ghostty raycast shottr rectangle maccy monitorcontrol
- Raycast - Spotlight-replacement launcher for faster search, powerful extensions, and clipboard history
- Ghostty - Minimal GPU-accelerated terminal with blazing-fast, TTY-style text rendering
- Rectangle - Window manager for quick ⌥⌘→ tiling, multi-display-aware
- Shottr - Screenshot utility with instant markup, redaction, and auto-copy to clipboard
- Maccy - Clipboard manager with plain-text history synced across apps
Ghostty config (~/.config/ghostty/config.toml
):
1font-family='Menlo'2theme='flexoki-dark'3font-size=164window-padding-balance=true5mouse-hide-while-typing=true
🛠️ Development Environment
4. Developer Tooling
1xcode-select --install2brew install git nvm gh vercel-cli wget miniconda nvim
- git - version control
- nvm - per-project Node versions
- gh - GitHub CLI for PRs & issues
- vercel-cli - instant Next.js deploys
- wget - classic download tool
- miniconda - lightweight Python env manager
5. Install Node via NVM
1nvm install --lts2nvm use --lts3nvm alias default lts/*
6. Development Apps
1brew install --cask cursor zed httpie linear-linear
- Cursor - AI-pair-programmer built on VS Code
- Zed - ultra-fast collaborative editor by Atom's creators
- HTTPie Desktop - delightful REST & GraphQL client
- Linear - native macOS wrapper for Linear issue tracker
7. Oh My Zsh (+ Plugins)
1sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"23# Plugins:4git clone https://github.com/zsh-users/zsh-autosuggestions \5 ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions6git clone https://github.com/zsh-users/zsh-syntax-highlighting \7 ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
.zshrc snippet:
1plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
8. Install pnpm
1npm install -g pnpm@latest-10
9. Install Bun
1curl -fsSL https://bun.sh/install | bash
10. Neovim via Kickstart
1git clone https://github.com/nvim-lua/kickstart.nvim.git \2 "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
11. Handy Aliases (in .zshrc)
1# PNPM2alias p='pnpm'3alias pb='pnpm build'4alias pd='pnpm dev'56# Git7alias gs='git send'89# Bun10alias b='bun'11alias bb='bun build'12alias bd='bun dev'
12. Global Git Config
1[alias]2 send = "!f() { git add . && git commit -m \"${1:-wip}\" && git push; }; f"3[user]4 name = Bridger Tower5 email = bridgertower@gmail.com6[init]7 defaultBranch = main
📡 Productivity & Collaboration
13. Messaging Apps
1brew install --cask discord slack whatsapp
14. Productivity Apps
1brew install --cask notion obsidian notion-calendar ticktick spotify
15. Design Apps
1brew install --cask adobe-creative-cloud figma imageoptim fontbase
Other Apps to install via Apple App Store
- Bear: Markdown editor for macOS
- Davinci Resolve: Video editing software for macOS
🤖 AI & Automation
16. AI / Local LLM Apps
1brew install --cask claude chatgpt ollama
17. Claude Code CLI
1npm install -g @anthropic-ai/claude-code
⚙️ macOS Customization
Automated macOS Defaults Script
Use the following script to set macOS defaults for a cleaner and more developer-friendly experience.
Run each command individually, or save them in a shell script (e.g., macos-defaults.sh
) and execute it with bash macos-defaults.sh
.
1# Show all filename extensions in Finder2defaults write NSGlobalDomain AppleShowAllExtensions -bool true34# Set Finder view to Column by default5defaults write com.apple.finder FXPreferredViewStyle -string "clmv"67# Show Path Bar in Finder8defaults write com.apple.finder ShowPathbar -bool true910# Set fast key repeat rate11defaults write NSGlobalDomain KeyRepeat -int 112defaults write NSGlobalDomain InitialKeyRepeat -int 101314# Disable auto-correct15defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false1617# Always expand save and print panels by default18defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true19defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true2021# Prevent Photos from opening automatically when devices are plugged in22defaults -currentHost write com.apple.ImageCapture disableHotPlug -bool true2324# Set screenshot location to ~/Desktop/Screenshots25mkdir -p ~/Desktop/Screenshots26defaults write com.apple.screencapture location ~/Desktop/Screenshots2728# Save screenshots in PNG format29defaults write com.apple.screencapture type -string "png"3031# Restart Finder to apply changes32killall Finder
These defaults help streamline Finder, boost typing responsiveness, and reduce distractions. Customize further as needed!