My System Setup
The highlights of my Mac configuration that I would put back in place first if I had to start over.
Last configured: M4 Mac — March 24, 2026
Package Managers
| Tool | Install method |
|---|---|
| Homebrew | brew.sh |
| pnpm | corepack enable && corepack prepare pnpm@latest --activate |
| nvm | standard install; then get node via nvm install node |
| yarn |
CLI Tools
| Tool | Purpose |
|---|---|
git | Version control |
gh | GitHub CLI |
python | Check with python3 --version |
Terminal Setup
- iTerm2 — terminal emulator
- Oh My Zsh — shell framework (setup guide)
- PowerLevel10K — prompt theme (include VS Code terminal font)
zsh-syntax-highlightingzsh-completions
Essential Apps
| App | Purpose |
|---|---|
| 1Password | Password manager — connect everywhere |
| Arc | Browser |
| Spotify | Music |
| VS Code | Web / React Native development |
| Xcode | iOS simulators, App Store certificates |
| Notion | Notes |
| Obsidian | Relational markdown notes with strong data sovereignty |
Mac Behavior
| App | Purpose | Notes |
|---|---|---|
| Alfred | Improved search | See config below |
| Better Touch Tool | Custom trackpad/mouse commands | |
| boringNotch | Temporary file shelf in notch area | |
| AltTab | cmd+tab expands minimized windows | Set Select previous window to shift+tab in Settings → Shortcuts |
| MonitorControl | External monitor brightness | brew install --cask monitorcontrol |
Alfred config:
- Suppress banner
- Shortcuts: access Apple Shortcuts via
sc - Wordsmith (thesaurus): trigger with
the
Known issue: Alfred not populating inline options (e.g. Power Thesaurus, Wordsmith)
Chrome Extensions
- 1Password
- Adblock Plus
- Star History / GitHub Star History
- YouTube Default Playback Speed (default 2×)
- Youtube Playback Speed Control
- Auto High Quality for YouTube
- ReaderView
- Antigram — Instagram modifier
- Better History
System Preferences
- Trackpad: Disable swipe between pages (two fingers) — prevents accidental back navigation
- Calendar: Add to Spotlight privacy list — to prefer Fantastical instead
- Mission Control: Disable Automatically rearrange Spaces based on most recent use
Settings → Desktop & Dock → uncheck the option
Utilities
| App | Purpose |
|---|---|
| TRex | OCR via screenshot |
| ActivityWatch | Time tracking |
| noTunes | Prevent Apple Music from opening; installed with brew install --cask notunes |
WebP Image Conversion
Saved as a Quick Action in ~/Library/Services. Source
for f in "$@"; do
ext="${f##*.}"
ext_lower=$(echo "$ext" | tr '[:upper:]' '[:lower:]')
case "$ext_lower" in
heic|heif)
tmp="/tmp/$(basename "${f%.*}").png"
/usr/bin/sips -s format png "$f" --out "$tmp" >/dev/null
/opt/homebrew/bin/cwebp -q 80 -quiet "$tmp" -o "${f%.*}.webp"
rm -f "$tmp"
;;
jpg|jpeg|png|tiff)
/opt/homebrew/bin/cwebp -q 80 -quiet "$f" -o "${f%.*}.webp"
;;
*)
# skip unsupported formats
;;
esac
done
VS Code Extensions
| Extension | ID |
|---|---|
| Markdown Inline Preview | markdown-inline-preview |
| cSpell | — |
cSpell settings.json config:
"cSpell.enabledFileTypes": {
"*": true,
"json": false,
"jsonc": false,
"log": false
}