This is a dotfiles repo containing my configurations for certain programs. These configurations are kept in sync by using GNU Stow, a symlink farm manager that creates symlinks from my dotfile repo to ~/.
This repository includes profile-based installation for common setups:
# Clone the repository
cd ~
git clone git@github.com:hvenry/dotfiles.git
cd dotfiles
# Install a complete profile
./install-profile.sh <profile_name>macos: Core development environment for macOS (zsh, nvim, tmux, ghostty, vscode).arch-hyprland: Full Wayland desktop with Hyprland (includes all desktop components).server: Minimal headless server setup (zsh, nvim, tmux).
- Missing packages: If a profile references packages that don't exist in your dotfiles, they're skipped with warnings.
- Clean mode: Use
--cleanflag to remove existing configurations before installation. - Cross-platform: All scripts work on both macOS and Linux.
First, install Homebrew (if not already installed):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Install essential tools and dependencies:
# Install git and stow for dotfiles management
brew install git stow
# Install core applications
brew install tmux fzf neovim
# Terminal emulator
brew install --cask ghosttyInstall Tmux Plugin Manager (TPM) for tmux themes and plugins:
git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpmGood to go!
For a fresh Arch system, the automated bootstrap installer handles everything:
# Clone the repository
cd ~
git clone git@github.com:hvenry/dotfiles.git
cd dotfiles
# Run the complete setup (requires sudo)
sudo ./bootstrap/arch-install.shThis comprehensive script will:
- Install all core system packages from
bootstrap/pacman.txt - Install yay (AUR helper) if not present
- Install all AUR packages from
bootstrap/aur.txt - Set up Ly as the primary display manager
- Create symlinks for all dotfiles configurations
- Run post-install setup script to finalize configuration
# Set Ly as primary display manager
sudo systemctl disable sddm
sudo systemctl enable ly# This handles additional configuration
bash bootstrap/post-install.shThe post-install script:
- Installs Tmux Plugin Manager (TPM)
- Sources your zsh configuration
- Enables Ly display manager
- Installs global npm packages (neovim)
- Sets up Python environment
- Provides next steps guidance
These steps are required before your first boot to avoid errors:
Create ~/.config/hypr/local.conf with your monitor settings:
# Option A: Copy a preset configuration
cp ~/.config/hypr/machines/laptop.conf ~/.config/hypr/local.conf
# OR
cp ~/.config/hypr/machines/desktop.conf ~/.config/hypr/local.conf
# Option B: Create a custom configuration
# See ~/.config/hypr/machines/*.conf for examplesConfigure the status bar for your primary monitor:
# Copy the example configuration
cp ~/.config/waybar/.local.example ~/.config/waybar/.local
# Edit to set your primary monitor
# Example: PRIMARY_MONITOR=DP-4 or PRIMARY_MONITOR=eDP-1
# Run 'hyprctl monitors' after first boot to see available monitorsNote: The post-install script will warn you if these configurations are missing.
The vscode package contains VS Code configuration files that work across platforms:
- macOS:
~/Library/Application Support/Code/User/ - Linux:
~/.config/Code/User/
The install script automatically detects your OS and uses the correct path.
After your installation completes, these are the immediate next steps:
source ~/.zshrc# Start a new tmux session
tmux new-session -s main
# Inside tmux, press Ctrl+b (or your prefix) then I to install plugins
# The TPM script should have been installed by post-install.sh- Launch neovim:
nvim - On first launch, run
:Masonto install language servers - LSP servers will auto-install on first file type detection
Arch Specific: