Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

Β 

History

204 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Dotfiles

Welcome to my dotfiles repository! This repository is managed using chezmoi, a tool designed to manage your dotfiles across multiple machines.

Preview

Table of Contents πŸ“š

CLI Tools πŸ› 

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).

AI & Dev Workflow πŸ€–

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.

Claude Code Configuration 🧠

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).

How it is organised

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.

The idea behind it

Three principles hold the config together:

  1. Evidence over assumption. A claim is backed by a command's real output, a test, or documentation β€” never by what looks plausible.
  2. A gate is a shell command, not a judgement. The self-paced loops (me:loop:*) each own a check_command whose 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".
  3. Knowledge is not duplicated. Git holds the what (issues, PRs, changelogs), the code and graphify hold the how, and the Obsidian-style vaults hold the why. If git already knows it, the vault does not repeat it.

Regenerating the inventory

python3 scripts/gen-claude-doc.py     # β†’ CLAUDE-CODE.md
python3 scripts/gen-keybindings.py    # β†’ KEYBINDINGS.md

Both 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.

GUI Tools πŸ–₯

Essential graphical tools:

Applications πŸ“¦

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: .pen design files editor (MCP server wired into Claude Code)
    • Figma: Design tool
  • Browsers & Communication

  • Productivity

    • Raycast: Launcher & productivity tool
    • Tolaria: Knowledge base over the ~/Vault/pro and ~/Vault/perso git vaults β€” replaced Obsidian, which is still installed but no longer where notes are written
    • Rectangle: Window management
    • Dashlane: Password manager

SetApp Applications πŸ“¦

Premium applications via SetApp:

Aliases & Functions πŸ”§

Aliases and functions are defined in nix-config/home.nix (programs.zsh.shellAliases / initExtra), not in a standalone .zshrc.

System Aliases

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

Nix Aliases

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

Development Aliases

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)

GitHub Copilot Aliases

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

Claude Code 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

Window Manager Service Aliases

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).

Tmux Aliases

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)

Custom Functions

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

Shortcuts & Keybindings ⌨️

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.py

It 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

Installation πŸ“₯

One-Line Installation

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/kbrdn1/dotfiles/main/install.sh)"

Manual Installation

  1. Install Command Line Tools
xcode-select --install
  1. 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)"
  1. Install Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  1. Clone and Apply Dotfiles
chezmoi init https://github.com/kbrdn1/dotfiles.git
chezmoi apply
  1. 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

Post-Installation

  1. 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
  1. Grant accessibility permissions to AeroSpace and Karabiner-Elements
  2. Install SetApp applications manually
  3. Restart your computer

Acknowledgments πŸ™

Special thanks to:

License πŸ“„

This project is licensed under the MIT License - see the LICENSE file for details.

Releases

Packages

Used by

Contributors

Languages