My dotfiles commonly used in a UNIX environment.
# Link all dotfiles in home-directory
bash install.shIf you are setting up your machine from scratch:
# Requires XCode to be installed
sudo xcodebuild -license
# Install brew -> http://brew.sh/If you are using macOS and want to use the full configuration:
brew install tmux
# Used by Telescope in nvim for fast file search
brew install ripgrep
# For node management (https://github.com/Schniz/fnm)
brew install fnmThis setup uses Starship as the prompt (replaced oh-my-zsh for faster startup):
brew install starshipThe starship config is in starship.toml (symlinked by install.sh).
The Herdr config is in herdr/config.toml and is symlinked to ~/.config/herdr/config.toml by install.sh.
See its [keys] section for custom keybindings.
Shell startup time: ~120ms
- Starship instead of oh-my-zsh (~60% faster)
- Lazy-loaded goenv (saves ~100ms)
- Cached compinit (saves ~25ms)
- uv instead of pyenv (no shell init needed)
Using uv for Python management (replaces pyenv + pip + virtualenv):
brew install uv
# Install a Python version
uv python install 3.10
# Install global CLI tools
uv tool install llm
uv tool install pynvimThe nvim directory contains everything you need to get running.
Make sure to link all directories first, otherwise .config/nvim doesn't exist yet.
brew install neovimFor Python support in neovim, add to your nvim config:
vim.g.python3_host_prog = vim.fn.expand('~/.local/share/uv/tools/pynvim/bin/python')pi/settings.json and pi/keybindings.json are the portable user config.
See pi/keybindings.json for custom keybindings.
install.sh symlinks them into ~/.pi/agent/ (or PI_CODING_AGENT_DIR).
It converts identical existing files to symlinks, but leaves differing files and
other symlinks untouched. Back up and reconcile any skipped files manually.
Run /reload in Pi after changing config.
Use pi/, not .pi/: .pi/ is Pi's project-specific configuration directory.
Pi can update the linked settings when preferences change; review the Git diff.
pi/.gitignore permits only the two approved config files; extend that allowlist
when deliberately adding more portable config.
~/.pi/agent/AGENTS.mdand most skills/extensions are already symlinked topersonal-pi-extensionsorminibotcheckouts. Keep their source in those repos rather than copying it here. They still need a separate checkout/install.- Local extensions worth reviewing for migration:
herdr-agent-state.tsandworkmux-status.tsin~/.pi/agent/extensions/. - Local skills worth reviewing:
herdr,herdwerk, andrebasein~/.pi/agent/skills/. Review private paths/context before tracking them. The localdatadogskill collection should be managed from its upstream source. - Broken links found during the audit:
extensions/fzf.ts,skills/example-skill, andskills/merge. These were left untouched. - Keep authentication, sessions, trust decisions, model caches, logs, private
context/, Ketryx environment/user mappings, the vault, and sound runtime state outside Git. Review any future MCP/provider config for secrets first.
Do not symlink or copy the entire ~/.pi/agent directory into this repository.
Each machine has configurations which only make sense for the local context.
Create a ~/.zshrc.local to apply additional settings (API keys, machine-specific paths, etc.).
Key Repeat:
defaults write -g InitialKeyRepeat -int 13
defaults write -g KeyRepeat -int 2