Logo

Bridger Tower / Designer and Software Engineer

Mac for Web Development (2025)

A very opinionated guide on setting up a mac for web development, design, and productivity.

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.

  1. Open System Settings → General → Software Update.
  2. Install any pending updates, then reboot before continuing.

2. Install Homebrew

The package manager for everything that isn't on the Mac App Store.

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

bash
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):

toml
1font-family='Menlo'
2theme='flexoki-dark'
3font-size=16
4window-padding-balance=true
5mouse-hide-while-typing=true

🛠️ Development Environment

4. Developer Tooling

bash
1xcode-select --install
2brew 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

bash
1nvm install --lts
2nvm use --lts
3nvm alias default lts/*

6. Development Apps

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

bash
1sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
2
3# Plugins:
4git clone https://github.com/zsh-users/zsh-autosuggestions \
5 ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
6git clone https://github.com/zsh-users/zsh-syntax-highlighting \
7 ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting

.zshrc snippet:

txt
1plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

8. Install pnpm

bash
1npm install -g pnpm@latest-10

9. Install Bun

bash
1curl -fsSL https://bun.sh/install | bash

10. Neovim via Kickstart

bash
1git clone https://github.com/nvim-lua/kickstart.nvim.git \
2 "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim

11. Handy Aliases (in .zshrc)

txt
1# PNPM
2alias p='pnpm'
3alias pb='pnpm build'
4alias pd='pnpm dev'
5
6# Git
7alias gs='git send'
8
9# Bun
10alias b='bun'
11alias bb='bun build'
12alias bd='bun dev'

12. Global Git Config

txt
1[alias]
2 send = "!f() { git add . && git commit -m \"${1:-wip}\" && git push; }; f"
3[user]
4 name = Bridger Tower
5 email = bridgertower@gmail.com
6[init]
7 defaultBranch = main

📡 Productivity & Collaboration

13. Messaging Apps

bash
1brew install --cask discord slack whatsapp

14. Productivity Apps

bash
1brew install --cask notion obsidian notion-calendar ticktick spotify

15. Design Apps

bash
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

bash
1brew install --cask claude chatgpt ollama

17. Claude Code CLI

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

bash
1# Show all filename extensions in Finder
2defaults write NSGlobalDomain AppleShowAllExtensions -bool true
3
4# Set Finder view to Column by default
5defaults write com.apple.finder FXPreferredViewStyle -string "clmv"
6
7# Show Path Bar in Finder
8defaults write com.apple.finder ShowPathbar -bool true
9
10# Set fast key repeat rate
11defaults write NSGlobalDomain KeyRepeat -int 1
12defaults write NSGlobalDomain InitialKeyRepeat -int 10
13
14# Disable auto-correct
15defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
16
17# Always expand save and print panels by default
18defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
19defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
20
21# Prevent Photos from opening automatically when devices are plugged in
22defaults -currentHost write com.apple.ImageCapture disableHotPlug -bool true
23
24# Set screenshot location to ~/Desktop/Screenshots
25mkdir -p ~/Desktop/Screenshots
26defaults write com.apple.screencapture location ~/Desktop/Screenshots
27
28# Save screenshots in PNG format
29defaults write com.apple.screencapture type -string "png"
30
31# Restart Finder to apply changes
32killall Finder

These defaults help streamline Finder, boost typing responsiveness, and reduce distractions. Customize further as needed!

© Bridger Tower, 2025