Personal macOS dotfiles: an XDG-compliant zsh setup with starship for the prompt, mise for runtime versions, and a delta-powered git config. Managed with rcm.
- Homebrew
- rcm —
brew install rcm - 1Password CLI (
op) — used byhooks/post-upto provision the git identity / signing key
The shell config leans on a handful of CLI tools (installed via Homebrew):
starship, mise, sheldon, eza, fd, fzf, bat, ripgrep, delta,
gh, jq, glow. sheldon, vim-plug, and tmux's TPM bootstrap themselves on
first run.
Clone into ~/Workspaces:
mkdir -p ~/Workspaces && cd ~/Workspaces
git clone https://github.com/nicholasjhenry/dotfiles.gitInstall the dotfiles (the one-time RCRC var points rcup at this repo's
rcrc):
env RCRC=$HOME/Workspaces/dotfiles/rcrc rcuprcup symlinks the files into place and runs hooks/post-up, which creates the
required XDG directories, installs vim-plug + TPM, appends source $ZDOTDIR/main
to ~/.zshrc, and provisions secrets (see below). After the first run, rcup
symlinks rcrc to ~/.rcrc, so subsequent updates are just:
rcupRun rcup again after pulling new changes to symlink any new files.
| Path | Purpose |
|---|---|
zshenv → ~/.zshenv |
XDG base dirs + ZDOTDIR=$XDG_CONFIG_HOME/zsh |
config/zsh/ |
Shell config; main is the entry point (sourced from ~/.zshrc) |
config/git/ |
git config, global ignore, commit message template, template/ hooks (ctags) |
config/starship.toml |
Prompt |
config/tmux/tmux.conf |
tmux |
config/{bundle,ctags,irb,pry,psql}/ |
Per-tool config |
local/bin/ → ~/.local/bin/ |
Small scripts (note, haikunator, docker-tag) |
vim/, vimrc, vimrc.bundles |
vim — the EDITOR fallback (Zed is primary); plugins via vim-plug |
iterm2/ |
iTerm2 color schemes |
hooks/post-up |
rcm post-install hook |
rcrc |
rcm configuration |
Machine-local and secret settings live in ~/.config/secrets/ (kept out of this
repo):
-
~/.config/secrets/shrc— sourced last byconfig/zsh/main, so it can override anything above it. Put machine-specific env vars, aliases, and secrets here.hooks/post-upcreates an empty one on first run. -
~/.config/secrets/gitconfig— included byconfig/git/config. Holds your git identity and signing key:[user] name = Your Name email = you@example.com signingkey = <GPG signing key>
hooks/post-upprovisions this from 1Password (op read op://Setup/gitconfig/notesPlain). Becausecommit.gpgsign = true, commits will fail until this file exists with a validsigningkey.
Based on and inspired by thoughtbot's dotfiles, whose original work remains under an MIT License.