PortValhalla/lib/modules/software.nix

90 lines
2.6 KiB
Nix
Raw Normal View History

{ lib, config, ... }:
2024-10-06 19:25:34 +00:00
let
2024-10-13 20:04:43 +00:00
inherit (lib) mkOption types;
2024-10-06 19:25:34 +00:00
cfg = config.valhalla;
in {
2024-10-13 18:15:40 +00:00
imports = [
2024-10-13 20:04:43 +00:00
./programs.nix
2024-10-13 18:15:40 +00:00
];
2024-10-06 19:25:34 +00:00
options = {
valhalla = {
software = let
inherit (cfg.software) coding common desktopExperience school server;
in {
essential = mkOption {
type = types.bool;
description = "A value indicating whether essentials should be installed.";
default = true;
};
2024-10-06 19:25:34 +00:00
common = mkOption {
type = types.bool;
description = "A value indicating whether common software should be installed.";
default = true;
};
2024-10-06 19:25:34 +00:00
server = mkOption {
type = types.bool;
description = "A value indicating whether server applications should be installed.";
default = false;
};
2024-10-06 19:25:34 +00:00
desktopExperience = mkOption {
type = types.bool;
description = "A value indicating whether GUI apps should be installed.";
default = common && !server;
};
2024-10-06 19:25:34 +00:00
fileSync = mkOption {
type = types.bool;
description = "A value indicating whether file syncs should be installed.";
default = common && !server;
};
2024-10-06 19:25:34 +00:00
school = mkOption {
type = types.bool;
description = "A value indicating whether software for studies should be installed.";
default = false;
};
2024-10-06 19:25:34 +00:00
productivity = mkOption {
type = types.bool;
description = "A value indicating whether productivity apps should be installed.";
default = common || school;
};
2024-10-06 19:25:34 +00:00
socialMedia = mkOption {
type = types.bool;
description = "A value indicating whether social media apps should be installed.";
default = common && desktopExperience;
};
2024-10-06 19:25:34 +00:00
media = mkOption {
type = types.bool;
description = "A value indicating whether media apps should be installed.";
default = common && desktopExperience;
};
2024-10-06 19:25:34 +00:00
gaming = mkOption {
type = types.bool;
description = "A value indicating whether gaming apps should be installed.";
default = common && desktopExperience;
};
2024-10-06 19:25:34 +00:00
coding = mkOption {
type = types.bool;
description = "A value indicating whether development apps should be installed.";
default = common;
};
2024-10-06 19:25:34 +00:00
python = mkOption {
type = types.bool;
description = "A value indicating whether apps for coding python should be installed.";
default = coding;
};
};
};
2024-10-06 19:25:34 +00:00
};
}