Clean install of MacOS Big Sur

Thu 20 May 2021 — Filed under notes; tags: mac

Yet another installation of my personal notes for setting up a new (or cleanly installed) MacOS computer. The process changes just a bit with each new OS version. I will try really hard to reproduce the steps in an order that make then easiest to execute.

This time I need to document some details of the actual clean install process: it seems to have become more complicated to boot from a startup disk containing the Big Sur installer. It was necessary to restart into recovery mode (hold down Command+r) and use the Startup Security Utility (under the Utilities menu) to allow booting from external media and not to require an internet connection to verify the boot media. After this, I was able to select a startup disk by restarting while holding down Option. After running that gauntlet, on to the actual installation process (after which I restarted again in recovery mode and restored the default security settings).

I do copy some things over from my old computer, but it's pretty minimal. Here's the command to gather up what I need to transfer.

tar -cf dotfiles.tar .gitconfig .gnupg .pypirc .ssh .aws .saml2aws .psqlrc .zprofile

It's also handy to know all of the projects I'm working on:

cd ~/src
for dname in */.git; do git -C $(dirname $dname) remote -v; done > remotes.txt

Note that none of the steps below require an Apple ID - I held off on signing in until the very end just to see if it was possible.

system settings

turn off spelling autocorrect

System Preferences --> Keyboard --> Text tab --> unselect "Correct spelling automatically" and others

unmap Control + left,right

I use Control plus the left and right arrow keys to move between windows in emacs and tmux, so I disable the defaults.

System Preferences --> Keyboard --> Shortcuts --> uncheck mission control: move left/right a space

Turn on FileVault

System Preferences --> Security & privacy --> FileVault

I used a recovery key option rather than iCloud for my work machine, iCloud for personal

Developer tools

Pretty much the first thing that needs to happen. This can be done from the command line:

xcode-select --install


Homebrew no longer requires user-ownership of /usr/local, so things are pretty easy now:

/usr/bin/ruby -e "$(curl -fsSL"
brew doctor

homebrew API token

Apparently lots of requests to GitHub via homebrew can hit a rate limit. There's a higher limit if you create an API token. See

Here's the url for the token creation dialog:

Make sure that all 'scopes' are unchecked. Once you generate the token, add to your shell profile:


CLI applications

Many packages are installed later with additional elaboration or in as dependencies for other applications; here are some more or less standalone packages that I routinely install.

brew install git && \
brew install wget && \
brew install autojump && \
brew install gcc && \
brew install graphviz && \
brew install latex2rtf && \
brew install pandoc && \
brew install tmux && \
brew install tree && \
brew install fd && \
brew install xsv && \
brew install fzf && \
brew install saml2aws && \
brew install jq

desktop applications

Homebrew installs desktop apps too! (the syntax has changed a bit)

for pkg in dropbox sizeup dash google-chrome mactex iterm2; do brew install --cask $pkg; done

Some of the above (eg, sizeup, dropbox, dash) require licenses and credentials that must be installed interactively.


Install using homebrew above. Update a few settings.

Preferences –> Profiles –> Keys and do these things:

  • select "Left/right option key acts as": +Esc
  • + –> Keyboard shortcut "OPT+<left arrow>": Send Escape sequence "b"
  • + –> Keyboard shortcut "OPT+<right arrow>": Send Escape sequence "f"

(may have to delete or replace an existing mapping)

Default appearance:

  • Preferences –> Profiles –> Colors –> Color Presets –> Light Background
  • Preferences –> Profiles –> Text –> Change Font –> 14 point

Install shell integration:

curl -L | bash
  • Install python runtime by selecting "Scripts" –> "Manage" –> "Install Python Runtime".
  • Enable the Python API under "Preferences" –> "General" –> "Magic"


Change shell to zsh. I'll just use the zsh shipped with the OS.

chsh -s /bin/zsh $USER

Install my dotfiles (relevant only to me)

cd ~
git clone


My version of Big Sur provided Python 2.7.16 and 3.9.5. My most recent evolution of managing python interpreters is to use pyenv. See

brew install zlib
brew install pyenv
brew install pyenv-virtualenv

Install pyenv-update plugin:

git clone $(pyenv root)/plugins/pyenv-update

added dotfiles/mac/zsh/pyenv.plugin.zsh

if [[ -d "$HOME/.pyenv" ]]; then
    # echo "using pyenv"
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init --path)"

Even though the OS version of python3 (3.9.5) is up to date, also install this version via pyenv to avoid installing packages to create a strict a separation from the system version as possible.

pyenv install -v 3.9.5
pyenv global 3.9.5
pip3 install -U pip wheel

Install 3.8.8 for projects expecting python 3.8

pyenv install -v 3.8.8


Install latest emacs binary from

Emacs needs a few homebrew packages

brew install libressl
brew install aspell
brew install gpg

Check out my .emacs.d and run setup scripts.

cd ~
git clone .emacs.d

Run setup scripts:

cd ~/.emacs.d


I had to give up on installing R with homebrew because it seemed to result in an interpreter that always wanted to install packages from source. So I used the binary from

Some packages that I know I'll need:

R --slave << EOF
packages <- c("lattice", "RSQLite", "latticeExtra", "argparse", "data.table", "tidyverse")
install.packages(packages, repos="", dependencies=TRUE, clean=TRUE, Ncpus=4)

Wow, this takes a long time!


brew install --cask rstudio


Install from

This installs multiple versions of postgres. You'll need to add the path to the CLI for the version you want to use to your PATH, eg:

export PATH=/Applications/$PATH


Clean install of MacOS Catalina

Sat 11 April 2020 — Filed under notes; tags: mac read more

Clean install of MacOS Mojave

Fri 15 February 2019 — Filed under notes; tags: mac read more

Clean install of MacOS High Sierra

Fri 17 November 2017 — Filed under notes; tags: mac read more

Using recursive CTEs for calculating taxonomic lineages

Fri 07 July 2017 — Filed under sql; tags: postgresql, taxonomy read more

This topic falls into the category of "things that I didn't know that I didn't know." Many of my projects involve the manipulation of taxonomies, particularly the NCBI taxonomy, but I didn't understand the efficiency with which it was possible to calculate a lineage in SQL. I recently revisited the …

Setting up a new Mac (Sierra)

Thu 05 January 2017 — Filed under notes; tags: mac read more

Setup after clean install of El Capitan

Mon 02 November 2015 — Filed under notes; tags: mac read more

Setup for VirtualBox VM running Ubuntu 14.04 on OS X Mavericks

Fri 06 February 2015 — Filed under notes; tags: linux, mac, virtualbox read more

Here are my notes for setting up an Ubuntu VM to work on some web applications. This is intended to be a sandbox for development, so I'll err on the side of convenience (at …

Hold the pie

Thu 30 October 2014 — Filed under visualization; tags: laboratory read more

I came across this visualization1 of a very simple data set, and it took me a few minutes to fully understand what makes it so… suboptimal.


  • Ok, first of all, it's a pie chart.
  • The labels are separated from the corresponding values.
  • The grey scale color map doesn't distinguish …

Compiling bcl2fastq v2.15 on Ubuntu 12.04 and 14.04

Wed 27 August 2014 — Filed under notes; tags: linux read more

Illumina provides a program for demultiplexing sequencing output called bcl2fastq. They get a gold star for releasing the source - the downside is that they release binaries only for RHEL/CentOS, and no build instructions for Ubuntu. So …