A comprehensive NixOS desktop environment configuration centered around the Hyprland Wayland compositor, featuring modern tooling, beautiful theming, and developer-friendly utilities.
This project is organized into separate components for better maintainability:
- Purpose: System-level NixOS configuration
- Scope: Packages, services, system settings, hardware configuration
- Target:
/etc/nixos/directory - Management: NixOS rebuild commands
- Purpose: User application configurations
- Scope:
.configfiles, themes, application settings - Target:
~/.config/directory - Management: Symlink-based deployment via toolkit
- Purpose: Installation and maintenance utilities
- Scope: Scripts for system management, configuration deployment, wallpaper management
- Target: Local system management
- Management: Direct script execution
# Clone the repository
git clone https://github.com/nikitasmen/Nixmod.git
cd Nixmod
# Install the system configuration
sudo ./toolkit/nixmod.sh install# Dotfiles are now managed automatically by Home Manager.
# Rebuild the system to apply them:
sudo ./toolkit/nixmod.sh updateThis will automatically deploy all configurations to ~/.config using Home Manager. No manual symlinking or dotfiles.sh script required.
hardware-configuration.nix and nvidia-configuration.nix contain machine-specific data (disk UUIDs, GPU bus IDs). When setting up a different machine, regenerate these:
sudo nixos-generate-config
# Then merge or replace hardware-configuration.nix and nvidia-configuration.nix as needed- System Configuration - NixOS system setup and management
- User Dotfiles - Application configurations and theming
- Toolkit - Management scripts and utilities
- Hyprland: Modern tiling Wayland compositor with custom animations and theming
- Waybar: Dual-bar status system with Catppuccin Macchiato theme
- Dynamic Wallpapers: Automated wallpaper rotation with hyprpaper
- Interactive Lock Screen: Media controls and system information on lock screen
- Application Launcher: Wofi with custom styling
- Multiple Terminals: Kitty, Ghostty, and Alacritty with custom configurations
- Text Editors: Helix editor with language server support
- Version Control: Git with custom configuration
- Containerization: Docker and Podman support
- UnixKit: Custom utility scripts with automatic updates via flakes
- Browsers: Firefox and Google Chrome
- Music: Spotify with Spicetify theming
- Video: FreeTube (YouTube alternative), Stremio
- Communication: WebCord (Discord), Viber
- Productivity: Logseq for note-taking
- Themes: Catppuccin Macchiato color scheme throughout
- Icons: Custom workspace and system icons
- Animations: Smooth transitions and effects
- Keybindings: Intuitive keyboard shortcuts
nixmod-system/
βββ README.md # System configuration documentation
βββ flake.nix # Nix flake configuration
βββ configuration.nix # Main system configuration
βββ hardware-configuration.nix # Hardware-specific settings
βββ nvidia-configuration.nix # NVIDIA driver configuration
βββ unixkit.nix # UnixKit integration
βββ playwrightConfig.nix # Playwright configuration
βββ modules/ # Modular configuration components
β βββ desktop/ # Desktop environment modules
β β βββ hyprland.nix # Hyprland configuration
β β βββ terminals.nix # Terminal configurations
β βββ programs/ # Application configurations
β β βββ applications.nix # General applications
β β βββ development.nix # Development tools
β βββ system/ # System-level configurations
β β βββ audio.nix # Audio system
β β βββ boot.nix # Boot configuration
β β βββ fonts.nix # Font configuration
β β βββ input-remapper.nix # Mouse/key remapping (extra buttons)
β β βββ locale.nix # Locale settings
β β βββ networking.nix # Network configuration
β β βββ power.nix # Power management
β βββ users/ # User management
β βββ nikmen.nix # User configuration
βββ overlays/ # Custom package overlays
β βββ flameshot.nix # Flameshot overlay
βββ README.md # Module documentation
nixmod-dotfiles/
βββ README.md # Dotfiles documentation
βββ hypr/ # Hyprland ecosystem
β βββ hyprland.conf # Main Hyprland config
β βββ hypridle.conf # Idle management
β βββ hyprlock.conf # Lock screen
β βββ hyprpaper.conf # Wallpaper management
β βββ last_wallpaper.txt # Wallpaper tracking
βββ waybar/ # Status bar
β βββ config # Main configuration
β βββ style.css # Custom styling
β βββ macchiato.css # Catppuccin theme
β βββ scripts/
β βββ exit_menu.sh # Exit menu script
βββ kitty/ # Kitty terminal
β βββ kitty.conf # Main configuration
β βββ theme.conf # Theme settings
β βββ splits.conf # Split configurations
β βββ custom-hints.py # Custom key hints (URL/path selection)
βββ ghostty/ # Ghostty terminal
β βββ config # Terminal configuration
βββ wofi/ # Application launcher
β βββ config # Main configuration
β βββ style.css # Styling
βββ wlogout/ # Logout menu
β βββ layout # Layout configuration
β βββ style.css # Styling
βββ superfile/ # File manager
β βββ superfile/ # Superfile configuration
β βββ config.toml # Main configuration
β βββ hotkeys.toml # Keybindings
β βββ theme/ # Theme collection
βββ neofetch/ # System information
β βββ config.conf # Neofetch configuration
β βββ asciiLogo.txt # Custom ASCII art
β βββ Atom.ascii # Atom logo
βββ clipse/ # Clipboard manager
β βββ config.json # Main configuration
β βββ custom_theme.json # Custom theme
βββ cava/ # Audio visualizer
βββ config # Main configuration
βββ shaders/ # Custom shaders
toolkit/
βββ README.md # Toolkit documentation
βββ nixmod.sh # Main management script
βββ dotfiles.sh # Dotfiles management (install, sync, status)
βββ wallpaper.sh # Wallpaper management (set, random)
βββ helper.sh # Helper utilities
βββ add-flake.sh # Flake management
βββ update-unixkit.sh # UnixKit updates
| Component | Description | Configuration File |
|---|---|---|
| Hyprland | Wayland compositor | nixmod-dotfiles/hypr/hyprland.conf |
| Waybar | Status bar | nixmod-dotfiles/waybar/config |
| Kitty | Terminal emulator | nixmod-dotfiles/kitty/kitty.conf |
| Wofi | Application launcher | nixmod-dotfiles/wofi/config |
| Hyprlock | Lock screen | nixmod-dotfiles/hypr/hyprlock.conf |
- Waybar Theme: Edit
nixmod-dotfiles/waybar/style.css - Hyprland Colors: Modify
nixmod-dotfiles/hypr/hyprland.conf - Terminal Theme: Update
nixmod-dotfiles/kitty/theme.conf
- Edit
nixmod-system/modules/programs/applications.nix - Add packages to
environment.systemPackages - Rebuild:
sudo nixos-rebuild switch --flake .#nixos
- Super + D: Application launcher
- Super + Enter: Terminal
- Super + Q: Close window
- Super + Shift + Q: Quit Hyprland
- Super + 1-9: Switch workspaces
- Super + Shift + 1-9: Move window to workspace
# System configuration management
cd nixmod-system
sudo ../toolkit/nixmod.sh [command]
# Available commands:
# install - Install system configuration
# update - Update system
# test - Test configuration
# status - Show system status
# backup - Create backup
# flake-update - Update flake inputs# Dotfiles management via toolkit
sudo ./toolkit/nixmod.sh install-dotfiles # Create individual symlinks for all discovered apps
sudo ./toolkit/nixmod.sh dotfiles-status # Check individual symlink status for all apps
sudo ./toolkit/nixmod.sh sync-dotfiles # Sync changes back to repository
# Direct dotfiles management
./toolkit/dotfiles.sh [command]
# Available commands:
# install [CONFIG] - Install all or specific dotfiles
# sync [CONFIG] - Sync all or specific configs
# list - List available configurations
# status - Check dotfiles status
# check - Check for changes
# update-paths - Update hardcoded paths# Main management script
./toolkit/nixmod.sh [command]
# Dotfiles management
./toolkit/dotfiles.sh [command]
# Wallpaper management
./toolkit/wallpaper.sh [command] [wallpaper-path]
# Helper utilities
./toolkit/helper.sh [command]
# Flake management
./toolkit/add-flake.sh [options]
# UnixKit updates
./toolkit/update-unixkit.sh# Update system configuration
cd nixmod-system
git pull
sudo ../toolkit/nixmod.sh update
# Or update flake inputs
sudo ../toolkit/nixmod.sh flake-update# Update dotfiles via toolkit (recreates individual symlinks for all discovered apps)
sudo ./toolkit/nixmod.sh install-dotfiles
# Or update directly (from repo root)
git pull
./toolkit/dotfiles.sh install
# Sync changes back to repository
sudo ./toolkit/nixmod.sh sync-dotfiles
# Or directly: ./toolkit/dotfiles.sh sync# Update toolkit scripts
cd toolkit
git pull
# Update UnixKit
./update-unixkit.sh# Check logs
journalctl --user -u hyprland
# Verify Wayland session
echo $XDG_SESSION_TYPE# Check for syntax errors
nixos-rebuild dry-activate
# Validate flake
nix flake check# Rebuild with verbose output
sudo nixos-rebuild switch --flake .#nixos --verbose
# Check package availability
nix search nixpkgs package-name- Check Logs:
journalctl -xe - NixOS Manual:
nixos-help - Hyprland Wiki: wiki.hyprland.org
- Issues: Create an issue on GitHub
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Test your configuration:
nixos-rebuild dry-activate - Commit your changes:
git commit -m 'Add feature' - Push to the branch:
git push origin feature-name - Submit a pull request
- Follow NixOS best practices
- Test changes before committing
- Update documentation for new features
- Use meaningful commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
- Hyprland - The amazing Wayland compositor
- NixOS - The declarative Linux distribution
- Catppuccin - Beautiful color palette
- UnixKit - Custom utility scripts
- GitHub Issues: Create an issue
- Documentation: Check the Wiki
Made with β€οΈ for the NixOS community


