Skip to content

kbrdn1/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Dotfiles

Welcome to my dotfiles repository! This repository is managed using chezmoi and Nix Home Manager.

Preview

Table of Contents πŸ“š

Stack Overview πŸ“¦

Layer Tool Purpose
Package Manager Nix + Home Manager 24.11 Declarative CLI tools (63 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
Window Manager AeroSpace Tiling window manager (no SIP required)
Menu Bar Sketchybar Custom menu bar with 6 themes

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 <theme> 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 πŸ’»

Programming Languages & Runtimes

Tool Version Managed By Notes
Node.js 24.11.0 Nix JavaScript runtime
Python 3.13.8 Nix Python interpreter
uv 0.8.23 Nix Fast Python package manager
PHP 8.4.14 Nix With pcov, redis extensions
Go 1.25.2 Nix Golang compiler
Rust 1.89.0 Nix Rust toolchain
Bun 1.3.1 Nix Fast JavaScript runtime
Deno 2.5.6 Nix Secure TypeScript runtime
pnpm 10.20.0 Nix Fast package manager
Symfony CLI 5.15.1 Nix Symfony tooling
Composer Latest Homebrew PHP dependency manager

Kubernetes & Container Tools

Tool Version Managed By Purpose
kubectl 1.34.1 Nix Kubernetes CLI
Helm Latest Nix Kubernetes package manager
Minikube 1.37.0 Nix Local Kubernetes
ArgoCD Latest Nix GitOps CD tool
k9s Latest Nix Kubernetes TUI
kubectx 0.9.5 Nix Context switcher
stern 1.33.0 Nix Multi-pod logs
kustomize 5.7.1 Nix Kubernetes config
kubecolor 0.5.2 Nix Colorized kubectl
dive 0.13.1 Nix Docker image explorer
popeye 0.22.1 Nix Kubernetes scanner
Lazykube Latest Homebrew Kubernetes TUI

Development Tools

Tool Version Managed By Purpose
Git Latest Nix Version control
GitHub CLI Latest Nix GitHub integration
Lazygit Latest Nix Git TUI
Lazydocker Latest Nix Docker TUI
Redis 8.2.2 Nix In-memory database
Pandoc 3.7.0.2 Nix Document converter
Neovim 0.11.5 Nix Text editor

Shell & Terminal

Tool Version Managed By Purpose
Zsh Latest System Interactive shell
Oh My Zsh Latest Manual Zsh framework
Powerlevel10k Latest Homebrew Zsh theme
Bat Latest Nix Enhanced cat
Eza Latest Nix Modern ls
Yazi Latest Nix File manager
Tmux Latest Nix Terminal multiplexer
Fzf Latest Nix Fuzzy finder
Zoxide Latest Nix Smarter cd
Thefuck Latest Nix Command corrector
Neofetch Latest Nix System info

Cloud & API Tools

Tool Version Managed By Purpose
AWS CLI v2 Nix Amazon Web Services
Stripe CLI Latest Nix Stripe API testing

macOS App Store

Tool Version Managed By Purpose
mas 2.2.2 Nix Mac App Store CLI (install App Store apps from terminal)

GUI Applications πŸ–₯️

Development

Application Purpose Managed By Cask
Zed Modern code editor Homebrew zed@preview
Ghostty GPU-accelerated terminal Homebrew ghostty
Warp Rust-based terminal Homebrew warp
OrbStack Docker alternative Homebrew orbstack
Postman API platform Homebrew postman
TablePlus Database management SetApp -

Browsers & Communication

Application Purpose Managed By Cask
Arc Modern browser Homebrew arc
Slack Team communication Homebrew slack
Discord Community platform Homebrew discord
WhatsApp Messaging Homebrew whatsapp
Telegram Messaging Homebrew telegram
Mattermost Team collaboration Homebrew mattermost

Productivity

Application Purpose Managed By Cask
Raycast Launcher & productivity Homebrew raycast
Obsidian Knowledge base Homebrew obsidian
Claude AI assistant Homebrew claude
Dashlane Password manager App Store -
Figma Design tool Homebrew figma
Anki Spaced repetition Homebrew anki
CleanShot X Screenshot tool SetApp -
PixelSnap Measurement tool SetApp -
Sip Color picker SetApp -
Yoink Drag & drop helper SetApp -

System Tools

Application Purpose Managed By Cask
AeroSpace Window manager Homebrew nikitabobko/tap/aerospace
Sketchybar Menu bar Homebrew felixkratz/formulae/sketchybar
Borders Window borders Homebrew felixkratz/formulae/borders
SF Symbols System icons Homebrew sf-symbols
Logi Options+ Logitech device manager Homebrew logi-options+
Rectangle Window management Homebrew rectangle
CleanMyMac X System cleaner SetApp -
NotchNook Notch utility SetApp -
Canary Mail Email client SetApp -
Clop Media optimizer SetApp -

Gaming & Entertainment

Application Purpose Managed By Cask
Steam 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

Development Aliases

Alias Command Description
py, python /usr/bin/python3 Python 3
pa 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
cd zoxide Enhanced directory navigation
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

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

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

Workspace Navigation

Shortcut Action Workspace
βŒ₯ + 1 Focus workspace 1 Mail/Calendar
βŒ₯ + 2 Focus workspace 2 Postman
βŒ₯ + 3 Focus workspace 3 Code Editors
βŒ₯ + Q Focus workspace 4 Arc Browser
βŒ₯ + W Focus workspace 5 Communication/Web
βŒ₯ + E Focus workspace 6 Database/Docker
βŒ₯ + Tab Back and forth Previous workspace

Window Focus

Shortcut Action
βŒ₯ + h/j/k/l Focus window (left/down/up/right)
βŒ₯ + ←/↓/↑/β†’ Focus window (arrows)

Window Movement

Shortcut Action
⇧ + βŒ₯ + h/j/k/l Move window (left/down/up/right)
⇧ + βŒ₯ + ←/↓/↑/β†’ Move window (arrows)
⇧ + βŒ₯ + 1/2/3 Move to workspace 1/2/3
⇧ + βŒ₯ + Q/W/E Move to workspace 4/5/6
βŒƒ + ⇧ + βŒ₯ + 1-6 Move to workspace and follow

Layout & Display

Shortcut Action
βŒ₯ + / Toggle tiles layout (horizontal/vertical)
βŒ₯ + , Toggle accordion layout (cascade)
⇧ + βŒ₯ + Space Toggle floating/tiling
βŒ₯ + F Toggle fullscreen
βŒ₯ + -/= Resize window (smart -50/+50)
βŒ₯ + R Enter resize mode

Utilities

Shortcut Action
βŒ₯ + Enter Open Ghostty terminal
⇧ + βŒ₯ + X Close window
⇧ + βŒ₯ + = Balance window sizes
⇧ + βŒ₯ + R Reload AeroSpace config
⇧ + βŒ₯ + ; Enter service mode

Shortcuts & Keybindings ⌨️

Tmux Keybindings πŸ–₯️

Prefix: βŒƒ + A (replaces default βŒƒ + B) Theme: Claude Dark with copper accent (#D4825D)

Session Management

Shortcut Action Description
prefix + R source-file ~/.tmux.conf Reload configuration
prefix + O Sessionx Open session manager plugin
prefix + Space Which-key Show available keybindings

Window Management

Shortcut Action
prefix + C Create new window (in current path)
prefix + B Previous window
prefix + N Next window
prefix + X 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 Close pane
prefix + V Split horizontally (in current path)
prefix + S Split vertically (in current path)

Plugins

Plugin Trigger Purpose
tmux-sessionx prefix + O Session manager
tmux-which-key prefix + Space Keybinding helper
vim-tmux-navigator βŒƒ + h/j/k/l Seamless vim/tmux navigation
catppuccin/tmux - Claude Dark theme (custom colors)
tmux-cpu - CPU usage in status bar
tmux-battery - Battery status (laptops)

Zed Configuration ⚑

My Zed editor configuration with custom keybindings and tasks.

Keybindings 🎹

General Navigation

Shortcut Context Action Description
βŒƒ + h Editor workspace::ActivatePaneLeft Focus left pane
βŒƒ + j Editor workspace::ActivatePaneDown Focus down pane
βŒƒ + k Editor workspace::ActivatePaneUp Focus up pane
βŒƒ + l Editor workspace::ActivatePaneRight Focus right pane
⌘ + @ Editor editor::RestartLanguageServer Restart language server
⌘ + ù Editor git_panel::ToggleFocus Toggle Git panel
⌘ + < Editor editor::ToggleInlayHints Toggle inlay hints
⌘ + ⇧ + k Editor editor::DeleteLine Delete current line
⌘ + g Editor editor::SelectLargerSyntaxNode Select larger syntax node
⌘ + ⇧ + g Editor editor::SelectSmallerSyntaxNode Select smaller syntax node
⌘ + i Editor assistant::InlineAssist Inline AI assist
⌘ + ; Editor go_to_line::Toggle Toggle go to line
⌘ + ⇧ + r Editor editor::Rename Rename symbol

Formatting and Movement

Shortcut Context Action Description
βŒ₯ + ⇧ + f Editor editor::Format Format current file
βŒ₯ + k Editor editor::MoveLineUp Move line up
βŒ₯ + j Editor editor::MoveLineDown Move line down
βŒ₯ + ↑ Editor editor::MoveLineUp Move line up
βŒ₯ + ↓ Editor editor::MoveLineDown Move line down
βŒ₯ + ⇧ + p Editor markdown::OpenPreview Open markdown preview

Task Shortcuts

Shortcut Context Action Description
⌘ + ⇧ + t Workspace task::Spawn Open task launcher
βŒ₯ + f Workspace task::Spawn "Files: FZF" Open FZF file finder
βŒ₯ + y Workspace task::Spawn "Files: Yazi" Open Yazi file manager
βŒ₯ + g Workspace task::Spawn "Git: Lazygit" Open Lazygit
βŒ₯ + r Workspace task::Spawn "Files: Rename Files (Script)" Run file rename script
βŒ₯ + d Workspace task::Spawn "Database: Redis CLI" Open Redis CLI
βŒ₯ + ⇧ + d Workspace task::Spawn "Docker: Lazydocker" Open Lazydocker
βŒ₯ + ⇧ + k Workspace task::Spawn "Kubernetes: Lazykube" Open Lazykube
βŒ₯ + t Workspace task::Spawn "Laravel: Test" Run Laravel tests
βŒ₯ + ⇧ + t Workspace task::Spawn "Laravel: Test (coverage)" Run Laravel tests with coverage
βŒ₯ + ⇧ + m Workspace task::Spawn "Laravel: Migrate (fresh and seed)" Run Laravel migration fresh with seed
βŒ₯ + p Workspace task::Spawn "Files: Generate Project Structure file" Generate project structure file

AI and Terminal

Shortcut Context Action Description
⌘ + βŒ₯ + i Workspace assistant::ToggleFocus Toggle AI assistant
βŒƒ + Esc Terminal terminal::ToggleViMode Toggle Vi mode in terminal

Note

See the Zed Keybindings Documentation for more information.

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

Editor Navigation

Shortcut Action Description
z + a editor::ToggleFold Toggle fold at cursor
z + l editor::Fold Fold at cursor
z + L editor::FoldAll Fold all regions
z + h editor::UnfoldLines Unfold at cursor
z + H editor::UnfoldAll Unfold all regions
βŒƒ + n pane::ActivateNextItem Next tab/buffer
βŒƒ + b pane::ActivatePreviousItem Previous tab/buffer
βŒƒ + x pane::CloseActiveItem Close active tab/buffer
βŒƒ + - pane::SplitRight Split pane right
βŒƒ + = pane::SplitDown Split pane down

Space Leader Commands

Shortcut Action Description
Space + ; go_to_line::Toggle Toggle go to line
Space + R editor::Rename Rename symbol
Space + @ editor::RestartLanguageServer Restart language server
Space + g editor::SelectLargerSyntaxNode Select larger syntax node
Space + G editor::SelectSmallerSyntaxNode Select smaller syntax node
Space + j terminal_panel::ToggleFocus Toggle terminal panel
Space + ΓΉ git_panel::ToggleFocus Toggle Git panel
Space + 0 vim::StartOfDocument Go to start of document
Space + o editor::Hover Show hover information
Space + Tab pane::ActivateNextItem Next tab/buffer
Space + ⇧ + Tab pane::ActivatePreviousItem Previous tab/buffer
Space + ⇧ + s project_symbols::Toggle Toggle project symbols
Space + . editor::ToggleCodeActions Toggle code actions
Space + ⇧ + a editor::FindAllReferences Find all references
Space + w + d pane::CloseActiveItem Close active item
Space + * vim::MoveToNext (partial_word) Move to next occurrence of word
Space + Β¨ vim::MoveToPrevious (partial_word) Move to previous occurrence of word

Task Commands

Shortcut Action Description
Space + t + r task::Spawn "Files: Rename Files (Script)" Run file rename script
Space + t + f task::Spawn "Files: FZF" Open FZF file finder
Space + t + y task::Spawn "Files: Yazi" Open Yazi file manager
Space + t + d task::Spawn "Docker: Lazydocker" Open Lazydocker
Space + t + k task::Spawn "Kubernetes: Lazykube" Open Lazykube
Space + t + p task::Spawn "Files: Generate Project Structure file" Generate project structure file
Space + t + l task::Spawn "Git: Generate Git Logs file" Generate Git logs file
Space + t + L task::Spawn "Git: Generate Git Logs file (All)" Generate all Git logs file
Space + g + g task::Spawn "Git: Lazygit" Open Lazygit
Space + t + t task::Spawn "Laravel: Test" Run Laravel tests
Space + t + T task::Spawn "Laravel: Test (coverage)" Run Laravel tests with coverage
Space + M task::Spawn "Laravel: Migrate (fresh and seed)" Run Laravel migration fresh with seed

File & Search Operations

Shortcut Action Description
Space + f + f file_finder::Toggle Toggle file finder
Space + f + p projects::OpenRecent Open recent project
Space + f + b vim::Search Search in current file
Space + f + s outline::Toggle Toggle outline view
Space + f + r search::ToggleReplace Toggle search & replace
Space + f + l go_to_line::Toggle Toggle go to line
Space + d editor::SelectAllMatches Select all matches
Space + e project_panel::ToggleFocus Toggle project panel
Space + b + f editor::Format Format current file

AI Assistant

Shortcut Action Description
Space + i assistant::InlineAssist Inline AI assist
Space + c + c + o assistant::ToggleFocus Toggle AI assistant
Space + c + c + p assistant::QuoteSelection Quote selected text to assistant

Settings & Configuration

Shortcut Action Description
Space + s + k zed::OpenKeymap Open keymap settings
Space + s + s zed::OpenSettings Open settings
Space + s + t zed::OpenTasks Open tasks
Space + s + T theme_selector::Toggle Toggle theme selector
Space + s + d diagnostics::Deploy Deploy diagnostics

Note

You can use the default Vim keybindings in Zed by enabling Vim mode in the settings. See the Zed Vim Documentation for more information.

Tasks πŸ”„

Task Name Command Description
Git: Generate Git Logs file ~/.config/zed/tasks/generate_git_log.sh $(git rev-parse --abbrev-ref HEAD) 400 Generate Git logs for current branch (limited entries)
Git: Generate Git Logs file (All) ~/.config/zed/tasks/generate_git_log.sh $(git rev-parse --abbrev-ref HEAD) 999999 Generate Git logs for current branch (all entries)
Git: Lazygit lazygit -p $ZED_WORKTREE_ROOT Open Lazygit in project root
Files: Rename Files (Script) ~/.config/zed/tasks/rename_files.sh "${1:Path}" "${2:Pattern}" "${3:Find}" "${4:Replace}" Interactive batch file renaming with parameters
Files: FZF fzf with preview and custom bindings Advanced file finder with preview and syntax highlighting
Files: Yazi yazi Terminal file manager in project root
Files: Generate Project Structure eza --tree --level=5 --git-ignore Generate project structure avoiding vendor/node_modules
Laravel: Test php artisan test Run Laravel tests
Laravel: Test (coverage) php artisan test --coverage Run Laravel tests with coverage
Laravel: Migrate (fresh and seed) php artisan migrate:fresh --seed Fresh database migration with seed
Laravel: Migrate (fresh) php artisan migrate:fresh Fresh database migration without seed
Docker: Lazydocker lazydocker Terminal UI for Docker
Kubernetes: Lazykube lazykube Terminal UI for Kubernetes
Database: Redis CLI redis-cli Redis command line interface

Note

The tasks are executed in the context of the current workspace. The ZED_WORKTREE_ROOT environment variable is set to the root directory of the current workspace. See the Zed Tasks Documentation for more information.

Installation πŸ“₯

Automated Installation (Recommended)

/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 (62 packages)

macOS System Configuration

# 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

Acknowledgments πŸ™

Project Author Contribution
AeroSpace @nikitabobko Modern tiling window manager
Sketchybar @FelixKratz Custom menu bar and setup inspiration
JankyBorders @FelixKratz Window border visualization
Chezmoi @twpayne Dotfiles management tool
Home Manager Nix Community Declarative user environment
Nix NixOS Foundation Reproducible package management

License πŸ“„

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

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •