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
- 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 [email protected]
-
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 [email protected] 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 [email protected] 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
- Emojis: https://matthewpalmer.net/rocket/
- 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)
- Loom: https://www.loom.com/desktop
- 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
- Slack or Discord
- OBS: https://obsproject.com/
- 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
- Superhuman for Mac and https://mail.superhuman.com
- 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
- GitHub Copilot
- 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!