My 2022 New Mac Setup
I set up my new Macbook Pro (16 inch, 2021 M1 Max 32 GB RAM 1TB HD) today. Here’s everything I use on a Mac.
Previous versions of this post: from 2018-2020 and another from 2021. If I update this post in future, these contents will be archived but this URL will remain.
Scroll all the way to the bottom for lists and other Mac setup tools from friends!
Immediate first steps
- Browser: Download Chrome, set to default.
- Log in to: (this helps with logins for the other services below)
- Github (more setup instructions below)
- Gmail
Things that take a while to install
Get these going first so they can run in the background
-
Install ZSH -
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
-
If M1 mac:
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
to install Rosetta2 -
Install Homebrew -
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
and then
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/swyx/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
i have a bunch more stuff in brew list
but i’m not sure what i use actively. You can mass install these - dump them in a packages.txt
and then brew install $(cat packages.txt)
bat gdbm libuv python@3.10 pnpm
brotli gh go ruby
deno gradle sqlite ripgrep
diff-so-fancy fnm openjdk yarn
youtube-dl ffmpeg colima docker
fzf libev openssl@1.1 z
- if you run into m1 brew install issues, this stackoverflow answer helped me:
arch -x86_64 brew install YOUR_PACKAGE
- Other things to try:
- Fast/Deterministic Alternative to Homebrew - Nix -
sh <(curl -L https://nixos.org/nix/install) --daemon
- to try in 2023: Nix Flake - recommended by Johannes
Either of these will prompt you to install Apple Command Line Tools - takes 15-25 minutes to download the damn thing so do this first. Don’t run them in parallel.
OS/Browser Settings
- 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
My full list of extensions I use are here:
aapocclcgogkmnckokdopfmhonfmgoek : Slides : version 0_10
ahfgeienlihckogmohjhadlkjgocpleb : Web Store : version 0_2
amoldiondpmjdnllknhklocndiibkcoe : Twemex: Sidebar for Twitter : version 0_4_4
aohghmighlieiainnegkcijnfilokake : Docs : version 0_10
apdfllckaahabafndbhieahigkjlhalf : Google Drive : version 14_5
bekmjjakgojplnhahcilegeiklenjbgb : Glow : version 1_0
blpcfgokakmgnkcojhhkbfbldkacnbeo : YouTube : version 4_2_8
bmnlcjabgnpnenekpadlanbbkooimhnj : Honey: Automatic Coupons & Cash Back : version 14_11_0
cfldfgibklhmjhnkfighkbafbkbfcmij : Builder : version 1_0_0
cjpalhdlnbpafiamejdnhcphjbkeiagm : uBlock Origin : version 1_42_4
ckolcbmkjpjmangdbmnkpjigpkddpogn : Svelte Devtools : version 1_3_0
dkhfpnphbcckigklfkaemnjdmghhcaoh : netlify-browser-extension : version 1_3_0
fcgckldmmjdbpdejkclmfnnnehhocbfp : Google Finance : version 1_3
felcaaldnbdncclmgdcncolpebgiejap : Sheets : version 1_2
fmkadmapgofadopljbjfkapdkoienihi : React Developer Tools : version 4_24_6
fpnmgdkabkmnadcjpehmlllkndpkmiak : Wayback Machine : version 3_1
geancnifhbkbjijfkcjjdnfemppmcjmk : Hacker News : version 3_21_0
gfdkimpbcpahaombhbimeihdjnejgicl : Feedback : version 1_0
ghbmnnjooekpmoecnnnilnnbdlolhkhi : Google Docs Offline : version 1_42_0
gieabiemggnpnminflinemaickipbebg : CSS Scan : version 3_8_1
hbdpomandigafcibbmofojjchbcdagbl : TweetDeck by Twitter : version 3_10
hdokiejnpimakedhajhdlcegeplioahd : LastPass: Free Password Manager : version 4_95_0_3
hjgngigpjehgifcepdhlnnikibmgeflc : Upnext - Save it for later! : version 4_2_0
hlepfoohegkhhmjieoechaddaejaokhf : Refined GitHub : version 22_5_22
kljjoeapehcmaphfcjkmbhkinoaopdnd : HyperWrite : version 2_0_29
kmendfapggjehodndflmmgagdbamhnfd : CryptoTokenExtension : version 0_9_74
liecbddmkiiihnedobmlmillhodjkdmb : Loom – Free Screen Recorder & Screen Capture : version 5_3_2
mhjfbmdgcfjbbpaeojofohoefgiehjai : Chrome PDF Viewer : version 1
mjdepdfccjgcndkmemponafgioodelna : DF Tube (Distraction Free for YouTube™) : version 1_13_504
neajdppkdcdipfabeoofebfddakdcjhd : Google Network Speech : version 1_0
nffaoalbilbmmfgbnbgppjihopabppdk : Video Speed Controller : version 0_7_1
nkeimhogjdpnpccoofpliimaahmaaome : Google Hangouts : version 1_3_18
nmmhkkegccagdldgiimedpiccmgmieda : Chrome Web Store Payments : version 1_0_0_6
oiaejidbmkiecgbjeifoejpgmdaleoha : Stylebot : version 3_1
pachckjkecffpdphbpmfolblodfkgbhl : vidIQ Vision for YouTube : version 3_73_2
pbgbbbfhjccnnkplhfcmhdcpmcfmpfoi : toast.log : version 2_3
pjkljhegncpnkpknbcohdijeoejaedia : Gmail : version 8_3
poahndpaaanbpbeafbkploiobpiiieko : Display #Anchors : version 1_4
Setup Terminal
- Copy my dotfiles (vimrc, zshrc, .gitignore_global): https://gist.github.com/swyxio/7fa1009e460ecb818d5e6d9ca4616a05
- Note: good guide to dotfiles here https://dotfiles.github.io/tutorials/ that i have not yet read
- 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
- once you have installed
diff-so-fancy
- 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 VSCodecode --diff file1.js file2.js
. - You can also try https://github.com/dandavison/delta
- You can also diff with this bash function
- set
- Download, install, and set font - Inconsolata for Powerline
- autosuggestions
- syntax highlighting
- If you encounter warnings, you 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
- customize the
/oh-my-zsh/themes/agnoster
theme from dotfiles - For my terminal, I used to use Hyper, but this year I am trying out Warp: https://warp.dev/
- only settings I really need to make are setting the font to “Inconsolata for Powerline” - which I downloaded above.
See previous year for my Hyper terminal recommendations.
Set up apps/environments
You should have already installed a bunch of stuff with Homebrew as per above. Below I will list other stuff that you may wish to use:
- 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 any random repo and enter in a Personal Access Token for password.
- then run
gh auth login
- add GitHub SSH key (not optional)
- Setup Node.js/NPM and login to npm: - you should already have fnm (a faster alternative to nvm) from the Homebrew install done above so no separate download needed.
- apaprently running
arch -x86_64 zsh
lets you avoid weird dotenv errors but it didnt work for me (just running npm i on swyxkit) - then
fnm install 16
npm login
npm config set loglevel="warn"
sudo npm install netlify-cli -g
thennetlify login
npm i -g sign-bunny fortune-node parrotsay
fun little cli utilities to usenpm i -g undollar
for removing $npm install -g npm-check-updates
for updating depssudo npm install -g trash-cli
to add atrash
command to so you dont permanently delete files
- apaprently running
brew install yarn --ignore-dependencies
- yarn note- you may need to work around Mac OS Sierra
brew install z
- doesnt work out of the box exactly - see my issue on the rupa/z repo - homebrew changed the default install path of the z.sh script so just make sure you are pointing to the right new path -/opt/homebrew/etc/profile.d/z.sh
- Misc - stuff i used to install and maybe dont need anymore
pip3 install --user powerline-status
- go to a neutral folder and
git clone <https://github.com/powerline/fonts> && cd fonts && ./install.sh
- Anaconda Python distro - be careful they tend to modify your bash prompt without asking
Notes on other stuff we already brew installed
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
Setup Apps
-
I hate Docker Desktop so i am using “docker” without it
- brew installed https://github.com/abiosoft/colima/ and
sudo curl -L https://github.com/docker/compose/releases/download/v2.5.1/docker-compose-darwin-aarch64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
-
brew install --cask notunes
- so that you dont launch itunes/apple music -
download Audacity - and install ffmpeg for audacity - the instructions are intentionally opaque - just go to https://lame.buanzo.org/#lameosx64bitdl and download and run the pkg - Audacity will detect it from there
-
Emojis: I used to use https://matthewpalmer.net/rocket/ but now I just use the naive Mac emoji picker (hit Fn key)
-
Privacy unfucker: Pure Paste from Sindre Sorhus
-
Password Manager: I use 1password for company and lastpass for personal
-
Window Manager: https://rectangleapp.com/
-
Screenshots: I like https://cleanshot.com/ except that it has limited activations which is annoying for someone with 3 devices - so https://zapier.com/zappy is less annoying but has less good annotation capability. Browser extension - Lightshot. Jun 2022: https://shottr.cc/ just launched on HN and I am trying it out.
-
Clipboard Manager: I used to use https://clipy-app.com/ but it no longer stores images on m1 mac’s. So trying out one of the Clipy forks or
- https://pasteapp.io/ ($15/yr - i am using this for now)
- https://yippy.mattdavo.com/ (untested)
- or https://github.com/p0deje/Maccy
-
(trying it out) Cron Calendar app https://cron.com/download/macos
-
App Quitter: https://swiftquit.com/ (Close Mac Applications Automatically When Their Windows Close)
-
Zoom: https://zoom.us/download
-
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
-
Stuff I no longer use often but will bring in when i have the need
- Video capture: https://getkap.co/
- Screen recording feature tours: https://www.screen.studio/
- Image editing: to try https://www.pixelmator.com/pro/
- Dual Screen: https://www.duetdisplay.com/
- Gifs: Licecap
- OBS: https://obsproject.com/
- Transcribing: https://www.descript.com/download/mac
- SkyFonts: [https://www.fonts.com/web-fonts/google]
- Disk Space: Disk Inventory X - you can clean node modules with this bash command or as a cronjob(https://www.fonts.com/web-fonts/google)
-
Note taking:
- Obsidian and set it up as mentioned in my post on Obsidian as a Second Brain
- Microsoft Todo: https://apps.apple.com/app/apple-store/id1274495053?mt=8
- SimpleNote: https://apps.apple.com/us/app/simplenote/id692867256?ls=1&mt=12
- Notion: https://www.notion.so/desktop
-
Stretchly: https://hovancik.net/stretchly/
-
Replay: download
- Old replay download docs https://www.notion.so/Replay-Docs-56758667f53a4d51b7c6fc7a641adb02
-
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 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 GitHub.copilot code --install-extension golang.go code --install-extension hashicorp.terraform code --install-extension heybourn.headwind code --install-extension kgscott.retreon code --install-extension kumar-harsh.graphql-for-vscode code --install-extension ms-python.python code --install-extension ms-toolsai.jupyter code --install-extension ms-toolsai.jupyter-keymap code --install-extension ms-toolsai.jupyter-renderers code --install-extension ms-vscode-remote.remote-containers 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 redhat.java code --install-extension rust-lang.rust code --install-extension rust-lang.rust-analyzer 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 vadimcn.vscode-lldb code --install-extension VisualStudioExptTeam.vscodeintellicode code --install-extension vscjava.vscode-java-debug code --install-extension vscjava.vscode-java-dependency code --install-extension vscjava.vscode-java-pack code --install-extension vscjava.vscode-java-test code --install-extension vscjava.vscode-maven code --install-extension WakaTime.vscode-wakatime code --install-extension wix.vscode-import-cost code --install-extension zxh404.vscode-proto3
-
-
Screenflow 9 download
- considering switching to Davinci Resolve
Other good “new laptop setup” lists:
- Christoph Nakazawa’s setup: Part 1, Part 2
- Robin Wieruch’s setup
- Mina Markham’s automated mac setup
- Tania Rascia’s setup
- Nick Nisi’s dotfiles
- Mathias Bynens macos defaults
- Jamon’s MacOS maintenance tips
- VMWare Tanzu house script: https://github.com/pivotal/workstation-setup
- 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/
- A decade of dotfiles by Evan Hahn
- please send me yours!