My 2021 New Mac Setup


Note: my 2024 setup is here now

I set up a new Mac for work today. Here's everything I use on a Mac for fullstack web development.

Unlike Mina Markham, I choose not to automate my setup because I only do it about once a year and I want the ability to make conscious changes each time.

I previously tracked my new mac setup in an old version of this page from 2018-2020.

1hr Video Walkthrough


OS/Browser Settings

Setup Terminal

  • Copy my dotfiles (vimrc, zshrc, .gitignore_global): https://gist.github.com/sw-yx/7fa1009e460ecb818d5e6d9ca4616a05

  • Install ZSH (first usage of git will prompt you to install git - takes 15 minutes)

    • git config --global init.defaultBranch main
    • git config --global user.name "swyx"
    • git config --global user.email shawnthe1@gmail.com
  • Hyper Terminal

    • settings: shell: '/bin/zsh'
    • settings: fontFamily: '"Inconsolata for Powerline", Menlo, "DejaVu Sans Mono", Consolas, "Lucida Console", monospace',
    • Fig - context-aware autocomplete for terminal. Waitlisted now, but you can skip the waitlist here (i get nothing from this)
      • More CLI tools recommended by Brendan Faik (founder of Fig) - bat, exa, ripgrep, and other Rust CLI alternatives. Also zsh abbreviations
      • More CLI tools from Earthly - HN here
        • broot - a better tree
        • funky - simple shell functions
        • fzf - fuzzy finder
        • mcfly - guesses commands based on your history
        • zoxide - a better cd
        • gitupdate - use file names to create a more meaningful commit message

Set up apps/environments

  • Install Homebrew - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    i have a bunch more stuff in brew list but i'm not sure what i use actively. You can mass install these: brew install $(cat packages.txt)

    bat             gdbm            libuv           python@3.9
    brotli          gh              libyaml         readline
    c-ares          go              mpdecimal       ruby
    deno            gradle          notunes         sqlite
    diff-so-fancy   icu4c           node            xz
    fnm             jemalloc        openjdk         yarn
    fzf             libev           openssl@1.1     z
  • new: added brew install --cask notunes, replaced nghttp2 above

  • brew update on m1's have turned out to be super annoying. this helped me: arch -x86_64 brew install YOUR_PACKAGE

  • brew install bat

  • Github CLI: brew install github/gh/gh

    • you need to login to git - if you have 2fa enabled, you cant use your normal github password. try pushing to a repo and enter in a Personal Access Token for password.
    • then run gh auth login
    • add GitHub SSH key (not optional)
  • brew install fzf - fuzzy finder - usage example is here

  • brew install node

    • Node.js/NPM
    • npm login
    • npm config set loglevel
    • sudo npm install netlify-cli -g
    • npm i -g sign-bunny fortune-node parrotsay
    • npm install -g undollar for removing $
    • sudo npm install -g trash-cli
  • brew install yarn --ignore-dependencies - yarn note

  • you may need to work around Mac OS Sierra

  • brew install z - REALLY GOOD TRY IT

  • Misc

    • pip3 install --user powerline-status
    • go to a neutral folder and git clone <https://github.com/powerline/fonts> && cd fonts && ./install.sh
    • fnm faster alternative to nvm: curl -fsSL <https://fnm.vercel.app/install> | bash or brew install fnm
    • Anaconda Python distro - be careful they tend to modify your bash prompt without asking
    • Docker Desktop
    • brew install ffmpeg and then
    • https://github.com/tombonez/noTunes
    • download Audacity - and install ffmpeg
    • brew install java - you could download Java Development Kit from Oracle but fuck them for putting it behind signup wall
    • brew install go you may need to export PATH=$PATH:/usr/local/go/bin
    • brew install diff-so-fancy - then set git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX" - makes for much nicer git diff
      • You can also diff with this bash function dif() { git diff --color --no-index "$1" "$2" | diff-so-fancy; } or with VSCode code --diff file1.js file2.js.
      • You can also try https://github.com/dandavison/delta

Setup Apps

code --install-extension 2gua.rainbow-brackets
code --install-extension ahmadawais.shades-of-purple
code --install-extension austenc.tailwind-docs
code --install-extension bradlc.vscode-tailwindcss
code --install-extension cpylua.language-postcss
code --install-extension dbaeumer.vscode-eslint
code --install-extension dsznajder.es7-react-js-snippets
code --install-extension esbenp.prettier-vscode
code --install-extension formulahendry.auto-close-tag
code --install-extension formulahendry.auto-rename-tag
code --install-extension GabrielNordeborn.vscode-graphiql-explorer
code --install-extension GitHub.copilot
code --install-extension golang.go
code --install-extension heybourn.headwind
code --install-extension jpoissonnier.vscode-styled-components
code --install-extension kgscott.retreon
code --install-extension kumar-harsh.graphql-for-vscode
code --install-extension luyizhi.vscode-graphql
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension ms-toolsai.jupyter
code --install-extension msjsdiag.debugger-for-chrome
code --install-extension NickScialli.svelte-dark
code --install-extension octref.vetur
code --install-extension oderwat.indent-rainbow
code --install-extension sdras.night-owl
code --install-extension silvenon.mdx
code --install-extension svelte.svelte-vscode
code --install-extension TabNine.tabnine-vscode
code --install-extension ThreadHeap.serverless-ide-vscode
code --install-extension tht13.python
code --install-extension WakaTime.vscode-wakatime
code --install-extension Wattenberger.footsteps
code --install-extension wix.vscode-import-cost

Other good "new laptop setup" lists:

Tagged in: #mac#tech

Leave a reaction if you liked this post! ๐Ÿงก
Loading comments...
Webmentions
Loading...

Subscribe to the newsletter

Join >10,000 subscribers getting occasional updates on new posts and projects.

I also write an AI newsletter and a DevRel/DevTools newsletter.


Latest posts

Search and see all content.