Clean install macOS

How to make that Mac feel new again.
Bash, Homebrew, macOS, Python, reformat

Preferences and settings

Monospace fonts

Color palettes

Download the base16 templates:

Ocean is the preferred color scheme.

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 keys
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. Compile and install the current version.

cd ~/Downloads
curl -O https://www.openssl.org/source/openssl-1.1.0f.tar.gz
tar -xvzf openssl-*
cd openssl-*
./Configure darwin64-x86_64-cc
make
make test
sudo make install
# Reload terminal and check version
exit 1
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.

# Install Xcode CLT
xcode-select --install

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

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

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

# brew ====
brews=(flac    # priority
       lame    # priority
       tcl-tk  # priority
       bash
       bfg
       convmv
       coreutils
       cytoscape
       emacs
       ess
       exiftool
       ffmpeg
       findutils
       fish
       flac
       gcc
       git
       git-lfs
       gnupg2
       hub
       imagemagick@6 --with-fontconfig --with-librsvg
       lame
       leiningen
       llvm
       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
       youtube-dl
       zsh)
for brew in ${brews[@]}; do
    brew install "$brew"
done

# brew cask ====
casks=(java     # priority
       xquartz  # priority
       4peaks
       alfred
       atom
       basictex
       bbedit
       bibdesk
       brackets
       carbon-copy-cloner
       coconutbattery
       coda
       dropbox
       emacs
       fiji
       gfortran
       github
       google-chrome
       harvest
       hazel
       igv
       iterm2
       keka
       michaelvillar-timer
       miniconda
       omnidisksweeper
       onyx
       osxfuse
       papers
       r-app
       rstudio
       scansnap-manager-ix500
       scrivener
       slack
       skim
       skype
       spillo
       sublime-text
       superduper
       toggldesktop
       transmit
       tunnelblick
       vlc
       zotero)
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 cask outdated | xargs brew cask reinstall

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

Final steps