Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mac Dev Setup

A curated list of the apps, CLI tools, & mac settings I use to get up and running fast on a new Mac.


Quick Start (fresh Mac)

  1. Install Chrome manually, via Safari.
  2. Make sure Git is installed — run git --version. If prompted to install developer tools, install them.
  3. Clone this repo:
    git clone https://github.com/jujoco/Mac-for-Software-Development.git
    cd Mac-for-Software-Development
  4. Install Homebrew:
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  5. Run the six brew install commands under CLI Applications and Desktop Applications below.
  6. ./scripts/link-dotfiles.sh — the only script here. Copies the zsh config to ~/.config/zsh, then symlinks ~/.zshrc/~/.zshenv/~/.zprofile to it. Open a new terminal window afterward.
  7. Node + npm globals — see Global npm Packages below.
  8. Python for Neovim — see Python (Neovim) below.
  9. Auth & remaining manual setup — see One-Time Manual Setup below.

Desktop Applications

iterm2              # terminal
claude               # Claude Desktop
docker               # Docker Desktop
obsidian             # notes
rectangle            # window manager
karabiner-elements   # key remapping
visual-studio-code   # code editor
handy                # voice dictation
bruno                # API testing
notunes              # disable Music button
brew install --cask iterm2 claude docker obsidian rectangle karabiner-elements visual-studio-code handy bruno notunes

Chrome is installed manually (Safari), not listed here.

Follow-up needed:

  • Rectangle → grant Accessibility on first launch
  • Karabiner-Elements → grant Input Monitoring + Accessibility on first launch
  • Docker Desktop → launch once, accept terms, approve the privileged helper
  • VS Code → Cmd+Shift+P: "Shell Command: Install 'code' command in PATH"

Keyboard Settings

Text Cursor Key-Repeat Tester: best butter smooth setting

enter in terminal & restart computer

defaults write -g KeyRepeat -int 1
defaults write -g InitialKeyRepeat -int 12

Settings > Keyboard > Keyboard Shortcuts... > App Shortcuts >

  • All Applications
    • disable Minimize
  • Google Chrome, VSCode, iTerm, etc.
    • disable Hide

CLI Applications

Note: after every homebrew install, carefully follow the logged instructions

Core tools

bat        # better cat
fd         # better find
ffmpeg     # audio/video converter
jq         # JSON processor
lazydocker # docker TUI
lazygit    # git TUI
neovim     # text editor
ripgrep    # better grep
rust       # rust toolchain
tree       # directory tree
uv         # python manager
wget       # http/ftp fetch
brew install bat fd ffmpeg jq lazydocker lazygit neovim ripgrep rust tree uv wget

Extras

coreutils  # GNU core utils
htop       # process viewer
jless      # JSON pager
pandoc     # doc converter
xh         # http client
brew install coreutils htop jless pandoc xh

Required by zsh/.zprofile

postgresql@17  # database
brew install postgresql@17

One-time setup

gh       # github cli -> gh auth login after
git-lfs  # large files -> git lfs install after
brew install gh git-lfs

Shell integration (open a new terminal after)

fnm                     # node version manager
fzf                     # fuzzy finder
zoxide                  # better cd
atuin                   # better history
powerlevel10k           # zsh prompt theme
zsh-syntax-highlighting # syntax highlighting
brew install fnm fzf zoxide atuin powerlevel10k zsh-syntax-highlighting

Global npm Packages

Pin Node to 24.16.0 and pnpm to 10.34.5 via fnm:

fnm install 24.16.0 && fnm default 24.16.0

npm install -g @playwright/cli @vscode/vsce corepack neovim vercel pnpm@10.34.5
  • @playwright/cli - browser automation and testing CLI
  • @vscode/vsce - VS Code extension publishing tool
  • corepack - Node package manager shim
  • neovim - Node.js client for Neovim
  • vercel - Vercel CLI
  • pnpm - fast, disk-efficient package manager

Python (Neovim)

Neovim's Python provider needs a python3 with pynvim importable — this keeps it in a dedicated uv-managed venv, isolated from any project venvs:

uv python install 3.12
uv venv ~/.venvs/neovim --python 3.12
uv pip install --python ~/.venvs/neovim/bin/python pynvim

Then set this in your nvim config:

vim.g.python3_host_prog = "~/.venvs/neovim/bin/python"

One-Time Manual Setup

gh auth login
git lfs install
p10k configure   # only if ~/.p10k.zsh doesn't already exist
  • Sign in to Claude Desktop / Claude Code
  • Grant the app permissions listed under Desktop Applications above
  • Recreate ~/.env (secrets) manually through a secure channel — not tracked in this repo

Config Files

This repo also bundles the dotfiles and app configs I carry between machines:

  • zsh/.zshenv • Loaded for every zsh invocation; sources secrets and sets locale, themes, and the bat man pager.
  • zsh/.zprofile • Login-shell setup run once per window; initializes Homebrew, fzf, and PATH for child shells to inherit.
  • zsh/.zshrc • Interactive shell config (Powerlevel10k, completions, history, fzf, atuin, zoxide, fnm).
  • zsh/aliases.zsh • Shell aliases
  • karabiner/karabiner.jsonKarabiner Elements key-remapping rules.
  • RectangleConfig.jsonRectangle window-management settings (import from Rectangle → Settings).

Not tracked: ~/.env (secrets) and ~/.p10k.zsh (Powerlevel10k config, from p10k configure).

Setup Scripts

  • scripts/link-dotfiles.sh • The only script in this repo. Copies zsh/ to ~/.config/zsh, then symlinks ~/.zshrc, ~/.zshenv, and ~/.zprofile to it. Safe to re-run — backs up whatever's currently at each target path first.

Collaboration tools

About

A curated list of the apps and CLI tools I install to get up and running fast on a new Mac.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages