Config files for macOS. Managed with symlinks via install.rb.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"git clone <repo-url> ~/iain/dotfiles
cd ~/iain/dotfilesruby install.rb -n # preview what will happen
ruby install.rb # do itThis does three things in order:
- Symlinks config files into place (
config/*→~/.config/*,rc/*→~/.<name>,claude/*→~/.claude/*). Existing files are backed up with a.backupsuffix. brew bundle— installs packages from theBrewfile(auto-detected when the file exists).macos.sh— applies macOS defaults (auto-detected on macOS).
Each step can be controlled with flags:
ruby install.rb --no-brew # skip brew bundle
ruby install.rb --no-macos # skip macOS defaultsCreate ~/.config/git/config.local with your per-machine identity (see config/git/config.local.example):
[user]
email = you@example.com
name = Your Name
signingKey = ~/.ssh/id_ed25519.pubssh-keygen -t ed25519 -C "you@example.com"Add the public key to config/git/allowed_signers and to your GitHub account (both for authentication and signing).
echo /opt/homebrew/bin/fish | sudo tee -a /etc/shells
chsh -s /opt/homebrew/bin/fishOpen vim and run:
:PlugInstall
config/
fish/config.fish — shell: PATH, aliases, abbreviations
git/ — git config, global ignore, diff attributes, allowed signers
ghostty/config — terminal appearance and keybinds
mise/config.toml — runtime version manager settings
starship.toml — prompt theme (single-line, Nerd Font icons)
vim/ — modular vim config (auto-sourced via glob)
rc/
vimrc — vim entry point (sources files from config/vim/)
claude/
commands/ — custom Claude Code slash commands
Brewfile — Homebrew packages and casks
install.rb — installer: symlinks, brew bundle, macOS defaults
macos.sh — macOS system preferences (run via install.rb or standalone)