12/17/2016 - 9:09 PM

Set up an OSX machine from zero to awesome. Uses Homebrew (and cask, fonts, etc). Focused on Ruby/Rails development, includes rvm, xquartz,

Set up an OSX machine from zero to awesome. Uses Homebrew (and cask, fonts, etc). Focused on Ruby/Rails development, includes rvm, xquartz, editor fonts, sublime text, and many tools.


# A script to set up a new mac. Uses bash, homebrew, etc.

# Focused for ruby/rails development. Includes many utilities and apps:
# - homebrew, rvm, node
# - quicklook plugins, terminal fonts
# - browsers: chrome, firefox
# - dev: iterm2, sublime text, postgres, chrome devtools, etc.
# - team: slack, dropbox, google drive, skype, etc
# - utils: unarchiver, o-day, caffine, skitch, etc
# - productivity: evernote, viscosity, omnigraffle, karabiner, etc.

# Settings
ruby_versions="1.9 2.1 2.2"

# helpers
function echo_ok { echo -e '\033[1;32m'"$1"'\033[0m'; }
function echo_warn { echo -e '\033[1;33m'"$1"'\033[0m'; }
function echo_error  { echo -e '\033[1;31mERROR: '"$1"'\033[0m'; }

echo_ok "Install starting. You may be asked for your password (for sudo)."

# requires xcode and tools!
xcode-select -p || exit "XCode must be installed! (use the app store)"

# requirements
cd ~
mkdir -p tmp
echo_warn "setting permissions..."
for dir in "/usr/local /usr/local/bin /usr/local/include /usr/local/lib /usr/local/share"; do
	sudo chgrp admin $dir
	sudo chmod g+w $dir

# homebrew
export HOMEBREW_CASK_OPTS="--appdir=/Applications"
if hash brew &> /dev/null; then
	echo_ok "Homebrew already installed"
    echo_warn "Installing homebrew..."
	ruby -e "$(curl -fsSL"

if hash rvm &> /dev/null; then
	echo_ok "RVM already installed"
	echo "Installing RVM..."
	curl -sSL | bash -s stable --ruby

# add default gems to rvm
default_gems="bundler awesome-print lunchy rak"
for gem in $default_gems; do
	echo $gem >> $global_gems_config
awk '!a[$0]++' $global_gems_config > /tmp/global.tmp
mv /tmp/global.tmp $global_gems_config

# RVM ruby versions
for version in $ruby_versions; do
	rvm install $version

# moar homebrew...
brew install caskroom/cask/brew-cask
brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup

# brew taps
brew tap caskroom/versions
brew tap caskroom/fonts
brew tap homebrew/games

# Homebrew base
brew install \
  autoconf automake bash-completion cowsay cmatrix \
  ffmpeg figlet gettext go gpg freetype htop-osx jq libxml2 mongodb node \
  phantomjs postgres qt readline sqlite unrar v8 wget youtube-dl

# brew cask fonts
echo_warn "Installing fonts..."
brew cask install \
  font-anonymous-pro \
  font-dejavu-sans-mono-for-powerline \
  font-droid-sans \
  font-droid-sans-mono font-droid-sans-mono-for-powerline \
  font-meslo-lg font-input \
  font-inconsolata font-inconsolata-for-powerline \
  font-liberation-mono font-liberation-mono-for-powerline \
  font-liberation-sans \
  font-meslo-lg \
  font-nixie-one \
  font-office-code-pro \
  font-pt-mono \
  font-roboto \
  font-source-code-pro font-source-code-pro-for-powerline \
  font-source-sans-pro \
  font-ubuntu font-ubuntu-mono-powerline

# brew cask quicklook
echo_warn "Installing QuickLook Plugins..."
brew cask install \
	qlcolorcode qlmarkdown qlprettypatch qlstephen \
	qlimagesize \
	quicklook-csv quicklook-json epubquicklook \

# Apps
echo_warn "Installing applications..."

# google
brew cask install google-chrome google-hangouts google-drive
# other favorites
brew cask install \
  bettertouchtool caffeine day-o karabiner the-unarchiver flux\
  1password dropbox evernote skitch picturelife \
  minecraft spotify transmission vlc \
  adafruit-arduino iterm2 mongohub chrome-devtools firefox sublime-text3 \
  slack skype telephone \
  citrix-receiver omnigraffle viscosity

# xquartz
echo_warn "Installing xquartz (this big download can be slow)"
until [ $n -ge 20 ]; do
	brew cask install xquartz && break
	echo_error "... install failed, retry $n"

# brew imagemagick
brew cask install inkscape
brew install librsvg
brew install imagemagick --with-librsvg

echo_ok "Done."
echo "After Dropbox has finished installing, link Sublime Text settings:"
echo_warn "  cd ~/Library/Application\ Support/Sublime\ Text\ 3/"
echo_warn "  rm -rf Packages"
echo_warn "  ln -s ~/Dropbox/Sublime/Packages ."
echo "Then go to for Package Control"
echo "You may want to add the following settings to your .bashrc:"
echo_warn '  export HOMEBREW_CASK_OPTS="--appdir=/Applications"'