Automate the installation and configuration of a full macOS development environment: CLI tools, programming languages, editors, and system preferences.
.
βββ git/
β βββ .gitconfig
β βββ .gitignore_global
β βββ install.sh
βββ languages/
β βββ dotnet.sh
β βββ go.sh
β βββ java.sh
β βββ javascript.sh
β βββ latex.sh
β βββ python.sh
β βββ rust.sh
βββ zsh/
β βββ .zshrc
β βββ install.sh
βββ browsers.sh
βββ cli_tools.sh
βββ devtools.sh
βββ essential.sh
βββ ides.sh
βββ install.sh
βββ macos.sh
βββ terminal.sh
βββ tools.sh
βββ README.md
git clone https://github.com/ben196888/mac-set-up.git
cd mac-set-up
chmod +x install.sh
./install.sh
Comment out any steps in
install.sh
if you only want part of the setup.
-
Download this repo as a ZIP from GitHub Download ZIP
-
Extract the ZIP file and navigate to the folder:
cd ~/Downloads/mac-set-up-master # Or wherever you unzipped it
- Run the installer:
chmod +x install.sh
./install.sh
- Zsh config: with Starship, Oh My Zsh, and language-aware prompts
- Git setup: with aliases, delta, and conditional editor logic
- VS Code + Cursor: with settings sync and optional extension restore
- Terminal: Warp + shell utilities
- Languages: Go, Python, Node (via n), Rust, Java (via SDKMAN), .NET (via Homebrew), LaTeX
- Browsers: Firefox, Chrome, Edge, DuckDuckGo
- Dev Tools: OrbStack (Docker), kubectl, Postman, Google Cloud SDK, ChatGPT, Raycast
- System Preferences: Dock, trackpad gestures, key remapping, fast repeat rate
- All
.zshrc
additions are conditional to avoid errors if tools aren't installed macos.sh
applies safedefaults write
andhidutil
changes (some may require logout/reboot)- You can export/import GUI app settings (like Rectangle) separately if needed
- Implement checkpoint/resume mechanism to allow interrupted installations to continue from the last successful step, with progress tracking and state persistence
- Add login item setup via
osascript
(e.g., for Raycast or Rectangle) - Add versioned
global.json
for .NET SDK pinning - Add sync logic for VS Code extensions
- Add robust brew cask installation handling with pre-installation checks and force flags to prevent interruptions from existing app installations
- Add checks for npm global installations to prevent conflicts with Homebrew-installed packages (e.g., yarn, pnpm)
MIT β use it, fork it, improve it.