The init.sh script will add all the relevant symlinks in order to link the apps to their relevant configs.
init.sh installs pam/sudo_local to /etc/pam.d/sudo_local, enabling fingerprint
auth for sudo in the terminal. /etc/pam.d/sudo already includes sudo_local,
and that file survives macOS updates.
pam-reattach (from the Brewfile) is
loaded first so Touch ID also works inside tmux/screen — without it, pam_tid.so
fails to reach the GUI session and silently falls back to a password prompt.
Installing sudo_local requires sudo, so on a fresh machine init.sh will prompt
for your password once (Touch ID isn't set up yet at that point).
This repo is public, so anything with key material or account identifiers is kept out of it. After a reformat, restore these manually from the password manager:
- SSH private keys (
~/.ssh/git,~/.ssh/server+ matching.pubfiles) — GitHub and homelab server (10.0.10.2) access.~/.ssh/configitself (just Host aliases, no key material) is tracked and symlinked byinit.sh. - WireGuard configs (
~/.wg.conf,~/.wg-dani.conf) — contain private keys. Restore both files to$HOMEbefore using thewgu/wgdaliases inzshrc. - AWS SSO config (
~/.aws/config) — not tracked at all (also avoids publishing account IDs/SSO URLs). Re-runaws configure ssoper profile after reformat. - The rest of
~/.claude/settings.json(model,tui,editorMode,enabledPlugins) — personal preference, quick to redo. Only thestatusLineblock is tracked (see next section);init.shsymlinks a minimalclaude/settings.jsoncontaining just that key, so those other prefs need to be reconfigured by hand after a fresh install.
claude/statusline.sh is registered as Claude Code's statusLine hook via
claude/settings.json (symlinked to ~/.claude/settings.json by init.sh).
Every time it runs, it caches the session's model/context/rate-limit data to
~/.claude/rate-limit-cache.json. tmux/status.sh reads that cache and
appends a 🤖5h:NN%@time/7d:NN%@day time segment to the tmux header — usage
plus exact reset time for each window — with a (Nm) staleness note if the
cache is more than 30 minutes old (e.g. no active Claude Code session). The
5h/7d figures are Anthropic's rolling rate-limit windows for Pro/Max
subscriptions; they only appear once a session has had its first API response.
If you add your own preferences to ~/.claude/settings.json (model, plugins,
etc.), they'll live only on that machine unless you fold them into
claude/settings.json in this repo too.