Skip to content

nikitasmen/Nixmod

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

363 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NixMod - Modern NixOS Configuration with Hyprland

A comprehensive NixOS desktop environment configuration centered around the Hyprland Wayland compositor, featuring modern tooling, beautiful theming, and developer-friendly utilities.

NixOS Hyprland Flakes

πŸ“ Current Repository Structure

This project is organized into separate components for better maintainability:

πŸ”§ nixmod-system/ - NixOS System Configuration

  • Purpose: System-level NixOS configuration
  • Scope: Packages, services, system settings, hardware configuration
  • Target: /etc/nixos/ directory
  • Management: NixOS rebuild commands

🎨 nixmod-dotfiles/ - User Configuration Files

  • Purpose: User application configurations
  • Scope: .config files, themes, application settings
  • Target: ~/.config/ directory
  • Management: Symlink-based deployment via toolkit

πŸ› οΈ toolkit/ - Management Scripts

  • Purpose: Installation and maintenance utilities
  • Scope: Scripts for system management, configuration deployment, wallpaper management
  • Target: Local system management
  • Management: Direct script execution

πŸš€ Quick Start (Current Structure)

1. Install System Configuration

# Clone the repository
git clone https://github.com/nikitasmen/Nixmod.git
cd Nixmod

# Install the system configuration
sudo ./toolkit/nixmod.sh install

2. Install User Dotfiles

# Dotfiles are now managed automatically by Home Manager. 
# Rebuild the system to apply them:
sudo ./toolkit/nixmod.sh update

This will automatically deploy all configurations to ~/.config using Home Manager. No manual symlinking or dotfiles.sh script required.

4. Hardware Configuration (New Machines)

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

πŸ“š Documentation

✨ Features

πŸ–₯️ Desktop Environment

  • 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

πŸ› οΈ Development Tools

  • 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

🎡 Media & Communication

  • Browsers: Firefox and Google Chrome
  • Music: Spotify with Spicetify theming
  • Video: FreeTube (YouTube alternative), Stremio
  • Communication: WebCord (Discord), Viber
  • Productivity: Logseq for note-taking

🎨 Customization

  • Themes: Catppuccin Macchiato color scheme throughout
  • Icons: Custom workspace and system icons
  • Animations: Smooth transitions and effects
  • Keybindings: Intuitive keyboard shortcuts

πŸ“ Current Project Structure

System Configuration (nixmod-system/)

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

User Dotfiles (nixmod-dotfiles/)

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

Management Toolkit (toolkit/)

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

πŸ”§ Configuration

Core Components

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

Customization Guide

Changing Themes

  1. Waybar Theme: Edit nixmod-dotfiles/waybar/style.css
  2. Hyprland Colors: Modify nixmod-dotfiles/hypr/hyprland.conf
  3. Terminal Theme: Update nixmod-dotfiles/kitty/theme.conf

Adding Applications

  1. Edit nixmod-system/modules/programs/applications.nix
  2. Add packages to environment.systemPackages
  3. Rebuild: sudo nixos-rebuild switch --flake .#nixos

Keyboard Shortcuts

  • 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

πŸ› οΈ Management Tools (Current Structure)

System Configuration Management

# 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

User Dotfiles Management

# 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

Toolkit Utilities

# 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

πŸ”„ Updates (Current Structure)

Updating System Configuration

# Update system configuration
cd nixmod-system
git pull
sudo ../toolkit/nixmod.sh update

# Or update flake inputs
sudo ../toolkit/nixmod.sh flake-update

Updating User Dotfiles

# 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

Updating Toolkit

# Update toolkit scripts
cd toolkit
git pull

# Update UnixKit
./update-unixkit.sh

πŸ› Troubleshooting

Common Issues

Hyprland Not Starting

# Check logs
journalctl --user -u hyprland

# Verify Wayland session
echo $XDG_SESSION_TYPE

Configuration Not Applied

# Check for syntax errors
nixos-rebuild dry-activate

# Validate flake
nix flake check

Missing Applications

# Rebuild with verbose output
sudo nixos-rebuild switch --flake .#nixos --verbose

# Check package availability
nix search nixpkgs package-name

Getting Help

  1. Check Logs: journalctl -xe
  2. NixOS Manual: nixos-help
  3. Hyprland Wiki: wiki.hyprland.org
  4. Issues: Create an issue on GitHub

πŸ“Έ Screenshots

Desktop Overview

Application Launcher

Lock Screen

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes
  4. Test your configuration: nixos-rebuild dry-activate
  5. Commit your changes: git commit -m 'Add feature'
  6. Push to the branch: git push origin feature-name
  7. Submit a pull request

Development Guidelines

  • Follow NixOS best practices
  • Test changes before committing
  • Update documentation for new features
  • Use meaningful commit messages

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Hyprland - The amazing Wayland compositor
  • NixOS - The declarative Linux distribution
  • Catppuccin - Beautiful color palette
  • UnixKit - Custom utility scripts

πŸ“ž Support


Made with ❀️ for the NixOS community

About

My nixOs configuration

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors