Image of Austin Gatlin's face
March 3, 2022 (last updated March 18, 2022)

Machine Setup: MacOS


This is a link-first guide which I define and defend in the linked blog post. The goal of this guide is a sequential list of links to help facilitate setup. An anti-goal of this guide is a setup script or example repo.


/bin/bash -c "$(curl -fsSL"
# ~/.zshrc

if type brew &>/dev/null
  FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"

  autoload -Uz compinit


# ~/.zshrc

alias ..='cd ..'
alias g='git'
alias imps='iex -S mix phx.server'
alias l='ls -G'
alias ls='ls -G'
alias ll='ls -al'
alias nr='npm run'
alias v='vim'


git config --global [name]
git config --global [email]

git config --global alias.ap "add -p"
git config --global "branch"
git config --global alias.bra "branch --all"
git config --global "checkout"
git config --global alias.c "commit"
git config --global "commit --amend"
git config --global alias.cane "commit --amend --no-edit"
git config --global "commit --message"
git config --global "log --oneline"
git config --global alias.lolg "log --oneline --graph"
git config --global "status"


brew install asdf
# ~/.zshrc

. /usr/local/opt/asdf/libexec/
asdf plugin add [erlang elixir nodejs]

There's substantial overlap between what asdf and brew can do. In the past I've leaned heavily towards asdf, but have lately been swinging back towards using brew for tools and asdf for languages. One edge case at the moment is postgres. Not sure how I want it installed.


brew install --cask hyper

# Once inside the hyper terminal:
hyper i hyper-solarized-light

You can change font size and other configuration parameters in ~/.hyper.js, though it appears likely to change in the future.


brew tap homebrew/cask-fonts
brew install font-fira-code-nerd-font

In iTerm2, Preferences > Profiles > Text > Font, "FireCode Nerd Font Mono" should "just show up", and when selected, the icons should "just work".

In VSCode, User Settings > Editor: Font Family, can be prepended with "FiraCode Nerd Font Mono, ..." and it should "just work". You should see icons in the integrated terminal, etc. Terminal inherits from this, but you can also set the terminal font independently in "Terminal > Integrated: Font Family"

In Hyper, you edit ~/.hyper.js but that seems to be changing soon (see config link above). But, in fontFamily you can prepend with '"FiraCode Nerd Font Mono", ...' and it should "just work".

brew install starship
# ~/.zshrc

eval "$(starship init zsh)"


brew install fig


brew install --cask docker
brew install lazydocker


brew install visual-studio-code

As long as you have settings-sync enabled, everything "just works".


I keep my ~/.vim/ folder source controlled at aegatlin/dotvim. For more information, see my note on the vim builtin package manager and my vim cheatsheet. Also, here is my old init.lua config for neovim.

More comprehensive cheatsheets:

Next Steps

Here are just a few more commands I will definitely run. There is way more setup to do from here, but this is a good starting point, and a good place to end this guide. Thanks for reading :D

brew install superfly/tap/flyctl
brew install gh firefox google-chrome
asdf plugin add direnv
asdf install direnv latest
asdf global direnv [version]