{ lib, config, ... }: let inherit (lib) mkOption mkEnableOption mkIf types ; setupUser = config.valhalla.setupUser.name; capitalize = (import ../text.nix { inherit lib; }).capitalize; winType = types.submodule ( { config, ... }: { options = { setupUser = mkOption { type = types.str; description = "The name of the user for setting up Windows."; default = capitalize setupUser; }; dualboot = { enable = mkEnableOption "dual boot"; linuxPercentage = mkOption { type = types.number; description = "The percentage of the disk size reserved for Linux."; }; }; showFileExt = mkOption { type = types.bool; description = "A value indicating whether file extensions should be displayed in Windows Explorer."; default = true; }; legacyIconSpacing = mkEnableOption "legacy icon spacing" // { default = true; }; dynamicLighting = mkEnableOption "dynamic lighting"; adware = mkEnableOption "adware"; # Fuck you for displaying ads on an OS I fricking paid for! }; config = { dualboot.linuxPercentage = mkIf (!config.dualboot.enable) 0; }; }); in { options = { valhalla = { windows = mkOption { type = winType; description = "The options for setting up Windows."; default = {}; }; }; }; }