{ lib, config, ... }: let inherit (lib) mkOption types ; cfg = config.valhalla; in { imports = [ ./i18n.nix ./partition.nix ]; options = { valhalla = { setupUser = { name = mkOption { type = types.str; description = "The name of the user used to set up the system."; default = "heimdall"; }; id = mkOption { type = types.int; description = "The UID of the user used to set up the system."; default = 420; }; }; timeZone = mkOption { type = types.nullOr types.str; description = "The time zone of the system."; default = null; }; keyMap = mkOption { type = types.nullOr types.str; description = "The console key map of the system."; default = null; }; keyboardLayout = mkOption { type = types.nullOr types.str; description = "The X11 keyboard layout of the system."; default = null; }; software = let inherit (cfg.software) common school ; 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; }; 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; }; media = mkOption { type = types.bool; description = "A value indicating whether media apps should be installed."; default = common; }; gaming = mkOption { type = types.bool; description = "A value indicating whether gaming apps should be installed."; default = common; }; coding = mkOption { type = types.bool; description = "A value indicating whether development apps should be installed."; default = common; }; }; }; }; }