Personal macOS dotfiles.
Prerequisites:
- macOS (Apple Silicon or Intel)
- SSH key for GitHub (setup guide)
Phase 1: Bootstrap (one-time setup)
curl -fsSL https://raw.githubusercontent.com/nhessler/dotfiles/main/bin/bootstrap.sh | bashPhase 2: Setup (packages & languages)
~/Projects/nhessler/dotfiles/bin/setup.shUse --skip-mas if not signed into the App Store.
Phase 3: Post-Setup (manual steps)
See docs/post-setup.md for app logins, license keys, and sync setup.
- Xcode Command Line Tools
- Rosetta 2 (Apple Silicon only)
- Security hardening: FileVault check, firewall, TouchID sudo
- Homebrew
- ASDF version manager
- Dotfile symlinks
- Software updates
- Brewfile packages (CLI tools, casks, App Store apps)
- ASDF languages: Ruby, Erlang, Elixir, Node.js
- Fish shell (set as default)
- Nerd fonts
- macOS system defaults
dotfiles/
├── bin/ # Setup scripts
│ ├── bootstrap.sh # Phase 1: one-time setup
│ ├── setup.sh # Phase 2: packages & languages
│ ├── install-nerd-fonts.sh
│ └── macos-defaults.sh
├── dot-config/ # → ~/.config/
│ ├── fish/ # Shell
│ ├── git/ # Git config & hooks
│ ├── homebrew/ # Brewfile
│ ├── emacs/ # Editor
│ ├── starship/ # Prompt
│ └── ghostty/ # Terminal
├── dot-hammerspoon/ # → ~/.hammerspoon/
├── dot-claude/ # → ~/.claude/
├── caddy/ # Local dev server (gitignored)
└── docs/ # Additional guides
Run multiple Postgres versions using Docker with persistent volumes. This makes it easy to switch versions or run multiple instances on different ports.
First-time setup (create the volume directory):
mkdir -p ~/docker/volumes/postgres-17Run Postgres:
docker run --rm --name postgres-17 -p 127.0.0.1:5432:5432 \
-v $HOME/docker/volumes/postgres-17:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=postgres -d postgres:17-alpineTo run multiple versions, use different ports and volume directories:
# Postgres 15 on port 5433
docker run --rm --name postgres-15 -p 127.0.0.1:5433:5432 \
-v $HOME/docker/volumes/postgres-15:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=postgres -d postgres:15-alpineSet up SSH commit signing for a repository:
git secure -n "Your Name" -e you@example.com -k ~/.ssh/id_ed25519Install all Nerd Fonts (run automatically by setup.sh, or manually):
~/Projects/nhessler/dotfiles/bin/install-nerd-fonts.sh- Strap - Mike McQuaid's macOS setup
- GitHub Does Dotfiles
Resources for generating strong passphrases: