{ lib, config, ... }: let inherit (lib) mkOption types ; cfg = config.valhalla; in { options = { valhalla = { software = let inherit (cfg.software) common desktopExperience school server ; in { essential = mkOption { type = types.bool; description = "A value indicating whether essentials should be installed."; default = true; }; common = mkOption { type = types.bool; description = "A value indicating whether common software should be installed."; default = true; }; server = mkOption { type = types.bool; description = "A value indicating whether server applications should be installed."; default = false; }; desktopExperience = mkOption { type = types.bool; description = "A value indicating whether GUI apps should be installed."; default = common && !server; }; school = mkOption { type = types.bool; description = "A value indicating whether software for studies should be installed."; default = false; }; productivity = mkOption { type = types.bool; description = "A value indicating whether productivity apps should be installed."; default = common || school; }; socialMedia = mkOption { type = types.bool; description = "A value indicating whether social media apps should be installed."; default = common && desktopExperience; }; media = mkOption { type = types.bool; description = "A value indicating whether media apps should be installed."; default = common && desktopExperience; }; gaming = mkOption { type = types.bool; description = "A value indicating whether gaming apps should be installed."; default = common && desktopExperience; }; coding = mkOption { type = types.bool; description = "A value indicating whether development apps should be installed."; default = common; }; }; }; }; }