An open API service indexing awesome lists of open source software.

https://github.com/kbrdn1/dotfiles

My personal OS X dotfiles.
https://github.com/kbrdn1/dotfiles

bat brew chezmoi dotfiles ghostty home-manager nix omz p10k sketchybar skhd superfile tmux zed zsh

Last synced: 3 months ago
JSON representation

My personal OS X dotfiles.

Awesome Lists containing this project

README

          

# Dotfiles

Welcome to my dotfiles repository! This repository is managed using [Chezmoi](https://www.chezmoi.io/) and [Nix Home Manager](https://github.com/nix-community/home-manager).

Preview

## Table of Contents πŸ“š

- [Stack Overview πŸ“¦](#stack-overview-)
- [Sketchybar Themes 🎨](#sketchybar-themes-)
- [Package Management πŸ› οΈ](#package-management-)
- [CLI Tools πŸ’»](#cli-tools-)
- [GUI Applications πŸ–₯️](#gui-applications-)
- [Aliases & Functions πŸ”§](#aliases--functions-)
- [Window Manager (AeroSpace) πŸͺŸ](#window-manager-aerospace-)
- [Shortcuts & Keybindings ⌨️](#shortcuts--keybindings-)
- [Neovim Configuration πŸ“](#neovim-configuration-)
- [Zed Configuration ⚑](#zed-configuration-)
- [Installation πŸ“₯](#installation-)
- [Acknowledgments πŸ™](#acknowledgments-)
- [License πŸ“„](#license-)

## Stack Overview πŸ“¦

| Layer | Tool | Purpose |
|-------|------|---------|
| **Package Manager** | Nix + Home Manager 24.11 | Declarative CLI tools (70+ packages) |
| **GUI Apps** | Homebrew Casks | GUI applications and system tools |
| **Dotfiles** | Chezmoi | Configuration file management |
| **Shell** | Zsh + Oh-My-Zsh | Interactive shell with plugins |
| **Theme** | Powerlevel10k | Shell prompt theme |
| **Primary Editor** | Zed | Modern code editor with AI integration |
| **Secondary Editor** | Neovim + LazyVim | Terminal editor with LSP, Claude Code integration |
| **Terminal** | Ghostty + Kitty + Tmux | GPU terminals with multiplexer (Claude Dark theme) |
| **Window Manager** | AeroSpace + Karabiner-Elements | Tiling window manager (no SIP required) |
| **Menu Bar** | Sketchybar | Custom menu bar with 6 themes |
| **File Manager** | Yazi + Superfile | Terminal file managers |
| **Music** | MPD + rmpc | Music player daemon with TUI client |

## Sketchybar Themes 🎨

| Theme | Style | Accent Color | Description |
|-------|-------|--------------|-------------|
| **Claude Dark** ⭐ | Dark | `#D4825D` (copper) | Warm, elegant theme (default) |
| **Claude Light** | Light | `#C15F3C` (copper) | Light version for bright environments |
| **Blueberry Dark** | Dark | `#27E8A7` (mint) | Fresh blue/violet palette |
| **Catppuccin** | Dark | Pastel | Modern pastel theme |
| **Tokyo Night** | Dark | Blue | Popular VS Code theme port |
| **Nord** | Dark | Cyan | Arctic, bluish color palette |

### Theme Commands

| Command | Description |
|---------|-------------|
| `~/.config/sketchybar/change_theme.sh ` | Change to specified theme |
| `~/.config/sketchybar/preview_theme.sh` | Preview all available themes |

## Package Management πŸ› οΈ

| Tool | Version | Purpose | Packages |
|------|---------|---------|----------|
| **Nix** | Multi-user daemon | Declarative package manager | System foundation |
| **Home Manager** | 24.11 | User environment management | 63 CLI tools |
| **Homebrew** | Latest | GUI apps & system tools | Complementary to Nix |
| **Chezmoi** | Latest | Dotfile management | Config sync |

### Nix Management

| Alias | Command | Description |
|-------|---------|-------------|
| `reload-nix` | `nix run home-manager/release-24.11 -- switch --flake ~/nix-config` | Apply Nix configuration changes |
| `edit-nix` | `$EDITOR ~/nix-config/home.nix` | Edit Nix configuration file |

## CLI Tools πŸ’»

> **Note**: All Nix-managed tools have their versions pinned via `flake.lock` (nixpkgs 24.11 channel). Specific version numbers are listed where explicitly configured in `home.nix`; otherwise versions follow the nixpkgs pin.

### Programming Languages & Runtimes

| Tool | Version | Managed By | Notes |
|------|---------|------------|-------|
| [Node.js](https://nodejs.org/) | 24.x | Nix | JavaScript runtime |
| [Python](https://www.python.org/) | 3.13.x | Nix | Python interpreter |
| [PHP](https://www.php.net/) | 8.4.x | Nix | With pcov, redis extensions |
| [Go](https://golang.org/) | - | Nix | Golang compiler |
| [Rust](https://www.rust-lang.org/) | - | Nix | Rust toolchain (rustc, cargo, clippy, rustfmt) |
| [Rust Analyzer](https://rust-analyzer.github.io/) | - | Nix | Rust LSP server |
| [Bun](https://bun.sh/) | - | Nix | Fast JavaScript runtime |
| [Deno](https://deno.land/) | - | Nix | Secure TypeScript runtime |
| [pnpm](https://pnpm.io/) | - | Nix | Fast package manager |
| [Symfony CLI](https://symfony.com/download) | - | Nix | Symfony tooling |
| [Composer](https://getcomposer.org/) | Latest | Homebrew | PHP dependency manager |

### Kubernetes & Container Tools

| Tool | Version | Managed By | Purpose |
|------|---------|------------|---------|
| [kubectl](https://kubernetes.io/) | - | Nix | Kubernetes CLI |
| [Helm](https://helm.sh/) | - | Nix | Kubernetes package manager |
| [Minikube](https://minikube.sigs.k8s.io/) | - | Nix | Local Kubernetes |
| [ArgoCD](https://argoproj.github.io/cd/) | - | Nix | GitOps CD tool |
| [k9s](https://k9scli.io/) | - | Nix | Kubernetes TUI |
| [kubectx](https://github.com/ahmetb/kubectx) | - | Nix | Context switcher |
| [stern](https://github.com/stern/stern) | - | Nix | Multi-pod logs |
| [kustomize](https://kustomize.io/) | - | Nix | Kubernetes config |
| [kubecolor](https://github.com/hidetatz/kubecolor) | - | Nix | Colorized kubectl |
| [dive](https://github.com/wagoodman/dive) | - | Nix | Docker image explorer |
| [popeye](https://popeyecli.io/) | - | Nix | Kubernetes scanner |
| [Lazykube](https://github.com/TNK-Studio/lazykube) | Latest | Homebrew | Kubernetes TUI |

### Development Tools

| Tool | Version | Managed By | Purpose |
|------|---------|------------|---------|
| [Git](https://git-scm.com/) | - | Nix | Version control |
| [GitHub CLI](https://cli.github.com/) | - | Nix | GitHub integration |
| [Lazygit](https://github.com/jesseduffield/lazygit) | - | Nix | Git TUI |
| [Lazydocker](https://github.com/jesseduffield/lazydocker) | - | Nix | Docker TUI |
| [Lazysql](https://github.com/jorgerojas26/lazysql) | - | Nix | SQL TUI client |
| [Redis](https://redis.io/) | - | Nix | In-memory database |
| [Pandoc](https://pandoc.org/) | - | Nix | Document converter |
| [Neovim](https://neovim.io/) | - | Nix | Secondary editor (LazyVim) |
| [Sesh](https://github.com/joshmedeski/sesh) | - | Nix | Tmux session manager |
| [PlantUML](https://plantuml.com/) | - | Nix | Diagram generation |
| [D2](https://d2lang.com/) | - | Nix | Modern diagram scripting |
| [Gnuplot](http://www.gnuplot.info/) | - | Nix | Graph generation |
| [Just](https://github.com/casey/just) | - | Nix | Task runner |
| [Tokei](https://github.com/XAMPPRocky/tokei) | - | Nix | Code statistics |
| [Hyperfine](https://github.com/sharkdp/hyperfine) | - | Nix | Benchmarking |
| [Chezmoi](https://www.chezmoi.io/) | - | Nix | Dotfiles management |
| [Direnv](https://direnv.net/) | - | Nix | Directory-level environments |

### Shell & Terminal

| Tool | Version | Managed By | Purpose |
|------|---------|------------|---------|
| [Zsh](https://www.zsh.org/) | - | Nix | Interactive shell |
| [Oh My Zsh](https://ohmyz.sh/) | Latest | Manual (install.sh) | Zsh framework |
| [Powerlevel10k](https://github.com/romkatv/powerlevel10k) | Latest | Manual (install.sh) | Zsh theme |
| [Bat](https://github.com/sharkdp/bat) | - | Nix | Enhanced cat (Claude Dark theme) |
| [Eza](https://eza.rocks/) | - | Nix | Modern ls |
| [Yazi](https://github.com/sxyazi/yazi) | - | Nix | File manager |
| [Superfile](https://github.com/yorukot/superfile) | Latest | Homebrew | File manager TUI |
| [Tmux](https://github.com/tmux/tmux) | - | Nix | Terminal multiplexer |
| [Fzf](https://github.com/junegunn/fzf) | - | Nix | Fuzzy finder (Claude Dark theme) |
| [Zoxide](https://github.com/ajeetdsouza/zoxide) | - | Nix | Smarter cd (`z` command) |
| [Neofetch](https://github.com/dylanaraps/neofetch) | - | Nix | System info |

### System & Network Tools

| Tool | Version | Managed By | Purpose |
|------|---------|------------|---------|
| [coreutils](https://www.gnu.org/software/coreutils/) | - | Nix | GNU core utilities |
| [findutils](https://www.gnu.org/software/findutils/) | - | Nix | GNU find utilities |
| [gnused](https://www.gnu.org/software/sed/) | - | Nix | GNU sed |
| [gnugrep](https://www.gnu.org/software/grep/) | - | Nix | GNU grep |
| [Tree](https://mama.indstate.edu/users/ice/tree/) | - | Nix | Directory listing |
| [fd](https://github.com/sharkdp/fd) | - | Nix | Find alternative |
| [ripgrep](https://github.com/BurntSushi/ripgrep) | - | Nix | Grep alternative |
| [htop](https://htop.dev/) | - | Nix | Process viewer |
| [duf](https://github.com/muesli/duf) | - | Nix | Disk usage |
| [bottom](https://github.com/ClementTsang/bottom) | - | Nix | System monitor |
| [jq](https://jqlang.github.io/jq/) | - | Nix | JSON processor |
| [yq](https://github.com/mikefarah/yq) | - | Nix | YAML processor |
| [curl](https://curl.se/) | - | Nix | URL transfer |
| [wget](https://www.gnu.org/software/wget/) | - | Nix | Web downloader |
| [HTTPie](https://httpie.io/) | - | Nix | HTTP client |
| [dogdns](https://github.com/ogham/dog) | - | Nix | DNS client |

### Multimedia & Music

| Tool | Version | Managed By | Purpose |
|------|---------|------------|---------|
| [ffmpeg](https://ffmpeg.org/) | - | Nix | Video/audio processing |
| [ImageMagick](https://imagemagick.org/) | - | Nix | Image processing |
| [Poppler](https://poppler.freedesktop.org/) | - | Nix | PDF tools |
| [rmpc](https://github.com/mierak/rmpc) | - | Nix | MPD client TUI |
| [mpc](https://www.musicpd.org/clients/mpc/) | - | Nix | MPD CLI client |

### Cloud & API Tools

| Tool | Version | Managed By | Purpose |
|------|---------|------------|---------|
| [AWS CLI](https://aws.amazon.com/cli/) | v2 | Nix | Amazon Web Services |
| [Stripe CLI](https://stripe.com/docs/stripe-cli) | - | Nix | Stripe API testing |

## GUI Applications πŸ–₯️

### Development

| Application | Purpose | Managed By | Cask |
|-------------|---------|------------|------|
| [Zed](https://zed.dev/) | Modern code editor | Homebrew | `zed@preview` |
| [Ghostty](https://ghostty.org/) | GPU-accelerated terminal | Homebrew | `ghostty` |
| [Warp](https://warp.dev/) | Rust-based terminal | Homebrew | `warp` |
| [OrbStack](https://orbstack.dev/) | Docker alternative | Homebrew | `orbstack` |
| [Postman](https://www.postman.com/) | API platform | Homebrew | `postman` |
| [TablePlus](https://tableplus.com/) | Database management | SetApp | - |

### Browsers & Communication

| Application | Purpose | Managed By | Cask |
|-------------|---------|------------|------|
| [Arc](https://arc.net/) | Modern browser | Homebrew | `arc` |
| [Slack](https://slack.com/) | Team communication | Homebrew | `slack` |
| [Discord](https://discord.com/) | Community platform | Homebrew | `discord` |
| [WhatsApp](https://www.whatsapp.com/) | Messaging | Homebrew | `whatsapp` |
| [Telegram](https://telegram.org/) | Messaging | Homebrew | `telegram` |
| [Mattermost](https://mattermost.com/) | Team collaboration | Homebrew | `mattermost` |

### Productivity

| Application | Purpose | Managed By | Cask |
|-------------|---------|------------|------|
| [Raycast](https://raycast.com/) | Launcher & productivity | Homebrew | `raycast` |
| [Obsidian](https://obsidian.md/) | Knowledge base | Homebrew | `obsidian` |
| [Claude](https://claude.ai/) | AI assistant | Homebrew | `claude` |
| [Dashlane](https://www.dashlane.com/) | Password manager | App Store | - |
| [Figma](https://www.figma.com/) | Design tool | Homebrew | `figma` |
| [Anki](https://apps.ankiweb.net/) | Spaced repetition | Homebrew | `anki` |
| [CleanShot X](https://cleanshot.com/) | Screenshot tool | SetApp | - |
| [PixelSnap](https://getpixelsnap.com/) | Measurement tool | SetApp | - |
| [Sip](https://sipapp.io/) | Color picker | SetApp | - |
| [Yoink](https://eternalstorms.at/yoink/mac/) | Drag & drop helper | SetApp | - |

### System Tools

| Application | Purpose | Managed By | Cask |
|-------------|---------|------------|------|
| [AeroSpace](https://github.com/nikitabobko/AeroSpace) | Window manager | Homebrew | `nikitabobko/tap/aerospace` |
| [Sketchybar](https://github.com/FelixKratz/SketchyBar) | Menu bar | Homebrew | `felixkratz/formulae/sketchybar` |
| [Borders](https://github.com/FelixKratz/JankyBorders) | Window borders | Homebrew | `felixkratz/formulae/borders` |
| [SF Symbols](https://developer.apple.com/sf-symbols/) | System icons | Homebrew | `sf-symbols` |
| [Logi Options+](https://www.logitech.com/en-us/software/logi-options-plus.html) | Logitech device manager | Homebrew | `logi-options+` |
| [Rectangle](https://rectangleapp.com/) | Window management | Homebrew | `rectangle` |
| [CleanMyMac X](https://macpaw.com/cleanmymac) | System cleaner | SetApp | - |
| [NotchNook](https://lo.cafe/notchnook) | Notch utility | SetApp | - |
| [Canary Mail](https://canarymail.io/) | Email client | SetApp | - |
| [Clop](https://setapp.com/apps/clop) | Media optimizer | SetApp | - |

### Gaming & Entertainment

| Application | Purpose | Managed By | Cask |
|-------------|---------|------------|------|
| [Steam](https://store.steampowered.com/) | Gaming platform | Homebrew | `steam` |

## Aliases & Functions πŸ”§

### 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 |
| `edit-zsh` | `$EDITOR ~/.zshrc` | Edit ZSH configuration |
| `edit-p10k` | `$EDITOR ~/.p10k.zsh` | Edit Powerlevel10k configuration |

### Development Aliases
| Alias | Command | Description |
|-------|---------|-------------|
| `py`, `python` | `/usr/bin/python3` | Python 3 |
| `pa`, `laravel` | `php artisan` | PHP Artisan CLI |
| `a`, `adonis` | `node ace` | Adonis Ace CLI |
| `ls` | `eza --color=always --long --git --no-filesize --icons=always --no-time --no-user --no-permissions --group-directories-first` | Enhanced listing |
| `z` | `zoxide` | Smart directory navigation (replaces `cd` for frequent dirs) |
| `lg` | `lazygit` | Terminal UI for Git |
| `lzd` | `lazydocker` | Terminal UI for Docker |
| `f` | `fzf --tmux top,50%` | Fuzzy finder in Tmux fixed on top with 50% height |
| `ad` | `agent-deck` | Launch Agent Deck (bypasses nested tmux detection) |

### 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 |

### Web Search Aliases
| Alias | Command | Description |
|-------|---------|-------------|
| `gg` | `google` | Google search from terminal |
| `yt` | `youtube` | YouTube search from terminal |

### Window Manager Services

| Alias | Command | Description |
|-------|---------|-------------|
| `reload-sketchybar` | `brew services restart sketchybar` | Restart Sketchybar menu bar |
| `edit-sketchybar` | `$EDITOR $XDG_CONFIG_HOME/sketchybar` | Edit Sketchybar configuration |
| `reload-borders` | `brew services restart borders` | Restart window borders |
| `edit-borders` | `$EDITOR $XDG_CONFIG_HOME/borders` | Edit borders configuration |

### Tmux

| Alias | Command | Description |
|-------|---------|-------------|
| `t` | `tmux -2` | Launch Tmux with 256 colors |
| `reload-tmux` | `tmux source-file ~/.tmux.conf` | Reload Tmux configuration |
| `edit-tmux` | `$EDITOR ~/.tmux.conf` | Edit Tmux configuration |

### Custom Functions

| Function | Usage | Description |
|----------|-------|-------------|
| `y()` | `y [path]` | Launch Yazi file manager with directory change on exit |
| `brew()` | `brew [args]` | Homebrew wrapper that triggers Sketchybar updates |
| `zen()` | `zen [mode]` | Toggle Sketchybar zen mode |

## Window Manager (AeroSpace) πŸͺŸ

> Modern tiling window manager (no SIP required) - See [MIGRATION-YABAI-TO-AEROSPACE.md](./MIGRATION-YABAI-TO-AEROSPACE.md)

> [!NOTE]
> **Dual input mode** pour clavier AZERTY - le left Option reste libre pour les caracteres speciaux (`{ } [ ] @ # | \`).
>
> | Mode | Methode | Usage |
> |------|---------|-------|
> | **Leader key** | βŒ₯β†’ (F18 via Karabiner) puis touche | Clavier interne (portable) |
> | **Held modifier** | βŒ₯β†’ maintenu (Ctrl+Alt via Karabiner) puis touche | Clavier externe (desktop) |
>
> Sketchybar affiche un indicateur visuel du mode actif (aero/resize/service).

### Workspace Navigation

| Leader key | Held modifier | Workspace | Applications |
|------------|---------------|-----------|-------------|
| βŒ₯β†’ 1 | βŒ₯β†’+1 | 1 - Home | Mail, Calendar, Canary Mail |
| βŒ₯β†’ 2 | βŒ₯β†’+2 | 2 - Music | Apple Music, Spotify, Tidal |
| βŒ₯β†’ 3 | βŒ₯β†’+3 | 3 - Development | Zed, Ghostty, VS Code, JetBrains, Postman |
| βŒ₯β†’ Q | βŒ₯β†’+Q | 4 - Web | Helium, Dia/Arc, Chrome, Safari |
| βŒ₯β†’ W | βŒ₯β†’+W | 5 - Communication | Slack, Discord, Messages, Teams, Zoom |
| βŒ₯β†’ E | βŒ₯β†’+E | 6 - Server Tools | TablePlus, OrbStack, Docker |
| βŒ₯β†’ O | βŒ₯β†’+O | 7 - Notes | Obsidian |
| βŒ₯β†’ C | βŒ₯β†’+C | 8 - Claude AI | Claude |
| βŒ₯β†’ Tab | βŒ₯β†’+Tab | Back and forth | Previous workspace |

### Window Focus

| Leader key | Held modifier | Action |
|------------|---------------|--------|
| βŒ₯β†’ h/j/k/l | βŒ₯β†’+h/j/k/l | Focus window (vim-style) |
| βŒ₯β†’ ←/↓/↑/β†’ | βŒ₯β†’+←/↓/↑/β†’ | Focus window (arrows) |

### Window Movement

| Leader key | Held modifier | Action |
|------------|---------------|--------|
| βŒ₯β†’ ⇧+h/j/k/l | βŒ₯β†’+⇧+h/j/k/l | Move window (vim-style) |
| βŒ₯β†’ ⇧+1-3/Q/W/E/O/C | βŒ₯β†’+⇧+key | Move to workspace |

### Layout & Display

| Leader key | Held modifier | Action |
|------------|---------------|--------|
| βŒ₯β†’ / | βŒ₯β†’+/ | Toggle tiles layout |
| βŒ₯β†’ , | βŒ₯β†’+, | Toggle accordion layout |
| βŒ₯β†’ ⇧+Space | βŒ₯β†’+⇧+Space | Toggle floating/tiling |
| βŒ₯β†’ F | βŒ₯β†’+F | Toggle fullscreen |
| βŒ₯β†’ -/= | βŒ₯β†’+-/= | Resize window (smart) |
| βŒ₯β†’ R | βŒ₯β†’+R | Enter resize mode |

### Resize Mode

> Enter with βŒ₯β†’ R. Exit with Esc or Enter. Stays in resize mode until exit.

| Shortcut | Action | Description |
|----------|--------|-------------|
| h | `resize width +50` | Grow width (left) |
| j | `resize height -50` | Shrink height (down) |
| k | `resize height +50` | Grow height (up) |
| l | `resize width -50` | Shrink width (right) |
| ⇧+h | `resize width -50` | Shrink width (opposite) |
| ⇧+j | `resize height +50` | Grow height (opposite) |
| ⇧+k | `resize height -50` | Shrink height (opposite) |
| ⇧+l | `resize width +50` | Grow width (opposite) |
| -/= | Smart resize Β±50 | Resize smart |
| ⇧+-/= | Smart resize Β±10 | Fine smart resize |

### Utilities

| Leader key | Held modifier | Action |
|------------|---------------|--------|
| βŒ₯β†’ Enter | βŒ₯β†’+Enter | Open Ghostty terminal |
| βŒ₯β†’ ⇧+X | βŒ₯β†’+⇧+X | Close window |
| βŒ₯β†’ ⇧+= | βŒ₯β†’+⇧+= | Balance window sizes |
| βŒ₯β†’ ⇧+R | βŒ₯β†’+⇧+R | Reload config |
| βŒ₯β†’ ⇧+; | βŒ₯β†’+⇧+; | Enter service mode |
| Esc | Esc | Exit current mode |

### SketchyVim (svim)

> Ajoute les modes vim (Normal/Insert/Visual) a tous les champs texte macOS via l'API Accessibility.
> Indicateur de mode visible dans Sketchybar.

| Config | Description |
|--------|-------------|
| `~/.config/svim/svimrc` | Remaps vim (Y, H, L) |
| `~/.config/svim/blacklist` | Apps exclues (Ghostty, Zed, terminals) |
| `~/.config/svim/svim.sh` | Hook sketchybar pour indicateur de mode |

## Shortcuts & Keybindings ⌨️

### Tmux Keybindings πŸ–₯️

> **Prefix**: βŒƒ + A (replaces default βŒƒ + B)
> **Theme**: Claude Dark with copper accent (`#D4825D`)
> **Config source**: `home.nix` (Nix Home Manager)

#### Session Management

| Shortcut | Action | Description |
|----------|--------|-------------|
| prefix + R | `source-file ~/.tmux.conf` | Reload configuration |
| prefix + T | Sesh picker | Open session manager (fzf-based, with multi-source: tmux, configs, zoxide, find) |
| prefix + L | Sesh last | Switch to last session |

#### Window Management

| Shortcut | Action |
|----------|--------|
| prefix + C | Create new window (in current path) |
| prefix + B | Previous window |
| prefix + N | Next window |
| prefix + X (uppercase) | Close window |

#### Pane Management

| Shortcut | Action |
|----------|--------|
| prefix + H | Focus left pane |
| prefix + J | Focus down pane |
| prefix + K | Focus up pane |
| prefix + L | Focus right pane |
| prefix + x (lowercase) | Close pane |
| prefix + V | Split horizontally (in current path) |
| prefix + S | Split vertically (in current path) |
| prefix + ⇧ + H/J/K/L | Resize pane (repeatable, Β±5) |

#### Navigation (no prefix)

| Shortcut | Action |
|----------|--------|
| βŒƒ + h/j/k/l | Seamless navigation between tmux panes and nvim splits (tmux.nvim) |

#### Copy Mode

| Shortcut | Action |
|----------|--------|
| prefix + V | Enter copy mode |
| Escape | Cancel copy mode |
| Enter | Copy selection and exit |

#### Plugins

| Plugin | Trigger | Purpose |
|--------|---------|---------|
| [sesh](https://github.com/joshmedeski/sesh) | prefix + T | Smart session manager with fzf |
| [tmux.nvim](https://github.com/aserowy/tmux.nvim) | βŒƒ + h/j/k/l | Seamless nvim/tmux navigation |
| [fzf-url](https://github.com/wfxr/tmux-fzf-url) | prefix + U | URL picker with fzf |
| [tmux-yank](https://github.com/tmux-plugins/tmux-yank) | - | System clipboard integration |
| claude-dark | - | Custom Claude Dark theme (copper accent `#D4825D`) |
| tmux-cpu | - | CPU usage in status bar |
| tmux-battery | - | Battery status (laptops) |

## Neovim Configuration πŸ“

Secondary editor using [LazyVim](https://www.lazyvim.org/) with custom plugins and Claude Dark colorscheme.

### Key Features

| Feature | Plugin/Config | Description |
|---------|--------------|-------------|
| **Colorscheme** | `claude-dark` (custom) | Warm copper theme matching terminal setup |
| **AI Integration** | `claude-code.nvim` | Claude Code integration in editor |
| **Git Worktrees** | `git-worktree.nvim` | Manage git worktrees with telescope |
| **File Manager** | `neo-tree.nvim` | File tree with icons |
| **Docker** | `lazydocker.nvim` | Docker TUI integration |
| **Task Runner** | `overseer.nvim` | Run Zed-compatible tasks from nvim |
| **Tmux** | `tmux.nvim` | Seamless nvim/tmux pane navigation |
| **PHP** | Laravel/PHP extras | PHP development support |
| **Rust** | `rust-analyzer` + extras | Rust development support |
| **Markdown** | `render-markdown.nvim` | Rendered markdown preview |
| **Multi-cursor** | `vim-visual-multi` | Multiple cursor editing |
| **Autosave** | `auto-save.nvim` | Automatic file saving |

### Plugin Structure

```
~/.config/nvim/lua/
β”œβ”€β”€ config/ # Core config (keymaps, options, autocmds, lazy)
β”œβ”€β”€ plugins/ # Plugin specs (one file per plugin/group)
β”œβ”€β”€ claude-dark/ # Custom colorscheme
└── overseer/ # Task templates (Zed tasks compat)
```

## Zed Configuration ⚑

Primary editor with custom Vim-mode keybindings, task integrations, and Claude Dark theme.

### Keybindings 🎹

#### Global Navigation

| Shortcut | Action | Description |
|----------|--------|-------------|
| βŒƒ + h/j/k/l | `workspace::ActivatePane*` | Focus pane (left/down/up/right) |
| βŒƒ + ⇧ + h/j/k/l | `pane::SplitAndMove*` | Split pane and move (left/down/up/right) |
| ⌘ + @ | `editor::RestartLanguageServer` | Restart language server |
| ⌘ + ù | `git_panel::ToggleFocus` | Toggle Git panel |

#### Editor

| Shortcut | Action | Description |
|----------|--------|-------------|
| βŒƒ + Space | `editor::ShowCompletions` | Show completions |
| βŒ₯ + ⇧ + f | `editor::Format` | Format current file |
| βŒ₯ + k/j | `editor::MoveLineUp/Down` | Move line up/down |
| βŒ₯ + ↑/↓ | `editor::MoveLineUp/Down` | Move line up/down (arrows) |
| ⌘ + ⇧ + r | `editor::Rename` | Rename symbol |
| ⌘ + ⇧ + k | `editor::DeleteLine` | Delete current line |
| ⌘ + g | `editor::SelectLargerSyntaxNode` | Select larger syntax node |
| ⌘ + ⇧ + g | `editor::SelectSmallerSyntaxNode` | Select smaller syntax node |
| ⌘ + < | `editor::ToggleInlayHints` | Toggle inlay hints |
| ⌘ + ; | `go_to_line::Toggle` | Go to line |
| ⌘ + i | `assistant::InlineAssist` | Inline AI assist |
| βŒ₯ + ⇧ + p | `markdown::OpenPreview` | Open markdown preview |

#### Alt Shortcuts (Workspace + Terminal)

> These shortcuts work globally and in terminal context for quick access to tools.

| Shortcut | Task | Description |
|----------|------|-------------|
| ⌘ + ⇧ + t | `task::Spawn` | Open task launcher |
| βŒ₯ + C | Claude Code (skip perms) | Open Claude Code |
| βŒ₯ + f | Files: FZF | FZF file finder |
| βŒ₯ + y | Files: Yazi | Yazi file manager |
| βŒ₯ + R | Files: Rename Files (FZF) | Batch rename files |
| βŒ₯ + g | Git: Lazygit | Open Lazygit |
| βŒ₯ + r | Database: Redis CLI | Open Redis CLI |
| βŒ₯ + s | LazySQL | SQL TUI client |
| βŒ₯ + c | LazyCurl | HTTP client TUI |
| βŒ₯ + S | LazySSH | SSH manager TUI |
| βŒ₯ + d | Docker: Lazydocker | Docker TUI |
| βŒ₯ + k | Kubernetes: Lazykube | Kubernetes TUI |
| βŒ₯ + p | Files: Generate Project Structure | Generate project tree |

#### Terminal

> **No direct `ctrl-*` bindings** in Terminal context β€” all navigation uses the `ctrl-a` prefix (tmux-like) to avoid conflicts with Claude Code, lazygit, and other TUI apps.

| Shortcut | Action | Description |
|----------|--------|-------------|
| βŒƒ + Esc | `terminal::ToggleViMode` | Toggle Vi mode |

### Ctrl-A Prefix (tmux-like) πŸ–₯️

> **Available in both Editor (vim mode) and Terminal.** Mirrors tmux prefix workflow β€” `ctrl-a` replaces `vim::Increment` in editor.

#### Pane Navigation & Management

| Shortcut | Action | Description |
|----------|--------|-------------|
| βŒƒa h/j/k/l | `workspace::ActivatePane*` | Focus pane (left/down/up/right) |
| βŒƒa H/J/K/L | `workspace::SwapPane*` | Swap pane (left/down/up/right) |
| βŒƒa z | `workspace::ToggleZoom` | Toggle pane zoom |
| βŒƒa = | `workspace::IncreaseActiveDockSize` | Grow dock (matches aerospace) |
| βŒƒa - | `workspace::DecreaseActiveDockSize` | Shrink dock (matches aerospace) |
| βŒƒa + | `workspace::ResetActiveDockSize` | Reset dock size |

#### Tab / Buffer

| Shortcut | Action | Description |
|----------|--------|-------------|
| βŒƒa n | `pane::ActivateNextItem` | Next tab |
| βŒƒa b | `pane::ActivatePreviousItem` | Previous tab |
| βŒƒa x | `pane::CloseActiveItem` | Close tab |
| βŒƒa v | `pane::SplitRight` | Split right |
| βŒƒa s | `pane::SplitDown` | Split down |
| βŒƒa Tab | `pane::ActivateNextItem` | Next tab (alt) |

#### Ctrl-A Sub-menus

| Shortcut | Action | Description |
|----------|--------|-------------|
| βŒƒa e | `project_panel::ToggleFocus` | Toggle explorer |
| βŒƒa Space | `file_finder::Toggle` | File finder |
| βŒƒa f f/g/p/s/t | Find | File/Grep/Project/Symbols/Terminal |
| βŒƒa a c | Claude Code | New session (skip perms) |
| βŒƒa a C | Claude Code (Continue) | Continue session (skip perms) |
| βŒƒa a i/f/p | AI | Inline assist / Agent focus / Add to thread |
| βŒƒa g g | `git_panel::ToggleFocus` | Git panel |
| βŒƒa G G | Git: Lazygit | Open Lazygit |
| βŒƒa t * | Tools | All TUI tools (same as `space t *`) |
| βŒƒa , * | Settings | Keymap/Settings/Tasks/Theme/Extensions |

### Vim-Mode Keybindings πŸ§™β€β™‚οΈ

#### Quick Navigation (Ctrl) β€” Editor only
| Shortcut | Action | Description |
|----------|--------|-------------|
| βŒƒ + n | `pane::ActivateNextItem` | Next tab/buffer |
| βŒƒ + b | `pane::ActivatePreviousItem` | Previous tab/buffer |
| βŒƒ + x | `pane::CloseActiveItem` | Close active tab/buffer |
| βŒƒ + v | `pane::SplitRight` | Split pane right |
| βŒƒ + s | `pane::SplitDown` | Split pane down |

#### Folding (z)
| Shortcut | Action | Description |
|----------|--------|-------------|
| z + a | `editor::ToggleFold` | Toggle fold at cursor |
| z + h | `editor::Fold` | Fold at cursor |
| z + H | `editor::FoldAll` | Fold all regions |
| z + l | `editor::UnfoldLines` | Unfold at cursor |
| z + L | `editor::UnfoldAll` | Unfold all regions |

#### Space Leader - Explorer & Search (space f)
| Shortcut | Action | Description |
|----------|--------|-------------|
| Space + e | `project_panel::ToggleFocus` | Toggle project panel |
| Space + Space | `file_finder::Toggle` | File finder |
| Space + f + f | `file_finder::Toggle` | File finder |
| Space + f + g | `pane::DeploySearch` | Global search |
| Space + f + p | `projects::OpenRecent` | Open recent project |
| Space + f + b | `vim::Search` | Search in buffer |
| Space + f + s | `outline::Toggle` | Toggle outline view |
| Space + f + r | `search::ToggleReplace` | Search & replace |
| Space + f + l | `go_to_line::Toggle` | Go to line |
| Space + f + t | `terminal_panel::ToggleFocus` | Toggle terminal |
| Space + f + T | `workspace::NewCenterTerminal` | New center terminal |
| Space + ; | `go_to_line::Toggle` | Go to line |

#### Space Leader - Buffer (space b)
| Shortcut | Action | Description |
|----------|--------|-------------|
| Space + b + n | `pane::ActivateNextItem` | Next buffer |
| Space + b + b | `pane::ActivatePreviousItem` | Previous buffer |
| Space + b + d | `pane::CloseActiveItem` | Close buffer |
| Space + b + o | `pane::CloseOtherItems` | Close other buffers |
| Space + b + f | `editor::Format` | Format buffer |
| Space + b + D | `editor::DiffClipboardWithSelection` | Diff clipboard |
| Space + Tab | `pane::ActivateNextItem` | Next tab |
| Space + ⇧ + Tab | `pane::ActivatePreviousItem` | Previous tab |
| Space + v | `pane::SplitRight` | Split right |
| Space + s | `pane::SplitDown` | Split down |
| Space + x | `pane::CloseActiveItem` | Close item |
| Space + m | `markdown::OpenPreview` | Markdown preview |
| Space + M | `markdown::OpenPreviewToTheSide` | Markdown preview (side) |

#### Space Leader - Window / Split (space w)
| Shortcut | Action | Description |
|----------|--------|-------------|
| Space + w + v | `pane::SplitRight` | Split right |
| Space + w + s | `pane::SplitDown` | Split down |
| Space + w + d | `pane::CloseActiveItem` | Close pane |
| Space + w + h/j/k/l | `workspace::ActivatePane*` | Focus pane |
| Space + w + H/J/K/L | `workspace::SwapPane*` | Swap/move pane |
| Space + w + n/b | `workspace::ActivateNextPane/PreviousPane` | Next/previous pane |
| Space + w + z | `workspace::ToggleZoom` | Toggle pane zoom |
| Space + w + =/- | Increase/Decrease dock size | Resize dock (matches aerospace) |
| Space + w + + | Reset dock size | Reset to default |

#### Space Leader - Code / LSP (space c)
| Shortcut | Action | Description |
|----------|--------|-------------|
| Space + c + r | `editor::Rename` | Rename symbol |
| Space + c + a | `editor::ToggleCodeActions` | Code actions |
| Space + c + d | `editor::GoToDefinition` | Go to definition |
| Space + c + D | `editor::GoToTypeDefinition` | Go to type definition |
| Space + c + i | `editor::GoToImplementation` | Go to implementation |
| Space + R | `editor::Rename` | Rename symbol |
| Space + o | `editor::Hover` | Show hover info |
| Space + . | `editor::ToggleCodeActions` | Code actions |
| Space + A | `editor::FindAllReferences` | Find all references |
| Space + @ | `editor::RestartLanguageServer` | Restart LSP |

#### Space Leader - Git (space g)
| Shortcut | Action | Description |
|----------|--------|-------------|
| Space + g + g | `git_panel::ToggleFocus` | Toggle Git panel |
| Space + G + G | `task::Spawn "Git: Lazygit"` | Open Lazygit |
| Space + g + b | `git::Blame` | Git blame |
| Space + g + D | `task::Spawn "Git: Lumen diff"` | Lumen diff |
| Space + g + d | `git::Diff` | Git diff |
| Space + g + t | `git_panel::ToggleTreeView` | Toggle tree view |
| Space + g + w | `git::Worktree` | Git worktree |
| Space + g + v | `editor::ToggleSplitDiff` | Toggle split diff |

#### Space Leader - Tools / Tasks (space t)
| Shortcut | Action | Description |
|----------|--------|-------------|
| Space + t + t | `task::Spawn` | Open task launcher |
| Space + t + T | `terminal::RerunTask` | Rerun last task |
| Space + t + n | IDE: Neovim | Open Neovim |
| Space + t + f | Files: FZF | FZF file finder |
| Space + t + y | Files: Yazi | Yazi file manager |
| Space + t + r | Files: Rename Files (FZF) | Batch rename |
| Space + t + d | Docker: Lazydocker | Docker TUI |
| Space + t + k | Kubernetes: Lazykube | Kubernetes TUI |
| Space + t + p | Files: Generate Project Structure | Project tree |
| Space + t + l | Git: Generate Git Logs file | Git logs (limited) |
| Space + t + L | Git: Generate Git Logs file (All) | Git logs (all) |
| Space + t + s | LazySQL | SQL TUI |
| Space + t + S | LazySSH | SSH manager |
| Space + t + c | LazyCurl | HTTP client |
| Space + t + e | Ekphos | Documentation generator |
| Space + t + m | Lazymake | Build system |

#### Space Leader - AI (space a)
| Shortcut | Action | Description |
|----------|--------|-------------|
| Space + i | `assistant::InlineAssist` | Inline AI assist |
| Space + a + i | `assistant::InlineAssist` | Inline AI assist |
| Space + a + f | `agent::ToggleFocus` | Toggle AI agent panel |
| Space + a + p | `agent::AddSelectionToThread` | Add selection to thread |
| Space + a + c | Claude Code (skip perms) | New Claude Code session |
| Space + a + C | Claude Code (continue + skip perms) | Continue previous session |

> All Claude Code shortcuts use `--dangerously-skip-permissions` by default. Other variants (Chrome, Resume) are available via ⌘ + ⇧ + t task launcher.

#### Space Leader - Symbols & Diagnostics
| Shortcut | Action | Description |
|----------|--------|-------------|
| Space + S | `project_symbols::Toggle` | Project symbols |
| Space + G | `editor::SelectAllMatches` | Select all matches |
| Space + s + d | `diagnostics::Deploy` | Deploy diagnostics |
| Space + d | `editor::GoToDiagnostic` | Next diagnostic |
| Space + D | `editor::GoToPreviousDiagnostic` | Previous diagnostic |

#### Space Leader - Settings (space ,)
| Shortcut | Action | Description |
|----------|--------|-------------|
| Space + , + k | `zed::OpenKeymapFile` | Edit keymap file |
| Space + , + K | `zed::OpenKeymap` | Open keymap reference |
| Space + , + s | `zed::OpenSettingsFile` | Edit settings file |
| Space + , + S | `zed::OpenSettings` | Open settings reference |
| Space + , + t | `zed::OpenTasks` | Open tasks |
| Space + , + c | `theme_selector::Toggle` | Theme selector |
| Space + , + C | `icon_theme_selector::Toggle` | Icon theme selector |
| Space + , + e | `zed::Extensions` | Extensions |

#### Space Leader - Navigation
| Shortcut | Action | Description |
|----------|--------|-------------|
| Space + 0 | `vim::StartOfDocument` | Start of document |
| Space + * | `vim::MoveToNext` (partial) | Next word occurrence |
| Space + Β¨ | `vim::MoveToPrevious` (partial) | Previous word occurrence |

### File Explorer (ProjectPanel) πŸ“

> Vim-style keybindings when the project panel is focused.

| Shortcut | Action | Description |
|----------|--------|-------------|
| / | `file_finder::Toggle` | File finder |
| f + g | `workspace::NewSearch` | Global search |
| a | `project_panel::NewFile` | New file |
| A | `project_panel::NewDirectory` | New directory |
| d | `project_panel::Delete` | Delete |
| D | `project_panel::Duplicate` | Duplicate |
| R | `project_panel::Rename` | Rename |
| y / Y | `Copy` / `Cut` | Copy / Cut |
| p | `project_panel::Paste` | Paste |
| c / C | Copy relative/absolute path | Copy file path |
| n / b | Next/Previous directory | Directory navigation |
| T | `workspace::OpenInTerminal` | Open in terminal |
| βŒƒ + v/s | Split vertical/horizontal | Open in split |

> All the above also work with `Space` prefix (e.g., `Space a` = new file).

### Git Panel πŸ”€ (lazygit-style)

> Keybindings mirror [lazygit](https://github.com/jesseduffield/lazygit) for muscle memory consistency.

| Shortcut | Action | Description |
|----------|--------|-------------|
| Space | `git::ToggleStaged` | Toggle file staging (lazygit: space) |
| a | `git::StageAll` | Stage all files (lazygit: a) |
| u | `git::UnstageAll` | Unstage all files |
| c | `git::Commit` | Commit (lazygit: c) |
| βŒƒ + i | `git::GenerateCommitMessage` | AI-generate commit message |
| P / p / f | Push / Pull / Fetch | Remote operations (lazygit: P/p/f) |
| b / B | Branch / Checkout branch | Branch management (lazygit: n/space) |
| w | `git::Worktree` | Git worktree (lazygit: w) |
| s | `git::StashAll` | Stash all (lazygit: s) |
| S | `git::ViewStash` | View stash (lazygit: S) |
| A | `git::StashPop` | Pop stash |
| d / D | Restore file / Diff | Discard & diff (lazygit: d) |
| C | `git::CreatePullRequest` | Create pull request |
| i | `git::AddToGitignore` | Ignore file (lazygit: i) |
| I | `git::Init` | Git init |
| ` or t | `git_panel::ToggleTreeView` | Toggle tree view (lazygit: `) |
| / | `pane::DeploySearch` | Search (lazygit: /) |
| q or βŒƒ + q | `git_panel::Close` | Close panel (lazygit: q) |

### Tasks πŸ”„

| Task Name | Command | Description |
|-----------|---------|-------------|
| Claude Code | `claude` | Open Claude Code AI assistant |
| Claude Code (Continue) | `claude --continue` | Continue previous Claude session |
| Claude Code Usage | `bun x ccusage blocks` | Check Claude Code usage stats |
| Git: Lazygit | `lazygit -p $ZED_WORKTREE_ROOT` | Open Lazygit in project root |
| Git: Generate Git Logs file | `generate_git_log.sh 400` | Generate Git logs (limited) |
| Git: Generate Git Logs file (All) | `generate_git_log.sh 999999` | Generate Git logs (all) |
| LazySQL | `lazysql` | SQL TUI client |
| LazyCurl | `lazycurl` | HTTP client TUI |
| LazySSH | `lazyssh` | SSH manager TUI |
| Files: FZF | `fzf` with bat preview | Advanced file finder with preview |
| Files: Yazi | `yazi` | Terminal file manager |
| Files: Rename Files (FZF) | `rename_files.sh` | Interactive batch file renaming |
| Files: Generate Project Structure | `eza --tree --level=5 --git-ignore` | Generate project tree file |
| Docker: Lazydocker | `lazydocker` | Docker TUI |
| Kubernetes: Lazykube | `lazykube` | Kubernetes TUI |
| Database: Redis CLI | `redis-cli` | Redis command line interface |
| Laravel: Test | `php artisan test` | Run Laravel tests |
| Laravel: Test (coverage) | `php artisan test --coverage` | Run tests with coverage |
| Laravel: Migrate (fresh and seed) | `php artisan migrate:fresh --seed` | Fresh migration with seed |
| Laravel: Migrate (fresh) | `php artisan migrate:fresh` | Fresh migration |

> [!NOTE]
> Tasks run in the current workspace context. `$ZED_WORKTREE_ROOT` is set to the project root.
> See the [Zed Tasks Documentation](https://zed.dev/docs/tasks) for more information.

## Installation πŸ“₯

### Automated Installation (Recommended)

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

This script performs a complete installation:
1. Install Xcode Command Line Tools
2. Install Nix package manager (multi-user daemon)
3. Install Homebrew (for GUI apps)
4. Clone nix-config repository
5. Install Oh My Zsh
6. Apply dotfiles with Chezmoi
7. Install Home Manager and apply Nix configuration
8. Configure macOS system settings
9. Start services (Sketchybar, Borders)

### Manual Installation

| Step | Command | Description |
|------|---------|-------------|
| **1. Xcode CLI** | `xcode-select --install` | Install Apple command line tools |
| **2. Nix** | `sh <(curl -L https://nixos.org/nix/install) --daemon` | Install Nix (multi-user) |
| **3. Homebrew** | `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` | Install Homebrew |
| **4. Nix Config** | `git clone https://github.com/kbrdn1/nix-config.git ~/nix-config` | Clone Nix configuration |
| **5. Oh My Zsh** | `sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` | Install Zsh framework |
| **6. Dotfiles** | `sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply https://github.com/kbrdn1/dotfiles.git` | Apply dotfiles |
| **7. Home Manager** | `nix run home-manager/release-24.11 -- switch --flake ~/nix-config` | Install CLI tools (70+ packages) |

### macOS System Configuration

```bash
# Keyboard - Fast key repeat
defaults write NSGlobalDomain KeyRepeat -int 1

# Screenshots - Custom location and format
mkdir -p ~/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 - Auto-hide
defaults write NSGlobalDomain _HIHideMenuBar -bool true

# Dock - Auto-hide with fast animation
defaults write com.apple.dock autohide -bool true
defaults write com.apple.dock autohide-time-modifier -float 0.15

# Apply changes
killall SystemUIServer Dock
```

### Post-Installation Steps

| Step | Action | Command |
|------|--------|---------|
| **1. Restart Terminal** | Apply shell changes | `exec zsh` |
| **2. Verify Nix** | Check installed packages | `nix profile list` |
| **3. Configure AeroSpace** | Reload window manager | `aerospace --reload` |
| **4. Install SetApp** | Manual installation | Install from SetApp website |
| **5. Restart Computer** | Complete setup | Full system restart |

### Troubleshooting

| Issue | Solution |
|-------|----------|
| Nix not found | Restart terminal or run `. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh` |
| Home Manager fails | Ensure Nix daemon is running: `sudo launchctl load /Library/LaunchDaemons/org.nixos.nix-daemon.plist` |
| Sketchybar not visible | Run `brew services restart sketchybar` |
| AeroSpace not working | Check permissions in System Settings β†’ Privacy & Security |

### Migration Documentation

- **Nix Migration**: See [MIGRATION_NIX.md](./MIGRATION_NIX.md) for complete ASDF β†’ Nix migration details
- **Homebrew Cleanup**: See [MIGRATION_HOMEBREW.md](./MIGRATION_HOMEBREW.md) for removed Homebrew packages
- **AeroSpace Setup**: See [MIGRATION-YABAI-TO-AEROSPACE.md](./MIGRATION-YABAI-TO-AEROSPACE.md) for Yabai β†’ AeroSpace migration

## Acknowledgments πŸ™

| Project | Author | Contribution |
|---------|--------|--------------|
| [AeroSpace](https://github.com/nikitabobko/AeroSpace) | [@nikitabobko](https://github.com/nikitabobko) | Modern tiling window manager |
| [Sketchybar](https://github.com/FelixKratz/SketchyBar) | [@FelixKratz](https://github.com/FelixKratz) | Custom menu bar and setup inspiration |
| [JankyBorders](https://github.com/FelixKratz/JankyBorders) | [@FelixKratz](https://github.com/FelixKratz) | Window border visualization |
| [Chezmoi](https://github.com/twpayne/chezmoi) | [@twpayne](https://github.com/twpayne) | Dotfiles management tool |
| [Home Manager](https://github.com/nix-community/home-manager) | [Nix Community](https://github.com/nix-community) | Declarative user environment |
| [Nix](https://nixos.org/) | [NixOS Foundation](https://nixos.org/community/) | Reproducible package management |

## License πŸ“„

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.