Installation Guide
Complete step-by-step installation guide for the development environment.
📋 Prerequisites
Section titled “📋 Prerequisites”System Requirements
Section titled “System Requirements”- macOS: 12.0 (Monterey) or later (Homebrew + Ghostty/Kitty)
- Linux: Ubuntu 22.04+ (user-space bootstrap; sudo optional)
- Git: Version control system
- Terminal: Ghostty or Kitty on macOS; Kitty (user-space) on Linux
Hardware Requirements
Section titled “Hardware Requirements”- RAM: 8GB minimum, 16GB recommended
- Storage: 10GB free space for tools and configurations
- CPU: Intel, Apple Silicon, or x86_64 Linux
Linux (Ubuntu 22.04+)
Section titled “Linux (Ubuntu 22.04+)”This path does not use Homebrew, Nix, or sudo. It installs CLIs into ~/.local and mise, then stows portable configs.
Failures already baked in: aqua:tmux/tmux is not in the aqua registry (use mise tmux); git-delta is not a mise tool name (use aqua:dandavison/delta); do not auto-stow grok over a live Grok TUI ~/.grok/ tree.
git clone https://github.com/vanducng/dotfiles.git ~/.dotfilescd ~/.dotfilesmake bootstrap-linuxAdd this to ~/.bashrc (do not replace the distro file):
# ~/.config/shell/linux.sh is stowed by the shell-linux package[[ -f ~/.config/shell/linux.sh ]] && source ~/.config/shell/linux.shCopy the git identity template (not committed as ~/.gitconfig):
cp ~/.config/git/gitconfig.linux.example ~/.gitconfig# default: personal git identity# ~/work/git/cnb → CNB work identity# ~/work/git/crashchat → personal git identity# ~/work/git/ab-spectrum → ABS work identity# ~/work/git/bhcoe → CNB work identityOptional (needs sudo): mosh, zathura, taskwarrior, and chsh -s to zsh. Grok config: make stow-grok is opt-in after backing up ~/.grok/auth.json.
Desktop (Sway = i3 on Wayland, Ghostty, same skhd/Karabiner keys): make linux-desktop. Details in Linux desktop. Homelab (disks, never-sleep, ssh, clones): make linux-homelab then sudo -E ./scripts/linux-homelab-root.sh — Linux homelab.
Then continue from Step 5 if you only needed the Linux extras above — make bootstrap-linux already ran stow-install.
🛠️ Step 1: Install Homebrew (macOS)
Section titled “🛠️ Step 1: Install Homebrew (macOS)”# Install Homebrew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Add Homebrew to PATH (Apple Silicon)echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofileeval "$(/opt/homebrew/bin/brew shellenv)"
# Add Homebrew to PATH (Intel)echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zprofileeval "$(/usr/local/bin/brew shellenv)"
# Verify installationbrew --version📦 Step 2: Install Core Dependencies
Section titled “📦 Step 2: Install Core Dependencies”# Install essential toolsbrew install git stow mise
# Install development toolsbrew install neovim fzf ripgrep fd
# Install window managementbrew install yabai skhd
# Install terminal emulatorsbrew install --cask ghostty kitty
# Verify installationsgit --versionstow --versionnvim --version🏠 Step 3: Clone Dotfiles Repository
Section titled “🏠 Step 3: Clone Dotfiles Repository”# Clone the repositorygit clone https://github.com/vanducng/dotfiles.git ~/.dotfiles
# Navigate to dotfiles directorycd ~/.dotfiles
# Verify repository structurels -la🔧 Step 4: Install System Dependencies
Section titled “🔧 Step 4: Install System Dependencies”# Run the macOS dependencies script./scripts/macos-deps.sh
# This installs:# - Development tools (Node.js, Python, Rust)# - Applications (browsers, editors, communication tools)# - Utilities (file managers, system tools)🔗 Step 5: Install Dotfiles
Section titled “🔗 Step 5: Install Dotfiles”# Install all dotfiles using GNU Stowmake stow-install
# This creates symlinks for:# - Shell configuration (zsh)# - Agent workspace manager (Herdr)# - Legacy terminal multiplexer config (tmux)# - Editor configuration (neovim)# - Window manager (yabai, skhd)# - Application configs (kitty, ghostty, etc.)
# Install the managed CLI versions, including Herdrmise install
# Verify Herdrmise exec -- herdr --versionNew Zsh sessions activate mise automatically. Run mise exec -- herdr to start Herdr immediately in the current shell.
🐚 Step 6: Shell Setup
Section titled “🐚 Step 6: Shell Setup”Install Oh My Zsh
Section titled “Install Oh My Zsh”# Install Oh My Zshsh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Install Powerlevel10k themegit clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# Install zsh pluginsgit clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestionsgit clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlightingConfigure Shell
Section titled “Configure Shell”# Restart terminal or source configurationsource ~/.zshrc
# Configure Powerlevel10k (if prompted)p10k configure
# Verify shell setupecho $SHELLwhich zsh🪟 Step 7: Window Manager Setup
Section titled “🪟 Step 7: Window Manager Setup”Configure Yabai
Section titled “Configure Yabai”# Start yabai servicebrew services start yabai
# Install scripting addition (requires password)sudo yabai --install-sa
# Verify yabai is runningyabai --check-saConfigure SKHD
Section titled “Configure SKHD”# Start skhd servicebrew services start skhd
# Grant accessibility permissions# System Preferences → Security & Privacy → Privacy → Accessibility# Add and enable: /usr/local/bin/skhd (or /opt/homebrew/bin/skhd)
# Verify skhd is runningps aux | grep skhdSystem Preferences
Section titled “System Preferences”# Disable Mission Control shortcuts that conflict# System Preferences → Keyboard → Shortcuts → Mission Control# Disable or change conflicting shortcuts
# Configure Spaces# System Preferences → Mission Control# Uncheck "Automatically rearrange Spaces based on most recent use"💻 Step 8: Terminal Setup
Section titled “💻 Step 8: Terminal Setup”Configure Herdr
Section titled “Configure Herdr”# Validate the managed configmise exec -- herdr config check
# Start or resume the workspace managermise exec -- herdrThe Tmux guide remains available for legacy remote and compatibility workflows.
Configure Terminal Emulator
Section titled “Configure Terminal Emulator”# For Ghostty (recommended)# Configuration is already linked via dotfiles
# For Kitty (alternative)# Configuration is already linked via dotfiles
# Test terminal featuresecho $TERMecho $COLORTERM🚀 Step 9: Neovim Setup
Section titled “🚀 Step 9: Neovim Setup”Initial Launch
Section titled “Initial Launch”# Start Neovimnvim
# Plugins will install automatically# Wait for installation to complete
# Check health:checkhealth
# Exit Neovim:qaInstall Language Servers
Section titled “Install Language Servers”# Open Neovimnvim
# Open Mason (LSP installer):Mason
# Install language servers for your languages:# - lua_ls (Lua)# - pyright (Python)# - tsserver (TypeScript/JavaScript)# - rust_analyzer (Rust)# - etc.
# Verify LSP installation:LspInfo🤖 Step 10: AI Tools Setup
Section titled “🤖 Step 10: AI Tools Setup”GitHub Copilot
Section titled “GitHub Copilot”# Open Neovimnvim
# Authenticate with GitHub:Copilot auth
# Follow the authentication flow# Verify status:Copilot statusCodeCompanion (OpenAI)
Section titled “CodeCompanion (OpenAI)”# Set OpenAI API keyexport OPENAI_API_KEY="your-api-key-here"
# Add to shell configurationecho 'export OPENAI_API_KEY="your-api-key-here"' >> ~/.zshrc
# Test CodeCompanionnvim# Press: <leader>acNeoCodeium (Free Alternative)
Section titled “NeoCodeium (Free Alternative)”# Open Neovimnvim
# Authenticate with Codeium:NeoCodeium auth
# Follow the authentication flow# Verify status:NeoCodeium status🗄️ Step 11: Database Tools (Optional)
Section titled “🗄️ Step 11: Database Tools (Optional)”Install Database Clients
Section titled “Install Database Clients”# DBeaver (GUI client)brew install --cask dbeaver-community
# Command line toolsbrew install postgresql mysql sqliteConfigure Database Tools
Section titled “Configure Database Tools”# Open Neovimnvim
# Open database explorer# Press: <leader>Dd
# Add database connections through the UI# Connections are saved automatically✅ Step 12: Verification
Section titled “✅ Step 12: Verification”Test Core Functionality
Section titled “Test Core Functionality”# Test window manager# Press: meh + a (should open Ghostty)# Press: ctrl + shift + h (should focus left window)
# Test Herdrherdr status# Press: Ctrl-x + ? (should open active key help)
# Test Neovimnvim# Press: <leader>ff (should open file finder)# Press: <leader>ac (should open AI chat)Check Services
Section titled “Check Services”# Verify all services are runningbrew services list | grep -E "(yabai|skhd)"
# Check process statusps aux | grep -E "(yabai|skhd|herdr)"
# Test key bindingsskhd --observe # Press some keys to test🔧 Post-Installation Configuration
Section titled “🔧 Post-Installation Configuration”Customize Settings
Section titled “Customize Settings”# Edit configurations as needednvim ~/.dotfiles/dotfiles/yabai/.config/yabai/yabaircnvim ~/.dotfiles/dotfiles/skhd/.config/skhd/skhdrcnvim ~/.dotfiles/dotfiles/nvim/.config/nvim/lua/plugins/user.lua
# Apply changesmake stow-installskhd --restart-serviceyabai --restart-serviceOpen a Project Workspace
Section titled “Open a Project Workspace”cd ~/projects/your-projectherdr
# Inside Herdr, use C-x g to search workspaces, tabs, and panes🆘 Troubleshooting Installation
Section titled “🆘 Troubleshooting Installation”Common Issues
Section titled “Common Issues”Permission Denied
Section titled “Permission Denied”# Fix file permissionschmod +x ~/.local/bin/*chmod +x ~/.dotfiles/scripts/*
# Grant accessibility permissions# System Preferences → Security & Privacy → Privacy → AccessibilityServices Not Starting
Section titled “Services Not Starting”# Check Homebrew servicesbrew services list
# Restart servicesbrew services restart yabaibrew services restart skhd
# Check logstail -f /usr/local/var/log/yabai/yabai.err.logPlugins Not Installing
Section titled “Plugins Not Installing”# Neovim pluginsnvim:Lazy clean:Lazy sync
# Herdr config and runtimemise exec -- herdr config checkherdr statustail -n 100 ~/.config/herdr/herdr-server.logGetting Help
Section titled “Getting Help”- Check the Troubleshooting Guide
- Review individual tool documentation
- Check GitHub issues for specific problems
🎉 Next Steps
Section titled “🎉 Next Steps”Learn the Workflow
Section titled “Learn the Workflow”- Read the Quick Reference
- Practice key bindings
- Explore AI tools
- Customize to your needs
Advanced Setup
Section titled “Advanced Setup”- Configure additional languages
- Add custom scripts
- Set up project templates
- Integrate with your workflow
Stay Updated
Section titled “Stay Updated”# Update dotfilescd ~/.dotfilesgit pull origin mainmake stow-install
# Update pluginsnvim:Lazy sync
# Update system packagesbrew update && brew upgrade