Set up your Mac OS X development environment as a lone developer, or as part of a team.
From a fresh install of macOS/OS X, create an account that can administer the computer.
Open the Terminal application and setup some environment variables.
export GIT_NAME='Wendy Testaburger'
export GIT_EMAIL='wendy@example.com'
export GITHUB_USER='wendy'
Create a new GitHub personal access token with at least the repo
and write:public_key
scopes active. Copy the token into your environment.
export GITHUB_TOKEN='123abc...'
Create a new SSH key and register it with GitHub (or copy an existing one you already have to your computer).
# create key and add to the ssh-agent
ssh-keygen -trsa -b4096 -C "$GIT_EMAIL" -f $HOME/.ssh/id_rsa
ssh-add $HOME/.ssh/id_rsa
# upload new key to GitHub
pubkey=$( cat $HOME/.ssh/id_rsa.pub )
json=$( printf '{"title": "%s", "key": "%s"}' "$GIT_EMAIL" "$pubkey" )
curl -d "$json" https://api.github.com/user/keys?access_token=$GITHUB_TOKEN
Fetch suited.sh
and run it, telling it which file(s) to use to setup
your computer. They can be relative or absolute path, URLs or special
github notation (as explained in the suitfile documentation).
curl -O https://raw.githubusercontent.com/norm/suited/latest/suited.sh
bash suited.sh github:wendy/suit:main.conf
Alternatively, an argument of a hyphen (-
) means to use standard input
as the suitfile:
echo "github:wendy/suit:Brewfile" | bash suited.sh -
# setup xcode, homebrew and git
github:norm/suited:setup/install_xcode.sh
github:norm/suited:setup/homebrew.sh
github:norm/suited:setup/git.sh
# personal software
github:wendy/suit:Brewfile
# checkout code
repo wendy/suit
repo wendy/dotfiles
# lastly, ensure software is up to date
github:norm/suited:setup/software_update.sh
You should read these before getting starting with suited
:
I keep my setup in a separate public repo,
to serve as a reference example of how to use suited
.
Why create another bootstrapper for your Mac computer? There are already many other systems, such as:
- battleschool
- boxen
- chef-osx
- dev-setup
- laptop
- mac-dev-playbook
- osxc
- strap
- vanilla Puppet
- workstation-chef
One reason to create this is to minimise the amount of stuff needed to write in order to setup a new laptop.
Another reason is frustration with the fragility of using software like puppet to only partially manage a machine — GitHub have abandoned using boxen (replacing it with strap) for similar reasons.
Another is that whilst something like strap (which is little more than a bit of shell setup and then using Homebrew) is almost what I wanted, I still missed the ability for multiple users to collaborate on setups, as when using boxen (a great example was the GDS boxen).
So here is suited
(taken from the phrase suited and booted, but you
can pretend it is a reference to making a computer suitable for use).