Automates almost full macOS developer setup - installing essential CLI tools, Homebrew packages, and linking personalized dotfiles via GNU Stow. Keeps my macOS environment consistent across machines.
macbook-setup/
├── bootstrap.sh # Main entry script
├── utils.sh # Shared functions
├── install.sh # Installer script
├── brew/
│ ├── Brewfile # Homebrew packages (formulas, casks, taps)
│ ├── AppStore # macOS App Store apps managed via `mas`
│ └── VSCodeExtension # VS Code extensions managed via `code` CLI
├── dotfiles.sh # Helper to clone and link dotfiles using stow
├── dotfiles/ # Directory with stow-managed configuration packages
│ ├── zsh/ # .zshrc, .zshenv, .zshprofile
│ ├── git/ # .gitconfig, .gitignore
│ ├── vim/ # .vimrc and related files
│ └── config/ # Misc app configs
├── macos.sh # macOS settings
├── macos.d/
│ ├── activity_monitor.sh # ActiveMonitor preferences
│ ├── dock.sh # Dock preferences
│ ├── finder.sh # Finder preferences
│ ├── software_update.sh # Software Update related settings
│ └── keyboard-bindings.xml # Keyboard binding customization
└── README.md # Project documentation (you are here)
Run following command in your terminal to start installation from scratch:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/aaukhatov/macbook-setup/HEAD/install.sh)"Tip: Review the script before running -
install.sh is short and readable.
This is another type of installation. If you want to modify a bit Brewfile add/remove some packages, this is the
better way to do.
Another option can be just download via web-browser.
git clone https://github.com/aaukhatov/macbook-setup.gitYou can extend brew/Brewfile.
chmod +x ./boostrap.sh && ./boostrap.shbootstrap.sh runs in a series of interactive stages. Each optional step asks for confirmation, and you can safely
re-run the script anytime.
-
System preparation Installs Rosetta (on Apple Silicon), Xcode Command Line Tools, and performs basic macOS readiness checks.
-
Homebrew setup Installs or updates Homebrew and can apply package lists from the
BrewfileandAppStorebundles. -
macOS updates Performs macOS system updates.
-
macOS preferences Applies your predefined macOS system settings. Individual modules in
macos.d/can be run separately. -
Developer tools Optionally installs SDKMAN!
-
Shell environment Offers installation of Oh My Zsh and safely manages existing shell config. It restores an existing
.zshrcfile if it was a symlink after installation. -
Dotfiles Clones this repo and uses
stowto link your dotfiles into the home directory.
Dotfiles are organized as stow packages.
Each folder under dotfiles/ (e.g., zsh, git, vim) contains the files that will be symlinked into $HOME.
stowcommands must be run in the dotfiles directory
stow -n -v -t "$HOME" zsh gitstow -v -t "$HOME" zshstow -v -t "$HOME" config git vimstow -t "$HOME" -D gitstow -t "$HOME" -R vim