Personal macOS configuration
What's inside: zsh (oh-my-zsh + starship), git (with per-project identities),
Ghostty, AeroSpace, Karabiner, Neovim (NvChad), Zed, VSCode, lazygit, yazi,
Claude Code, and gh. Retired configs live in .archive/.
- Install Homebrew.
- Clone this repo to
~/.dotfiles:git clone https://github.com/scheron/dotfiles.git ~/.dotfiles - Install formulae, casks and fonts:
~/.dotfiles/setup-brew.sh - Symlink everything into place (idempotent; backs up any existing file to
<path>.backup):~/.dotfiles/setup-symlinks.sh - Open Neovim once and let it install plugins:
nvim→:Lazy sync. - Restart the shell.
setup-pnpm.sh (global pnpm packages) is optional — language servers are now
managed by Neovim's Mason, so most machines don't need it.
After git pull, re-run setup-symlinks.sh whenever the pull adds a new
tracked config. Existing symlinks pick up edits instantly, but new files aren't
linked until the script runs again — skipping it can leave a config referencing
a not-yet-linked file (e.g. a hook pointing at a missing script). It's
idempotent, so re-running it every time is safe.
Skills are symlinked into ~/.claude/skills/ by setup-symlinks.sh, from two
places under claude/:
claude/dev-stack/— the self-contained dev-stack engine (skills + agents- hooks + scripts). Its own
install.shlinks and prunes only its own names;setup-symlinks.shruns it for you.
- hooks + scripts). Its own
claude/skills/— a bucket for standalone skills (e.g.excalidraw-diagram). Everyclaude/skills/<name>/is linked in by name.
To add a skill, drop its folder into claude/skills/ and re-run
setup-symlinks.sh — the glob picks it up, no script edit needed:
cp -r some-skill ~/.dotfiles/claude/skills/some-skill
~/.dotfiles/setup-symlinks.shThis repo is public, so secrets and per-machine state are configured by hand:
- SSH & git identities — add your SSH keys and a
~/.ssh/configfor your git accounts; theincludeIfrules in.gitconfigpick the right identity per project directory once the keys exist. - npm —
npm loginif you publish or install private packages. - GitHub CLI —
gh auth login(onlyconfig.ymlis tracked;hosts.ymlholds the token and is not). - Claude Code — sign in on first
clauderun (~/.claude/.claude.jsonis not tracked). - Excalidraw skill renderer — optional Playwright pipeline that lets the
agent render and visually check its diagrams:
cd claude/skills/excalidraw-diagram/references && uv sync && uv run playwright install chromium(the.venv,uv.lock, and rendered PNGs are git-ignored).
- Editor font "Dank Mono" is paid — install it manually.
- Some Cursor-era VSCode extensions (see
VSCode/extensions.txt) come from OpenVSX and may differ on the Microsoft Marketplace.