How To Set Up A New Mac From Scratch

The following is a guide I wrote to guide one through a fresh installation on a new machine. Enjoy!

This is also available on Github.

Quote time:

“To be in hell is to drift; to be in heaven is to steer.” ― George Bernard Shaw



App Store Applications

  • iTunes
  • NepTunes
  • Quiver
  • Xcode

Third Party Applications

  • Adobe Acrobat
  • Adobe Illustrator
  • Adobe Photoshop
  • Backup & Sync from Google
  • Docker
  • Google Chrome Canary

Homebrew Cask Applications

  • Alfred 3
  • Bartender
  • BetterTouchTool
  • CleanMyMac
  • Dropbox
  • Figma
  • Firefox Developer Edition
  • Hands Off!
  • iTerm2
  • ImageOptim
  • Kaleidoscope
  • Kodi
  • OnePassword
  • PoEdit
  • Postman
  • Querious
  • Sketch
  • Slack
  • Sublime Text
  • The Unarchiver
  • Telegram
  • Thunderbird
  • Tower
  • Transmit
  • Ungoogled Chromium
  • VLC
  • Vox


.zshrc (primary)


Sublime Text Preferences

Yabai Settings

Neofetch Settings


Thunderbird Theme


Fonts are Backed up to Dropbox/Resources/

Configure Sublime Text Command Line

mkdir -p ~/bin && ln -s "/Applications/Sublime" ~/bin/subl


# sudo apt-get install zsh
brew install zsh
sh -c "$(c
* DaisyDiskurl -fsSL"

# Make Default Shell
chsh -s $(which zsh)

Sublime Text 3 Plugin Installer

Hit Control + ` to access Console.

import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( '' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

Sublime Text Plugins

Plugins to install via Package Control:

  • A File Icon
  • Alignment
  • All Autocomplete
  • AutoFileName
  • AutoSetSyntax
  • Babel
  • Better JavaScript
  • BracketHighlighter
  • Color Highlighter
  • Dockerfile Syntax Highlighting
  • DotENV
  • EditorConfig
  • File Icons Mono
  • GitGutter
  • GitOpenChangedFiles
  • HTML-CSS-JS Prettify
  • Liquid
  • Monokai Extended
  • nginx
  • Pane Pane
  • Pretty JSON
  • Sass
  • SassBeautify
  • SidebarEnhancer
  • Theme - Spacegray

iTerm Colors

Set Up SSH Keys

# check if installed
ls -al ~/.ssh

# Actually generate it
ssh-keygen -t rsa -C ""

# Copy
pbcopy < ~/.ssh/

# Test if worked
ssh -T

Set Up Git

git config --global "Name"
git config --global
git config --global github.user user_name_here
git config --global github.token your_token_here
git config -l --global
git config --global core.editor "subl ."
git config --global color.ui true

Set Hostname

sudo scutil --set HostName ###

Set Up Mac OS X Preferences

# Set a fast keyboard repeat rate
defaults write NSGlobalDomain KeyRepeat -int 0

# Set a shorter delay until key repeat
defaults write NSGlobalDomain InitialKeyRepeat -int 12

# Remove Animations
defaults write NSGlobalDomain NSWindowResizeTime -float 0.001

# Hide the Desktop
defaults write CreateDesktop false; killall Finder

# Skip Verify Images
defaults write skip-verify true

# Prevent Apple Character Press and Hold
defaults write -g ApplePressAndHoldEnabled -bool false

# Add a contextual menu item to show the Web Inspector in web views
defaults write NSGlobalDomain WebKitDeveloperExtras -bool true

# Show the ~/Library folder
chflags nohidden ~/Library

# Store screenshots in subfolder on desktop
mkdir ~/Documents/Screenshots
defaults write location ~/Screenshots
killall SystemUIServer

# Add Message to Login Screen
sudo defaults write /Library/Preferences/ LoginwindowText "In case of loss, please call ###-###-####"

# Make Sublime Default Text Editor
defaults write LSHandlers -array-add '{LSHandlerContentType=public.plain-text;LSHandlerRoleAll=com.sublimetext.3;}'

# Enable Text Selection in QuickLook
defaults write QLEnableTextSelection -bool TRUE; killall Finder

# Faster Dock Animation
defaults write autohide-time-modifier -float 0.15; killall Dock

# Dull Hidden Apps in Dock
defaults write showhidden -bool TRUE; killall Dock

# Disable Dashboard
defaults write mcx-disabled -bool true

# Make Dock only Show Active Apps
defaults write static-only -bool true; killall Dock

# Recents & Favorites in Dock (Favorite Items & Recent Docs)
defaults write persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }'; killall Dock
defaults write persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }'; killall Dock

# Just in Case: Revert Dock to Default
defaults write static-only -bool false; killall Dock

Install Xcode

Install Homebrew

ruby -e "$(curl -fsSL"

brew doctor

# Install Cask Fonts
brew tap caskroom/fonts

# Install Brew Packages
brew install exa wp-cli googler howdoi itermocil neofetch themekit wget

Install Python 3

brew install python3
# python3 for python3 command line

Install PHP from Homebrew & Xdebug from Pecl

brew update && brew upgrade
brew untap homebrew/php
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
brew unlink php56
brew install php
brew cleanup
brew doctor

pecl install xdebug

export PATH=$(brew — prefix homebrew/php/php7X)/bin:$PATH

Just remember to change the X in the PHP version in the last export line to whatever the latest one you’re using is.

Add Line Manually, Do not add through prompts


Install Apps Via Homebrew Cask

# Install Brew Cask
brew install caskroom/cask/brew-cask

# Common Programs
brew install ack autojump automake bash-completion bower colordiff curl exa figma git git-flow googler hub icoutils imagemagick jq libmemcached memcached neofetch openssl ossp-uuid qt readline redis tmux watch wget wp-cli libxml2

# Cask Applications
brew cask install 1password alfred arduino bartender bettertouchtool cleanmymac daisydisk discord dropbox eloston-chromium firefoxdeveloperedition grandperspective hands-off helium iterm2 imageoptim kaleidoscope poedit postman querious robo-3t sketch slack sublime-text telegram the-unarchiver thunderbird tower vlc vox vox-preference-pane

# Install Quick Look Plugins (preview code etc)
brew cask install qlcolorcode qlstephen qlmarkdown quicklook-json qlprettypatch quicklook-csv betterzipql webp-quicklook suspicious-package && qlmanage -r

Install Docker

brew cask alfred link

Install MySQL

# Install
brew install mysql

# Check & Start
mysql.server start

# If Installation Failed
brew remove mysql
brew cleanup
sudo rm -rf /usr/local/var/mysql/
brew install mysql
mysql.server start

# Check MySQL Info
brew info mysql

Install MongoDB

brew install mongodb

Install Ruby Gem

gem update --system
gem install rubygems-update

Install Gems

gem install compass
gem install foundation
gem install sass


curl -O
sudo php -d detect_unicode=0 go-pear.phar

Type 1 and press return, then enter:


Type 4 and press return, then enter:


Press return

pear version

Install Yabai

Install Yabai Window Manager

First disable SIP:

csrutil disable

then after reboot:

brew install koekeishiya/formulae/yabai

sudo yabai --install-sa

brew services start yabai

killall Dock

Sketch Plugins

Plugins to install:

Marko Bajlovic

Sourced from all over.