A script to automate macOS setup with modern development tools via Homebrew. This tool configures a fresh Mac for development by installing tools, setting up git with SSH keys, configuring system settings, and optionally setting up dotfiles.
This setup uses current best-in-class tools optimized for Apple Silicon:
- Raycast: Modern productivity launcher with extensions and AI features
- Ghostty: GPU-accelerated native terminal written in Zig
- Arc: AI-powered Chromium-based browser with vertical tabs
- Colima: Lightweight Docker runtime (90% less memory than Docker Desktop)
- Rectangle: Apple Silicon native window manager (replaces deprecated Spectacle)
- Starship: Fast cross-shell prompt written in Rust
- fnm: Fast Node Manager (20-40x faster than nvm)
The tool is organized into four main scripts:
- install.sh: Main orchestration script that runs all setup steps in sequence
- config.sh: Configuration file containing arrays of packages, apps, fonts, and VS Code extensions
- osx-settings.sh: macOS system preferences (Safari, Finder, Dock, trackpad, etc.)
- util.sh: Shared utility functions for colored console output
install.sh- Main installation scriptconfig.sh- Package lists (apps, binaries, fonts, VS Code extensions)osx-settings.sh- System preferences (Safari, Finder, Dock, etc.)util.sh- Colored console output utilities
git clone https://github.com/benaich/macSetupTool
cd macSetupTool
sh install.shYou will be prompted for:
- Git username and email - for git configuration
- Dotfile repository URL (optional) - see dotfiles.github.io
- Administrator password - for sudo operations (kept alive during installation)
- Languages: Java, Ruby, Go, Node.js (via fnm)
- Tools: Git, Maven, Docker (via Colima), Kubernetes CLI
- Utilities: httpie, jq, fzf, bat, tree, ctop, tldr
- Editors: VS Code, IntelliJ IDEA
- Browsers: Arc
- Productivity: Raycast, Rectangle, Slack
- Terminal: Ghostty
- DevOps: VirtualBox, Vagrant
- Utilities: The Unarchiver
- oh-my-zsh with plugins (zsh-autosuggestions)
- Starship prompt
- Powerline fonts for terminal
16 essential extensions including GitLens, Docker, Python, Go, Prettier, and more.
Already started during installation. Useful commands:
colima start # Start Docker runtime
colima stop # Stop Docker runtime
colima status # Check status
colima restart # Restart with current settings
docker ps # Works just like Docker Desktop
docker-compose up # Multi-container orchestrationTo adjust resources:
colima stop
colima start --cpu 8 --memory 16 --disk 200Customize your prompt at ~/.config/starship.toml. Example:
# Get editor completions based on the config schema
"$schema" = 'https://starship.rs/config-schema.json'
# Timeout for starship to scan files (in milliseconds)
scan_timeout = 10
# Add a newline before the prompt
add_newline = trueSee starship.rs/config for all options.
Configuration at ~/.config/ghostty/config or via dotfiles. Example config:
font-family = "JetBrains Mono"
font-size = 14
theme = "Catppuccin Mocha"
window-padding-x = 10
window-padding-y = 10
Manage Node.js versions:
fnm list # List installed versions
fnm install 20 # Install Node 20
fnm install --lts # Install latest LTS
fnm use 20 # Switch to Node 20
fnm default 20 # Set Node 20 as default
fnm current # Show current versionAuto-switching via .node-version or .nvmrc files works automatically with --use-on-cd.
Keyboard shortcuts (same as Spectacle):
⌘ + ⌥ + ←/→- Left/Right half⌘ + ⌥ + ↑/↓- Top/Bottom half⌘ + ⌥ + F- Fullscreen⌘ + ⌥ + C- Center
Grant accessibility permissions when prompted on first launch.
- Replace Spotlight with Raycast in System Preferences
- Browse extensions at raycast.com/store
- Use
⌘ + Spaceto launch (after changing from Spotlight)
Edit arrays in config.sh:
- binaries: Homebrew formulae (CLI tools)
- apps: Homebrew casks (GUI applications)
- fonts: Font packages from homebrew/cask-fonts
- node_packages: Global npm packages
- vscode_extensions: VS Code extension IDs
Edit osx-settings.sh to customize:
- Safari preferences (privacy, search, homepage)
- Finder behavior (show hidden files, column view)
- Dock configuration (autohide, indicators)
- Trackpad and keyboard settings (tap to click, repeat rate)
- Screenshot location and format
- Activity Monitor defaults
If you provide a dotfile repository URL, the script:
- Clones it to
~/.dotfiles - Uses
rcup(from thoughtbot/rcm) to create symlinks - Your dotfiles can override any default configurations
The script automatically:
- Generates an ed25519 SSH key with 100 KDF rounds (
-a 100) - Adds it to the ssh-agent
- Copies the public key to your clipboard
- Pauses for you to add it to GitHub
This ensures secure git operations for all subsequent steps.
colima delete # Remove existing VM
colima start # Create fresh VM# Reload shell configuration
source ~/.zshrc
# Or restart your terminalEnsure VS Code command line tools are installed:
# Open VS Code
# Press Cmd+Shift+P
# Type "shell command"
# Select "Install 'code' command in PATH"sudo chown -R $(whoami) /usr/local/Homebrew# Install Node versions you need
fnm install 18
fnm install 20
fnm default 20
# Remove nvm
rm -rf ~/.nvm
# Remove nvm lines from .zshrc# Uninstall Docker Desktop (optional)
# Colima uses the same docker CLI commands
colima start
docker ps # Should work immediately# Export iTerm2 preferences first (optional)
# Ghostty uses a simple text config file
# See ~/.config/ghostty/config- macOS (tested on macOS 13+)
- Administrator access (for sudo operations)
- Active internet connection
- GitHub account (for SSH key setup)
Feel free to use and modify for your own setup needs.