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
- 1password
- android-platform-tools
- appcleaner
- bambu-studio
- cursor
- docker
- elgato-control-center
- elgato-stream-deck
- figma
- firefox
- google-chrome
- imageoptim
- iterm2
- jabra-direct
- lastfm
- maccy
- microsoft-edge
- microsoft-office
- microsoft-remote-desktop
- microsoft-teams
- monitorcontrol
- obs
- openvpn-connect
- plex
- powershell
- sonos
- steam
- sublime-text
- vlc
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
nvmwithfnmin formulae - Added
zsh-autosuggestionsin formulae - Added
bambu-studio,jabra-direct,openvpn-connectto casks - Removed
lunar,raycast,visual-studio-codefrom casks - Added Windows App to App Store
- Added
bum,oh-my-zshto manual steps