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: Package manager for macOS
- Git: Version control system
- Terminal: Terminal emulator (Ghostty, Kitty, or built-in Terminal)
Hardware Requirements
Section titled “Hardware Requirements”- RAM: 8GB minimum, 16GB recommended
- Storage: 10GB free space for tools and configurations
- CPU: Intel or Apple Silicon Mac
🛠️ Step 1: Install Homebrew
Section titled “🛠️ Step 1: Install Homebrew”# 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
# Install development toolsbrew install neovim tmux fzf ripgrep fd
# Install window managementbrew install yabai skhd
# Install terminal emulatorsbrew install --cask ghostty kitty
# Verify installationsgit --versionstow --versionnvim --versiontmux -V🏠 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)# - Terminal multiplexer (tmux)# - Editor configuration (neovim)# - Window manager (yabai, skhd)# - Application configs (kitty, ghostty, etc.)🐚 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 Tmux
Section titled “Configure Tmux”# Install Tmux Plugin Manager (TPM)git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# Start tmuxtmux new-session
# Install plugins (in tmux)# Press: Ctrl-x + I (capital I)
# Verify tmux configurationtmux source-file ~/.tmux.confConfigure 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 tmuxtmux new-session -s test# Press: Ctrl-x + t (should open project sessionizer)
# 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|tmux)"
# 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-serviceAdd Personal Projects
Section titled “Add Personal Projects”# Edit tmux sessionizer pathsnvim ~/.local/bin/tmux-sessionizer
# Add your project directoriessearch_paths=( ~/personal ~/projects ~/work/your-company)🆘 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
# Tmux pluginstmux kill-serverrm -rf ~/.tmux/pluginsgit clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmtmux new-session# Press: Ctrl-x + IGetting 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