This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Personal dotfiles repo for macOS and Linux. Shell is zsh. Configs are symlinked into $HOME using GNU stow.
- Full setup:
bash install.sh(interactive, prompts for each section) - Symlink configs:
cd ~/.dotfiles && stow zsh vim tmux git(each arg is a stow package directory) - Add a new stow package: Create
<name>/<path-relative-to-home>thenstow <name> - Force stow on conflicts:
stow --adopt <packages>thengit checkout -- <packages>
- Each top-level directory is a GNU stow package — its contents mirror
$HOMEstructure zsh/.zshrcis the main shell config; requiresfzf,starship, andzoxidegit/.gitconfigincludes~/.gitconfig.localfor machine-specific user/email/credentialsinstall.shis interactive (y/N prompts) and handles: OS defaults, Homebrew, packages, language toolchains (Go, Rust, Node via nvm), stow symlinks, fonts, git identity, and tmux plugin manager
Default packages stowed on both platforms: zsh vim tmux git ghostty claude gemini yazi jj ssh
Linux-only packages: i3 linux conky
The jj package ships shared jujutsu config in jj/.config/jj/config.toml.
Machine-specific jj identity stays untracked in ~/.config/jj/conf.d/00-identity.toml
(written by install.sh); jj merges that with the shared config.
- Rust: rustup (not brew)
- Node: nvm (brew on macOS, curl script on Linux)
- Go: package manager (brew on macOS, apt/pacman on Linux)
- jj: cargo on Linux, brew on macOS
- podman-compose: installed via
uv tool install
After stowing tmux config, install tpm and press prefix + I to install plugins:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm