All posts

My macOS System Setup

A reference for how I configure my new Mac — package manager, terminal, shell, tools, and apps.

macOSSetupToolsTerminalDotfilesproductivity
3 min read
My macOS System Setup

The very first thing I install on a Mac is Homebrew. Nearly every tool and app I rely on is available which makes bootstrapping a machine painless.

I keep all my configuration in a personal dotfiles repository. When I set up a fresh system, I clone my dotfiles repo and run:

brew bundle install

This reads my Brewfile and installs everything listed in it in one shot. Homebrew Bundle is basically lockfile for your system packages.

Terminal

I use WezTerm. It's lightweight, has a low CPU/memory footprint, and is configured entirely in Lua, which is a genuinely best language to write config in.

My WezTerm config lives in my github dotfiles repo — clone it into ~/.wezterm.lua and that's all it. It includes custom keybindings for navigating between them and splitting panes (vertical/horizontal).

Shell

I use Zsh, supercharged with Oh My Zsh. macOS ships with Zsh by default now, but if yours doesn't have it, Homebrew can install it.

My .zshrc is in github dotfiles repo, though not everything is in it you might need to add like env vars which will be relevant to your device.

Prompt

I use Powerlevel10k — fast, no-nonsense, and highly configurable. Worth turning on the transient prompt option if you adopt it. My config (~/.p10k.zsh) is in the dotfiles repo.

CLI Tools

  • eza — a modern, faster replacement for ls
  • volta — manages Node.js versions; lighter than NVM and auto-switches versions per-project via the volta field in package.json
  • fkill — kills processes without the ceremony of looking up a PID and running kill -9
  • fzf — fuzzy search over shell history, far more usable than the default Ctrl+R
  • OpenCode — an open-source AI coding agent that runs in the terminal and works with multiple AI models

Plugins I used

PluginWhat it does
zsh-autosuggestionsSuggests commands as you type, based on history
zsh-syntax-highlightingHighlights invalid commands in red before you run them
zJump to frequently visited directories by fuzzy name — z github takes me straight to ~/code/github
git-extrasAdds handy git commands, like git undo (undo last commit) and git delete-branch <name> (deletes both local and remote branch) — full command list here
batmodern cat

Aliases

# zshrc 
alias zs="source ~/.zshrc"

# eza = ls
alias ls="eza"

# node_modules clean
alias nuke="rm -rf node_modules"

# kill process
alias k="fkill -v"

# git
alias gdb="git delete-branch"

Applications

  • Docker Desktop — runs and manages Docker containers locally on macOS
  • CommandX — brings standard ⌘X cut-and-paste behavior to macOS for files
  • Bitwarden — password manager
  • Raycast — a fast, keyboard-first application launcher and productivity command bar for macOS that is a powerful Spotlight replacement
  • LocalSend — quick file transfers between an mobile phone and Mac or devices on the same network
  • Proxyman — native HTTP debugging proxy for inspecting and debugging network requests
  • ImageOptim — fast image compression tool
  • SVGOMG — SVG optimization