macOS dotfiles managed with chezmoi. One command bootstraps a complete development environment with 1Password secrets, Catppuccin theming, and modern CLI tools.
- One-Command Setup - Bootstraps Homebrew, packages, fonts, and system preferences
- 1Password Secrets - SSH keys, commit signing, and credentials stay in your vault
- Catppuccin Mocha - Consistent colors across terminal, editor, git tools, and prompt
- Modern CLI - eza, bat, ripgrep, fd, delta replace ls, cat, grep, find, diff
- Polyglot Runtimes - Mise manages Node, Python, Ruby, and Go
- Claude Code - Superpowers plugins and episodic memory
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --one-shot <github-username>The --one-shot flag applies dotfiles then removes chezmoi (use --apply to keep it). Bootstrap installs Homebrew (SHA256-verified), 1Password CLI, packages, casks, fonts, configures macOS, and sets up runtimes via mise.
| Tool | Purpose |
|---|---|
| zsh | Shell |
| zap | Plugin manager |
| starship | Prompt |
| zoxide | Smart cd |
| fzf | Fuzzy finder |
Plugins: zsh-completions, fzf-tab, zsh-autosuggestions, zsh-history-substring-search, zsh-syntax-highlighting
| Old | New | Why |
|---|---|---|
ls |
eza | Icons, git status |
cat |
bat | Syntax highlighting |
grep |
ripgrep | Fast, recursive |
find |
fd | Intuitive syntax |
top |
htop | Interactive |
diff |
delta | Side-by-side, colors |
Version Control: git (with aliases, delta), gh, lazygit, gitleaks
Editors: neovim (LazyVim), VS Code
Containers: Docker Desktop, lazydocker
Runtimes: mise (Node LTS, Python, Ruby, Go)
Workflow: Rebase pulls with auto-stash, fast-forward merges, auto-prune, SSH signing via 1Password
Hooks: Gitleaks blocks secrets; commit-msg enforces conventional format
Aliases:
git lg # Log graph
git st # Status
git df # Diff stats
git go # Checkout or create branch- Browser: Chrome
- Terminal: Ghostty
- Passwords: 1Password + CLI
- AI: Claude, Claude Code
- Windows: Rectangle
- Fonts: JetBrains Mono, Fira Code, Hack, Meslo LG (Nerd Fonts)
Plugins: superpowers, episodic-memory, elements-of-style, double-shot-latte
MCP: Context7 (documentation lookup)
A shell wrapper detects when you are inside a git worktree of this repository and passes --source to chezmoi automatically. No special flags are needed:
cd ~/.claude-squad/worktrees/cm/some-branch
chezmoi diff # reads from the worktree, not ~/.local/share/chezmoiTo override manually:
chezmoi --source=/path/to/worktree diff.
├── .chezmoi.toml.tmpl # Config (name/email prompts)
├── .chezmoidata/
│ ├── packages.yaml # Brews, casks, extensions
│ └── claude.yaml # Claude permissions
├── .chezmoiexternal.toml.tmpl # External repos
├── .chezmoiscripts/ # Install scripts
├── dot_claude/ # Claude Code
├── dot_config/ # App configs
├── dot_gitconfig.tmpl # Git
├── dot_zshenv.tmpl # Environment
├── dot_zshrc.tmpl # Shell
└── private_dot_ssh/ # SSH (1Password agent)
Add packages in .chezmoidata/packages.yaml:
darwin:
brews:
- your-package
casks:
- your-application
vscodes:
- publisher.extension-nameAdd runtimes in dot_config/mise/config.toml:
[tools]
node = "lts"
python = "latest"Add variables to dot_zshenv.tmpl (all shells) or dot_zshrc.tmpl (interactive).
Run chezmoi apply.
- Dock: Auto-hide, fast animations
- Finder: Hidden files, extensions, path bar
- Keyboard: Fast repeat, short delay
- Trackpad: Tap to click
- Screenshots:
~/Screenshots, PNG
- 1Password stores SSH keys and secrets
- 1Password SSH agent handles connections
- All commits signed via 1Password
- Gitleaks blocks accidental secret commits
- Homebrew installer SHA256-verified
- macOS
- Internet (initial setup)
- 1Password