My macOS configuration, managed with GNU Stow. Each top-level directory
is a stow package; running stow <name> symlinks its contents into ~.
| Package | What it is |
|---|---|
bin |
personal scripts (tmux-sessionizer, sync-tix-to-vault, …) |
borders |
JankyBorders — window outlines tinted by skhd mode |
claude |
Claude Code global settings, hooks, status line |
codex |
OpenAI Codex CLI config |
fastfetch |
system info banner at shell startup |
fonts |
installed font files |
gate |
operator config for the gate/retro/handoff skills (vault, routing) |
ghostty |
Ghostty terminal config |
git |
gitconfig, commit template, global gitignore |
homebrew |
Brewfile — brew, cask, cargo, and npm package manifest |
karabiner |
keyboard remapping |
shell |
shell-agnostic .profile, aliases, functions |
sketchybar |
macOS status bar with mode indicator, calendar, battery, clock |
skhd |
modal hotkey daemon (yabai control, tmux mode, …) |
terminfo |
italic-capable iterm and tmux terminfo entries |
tmux |
true-color tmux with bell alerts and per-session colors |
vim |
vim config and plugin set |
yabai |
tiling window manager |
zsh |
zsh config with zplug, purer prompt, Human++ theme |
Kept around for reference or because something on disk still expects
them, but no longer maintained: babel, bash, chunkwm (replaced by
yabai), clang-format, dircolors, eslint, grc, iterm2 (replaced
by ghostty), khd (replaced by skhd), mpv, neovim, readline,
ruby, spaceship, vint.
bootstrap.sh brings a new (or existing) Mac all the way up — idempotent,
so it's safe to re-run any time to converge a machine back to this state.
git clone https://github.com/fielding/dotfiles ~/etc && cd ~/etc
./bootstrap.sh --dry-run # preview everything first
./bootstrap.sh # do itPhases (run a subset with --only/--skip, list with --list):
| Phase | Does |
|---|---|
preflight |
Xcode CLT, Rosetta, hostname, timezone |
sshkey |
per-machine ed25519 key + agent/keychain wiring (never clobbers) |
homebrew |
install Homebrew + Rust, then brew bundle the Brewfile |
stow |
symlink the active packages into ~ |
terminfo |
compile the italic-capable tmux terminfo entries |
shell |
default shell → zsh, install zplug + vim plugins |
macos |
defaults write tweaks and the Dock-clutter cleanup |
yabai |
scripting-addition sudoers wiring (SIP stays a manual step) |
agents |
install selected LaunchAgents from bootstrap/launchagents/ |
continuity |
Handoff/Universal Control toggles + M4↔M5 one-desk checklist |
mlx |
Apple-Silicon local-model stack (mlx-lm via uv) |
--agents cadence,glean,weather,sync-tix-to-vault picks which LaunchAgents
get installed (those four are the default; ollama is opt-in). --no-agents
skips them. --yes runs non-interactively (keeps the current hostname).
SIP / yabai: full scripting-addition support needs SIP partially
disabled, which can only be done from Recovery. The yabai phase wires up
everything else and prints the exact csrutil disable … command to run
there; reboot and ./bootstrap.sh --only yabai afterward.
brew install stow
# Symlink the active set:
stow bin borders claude codex fastfetch fonts ghostty git homebrew \
karabiner shell sketchybar skhd terminfo tmux vim yabai zsh
# Compile terminfo entries (italic support in tmux):
tic ~/.terminfo/74/tmux.terminfo
tic ~/.terminfo/74/tmux-256color.terminfoMost colors come from Human++,
my base24 palette. The shell-init script under
~/src/hack/human-plus-plus/dist/shell-init.sh is sourced from .zshrc
and emits the OSC palette overrides at startup.
- Jeffrey Carpenter and his dotfiles — for somebody to "talk nerdy" to.
- Mathias Bynens and his dotfiles.
- Xero Harrison and his dotfiles.
