Modular Architecture
This dotfiles repository uses a clean, modular structure that separates configurations by function and type. Everything is organized under three main directories:Configuration Organization
Application Configs (dots/)
User-level application configurations that are portable across different setups:
- nvim/ - Neovim editor configuration with Lazy.nvim
- kitty/ - Terminal emulator settings
- code/ - VS Code settings and preferences
- fastfetch/ - System information tool
- bat/ - Cat replacement with syntax highlighting
Hyprland Ecosystem (hyprland/)
Window manager and Wayland compositor components:
- hypr/ - Main Hyprland configuration (modular)
- waybar/ - Status bar configuration
- rofi/ - Application launcher
- mako/ - Notification daemon
- wlogout/ - Logout menu
System Configuration (system/)
System-wide settings and shell environment:
- zsh/ - Zsh shell configuration
- environment.d/ - Environment variables
- paru/ - AUR helper configuration
Dotbot Symlink Management
The repository uses Dotbot to automate installation and maintain symbolic links between the repository and your home directory.How It Works
Symlink Mappings
Here’s how the repository structure maps to your home directory:install.conf.yaml
Dotbot Configuration Options
install.conf.yaml
Package Management
The repository includes apackages.txt file listing all required packages. Dotbot automatically installs missing packages using paru:
Making Changes Safely
Best Practices
Before Making Changes
Before Making Changes
- Navigate to your dotfiles repository (usually
~/dotfiles) - Create a new git branch for experimental changes
- Edit files directly in the repository
- Test changes in your live environment
Testing Changes
Testing Changes
- Hyprland:
Super + Ctrl + Rto reload configuration - Waybar:
pkill waybar && waybar &to restart - Zsh:
exec zshorsource ~/.config/zsh/.zshrc - Neovim:
:source $MYVIMRCor restart
Committing Changes
Committing Changes
Directory Structure Details
home/
Root-level configuration files like
.zshenv that live directly in $HOMEdots/
Application-specific configs for terminal tools and editors
hyprland/
Complete Hyprland desktop environment configuration
system/
System-wide settings including shell, environment, and package management
Configuration Compilation
Some configurations are automatically compiled for performance:- Zsh:
.zshfiles are compiled to.zwc(Zsh compiled) format - Completions: Completion cache is compiled for faster loading
Next Steps
Hyprland Configuration
Learn about the modular Hyprland setup
Shell Configuration
Explore Zsh aliases, functions, and plugins
Application Configs
Configure Neovim, Kitty, and other apps
System Settings
Manage environment variables and system configs
