huge refactor
This commit is contained in:
parent
03e5a47910
commit
1d4c8455ee
30 changed files with 972 additions and 697 deletions
81
moduler/features/default.nix
Normal file
81
moduler/features/default.nix
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
profile = config.features.profile;
|
||||
has = path: lib.hasAttrByPath path options;
|
||||
setIf = path: value: lib.optionalAttrs (has path) (lib.setAttrByPath path value);
|
||||
in
|
||||
{
|
||||
options.features.profile = mkOption {
|
||||
type = types.enum [
|
||||
"custom"
|
||||
"desktop"
|
||||
"laptop"
|
||||
"server"
|
||||
"camera"
|
||||
];
|
||||
default = "custom";
|
||||
description = "Host feature profile. Use custom for fully explicit per-feature settings.";
|
||||
};
|
||||
|
||||
config = mkMerge [
|
||||
(mkIf (profile == "desktop") (mkMerge [
|
||||
(setIf [ "features" "base" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "base" "preset" ] (mkDefault "full"))
|
||||
(setIf [ "features" "git" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "dev" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "dev" "preset" ] (mkDefault "full"))
|
||||
(setIf [ "features" "users" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "network" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "network" "tooling" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "system" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "system" "preset" ] (mkDefault "desktop"))
|
||||
(setIf [ "features" "sound" "enable" ] (mkDefault true))
|
||||
]))
|
||||
|
||||
(mkIf (profile == "laptop") (mkMerge [
|
||||
(setIf [ "features" "base" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "base" "preset" ] (mkDefault "standard"))
|
||||
(setIf [ "features" "git" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "dev" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "dev" "preset" ] (mkDefault "standard"))
|
||||
(setIf [ "features" "users" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "network" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "network" "tooling" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "system" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "system" "preset" ] (mkDefault "desktop"))
|
||||
(setIf [ "features" "sound" "enable" ] (mkDefault true))
|
||||
]))
|
||||
|
||||
(mkIf (profile == "server") (mkMerge [
|
||||
(setIf [ "features" "users" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "network" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "network" "netbird" "enable" ] (mkDefault false))
|
||||
(setIf [ "features" "network" "tooling" "enable" ] (mkDefault false))
|
||||
(setIf [ "features" "system" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "system" "preset" ] (mkDefault "minimal"))
|
||||
(setIf [ "features" "base" "enable" ] (mkDefault false))
|
||||
(setIf [ "features" "git" "enable" ] (mkDefault false))
|
||||
(setIf [ "features" "dev" "enable" ] (mkDefault false))
|
||||
(setIf [ "features" "sound" "enable" ] (mkDefault false))
|
||||
]))
|
||||
|
||||
(mkIf (profile == "camera") (mkMerge [
|
||||
(setIf [ "features" "users" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "network" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "network" "netbird" "enable" ] (mkDefault false))
|
||||
(setIf [ "features" "network" "tooling" "enable" ] (mkDefault false))
|
||||
(setIf [ "features" "system" "enable" ] (mkDefault true))
|
||||
(setIf [ "features" "system" "preset" ] (mkDefault "minimal"))
|
||||
(setIf [ "features" "base" "enable" ] (mkDefault false))
|
||||
(setIf [ "features" "git" "enable" ] (mkDefault false))
|
||||
(setIf [ "features" "dev" "enable" ] (mkDefault false))
|
||||
(setIf [ "features" "sound" "enable" ] (mkDefault false))
|
||||
]))
|
||||
];
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue