My 2023 New Mac Setup

I set up my new Macbook Air (13 inch, 2023 M2 16 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 and another from 2022. If I update this post in future, these contents will be archived but this URL will remain.

covered in Tomo’s Japanese podcast!

Scroll all the way to the bottom for lists and other Mac setup tools from friends!

Immediate first steps

  • Browser: Download Arc Browser (use my referral link for me to get arc brownie points at no cost to you) (I also use Chrome, mobile Safari and very rarely Edge), set to default.
    • create a google meet, share screen, record screen (to get all permissions working so you dont have to restart browser later). can also do this via discord or zoom webapps - just start call share screen and get all the perms working)
  • Log in to: (this helps with logins for the other services below)
    • Twitter
    • Github (more setup instructions below)
    • Gmail
  • Install Warp (my new terminal of choice, good for AI generated commands)

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)

autoconf	fnm		glib		libtiff		libyaml		openssl@3	ripgrep
bat		fontconfig	go		libuv		little-cms2	pcre2		ruby
brotli		freetype	graphite2	libx11		lz4		pixman		sqlite
ca-certificates	fzf		harfbuzz	libxau		lzo		pkg-config	xorgproto
cairo		gdbm		icu4c		libxcb		m4		pnpm		xz
deno		gettext		jpeg-turbo	libxdmcp	mpdecimal	pyenv		yarn
diff-so-fancy	gh		libev		libxext		openjdk   	z pipx
docker		giflib		libpng		libxrender	openssl@1.1	readline	zstd
  • if you run into m1 brew install issues, this stackoverflow answer helped me: arch -x86_64 brew install YOUR_PACKAGE. as of 2023 i had no issues with this with m2/macos ventura
  • Other things to try:
    • entr (rerun commands when files change)
    • tig (git log replacement)
    • boop
    • murder
    • running
  • Fast/Deterministic Alternative to Homebrew - Nix - sh <(curl -L https://nixos.org/nix/install) --daemon

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

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

  • Download, install, and set font - Inconsolata for Powerline and Meslo LG M for Powerline
    • autosuggestions: git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-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
  • Copy my dotfiles (vimrc, zshrc, .gitignore_global): https://gist.github.com/swyxio/7fa1009e460ecb818d5e6d9ca4616a05
  • You installed zsh above ZSH, now set up the rest
    • git config --global init.defaultBranch main
    • git config --global user.name "swyxio"
    • agit 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 VSCode code --diff file1.js file2.js.
        • You can also try https://github.com/dandavison/delta
  • customize the /.oh-my-zsh/themes/agnoster theme from dotfiles
  • set font for 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)
  • you should already have pyenv installed from brew. now run pyenv install 3 to get the latest python 3. then git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv and pyenv global 3 to activate the thing you just installed.
    • NEW: the new hotness is uv from Astral. it’s a replacement for pip, virtualenv, pyenv, poetry, etc. very new but not a ton of personal experience and intend to try next time. pip install uv, then instead of future pip install use uv pip install, or uv venv instead of virtualenv or python -m venv. much faster and interchangeable with other tools… but still may have minor dependency resolution issues particularly for old projects.
    • pyenv virtualenv needs some zshrc setup, or else get Failed to activate virtualenv. Perhaps pyenv-virtualenv has not been loaded into your shell properly. errors, which i fixed with this.
    • install pytorch: pip3 install torch torchvision
  • Setup Node.js/NPM using - you should already have fnm (a faster alternative to nvm) from the Homebrew install done above so no separate download needed.
    • fnm install 18 to install node
    • npm login
    • 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 then netlify login
    • npm i -g sign-bunny fortune-node parrotsay fun little cli utilities to use
    • npm i -g undollar for removing $
    • npm install -g npm-check-updates for updating deps
    • sudo npm install -g trash-cli to add a trash command to so you dont permanently delete files
  • 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 in your zshrc
  • Misc - stuff i used to install and maybe dont need anymore

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 wall
  • brew install go you may need to export PATH=$PATH:/usr/local/go/bin

Setup Apps


Other good “new laptop setup” lists:

Tagged in: #mac #tech

Reactions: ❤️ 2 🚀 1
Loading comments...
Webmentions
Loading...

Subscribe to the newsletter

Join >10,000 subscribers getting occasional updates on new posts and projects!

I also write an AI newsletter and a DevRel/DevTools newsletter.

Latest Posts

Search and see all content