Setting up a new MacBook in 2025 for web development

To help automate the setup of a new MacBook in 2025, I use the following scripts:

Check for Command Line Tools update

xcode-select --install

Install homebrew

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

.Brewfile

Create the following .Brewfile, then run brew bundle.

brew "dockutil"
brew "ffmpeg"
brew "fnm"
brew "git"
brew "imagemagick"
brew "mas"
brew "yt-dlp"
brew "zsh-autosuggestions"
cask "1password"
cask "android-platform-tools"
cask "appcleaner"
cask "bambu-studio"
cask "cursor"
cask "docker"
cask "elgato-control-center"
cask "elgato-stream-deck"
cask "figma"
cask "firefox"
cask "google-chrome"
cask "imageoptim"
cask "iterm2"
cask "jabra-direct"
cask "lastfm"
cask "maccy"
cask "microsoft-edge"
cask "microsoft-office"
cask "microsoft-remote-desktop"
cask "microsoft-teams"
cask "monitorcontrol"
cask "obs"
cask "openvpn-connect"
cask "plex"
cask "powershell"
cask "sonos"
cask "steam"
cask "sublime-text"
cask "vlc"
mas "1Password for Safari", id: 1569813296
mas "Divvy", id: 413857545
mas "DuckDuckGo Privacy for Safari", id: 1482920575
mas "Microsoft Remote Desktop", id: 1295203466
mas "uBlock Origin Lite", id: 6745342698
mas "Velja", id: 1607635845
mas "Xcode", id: 497799835
Packages
Casks
macOS App Store

macOS changes

# Dock
dockutil --remove 'App Store'
dockutil --remove 'iPhone Mirroring'
dockutil --remove Calendar
dockutil --remove Contacts
dockutil --remove FaceTime
dockutil --remove Freeform
dockutil --remove Keynote
dockutil --remove Mail
dockutil --remove Maps
dockutil --remove News
dockutil --remove Notes
dockutil --remove Numbers
dockutil --remove Pages
dockutil --remove Photos
dockutil --remove Reminders
dockutil --remove Safari
dockutil --remove TV

dockutil --add /Applications/Firefox.app
dockutil --add /Applications/Cursor.app
dockutil --add /Applications/iTerm.app

# Install `oh-my-zsh`
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended

# Add `zsh-autosuggestions` to ~/.zshrc
grep -q "zsh-autosuggestions" ~/.zshrc || echo "source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh" >> ~/.zshrc

# Add `fnm` to ~/.zshrc
grep -q "fnm" ~/.zshrc || echo 'eval "$(fnm env --use-on-cd --shell zsh)"' >> ~/.zshrc

# Install latest LTS version of Node
fnm install --lts

# Install `bum`
curl -fsSL https://raw.githubusercontent.com/owenizedd/bum/25fa0552c92aa9a1434e63d465ebaba014efe770/install.sh | bash

# Screenshots
mkdir ~/Screenshots
defaults write com.apple.screencapture location ~/Screenshots

# Show hidden files
defaults write com.apple.finder AppleShowAllFiles YES

# Hide dock
osascript -e "tell application \"System Events\" to set the autohide of the dock preferences to true"

# Restart Dock
killall Dock

Manual steps

  • Rename computer
  • Enable SSH agent in 1Password

2026 update

  • Updated to use .Brewfile
  • Replaced nvm with fnm in formulae
  • Added zsh-autosuggestions in formulae
  • Added bambu-studio, jabra-direct, openvpn-connect to casks
  • Removed lunar, raycast, visual-studio-code from casks
  • Added Windows App to App Store
  • Added bum, oh-my-zsh to manual steps

Related posts