My 2021 New Mac Setup
Note: my 2023 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
- Browser: Download Chrome, set to default.
- Log in to: (this helps with logins for the other services below)
- Github (more setup instructions below)
- Gmail
- System Settings:
- Disable Spotlight search for all miscellaneous crap except apps and system preferences
- including stupid Developer option (make sure to add Xcode.app to /Applications not /user/swyx/Applications)
- Disable Ask Siri
- Set to Big cursor for accessibility during presentation
- some reports of memory leaks when doing this
- Fix trackpad direction: Trackpad -> Scroll & Zoom - Natural off
- Disable dictionary lookup: Trackpad -> Point & Click -> Look up & data detectors off
- (if using windows keyboard) remap alt and cmd keys for ergonomics
- Disable Spotlight search for all miscellaneous crap except apps and system preferences
- Finder settings:
- Preferences → show filename extensions
- Enable showing dotfiles (just hold Cmd + Shift + . (dot) in a Finder window)
- Show path bar in footer for easier navigation
- Prune the excessive sidebar bookmarks
- create “Work” folder and pin it
- Keyboard:
- remap command+Q to literally anything else - to prevent accidental close-all
- Shortcuts: copy picture of selected area to clipboard -> Cmd+E
- MacOS Dock:
- Remove everything from the Dock except: Finder, System Preferences and Trash
- Turn Dock Auto Hiding on
- turn this on for MacOS Menu bar as well
- Chrome extensions: (tied to Chrome account)
- Paywall blocker https://github.com/iamadamdev/bypass-paywalls-chrome/
- See Tweets about any page https://github.com/sw-yx/Twitter-Links-beta (my blogpost here)
- Morpheon Dark theme
- Lastpass
- Display Anchors
- React Devtools
- Refined Github
- Code Copy
- Video Speed Controller ← VERY HIGHLY RECOMMENDED
- Palettab
- Privacy Badger
- RescueTime
- uBlock Origin
- Octolinker
- async render toolbox (i made this)
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
-
Font - Inconsolata for Powerline
-
-
may need to chmod stuff or warnings show at start of every session
$ sudo chmod -R 755 /usr/local/share/zsh $ sudo chown -R root:staff /usr/local/share/zsh
-
-
-
-
- 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 bettertree
funky
- simple shell functionsfzf
- fuzzy findermcfly
- guesses commands based on your historyzoxide
- a bettercd
gitupdate
- use file names to create a more meaningful commit message
- More CLI tools recommended by Brendan Faik (founder of Fig) -
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
, replacednghttp2
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
orbrew install fnm
- Anaconda Python distro - be careful they tend to [modify your bash prompt without asking](https://askubuntu.com/questions/1026383/why-does-base-appear-in-front-of-my-terminal-prompt\)
- 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 wallbrew install go
you may need toexport PATH=$PATH:/usr/local/go/bin
brew install diff-so-fancy
- then setgit 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 VSCodecode --diff file1.js file2.js
. - You can also try https://github.com/dandavison/delta
- You can also diff with this bash function
Setup Apps
-
Password Manager: I use 1password for company and lastpass for personal
-
Window Manager: https://www.spectacleapp.com/ launch at login
-
Clipboard Manager: https://clipy-app.com/ or https://yippy.mattdavo.com/ (untested)
-
Zoom: https://zoom.us/download
-
Screenshots: https://cleanshot.com/ (previously used https://zapier.com/zappy). Browser extension - Lightshot
-
Caffeine (Keep Mac awake for talks): https://intelliscapesolutions.com/apps/caffeine
- used to be http://lightheadsw.com/caffeine/
- maintained version: Amphetamine (thanks Matt Mischuk!)
-
NoTunes - disable itunes/apple music
-
Video capture: https://getkap.co/
-
Dual Screen: https://www.duetdisplay.com/
-
Gifs: Licecap
-
Transcribing: https://www.descript.com/download/mac
-
SkyFonts: https://www.fonts.com/web-fonts/google
-
Microsoft Todo: https://apps.apple.com/app/apple-store/id1274495053?mt=8
-
Stretchly: https://hovancik.net/stretchly/
-
Disk Space: Disk Inventory X - you can clean node modules with this bash command or as a cronjob
-
Replay: download - https://www.notion.so/Replay-Docs-56758667f53a4d51b7c6fc7a641adb02
-
SimpleNote: https://apps.apple.com/us/app/simplenote/id692867256?ls=1&mt=12
-
Notion: https://www.notion.so/desktop
-
App Search/Utils: https://www.alfredapp.com/
- set to Alfred Dark
- airdrop to iphone/ipad
- Cupcake Ipsum
-
Editor: Download VS Code (I used to use Insiders but the popups are super annoying). use Settings Sync to sync across machines
-
have to set up powerline fonts “Meslo LG M for Powerline” (download)
-
auto-close-tag v0.5.6
-
auto-rename-tag v0.0.15
-
Bookmarks v9.1.0
-
code-settings-sync v3.1.2
-
debugger-for-chrome v4.10.2
-
es7-react-js-snippets v1.8.7
-
graphql-for-vscode v1.12.1
-
mdx v0.1.0
-
prettier-vscode v1.6.1
-
python v2018.9.2
-
python v0.2.3
-
rainbow-brackets v0.0.6 - this is now deprecated, use the native
"editor.bracketPairColorization.enabled": true
-
shades-of-purple v3.17.0
-
vscode-graphql v0.1.5
-
vscode-import-cost v2.9.0
-
vscode-styled-components v0.0.23
-
vscode-wakatime v1.2.3
-
TabNine AI completions
-
to try: File Utils - recommended by Stolinski
-
Here’s the full list you can run from command line
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:
- Tania Rascia’s setup
- Nick Nisi’s dotfiles
- Mathias Bynens macos defaults
- Jamon’s MacOS maintenance tips
- James Martinez
- Vendasta: https://github.com/vendasta/setup-new-computer-script
- You can automate dotfiles/homebrew setup with Sheldon Hull’s tool
- Physical equipment setups from prominent people: https://setups.co/
- please send me yours!