{ 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"; }; }; }; }