macOS clean install

How to make that Mac feel new again.
Last updated on

Preferences and settings

Monospace fonts

Color palettes

Download the base16 templates:

Ocean is the preferred default.

Download our Coda.app and Terminal.app profiles.

Atom

r-exec enables the user to run R code directly from Atom:

apm install r-exec

Microsoft Excel

Change system defaults

# Unhide the user library
chflags nohidden ~/Library

# Speed up user interface animations
# http://robservatory.com/speed-up-your-mac-via-hidden-prefs/
defaults write com.apple.dock autohide-delay -float 0
defaults write com.apple.dock autohide-time-modifier -int 0
defaults write com.apple.finder DisableAllAnimations -bool true
defaults write NSGlobalDomain NSWindowResizeTime .001
killall Dock
killall Finder

# Don't write `.DS_Store` files to network storage
defaults write com.apple.desktopservices DSDontWriteNetworkStores true

# Save screenshots to Dropbox
mkdir -p ~/Dropbox/Pictures/Screenshots
defaults write com.apple.screencapture disable-shadow -bool true
defaults write com.apple.screencapture location ~/Dropbox/Pictures/Screenshots
defaults write com.apple.screencapture name Screenshot
killall SystemUIServer

# Disable podcasts in iTunes
defaults write com.apple.itunes disablePodcasts -bool YES

Generate an SSH key pair

First, check to see if one already exists:

ls -l ~/.ssh/id_rsa*
# Remove existing, if desired:
rm ~/.ssh/id_rsa*

Create a new keypair:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -C "EMAIL"

On macOS Sierra, you have to enable keychain storage in ~/.ssh/config to save your passphrase:

Host *
    UseKeychain yes

Add the newly created private key to the macOS keychain:

ssh-add -K ~/.ssh/id_rsa

Copy the public key to the clipboard:

cat ~/.ssh/id_rsa.pub | pbcopy

Add your newly created public key to the ~/.ssh/authorized_keys file of the remote server. Be sure to ensure the correct permissions of both the remote ~/.ssh folder (700) and ~/.ssh/authorized_keys (600).

Upgrade OpenSSL

macOS ships with an outdated version of OpenSSL. Here’s how to compile and install the current version:

cd ~/Downloads
curl -O https://www.openssl.org/source/openssl-1.1.0e.tar.gz
tar -xvzf openssl-*
cd openssl-*
./Configure darwin64-x86_64-cc
make
make test
sudo make install

# Relaunch the terminal and check version:
which openssl
openssl version

Install Homebrew

Homebrew is an incredibly useful package and application manager for macOS. It requires Xcode to be installed first from the App Store. Then the default workspace environment can be set up using our custom script:

# Xcode CLT:
xcode-select --install

# Homebrew install script:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# Homebrew uninstall script:
#! /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

taps=(caskroom/cask
      homebrew/dupes
      homebrew/fuse
      homebrew/science)
for tap in ${taps[@]}; do
    brew tap "$tap"
done

# brew ====
brews=(tcl-tk  # priority
       bash
       bfg
       convmv
       coreutils
       cytoscape
       emacs
       ess
       exiftool
       ffmpeg
       flac
       gcc
       git
       git-lfs
       gnupg2
       hub
       lame
       leiningen
       mas
       pandoc
       pandoc-citeproc
       pandoc-crossref
       python --with-tcl-tk
       python3 --with-tcl-tk
       rsync
       rbenv
       sshfs
       sox --with-flac --with-lame
       trash
       tree
       vim
       wget
       zsh)
for brew in ${brews[@]}; do
    brew install "$brew"
done

# brew cask ====
casks=(java  # priority
       xquartz  # priority
       4peaks
       alfred
       atom
       basictex
       bbedit
       bibdesk
       carbon-copy-cloner
       coconutbattery
       coda
       dropbox
       emacs
       fiji
       github-desktop
       google-chrome
       hazel
       igv
       iterm2
       keka
       michaelvillar-timer
       miniconda
       omnidisksweeper
       onyx
       osxfuse
       papers
       r-app  # don't use `brew install r`
       rstudio
       scrivener
       slack
       skim
       skype
       spillo
       superduper
       transmit
       tunnelblick
       vlc)
for cask in ${casks[@]}; do
    brew cask install $cask
done

Note that R should be installed using brew cask install r-app instead of brew install r. This command will install the latest official R.app binary, which has two main advantages: (1) support in the RStudio IDE, and (2) fast downloading of pre-compiled packages from CRAN.

Homebrew needs to be updated on a regular schedule:

brew update
brew upgrade
brew cleanup
brew cask cleanup
brew missing
brew doctor
brew cask doctor
brew config

Configure Python

Python is useful for scripting workflows. Homebrew can manage installations of both versions 2 and 3 and the launcher application automatically:

pip install --upgrade pip setuptools
pip3 install --upgrade pip setuptools wheel
brew linkapps python  # Deprecated!

Final steps