Skip to content

Latest commit

History

662 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

dotfiles

My macOS configuration, managed with GNU Stow. Each top-level directory is a stow package; running stow <name> symlinks its contents into ~.

desktop preview

Active packages

PackageWhat it is
binpersonal scripts (tmux-sessionizer, sync-tix-to-vault, …)
bordersJankyBorders — window outlines tinted by skhd mode
claudeClaude Code global settings, hooks, status line
codexOpenAI Codex CLI config
fastfetchsystem info banner at shell startup
fontsinstalled font files
gateoperator config for the gate/retro/handoff skills (vault, routing)
ghosttyGhostty terminal config
gitgitconfig, commit template, global gitignore
homebrewBrewfile — brew, cask, cargo, and npm package manifest
karabinerkeyboard remapping
shellshell-agnostic .profile, aliases, functions
sketchybarmacOS status bar with mode indicator, calendar, battery, clock
skhdmodal hotkey daemon (yabai control, tmux mode, …)
terminfoitalic-capable iterm and tmux terminfo entries
tmuxtrue-color tmux with bell alerts and per-session colors
vimvim config and plugin set
yabaitiling window manager
zshzsh config with zplug, purer prompt, Human++ theme

Legacy

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.

Installation

Fresh machine

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 it

Phases (run a subset with --only/--skip, list with --list):

PhaseDoes
preflightXcode CLT, Rosetta, hostname, timezone
sshkeyper-machine ed25519 key + agent/keychain wiring (never clobbers)
homebrewinstall Homebrew + Rust, then brew bundle the Brewfile
stowsymlink the active packages into ~
terminfocompile the italic-capable tmux terminfo entries
shelldefault shell → zsh, install zplug + vim plugins
macosdefaults write tweaks and the Dock-clutter cleanup
yabaiscripting-addition sudoers wiring (SIP stays a manual step)
agentsinstall selected LaunchAgents from bootstrap/launchagents/
continuityHandoff/Universal Control toggles + M4↔M5 one-desk checklist
mlxApple-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.

Manual (stow only)

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.terminfo

Theme

Most 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.

Inspiration / thanks

About

:neckbeard: dotfiles for personal usage and synchronization between workstations

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages