Installing the Hub
This setup is a hub-and-spoke model. The hub — affectionately, the
mothership — is the machine you author from: dotfiles get edited and pushed
here, secrets get seeded here, and Linux spokes get provisioned from here
with one command (czinit).
:::warning The hub must be macOS Parts of this stack depend on desktop apps that don't exist for Linux — Claude Desktop and the macOS-side Signal pairing among them — and the hub runs the launchd services (Vault Agent, signal-cli daemon) the rest of the tooling assumes. Spokes can be Linux; the hub can't. :::
One command
sh -c "$(curl -fsLS get.chezmoi.io)" -- \
init --source ~/src/dotfiles --apply https://gitea.stump.rocks/joestump/dotfiles.git
This installs chezmoi, clones the repo, and runs the install end-to-end.
Installing this as your own? Fork it and change one value —
githubUserin.chezmoidata.yaml— and every repo URL, credential helper, and plugin source re-points to your handle. Secrets come from an OpenBao/Vault server at runtime (VAULT_ADDR), so point that at your own instance; nothing secret lives in this repo.
What runs, in order
run_once_before_10-install-prereqs.sh— installs Homebrew (if missing) and Oh My Zsh (withKEEP_ZSHRC=yes, so it never clobbers the managed.zshrc).- Files apply —
~/.zshrc,~/.oh-my-zsh/custom/*.zsh,~/.Brewfile, the Vault Agent config, the Ghostty config. Themes + external zsh plugins clone via chezmoi externals. run_onchange_after_10-install-packages.sh—brew bundle --global(the tool list) + an OS-awarevaultinstall + any Go tools.run_onchange_after_*— Claude MCP merges, the plugin installs, the gitea hook.
Finish the secrets handshake
The agent needs your identity once:
export VAULT_ADDR=https://vault.stump.rocks # or your own OpenBao
vault login -method=oidc # seeds ~/.vault-token; the agent renews it
vault-agent start # launchd job renders ~/.config/vault/secrets-*.env
exec zsh
Now your API keys, AWS creds, and ~/.ssh/id_rsa are all populated from OpenBao.
See Secrets for the full picture.
Make the prompt pretty
The prompt uses a Nerd Font. It's installed (font-meslo-lg-nerd-font); select it
in your terminal:
Ghostty / Terminal → Settings → Font → MesloLGS Nerd Font
Ghostty itself is configured for you (Catppuccin Mocha, frosted glass) — see Terminal.
Daily loop
chezmoi edit ~/.zshrc # edit the source
chezmoi apply # write it live
chezmoi cd && git add -A && git commit -m "…" && git push && exit
Spokes pull it with chezmoi update.