HIGHLY opinionated macOS & Linux configuration managed with chezmoi and devbox. Contains only tools and applications used daily with zEr0 bloat.
Everything is managed through devbox - a Nix-based package manager that provides reproducible development environments.
- Single source of truth for all packages in
.local/share/devbox/global/default/devbox.json - Reproducible across machines
- No conflicts between package versions
- Both CLI tools and GUI applications
- Automatic application syncing to Spotlight/Raycast
Devbox supports platform-specific packages via platforms field in devbox.json. macOS-only packages (GUI apps, window management) are automatically skipped on Linux.
Defined in .zshrc:
dbadd package-name # Add package (all platforms) and sync to chezmoi
dbrm package-name # Remove package and sync to chezmoi
dbup [package-name] # Update packages; flake refs are refreshed via remove+add
dbsync # Manually sync devbox.json and devbox.lock to chezmoi
dbadd-mac package-name # Add macOS-only package
dbadd-linux package-name # Add Linux-only packageprocess-compose manages background services:
- Configuration:
.local/share/devbox/global/default/process-compose.yaml - Services: sketchybar
Located in .local/share/devbox/global/default/scripts/:
setup-sketchybar-deps.sh- Installs SketchyBar dependenciessync-nix-apps.sh- Creates aliases for GUI apps in Spotlight/Raycast
- macOS (Big Sur or later)
- Devbox
- Homebrew - Only required for SketchyBar icons (SF Symbols, fonts, media-control)
- Command Line Tools:
xcode-select --install
- Devbox
- Nix package manager (installed automatically by Devbox)
-
yabai - Tiling window manager
- Requires SIP (System Integrity Protection) to be disabled for scripting additions
- Disable SIP instructions
- Configuration:
.config/yabai/yabairc - Uses BSP layout with external bar support for SketchyBar
- Configured to run with elevated privileges for scripting additions
-
skhd - Hotkey daemon
- Requires Accessibility permissions
- Disable "Secure Keyboard Entry" in Terminal/iTerm2
- Configuration:
.config/skhd/skhdrc - Vim-style navigation (hjkl) for window focus and movement
-
SketchyBar - Custom status bar
- Lives in its own repo, deevs-sketchybar, which chezmoi clones to
~/.config/sketchybaras a git-repo external - Configured in Lua; everything user-facing is in that repo's
config.lua - Its own
install.shbuilds the helper binaries and installs SbarLua + the app font - Integrates with yabai for workspace and window information
- Lives in its own repo, deevs-sketchybar, which chezmoi clones to
-
Ghostty - GPU-accelerated terminal (macOS only)
- Configuration:
.config/ghostty/config - Theme: Everforest Dark Hard
- Font: JetBrainsMono Nerd Font
- Background opacity: 0.82
- Configuration:
-
zsh - Shell
-
starship - Shell prompt
- Configuration:
.config/starship/ - Cross-shell prompt with git integration
- Configuration:
-
tmux - Terminal multiplexer
- Configuration:
.config/tmux/tmux.conf - Prefix:
Ctrl-s - Plugins managed via devbox (installed from Nix)
- Theme: Everforest
- Plugins: vim-tmux-navigator, yank, resurrect, continuum, sensible
- Configuration:
-
Neovim - Text editor
- Configuration:
.config/nvim/ - Plugin manager: lazy.nvim
- Theme: Everforest Dark Hard
- Plugins defined in
lua/plugins/
- Configuration:
-
Zed - Code editor (macOS only)
- Configuration:
.config/zed/ - Theme: Everforest Dark
- Set as default
$EDITORviazeditor --wait
- Configuration:
-
Claude Code - AI coding assistant CLI
- Configuration:
.claude/settings.json - Environment: Disables zoxide in Claude Code sessions
- Configuration:
-
OpenCode - AI code assistant
- Configuration:
.config/opencode/opencode.json - Theme: Everforest
- MCP integration with Context7
- 1Password integration for API keys
- Configuration:
-
btop - System monitor
- Configuration:
.config/btop/btop.conf - Theme: Everforest Dark Hard
- Vim keybindings enabled
- Configuration:
-
fzf - Fuzzy finder
- Integrated with zsh for history and file search
- Works with fzf-tab for command completion
-
zoxide - Smart directory jumper
- Replaces
cdcommand - Learns frequently accessed directories
- Replaces
-
ripgrep - Fast search tool
-
bat - Enhanced
catwith syntax highlighting -
vivid - LS_COLORS generator using the terminal's Everforest ANSI palette
- CLI Tools: ripgrep, fzf, bat, zoxide, btop, k9s
- Cloud/DevOps: awscli2, kubectl, kubectx, google-cloud-sdk
- Development: neovim, tmux, bun, rustup
- Networking: 1Password CLI
- Other: Magic Wormhole
Managed via devbox and available in Spotlight/Raycast after sync:
- Communication: Slack, Discord, Zoom
- Productivity: Notion, Raycast
- Development: DBeaver, Zed
- Media: Spotify
- Networking: WireGuard
- Browsers: Google Chrome
- Other: Transmission
curl -fsSL https://get.jetify.com/devbox | bashdevbox global pull# Initialize chezmoi with this repository
chezmoi init https://github.com/YOUR_USERNAME/YOUR_REPO.git
# Review changes before applying
chezmoi diff
# Apply dotfiles
chezmoi applydevbox global run setup-sketchybarThis script will:
- Install Homebrew (if not present)
- Install media-control, SF Symbols and the SF fonts
- Hand off to
~/.config/sketchybar/install.sh, which builds the helper binaries and installs SbarLua plus the app font
chezmoi apply has to run first: it is what clones the bar repo.
devbox global run sync-nix-appsCreates aliases in ~/Applications/installed via DevBox/ for all devbox-installed GUI applications.
Follow the official installation guide for:
Start service: yabai --start-service
Follow the skhd documentation for:
- Granting accessibility permissions
- Disabling "Secure Keyboard Entry" in terminal
Start service: skhd --start-service
Ensure dependencies are installed and helper binaries compiled:
devbox global run setup-sketchybarService managed automatically by process-compose.
| Keybinding | Action |
|---|---|
Alt+h/j/k/l |
Focus window (west/south/north/east) |
Alt+s/g |
Focus display (west/east) |
Alt+1-9,0 |
Focus space 1-10 |
Alt+Tab |
Focus recent space |
Alt+Left/Right |
Focus previous/next space |
| Keybinding | Action |
|---|---|
Shift+Alt+h/j/k/l |
Swap window (west/south/north/east) |
Shift+Alt+1-9,0 |
Move window to space 1-10 and follow |
Shift+Alt+s/g |
Move window to display (west/east) and follow |
Shift+Alt+Left/Right |
Move window to previous/next space and follow |
| Keybinding | Action |
|---|---|
Ctrl+Alt+h/j/k/l |
Resize window |
Ctrl+Alt+e |
Equalize window sizes |
| Keybinding | Action |
|---|---|
Alt+t |
Toggle float |
Alt+f |
Toggle fullscreen |
Alt+d |
Toggle parent zoom |
Alt+e |
Toggle split type |
Alt+r |
Rotate tree 90° |
Alt+y/x |
Mirror tree (y-axis/x-axis) |
| Keybinding | Action |
|---|---|
Alt+Return |
Open Ghostty |
Alt+b |
Open Safari |
Alt+z |
Open Zed |
| Keybinding | Action |
|---|---|
Shift+Ctrl+Alt+r |
Restart yabai |
Shift+Alt+Space |
Toggle SketchyBar visibility |
| Keybinding | Action |
|---|---|
Ctrl+s |
Prefix key |
Prefix+r |
Reload configuration |
Prefix+h/j/k/l |
Navigate panes |
# Add a package (all platforms)
dbadd package-name
# Add macOS-only package
dbadd-mac package-name
# Add Linux-only package
dbadd-linux package-name
# Remove a package
dbrm package-name
# Update all packages, or specific packages
# Flake refs like github:owner/repo are refreshed by remove+add.
dbup
dbup github:DeevsDeevs/pup-cli-nix
# Manually edit devbox.json
zeditor ~/.local/share/devbox/global/default/devbox.json
# Then sync devbox.json and devbox.lock
dbsyncEdit files directly and apply with chezmoi:
# Edit in chezmoi source directory
chezmoi edit ~/.config/yabai/yabairc
# Or edit the managed file directly
zeditor ~/.config/yabai/yabairc
# Add changes to chezmoi
chezmoi add ~/.config/yabai/yabairc
# Apply changes
chezmoi applyTerminal and development UIs use Everforest:
- Ghostty, tmux, Starship, and shell file colors
- btop, Neovim, and Zed
- SketchyBar and yabai accents
- Herdr, Pi, and OpenCode
- Verify SIP is disabled:
csrutil status - Check accessibility permissions
- Verify sudo configuration:
sudo yabai --load-sa - Check logs:
tail -f /tmp/yabai_$USER.err.log
- Check accessibility permissions
- Disable "Secure Keyboard Entry" in terminal
- Check logs:
tail -f /tmp/skhd_$USER.err.log
- Ensure dependencies are installed:
devbox global run setup-sketchybar - Check the helper binaries built:
ls ~/.config/sketchybar/helpers/*/bin/ - Restart:
sketchybar --reload - For anything bar-specific, see the troubleshooting section in the deevs-sketchybar README
Run the sync script:
devbox global run sync-nix-apps- Ensure Nix is installed:
nix --version - Check devbox status:
devbox global list - Try refreshing:
devbox global shellenv
