Implement rich NixOS configuration system

 COMPLETE: Full NixOS-style configuration system implemented

🎯 Features:
- Rich configuration options for Quickshell, Hyprland, and Terminal
- Type-safe NixOS module options with defaults and descriptions
- Generated configuration files from Nix expressions
- Example configurations (gaming, productivity, minimalist)
- Comprehensive documentation

🔧 Configuration Modules:
- modules/components/quickshell-config.nix - Quickshell options
- modules/components/hyprland-config.nix - Hyprland options
- modules/components/terminal-config.nix - Terminal options

📝 Example Usage:
programs.dots-hyprland = {
  quickshell.bar.utilButtons.showColorPicker = true;
  hyprland.general.gapsIn = 6;
  terminal.colors.alpha = 0.90;
};

🎨 Generated Files:
- ~/.config/quickshell/ii/modules/common/Config.qml (NixOS-managed)
- ~/.config/hypr/general.conf (NixOS-managed)
- ~/.config/foot/foot.ini (NixOS-managed)

 Tested: All configurations build and activate successfully
🎉 Ready for production use with full NixOS declarative configuration!
This commit is contained in:
Celes Renata
2025-08-08 23:10:33 -07:00
parent ac6d3adeb9
commit 9821e69f5c
10 changed files with 1727 additions and 1 deletions
+75
View File
@@ -0,0 +1,75 @@
# Gaming-optimized configuration for dots-hyprland
{ config, lib, pkgs, ... }:
{
programs.dots-hyprland = {
enable = true;
source = ./configs;
packageSet = "essential";
mode = "declarative";
# 🎮 Gaming-optimized settings
quickshell = {
appearance = {
transparency = false; # Disable for performance
fakeScreenRounding = 0; # No rounding
};
bar = {
bottom = true; # Bottom bar for gaming
showBackground = false; # Minimal UI
verbose = false; # Less clutter
utilButtons = {
showScreenSnip = false;
showColorPicker = false;
showMicToggle = true; # Useful for gaming
showKeyboardToggle = false;
showDarkModeToggle = false;
showPerformanceProfileToggle = true; # Gaming profiles
};
workspaces = {
shown = 3; # Only 3 workspaces for gaming
showAppIcons = false; # Minimal
alwaysShowNumbers = true;
};
};
battery = {
low = 15; # Lower threshold for gaming
critical = 5;
automaticSuspend = false; # Never suspend while gaming
};
apps = {
terminal = "foot";
taskManager = "htop"; # Lightweight task manager
};
};
hyprland = {
general = {
gapsIn = 0; # No gaps for fullscreen gaming
gapsOut = 0;
borderSize = 1; # Minimal borders
allowTearing = true; # Enable for competitive gaming
};
decoration = {
rounding = 0; # No rounding for performance
blurEnabled = false; # Disable blur for performance
};
gestures = {
workspaceSwipe = false; # Disable gestures
};
};
terminal = {
colors = {
alpha = 1.0; # No transparency for performance
};
};
};
}
+97
View File
@@ -0,0 +1,97 @@
# Minimalist configuration for dots-hyprland
{ config, lib, pkgs, ... }:
{
programs.dots-hyprland = {
enable = true;
source = ./configs;
packageSet = "minimal";
mode = "declarative";
# 🎯 Minimalist settings
quickshell = {
appearance = {
transparency = false;
fakeScreenRounding = 0; # No rounding
};
bar = {
bottom = false;
cornerStyle = 2; # Plain rectangle
borderless = true; # No grouping
showBackground = false; # No background
verbose = false; # Minimal info
utilButtons = {
showScreenSnip = false;
showColorPicker = false;
showMicToggle = false;
showKeyboardToggle = false;
showDarkModeToggle = false;
showPerformanceProfileToggle = false;
};
workspaces = {
monochromeIcons = true;
shown = 5; # Only 5 workspaces
showAppIcons = false; # No app icons
alwaysShowNumbers = true;
};
};
battery = {
low = 20;
critical = 5;
automaticSuspend = true;
suspend = 3;
};
apps = {
terminal = "foot";
taskManager = "htop";
};
time = {
format = "HH:mm"; # Simple 24-hour
dateFormat = "dd/MM"; # Minimal date
};
};
hyprland = {
general = {
gapsIn = 2; # Minimal gaps
gapsOut = 4;
borderSize = 1; # Thin borders
allowTearing = false;
};
decoration = {
rounding = 0; # No rounding
blurEnabled = false; # No blur
};
gestures = {
workspaceSwipe = true;
};
};
terminal = {
scrollback = {
lines = 500; # Smaller scrollback
};
cursor = {
style = "block"; # Simple block cursor
blink = false;
};
colors = {
alpha = 1.0; # No transparency
};
mouse = {
hideWhenTyping = true; # Clean interface
};
};
};
}
+93
View File
@@ -0,0 +1,93 @@
# Productivity-focused configuration for dots-hyprland
{ config, lib, pkgs, ... }:
{
programs.dots-hyprland = {
enable = true;
source = ./configs;
packageSet = "essential";
mode = "declarative";
# 💼 Productivity-optimized settings
quickshell = {
appearance = {
transparency = true; # Nice visual effects
fakeScreenRounding = 2;
};
bar = {
bottom = false; # Top bar for traditional feel
cornerStyle = 1; # Float style
showBackground = true;
verbose = true; # Show detailed info
utilButtons = {
showScreenSnip = true; # Essential for productivity
showColorPicker = true; # Useful for design work
showMicToggle = true; # For meetings
showKeyboardToggle = true;
showDarkModeToggle = true;
showPerformanceProfileToggle = false;
};
workspaces = {
shown = 10; # Many workspaces for organization
showAppIcons = true;
alwaysShowNumbers = true; # Always show for quick navigation
showNumberDelay = 100; # Quick response
};
};
battery = {
low = 25; # Higher threshold for work
critical = 10;
automaticSuspend = true;
suspend = 5; # Longer suspend delay
};
apps = {
terminal = "foot";
taskManager = "plasma-systemmonitor --page-name Processes";
};
time = {
format = "HH:mm:ss"; # 24-hour with seconds
dateFormat = "dddd, MMMM dd, yyyy"; # Full date
};
};
hyprland = {
general = {
gapsIn = 6; # Comfortable gaps
gapsOut = 10;
borderSize = 2;
allowTearing = false; # Smooth visuals
};
decoration = {
rounding = 12; # Moderate rounding
blurEnabled = true; # Nice visual effects
};
gestures = {
workspaceSwipe = true; # Efficient navigation
};
};
terminal = {
scrollback = {
lines = 10000; # Large scrollback for logs
multiplier = 3.0;
};
cursor = {
style = "beam";
blink = true; # Visible cursor
};
colors = {
alpha = 0.90; # Slight transparency
};
};
};
}