These are my personal dotfiles, managed with chezmoi, for setting up a consistent development environment across macOS and Linux systems.
This repository configures the following tools and applications:
- oh-my-zsh - Framework for managing Zsh configuration
- zsh - Shell configuration with custom prompt and aliases
- Pi - AI coding assistant CLI configured with the Monokai Classic theme
- Pi Kagi API - Pi extension for Kagi-powered search and fetch tools
- uv - Fast Python package installer and resolver
- nvm - Node Version Manager for managing Node.js versions
- pnpm - Fast, disk space efficient package manager for Node.js
- FiraCode Nerd Font - Monospaced font with programming ligatures and icons
- Helix - Modal terminal text editor configured with the Monokai Pro Spectrum theme
- GitHub CLI (gh) - GitHub's official command line tool
- Ghostty - Fast GPU-accelerated terminal emulator
- Homebrew - Package manager for macOS (macOS only)
- Secrets Management - 1Password integration via chezmoi for injecting API tokens and credentials
- Pixi - Package manager for Modular/MAX environments (Modular profile only)
- Agent skills - AI agent skills from
williamw/agent-skills(installed globally vianpx skills) - assistant-agent - personal work assistant starter from
williamw/assistant-agent(cloned locally for the Modular profile) - gh wt - bare-git worktree CLI extension from
williamw/gh-wt
Clone this repository and run the bootstrapper:
git clone <your-repo-url> ~/.dotfiles
cd ~/.dotfiles
./install.shThe bootstrapper installs chezmoi (if needed) and runs chezmoi init --apply with the personal profile by default. To install the Modular profile:
DOTFILES_PROFILE=modular ./install.shThe bootstrapper then:
- Installs required tools and applications for the selected profile via the
run_once_before_install-packages.sh.tmplscript (skipping anything already present) - Deploys all configuration files to their correct locations
- Sets zsh as the default shell
This repo is a chezmoi source directory. Files use chezmoi naming conventions:
dot_config/→~/.config/(ghostty, gh, helix, zsh, karabiner)dot_claude/→~/.claude/(legacy Claude Code settings; Modular profile only)dot_zshenv→~/.zshenv(sets ZDOTDIR)symlink_dot_zshrc→~/.zshrc(symlink to.config/zsh/.zshrc)dot_config/zsh/dot_zshrc.tmpl→~/.config/zsh/.zshrc(zsh configuration with optional 1Password-backed secrets)max/→~/max/(MAX/Modular project workspace; Modular profile only)run_once_before_install-packages.sh.tmpl→ package installation (runs once).chezmoi.toml.tmpl→ generated local chezmoi config with persisted profile data
Shared secrets are loaded opportunistically from 1Password at shell startup when available, but missing 1Password access should not prevent chezmoi from applying dotfiles.
Note: This repo is not cloned to the chezmoi default (~/.local/share/chezmoi). Use sync.py to diff and apply changes — it detects the repo location automatically. If you need to run chezmoi directly, pass -S with the path to your clone:
chezmoi -S /path/to/dotfiles diff
chezmoi -S /path/to/dotfiles apply ~/.config/ghostty/configThe install.sh bootstrapper also handles this automatically via chezmoi init --apply.
Karabiner configuration is automatically skipped on non-macOS systems.
A run_once_after_install-agent-tooling.sh step bootstraps the agent toolkit:
- Clones
williamw/agent-skillsandwilliamw/gh-wtinto~/Developeron both profiles. - On the Modular profile, also clones
williamw/assistant-agentto~/Developer/assistant-agentand prints a reminder to open it and run its setup flow from the docs. - On the personal profile, skips
assistant-agentand says that it is modular-only. - Syncs the managed skill pack via
agent-skills/skills/manage-skills/install-skills.py; skill policy lives inagent-skills, not in dotfiles. - Installs the
gh wtextension from the localgh-wtclone.
All target repos are public, so the step runs without GitHub authentication. It is idempotent: clones fast-forward on re-run and installs are safe to repeat.
If you fork this repository for your own use, make sure to update the following:
- Review the shell aliases and functions in
dot_config/zsh/dot_zshrcto match your preferences - Modify any legacy Claude Code permissions in
dot_claude/settings.jsonif desired - Ensure no API keys or tokens are committed to the repo
These dotfiles are designed to work on:
- macOS (tested on Apple Silicon only)
- Linux (Ubuntu/Debian-based distributions)
Platform-specific packages are handled via chezmoi templates in the run_once_before_install-packages.sh.tmpl script.
This work has been dedicated to the public domain under CC0 1.0 Universal. You can copy, modify, distribute and use the work, even for commercial purposes, all without asking permission. See the LICENSE file for details.
To the extent possible under law, the author has waived all copyright and related rights to this work.