This commit is contained in:
mjallen18
2025-08-22 21:11:13 -05:00
parent 999fbbf022
commit d6e7be7db1
12 changed files with 307 additions and 294 deletions

View File

@@ -0,0 +1,167 @@
{ lib, pkgs, ... }:
with lib;
{
options.mjallen.programs.hyprland = {
enable = mkEnableOption "enable hyprland";
primaryDisplay = mkOption {
type = types.str;
default = "DP-1";
description = "Primary display identifier";
};
display1 = {
input = mkOption {
type = types.str;
default = "DP-1";
description = "First display identifier";
};
resolution = mkOption {
type = types.str;
default = "3840x2160";
description = "First display resolution";
};
refreshRate = mkOption {
type = types.str;
default = "240.00000";
description = "First display refresh rate";
};
};
display2 = {
input = mkOption {
type = types.str;
default = "DP-1";
description = "Second display identifier";
};
resolution = mkOption {
type = types.str;
default = "3840x2160";
description = "Second display resolution";
};
refreshRate = mkOption {
type = types.str;
default = "240.00000";
description = "Second display refresh rate";
};
};
wallpaper = mkOption {
type = with types; listOf str;
default = [ ];
description = "List of hyprland wallpaper configs";
};
monitor = mkOption {
type = with types; listOf str;
default = [ ];
description = "List of hyprland monitor configs";
};
monitorv2 = mkOption {
type = with types; listOf str;
default = [ ];
description = "List of hyprland monitorv2 configs";
};
workspace = mkOption {
type = with types; listOf str;
default = [ ];
description = "List of hyprland workspace definitions";
};
windowRule = mkOption {
type = with types; listOf str;
default = [ ];
description = "List of hyprland window rules";
};
extraConfig = mkOption {
type = with types; str;
default = '''';
description = "Any extra configuration options";
};
iconThemeName = mkOption {
type = types.str;
default = "Colloid-Dark";
description = "Icon theme name";
};
gtkThemeName = mkOption {
type = types.str;
default = "Colloid-Dark";
description = "GTK theme name";
};
defaultApps = mkOption {
type = types.submodule {
options = {
browser = mkOption {
type = types.package;
default = pkgs.firefox;
description = "Default browser";
};
editor = mkOption {
type = types.package;
default = pkgs.micro;
description = "Default text editor";
};
fileExplorer = mkOption {
type = types.package;
default = pkgs.nemo;
description = "Default file explorer";
};
visual = mkOption {
type = types.package;
default = pkgs.vscodium;
description = "Default visual editor";
};
terminal = mkOption {
type = types.package;
default = pkgs.kitty;
description = "Default terminal";
};
office = mkOption {
type = types.package;
default = pkgs.onlyoffice-bin_latest;
description = "Default office suite";
};
video = mkOption {
type = types.package;
default = pkgs.vlc;
description = "Default video player";
};
imageViewer = mkOption {
type = types.package;
default = pkgs.nomacs;
description = "Default image viewer";
};
};
};
description = "Default applications used across the system";
};
hyprIdle = {
lockScreenTimer = mkOption {
type = with types; int;
default = 300;
description = "Time in seconds before locking the screen";
};
screenOffTimer = mkOption {
type = with types; int;
default = 900;
description = "Time in seconds before turning off the screen";
};
suspendTimer = mkOption {
type = with types; int;
default = 1800;
description = "Time in seconds before suspending";
};
};
};
}