I want to have any Mac configured to my spec with a single command
Shell Vim script
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


After setting up a new Mac with development tools, apps, and configuring it for the Nth time, I was determined to automate the process. I've looked at sprout-wrap, osxc & boxen, but the associated complexity was off-putting. There had to be a simpler way.


I want an identical setup on any Mac with a single command.

I want a single command that updates an existing Mac configuration. brew update & upgrade are not enough. There's system software updates, vim plugin updates & brew cleanup.

I want to easily add a new brew formula, system font, go package or OS X app. Creating a new file with a relevant name should be enough.

I want a lean & fast vim environment. Having used vim janus for many years, I want a vim with just the add-ons that I actually use.

I want a back-to-basics shell environment. oh-my-zsh is great, as is bash-it, but I choose simplicity.


# Install Xcode Command Line Tools
xcode-select --install
# Clone this repository
git clone https://github.com/gerhard/setup.git ~/.setup
# Remove the homebrew casks, formulae etc. which you don't want, e.g.
# rm ~/.setup/homebrew/casks/{alfred,istat-menus}
# Run the setup (optionally, set a new name for your Mac)
~/.setup/setup my-new-mac
# Restart the Mac so that all system settings are applied correctly
# Re-run the setup to pick up any updates

During the setup, you will be asked for your password as some terminal commands require administrator privileges. Run grep -r sudo ~/.setup to find exactly which ones.

Depending on the time that the setup command will take to run, you might need to enter this password multiple times. Not ideal, but automating this didn't feel right. I would rather enter my password multiple times than give a script extended admin privileges.

Once the setup command completes, restart the Mac so that all system settings can be applied correctly, then run the setup command again to ensure that the system software is up to date. You will want to run this command periodically as it will keep both the system software & configuration updated.

I've kept the setup scripts minimal on purpose. There are extra setup steps which are best done manually. Some were not worth automating, others were just impossible. See the checklist.md for all the steps which I still do manually on every new setup. As they are in Github task list format, they are perfectly suited for Issues. These are the Macs which I've setup so far using this checklist template.