My 2024 New Mac Setup

I set up my new Macbook Pro (14 inch, 2023 M3 Max 36 GB RAM 1TB HD) today. Here’s everything I use on a Mac.

Previous versions of this post: from 2018-2020, 2021, 2022 and 2023. 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!

New Mac Setup - Diffs i’m making this year

Usually I start these off with a from-scratch step by step procedure list, but because I am mostly replacing a lost laptop from last year, you can mostly follow my 2023 guide. However I am making a couple big changes this year, so I will start with the diffs, then go down to the from scratch guide.

Orion browser

This is the biggest change I’m making this year. I struggled with Arc browser all year and now it is dead. I still really like vertical tabs and foldered tabs and link previews, so I am now happily using Kagi’s Orion: https://kagi.com/orion/

Other apps i am using by default now

https://texts.com/ <- only way to get unread twitter dms

uv won Python

don’t install python the normal way. no conda, no brew python. use uv for python management.

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env.fish
uv python install 3.12

(i am a small angel in Astral)

Raycast task manager

switched to raycast instead of alfred https://www.raycast.com/swyxio

  • main things to use are the clipboard history (great, free)
  • and the chatgpt LLM integration (mild conflicts with the official ChatGPT desktop app keyboard shortcut, which you will have to reassign)

AI app installations

ollama run llama3.2
ollama run HammerAI/llama2-tiefighter
ollama run vanilj/mistral-nemo-12b-celeste-v1.9
ollama run qwen2.5-coder:14b
ollama run hf.co/unsloth/DeepSeek-R1-Distill-Llama-8B-GGUF:Q8_0

(use https://huggingface.co/spaces/DontPlanToEnd/UGI-Leaderboard to decide other models to download)

Other changes I am still evaluating

Failed changes

i tried fish shell. however, because most setups assume bash/zsh, this dooms you to a life time of translating readmes

image

life is too short for this.

New Mac Setup - from scratch

Immediate first steps

  • Browser: Kagi’s Orion: https://kagi.com/orion/ set to default.
    • IMMEDIATELY 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 ASAP)
  • Log in to: (this helps with logins for the other services below)
    • Twitter
    • Github (more setup instructions below)
    • Gmail
  • Install Warp (my normal terminal of choice, good for AI generated commands, but memory hog)

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)"
  • 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)

aom			icu4c@76		libvmaf			python@3.13
aribb24			imath			libvorbis		qemu
brotli			jpeg-turbo		libvpx			rabbitmq
ca-certificates		jpeg-xl			libx11			rav1e
cairo			krb5			libxau			readline
capstone		lame			libxcb			rubberband
certifi			leptonica		libxdmcp		sdl2
cjson			libarchive		libxext			snappy
colima			libass			libxrender		speex
dav1d			libb2			lima			sqlite
docker			libbluray		little-cms2		srt
docker-completion	libdeflate		lz4			svt-av1
dtc			libevent		lzo			tesseract
elixir			libidn2			m4			theora
erlang			libmicrohttpd		mbedtls			unbound
ffmpeg			libnghttp2		mpdecimal		unixodbc
flac			libogg			mpg123			vde
fnm			libpng			ncurses			webp
fontconfig		librist			nettle			wxwidgets
freetype		libsamplerate		opencore-amr		x264
frei0r			libslirp		openexr			x265
fribidi			libsndfile		openjpeg		xorgproto
gettext			libsodium		openssl@3		xvid
gh			libsoxr			opus			xz
giflib			libssh			p11-kit			yt-dlp
glib			libtasn1		pango			z
gmp			libtiff			pcre2			zeromq
gnutls			libtool			pipx		 zimg
graphite2		libunibreak		pixman			zstd
harfbuzz		libunistring		pnpm
highway			libusb			postgresql@14
honcho			libvidstab		python-packaging
flyctl

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

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"
    • 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 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.

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)
  • Python: no more pyenv and no more Anaconda for me. 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 22 to install node
    • we did brew install pnpm earlier <- seems to be increasingly the norm
    • npm login
    • npm config set loglevel="warn"
    • 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
    • pip3 install --user powerline-status
    • go to a neutral folder and git clone <https://github.com/powerline/fonts> && cd fonts && ./install.sh

Setup Apps


Other good “new laptop setup” lists:

Tagged in: #mac #tech

Reactions: ❤️ 9
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