5bd78b1dda6152106ef162044aa5cbfc570535f1
NixOS Configuration with Hyprland
A fully declarative NixOS configuration featuring Hyprland as the Wayland compositor with extensive ricing capabilities.
Features
- Hyprland: Modern Wayland compositor with beautiful animations
- Home Manager: User-level package and dotfile management
- Flakes: Reproducible, declarative configuration
- Full Wayland Support: Native Wayland applications and XWayland compatibility
- Ricing Tools: Waybar, Hyprpaper, Dunst, and more for customization
- Development Ready: Includes essential development tools
Quick Start (Fresh Install)
On a fresh NixOS installation, run:
nix-shell -p git --run "bash <(curl -s https://git.cribdev.com/raw/your-username/nixos-config/main/bootstrap.sh)"
Or manually:
# Install git
nix-shell -p git
# Clone this repository
git clone https://git.cribdev.com/your-username/nixos-config ~/.config/nixos
# Copy hardware configuration
sudo cp /etc/nixos/hardware-configuration.nix ~/.config/nixos/
# Edit configuration files (see below)
cd ~/.config/nixos
# Build and apply
sudo nixos-rebuild switch --flake .#myhost
Configuration Structure
nixos-config/
├── flake.nix # Main flake configuration
├── configuration.nix # System-level configuration
├── hardware-configuration.nix # Auto-generated hardware config
├── bootstrap.sh # Bootstrap script for fresh installs
├── modules/
│ ├── system.nix # System packages and services
│ └── hyprland.nix # Hyprland-specific configuration
└── home/
├── home.nix # Home Manager user configuration
├── hyprland.nix # Hyprland user settings and keybindings
└── waybar.nix # Waybar status bar configuration
Before First Build
Edit these files with your information:
1. flake.nix
- Replace
myhostwith your hostname - Replace
yourusernamewith your username
2. configuration.nix
- Set your
networking.hostName - Set your
time.timeZone - Adjust locale settings if needed
- Update username in
users.users.yourusername
3. home/home.nix
- Update
home.usernameandhome.homeDirectory - Configure Git with your name and email
- Adjust package list to your needs
4. home/hyprland.nix
- Configure monitor settings
- Customize keybindings
- Adjust animations and appearance
Included Software
System Tools
- NetworkManager for networking
- PipeWire for audio
- Bluetooth support
- SSH server
- CUPS for printing
Desktop Environment
- Hyprland (Wayland compositor)
- Waybar (status bar)
- Wofi (application launcher)
- Dunst (notifications)
- Hyprpaper/SWWW (wallpapers)
Terminal & Shell
- Kitty & Alacritty terminals
- Zsh with Oh-My-Zsh
- Modern CLI tools (eza, bat, ripgrep, fd, fzf)
Applications
- Firefox browser
- VSCode editor
- Thunar file manager
- MPV media player
- And more...
Hyprland Keybindings
Default modifier key: SUPER (Windows key)
Basic
SUPER + Return- Launch terminal (Kitty)SUPER + D- Launch application launcher (Wofi)SUPER + Q- Close active windowSUPER + M- Exit HyprlandSUPER + E- Open file manager (Thunar)SUPER + V- Toggle floating modeSUPER + F- Toggle fullscreen
Window Management
SUPER + Arrow Keys- Move focusSUPER + 1-9- Switch to workspaceSUPER + SHIFT + 1-9- Move window to workspaceSUPER + Mouse Left- Move windowSUPER + Mouse Right- Resize window
Screenshots
SUPER + SHIFT + S- Screenshot selection to clipboardPrint- Screenshot selection to ~/Pictures
Media Keys
- Volume up/down/mute
- Brightness up/down
- All media keys supported
Customization
Themes and Appearance
The configuration uses the Catppuccin color scheme by default. To customize:
- Waybar: Edit
home/waybar.nix- Change colors in thestylesection - Hyprland: Edit
home/hyprland.nix- Modify colors ingeneralanddecorationsections - Terminal: Edit
home/home.nix- Change Kitty theme and appearance
Wallpapers
Place your wallpapers in ~/wallpapers/. The default wallpaper should be ~/wallpapers/default.jpg.
To change wallpapers on the fly:
hyprctl hyprpaper wallpaper "monitor,~/wallpapers/your-wallpaper.jpg"
Additional Packages
To add more packages:
System-wide: Edit modules/system.nix and add to environment.systemPackages
User-level: Edit home/home.nix and add to home.packages
Updating the System
# Update flake inputs
nix flake update
# Rebuild with new configuration
sudo nixos-rebuild switch --flake ~/.config/nixos#myhost
# Or use the alias (after first build)
update
Maintenance
Garbage Collection
# Remove old generations older than 7 days
sudo nix-collect-garbage --delete-older-than 7d
# Clean home-manager generations
home-manager expire-generations -7d
Rollback
# List generations
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
# Rollback to previous generation
sudo nixos-rebuild switch --rollback
Troubleshooting
Black screen after login
- Check if Hyprland is starting:
journalctl -xe - Verify graphics drivers are installed
- Check
hardware-configuration.nixfor GPU settings
Waybar not appearing
- Restart Waybar:
killall waybar && waybar & - Check logs:
journalctl --user -u waybar
No audio
- Check PipeWire status:
systemctl --user status pipewire - Verify audio device:
wpctl status
Monitor configuration
Edit home/hyprland.nix and adjust the monitor setting:
monitor = "DP-1,1920x1080@144,0x0,1";
Useful Commands
# Check Hyprland version
hyprctl version
# List all windows
hyprctl clients
# Reload Hyprland config
hyprctl reload
# View Hyprland logs
cat /tmp/hypr/$(ls -t /tmp/hypr/ | head -n 1)/hyprland.log
Resources
License
Feel free to use and modify this configuration for your own needs.
Description
Languages
Nix
84.7%
Shell
15.3%