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
- 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) -
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 nghttp2 sqlite diff-so-fancy icu4c node xz fnm jemalloc openjdk yarn fzf libev openssl@1.1 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
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
- 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!
Top comments (12)
Thank you for the share !
I have some other tools I prefers :
I use SdkMan (sdkman.io) for install java, and managing my different java versions
I use "Rectangle" instead of "Spectacle" for managing windows, installed from brew
I use "CopyQ" instead of "clippy-app" for clipboard manager
Note : the link to your dotfiles gists, is pointing to a Notions workspace
Note2 : thank you for all your "Learn In Public" resources
Nice Shawn!
Very complete list, took some inspiration from this as I'm currently building a new brew formula to do most of this for me when I'm reinstalling my Mac again.
Also going to give Z a shot π
I use a dotfile to setup almost everything!
github.com/horacioh/dotfiles/blob/...
there are a lot of people with this mode, you can search for repos named βdotfilesβ
That's a nice one. I have recently started my own long-term project in the same direction. I am collecting about a decade of knowledge and insider tips into a (won't call it a book yet) scrapbook of sorts. I have released a very early version of on Gumroad: p5v.gumroad.com/l/setting-up-your-mac Anyone generous enough to back my little project at this stage will enjoy its full value over time. Thanks!
Why do you need another app for clipboard history when you have this built in in Alfred already?
alfredapp.com/help/features/clipboard
Why do you need another app for clipboard history when you have this built in in Alfred already?
alfredapp.com/help/features/clipbo...
To automate (most of) these steps I created github.com/bramus/freshinstall that does the job for me. Might need a few tweaks to continue working with the latest macOS/etc versions.
looks very handy! thx for sharing!
Do you have all of this configured in a dotfiles repo somewhere?
Why do you need another app for clipboard history when you have this built in in Alfred already?
Why do you need another app for clipboard history when you have this built in in Alfred already?