{ lib, pkgs, ... }: with lib; { options.mjallen.desktop.hyprland = { enable = mkEnableOption "enable hyprland desktop"; primaryDisplay = mkOption { type = types.str; default = "DP-1"; }; display1 = { input = mkOption { type = types.str; default = "DP-1"; }; resolution = mkOption { type = types.str; default = "3840x2160"; }; refreshRate = mkOptions { type = types.str; default = "240.00000"; }; }; display2 = { input = mkOption { type = types.str; default = "DP-1"; }; resolution = mkOption { type = types.str; default = "3840x2160"; }; refreshRate = mkOptions { type = types.str; default = "240.00000"; }; }; 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 options"; }; iconThemeName = mkOption { type = types.str; default = "Colloid-Dark"; }; gtkThemeName = mkOption { type = types.str; default = "Colloid-Dark"; }; defaultApps = mkOption { type = types.submodule { options = { browser = mkOption { type = types.package; default = pkgs.firefox; }; editor = mkOption { type = types.package; default = pkgs.micro; }; fileExplorer = mkOption { type = types.package; default = pkgs.nemo; }; visual = mkOption { type = types.package; default = pkgs.vscodium; }; terminal = mkOption { type = types.package; default = pkgs.kitty; }; office = mkOption { type = types.package; default = pkgs.onlyoffice-bin_latest; }; video = mkOption { type = types.package; default = pkgs.vlc; }; imageViewer = mkOption { type = types.package; default = pkgs.gnome-photos; }; }; }; description = "Default applications used across the system."; }; hyprIdle = { lockScreenTimer = mkOption { type = with types; int; default = 5; }; screenOffTimer = mkOption { type = with types; int; default = 15; }; suspendTimer = mkOption { type = with types; int; default = 30; }; }; }; }