Welcome to my dotfiles repository! This repository is managed using chezmoi, a tool designed to manage your dotfiles across multiple machines.
- CLI Tools π οΈ
- AI & Dev Workflow π€
- Claude Code Configuration π§ β
CLAUDE-CODE.md - GUI Tools π₯οΈ
- Applications π¦
- SetApp Applications π―
- Aliases & Functions π§
- Shortcuts & Keybindings β¨οΈ β
KEYBINDINGS.md - Installation π₯
- Acknowledgments π
- License π
Command-line tools are installed declaratively via Nix +
Home Manager (see
nix-config/home.nix). Homebrew is kept only for GUI
casks and a few system/exclusive packages. This replaces the previous
ASDF + Homebrew setup (see MIGRATION_NIX.md).
-
Package Management
- Nix + Home Manager: Declarative package & dotfile management
- Chezmoi: Dotfiles manager
- Homebrew: GUI casks + system tools (managed outside this repo)
-
Core Utilities
-
Shell & Terminal
- Oh My Zsh: Zsh configuration framework
- Powerlevel10k: Zsh theme
- bat: Enhanced
cat(Claude Dark theme) - eza: Modern
lsreplacement - Yazi: Terminal file manager
- fzf: Fuzzy finder
- zoxide: Smarter
cd - herdr: Terminal multiplexer β workspaces, panes and AI-agent panes. The daily driver.
- Tmux: Multiplexer it replaced. Still installed and configured (via home-manager) for existing sessions, but no longer the default.
- sesh: Smart tmux session manager
- htop / bottom / duf: System & disk monitors
-
Languages & Runtimes
- Node.js 24 + Bun + Deno + pnpm: JavaScript/TypeScript
- Go: Programming language
- Rust:
rustc,cargo,rust-analyzer,clippy,rustfmt - Python 3.13: Programming language
- PHP 8.4 + Symfony CLI: PHP ecosystem (pcov + redis extensions)
- Neovim: Hyperextensible Vim-based editor
-
Development Tools
-
Kubernetes & Cloud
-
Media
- ffmpeg / ImageMagick / poppler: Media & document processing
The toolchain the Claude Code config in private_dot_claude/
is built on. None of it comes from Nix or Homebrew β a fresh machine running
home-manager switch + brew bundle gets none of these, so they are listed
here with their real install command.
| Tool | What it does | Install |
|---|---|---|
| Claude Code | Primary coding agent β the whole .claude/ config targets it |
curl -fsSL https://claude.ai/install.sh | bash |
| Codex CLI | Third-party reviewer, used on sensitive PRs for adversarial diversity | npm i -g @openai/codex |
| CodeRabbit CLI | Complementary review pass (coderabbit review --agent) |
official installer β ~/.local/bin |
| gwm | Git worktree manager (TUI + CLI) β the default dev flow runs on it | cargo install --path . from the repo |
| graphify | AST graph of a codebase (graphify extract . --code-only, free, no API key) |
uv tool install graphifyy |
| mgrep | Semantic project search, first stop before grep |
bun add -g @mixedbread/mgrep |
| spark | CLI shim into Spark Mail (email / calendar / contacts) | ships with Spark Mail (SetApp) |
Version pinning is deliberate only for gwm, built from a local checkout. The rest track upstream.
The largest part of this repo. It lives in
private_dot_claude/ β ~/.claude, a private_ tree
because it holds .credentials.json and must stay 0700.
Full inventory β every skill, command and agent, one by one:
CLAUDE-CODE.md (generated, see below).
| Path | What it holds |
|---|---|
CLAUDE.md |
Entry point. Imports the four files below and defines the triggers for graphify and tolaria. |
RULES.md |
The working method: priorities (π΄ critical / π‘ important / π’ recommended), the tool cascade, git workflows, quality rules. |
WORKFLOW.md |
The same, in diagrams β tool-choice cascade, one flowchart per git workflow, where each kind of knowledge lives. |
FLAGS.md, PRINCIPLES.md |
Behavioural flags and engineering principles (SuperClaude base). |
skills/me/ |
My own procedures: git flows, self-paced loops, project bootstrap, document generation. |
skills/ (others) |
Standalone skills, plus 101 symlinks to third-party installs under ~/.agents/skills β those are not versioned here, the symlink records where they come from. |
commands/ |
Thin entry points (/me:β¦) that delegate to a skill. |
agents/, hooks/, output-styles/ |
Sub-agents, hooks, and output styles. |
scripts/ |
statusline.ts (the live status line, run through the Open Island wrapper) and its tests. |
Three principles hold the config together:
- Evidence over assumption. A claim is backed by a command's real output, a test, or documentation β never by what looks plausible.
- A gate is a shell command, not a judgement. The self-paced loops
(
me:loop:*) each own acheck_commandwhose exit code decides whether to continue. A check that cannot prove it ran is not a verdict β a review tool that fails with an exhausted quota returns empty output, and empty is not "zero findings". - Knowledge is not duplicated. Git holds the what (issues, PRs,
changelogs), the code and
graphifyhold the how, and the Obsidian-style vaults hold the why. If git already knows it, the vault does not repeat it.
python3 scripts/gen-claude-doc.py # β CLAUDE-CODE.md
python3 scripts/gen-keybindings.py # β KEYBINDINGS.mdBoth read the live ~/.claude and ~/.config, so they cannot drift silently β
which is exactly why the tables are not maintained by hand in this README.
Essential graphical tools:
-
Window Management (migrated from Yabai + skhd β see MIGRATION-YABAI-TO-AEROSPACE.md)
- AeroSpace: i3-like tiling window manager (8 workspaces, native bindings)
- Karabiner-Elements: Keyboard remapper β maps right β₯ to F18, the AeroSpace leader key
- JankyBorders: Active window borders
- SketchyVim: Vim keybindings in native text fields
- SwipeAeroSpace: Trackpad swipe gestures to switch AeroSpace workspaces
-
UI Enhancement
- Sketchybar: Custom menu bar (AeroSpace + SketchyVim integration)
- Open Island: Notch companion to monitor & control AI coding agents (Claude Code, Codexβ¦)
- SF Symbols: Apple system symbols
- Sketchybar App Font: Icon font
Key applications:
-
Development
- Ghostty + herdr: Primary dev environment β GPU-accelerated terminal + workspace/agent manager
- Claude: Desktop companion to the Claude Code CLI
- Codex: Desktop companion to the Codex CLI
- Zed (+ Zed Preview): Secondary IDE
- Neovim: Terminal editor
- OrbStack: Docker / Linux VM alternative
- Postman: API platform β not installed right now, kept here as a target to reinstall
-
Design
- Open Design: Local-first design workspace (MCP server wired into Claude Code)
- Pencil:
.pendesign files editor (MCP server wired into Claude Code) - Figma: Design tool
-
Browsers & Communication
- Helium: Privacy-first Chromium browser
- Mattermost: Team communication
- Discord: Community platform
- WhatsApp: Messaging
-
Productivity
Premium applications via SetApp:
-
Development
- TablePlus: Database management
-
Productivity
- CleanShot X: Screenshot tool
- PixelSnap: Measurement tool
- Sip: Color management
- ForkLift: Dual-pane file manager
- Nitro PDF Pro: PDF editing
-
System Tools
- CleanMyMac: System cleaner
- Spark Mail: Email client β also provides the
sparkCLI used by theuse-sparkskill
Aliases and functions are defined in
nix-config/home.nix(programs.zsh.shellAliases/initExtra), not in a standalone.zshrc.
| Alias | Command | Description |
|---|---|---|
x |
exit |
Exit terminal |
config |
cd $XDG_CONFIG_HOME |
Navigate to config directory |
edit-config |
$EDITOR $XDG_CONFIG_HOME |
Edit config directory |
reload-zsh |
source ~/.zshrc |
Reload ZSH configuration |
| Alias | Command | Description |
|---|---|---|
reload-nix |
home-manager switch --flake ~/nix-config |
Apply the Home Manager config |
edit-nix |
$EDITOR ~/nix-config/home.nix |
Edit home.nix |
edit-flake |
$EDITOR ~/nix-config/flake.nix |
Edit flake.nix |
| Alias | Command | Description |
|---|---|---|
py |
python3 |
Python 3 (Nix) |
python |
/usr/bin/python3 |
System Python 3 |
pa, laravel |
php artisan |
Laravel Artisan CLI |
a, adonis |
node ace |
AdonisJS Ace CLI |
ls |
eza --color=always --long --git --no-filesize --icons=always --no-time --no-user --no-permissions --group-directories-first |
Enhanced listing |
lg |
lazygit |
Terminal UI for Git |
lzd |
lazydocker |
Terminal UI for Docker |
f |
fzf --tmux top,50% |
Fuzzy finder in a Tmux popup (top, 50% height) |
| Alias | Command | Description |
|---|---|---|
gcs |
gh copilot suggest |
Get command suggestions |
gce |
gh copilot explain |
Explain commands |
gcc |
gh copilot config |
Configure Copilot |
gca |
gh copilot alias |
Manage Copilot aliases |
| Alias | Command | Description |
|---|---|---|
cc |
claude --dangerously-skip-permissions |
Claude Code (skip permission prompts) |
cca |
claude --enable-auto-mode |
Claude Code in auto mode |
ccc |
claude --dangerously-skip-permissions --chrome |
Claude Code with Chrome |
ccv |
claude --dangerously-skip-permissions --verbose |
Claude Code verbose |
| Alias | Command | Description |
|---|---|---|
reload-sketchybar |
brew services restart sketchybar |
Restart Sketchybar |
edit-sketchybar |
$EDITOR $XDG_CONFIG_HOME/sketchybar |
Edit Sketchybar config |
reload-borders |
brew services restart borders |
Restart JankyBorders |
edit-borders |
$EDITOR $XDG_CONFIG_HOME/borders |
Edit JankyBorders config |
AeroSpace has no reload alias β it reloads in-config via β₯β β§R (see keybindings).
| Alias | Command | Description |
|---|---|---|
t |
tmux -2 |
Launch Tmux with 256 colors |
reload-tmux |
tmux source-file ~/.tmux.conf |
Reload Tmux configuration |
ad |
TMUX="" agent-deck |
Launch Agent Deck (outside a nested tmux) |
| Function | Description |
|---|---|
y [dir] |
Open Yazi and cd into the last visited directory on exit |
ccp [path] |
Launch Claude Code in a new tmux window of the main session (opens Ghostty if needed) |
awsp [filter] |
Interactive AWS profile picker (fzf), exports AWS_PROFILE, runs aws sso login if the session expired |
awst |
SSM port-forwarding tunnel to an RDS instance through an SSM-managed bastion (fzf pickers) |
zen |
Toggle the Sketchybar "zen" plugin |
edit-zsh / edit-tmux / edit-git |
Jump $EDITOR straight to the matching section of home.nix |
Every keybinding lives in KEYBINDINGS.md β herdr, AeroSpace,
Neovim, Zed, tmux and Ghostty, in one place.
That file is generated from the live configs on the machine:
python3 scripts/gen-keybindings.pyIt used to be ~230 lines of tables maintained by hand here, and they drifted from the actual config every time a binding changed. Regenerating is the only way to update them, so the document cannot go stale silently. Sources it reads:
| Section | Read from |
|---|---|
| herdr | ~/.config/herdr/config.toml |
| AeroSpace | ~/.config/aerospace/aerospace.toml |
| Neovim | ~/.config/nvim/lua/config/keymaps.lua + lua/plugins/*.lua |
| Zed | ~/.config/zed/keymap.json |
| tmux | ~/.tmux.conf (generated by home-manager) |
| Ghostty | ~/.config/ghostty/config |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/kbrdn1/dotfiles/main/install.sh)"- Install Command Line Tools
xcode-select --install- Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"- Install Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"- Clone and Apply Dotfiles
chezmoi init https://github.com/kbrdn1/dotfiles.git
chezmoi apply- Install Nix & Home Manager (CLI tools, shell, aliases β see MIGRATION_NIX.md)
# Install Nix (multi-user daemon)
sh <(curl -L https://nixos.org/nix/install) --daemon
# Apply the Home Manager config
nix run home-manager/release-24.11 -- switch --flake ~/nix-config
# thereafter: reload-nix- Configure system preferences:
# Keyboard
defaults write NSGlobalDomain KeyRepeat -int 1
# Screenshots
mkdir ~/Screenshots
defaults write com.apple.screencapture location ~/Screenshots
defaults write com.apple.screencapture type png
defaults write com.apple.screencapture disable-shadow -bool true
# Menu Bar
defaults write NSGlobalDomain _HIHideMenuBar -bool true
# Dock
defaults write com.apple.dock autohide -bool true
defaults write com.apple.dock autohide-time-modifier -float 0.15- Grant accessibility permissions to AeroSpace and Karabiner-Elements
- Install SetApp applications manually
- Restart your computer
Special thanks to:
- FelixKratz for window management setup inspiration
- The Chezmoi team for the dotfiles management tool
This project is licensed under the MIT License - see the LICENSE file for details.
