Automated macOS setup script for full stack development. Installs and configures tools, applications, shell environment, and system preferences.
Clone the repository and run the install script from the repo root:
$ git clone https://github.com/gguerini/mac-setup.git
$ cd mac-setup
$ zsh script/install.shThe installer is interactive โ it will prompt you before each step so you can skip anything you don't need. Useful when setting up a work laptop vs. a personal machine.
masโ Mac App Store CLIghโ GitHub CLI
Apps are organized into groups under brewfiles/. The installer prompts for each group:
| Group | Apps |
|---|---|
| development | Cursor, VS Code, GitHub Desktop, iTerm2, Insomnia, Figma |
| databases | TablePlus, Postico |
| productivity | Alfred, Rectangle, Caffeine, xbar, AppCleaner, 1Password, MeetingBar, Hidden Bar, Things, Bumpr |
| communication | Slack, ChatGPT, WhatsApp, Claude |
| browsers | Firefox, Google Chrome, Brave |
| media | VLC, LiceCap, ImageOptim, TrainerRoad |
| utilities | Wipr 2, Vinegar, GIPHY, Xcode |
To add a new group, create a brewfiles/Brewfile.<group> file โ the installer picks it up automatically.
macOS system preferences are configured via script/defaults.sh. It covers:
- Finder โ status/path bars, list view, show hidden Library, spring loading
- Dock โ size 35, auto-hide, no animations, minimize to app icon
- Trackpad โ tap-to-click, two-finger right-click, three-finger swipe
- Keyboard โ fast key repeat, disable press-and-hold, disable smart punctuation
- Appearance โ Dark Mode, graphite accent color
- Safari โ full URL display, developer tools, favorites bar
Run it standalone at any time:
$ zsh script/defaults.shIf you see "Could not write domain" errors, grant Full Disk Access to your terminal app in System Settings > Privacy & Security.
Uses Oh My Zsh with a custom theme and aliases.
- Theme โ
tranquility(shows Git branch, commit age, dirty state) - Plugins โ
git,rails - Aliases โ defined in
oh-my-zsh/aliases.zsh
VS Code settings are managed via VS Code Settings Sync backed by GitHub โ not stored in this repo.
The installer creates ~/.gitconfig from the template in this repo, prompting for your name, email, and preferred editor.
Includes a set of aliases for common workflows:
| Alias | Command |
|---|---|
s |
status |
aa |
add --all |
cm |
add --all && commit -m |
co |
checkout |
cob |
checkout -b |
up |
fetch && pull --rebase |
reb |
fetch && rebase -i origin/main |
lg |
fancy log with graph |
wip |
commit all as WIP |
undo |
reset last commit (mixed) |
wipe |
hard reset |
bdone |
checkout main, update, delete merged branches |
1Password can act as your SSH agent โ no key files on disk, protected by biometric unlock. When you enable it in Settings > Developer > Use the SSH agent, 1Password automatically updates ~/.ssh/config for you.
The installer offers a choice between asdf and mise for managing Ruby versions. Both support .tool-versions files.
- asdf โ battle-tested, widely used
- mise โ faster, actively maintained, drop-in replacement for asdf