17
My 2021 New Mac Setup
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.
- 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)
- 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
- autosuggestions
-
- 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 functions -
fzf
- fuzzy finder -
mcfly
- guesses commands based on your history -
zoxide
- a bettercd
-
gitupdate
- use file names to create a more meaningful commit message
-
- More CLI tools recommended by Brendan Faik (founder of Fig) -
-
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 nghttp2 sqlite diff-so-fancy icu4c node xz fnm jemalloc openjdk yarn fzf libev [email protected] z
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 noteyou 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 wall -
brew 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
- 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
- Tania Rascia's setup
- Nick Nisi's dotfiles
- Mathias Bynens macos defaults
- Jamon's MacOS maintenance tips
- 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!