puzzlevision/modules/nixos/utils/vm/default.nix

44 lines
977 B
Nix

{
lib,
config,
namespace,
puzzlelib,
...
}: let
inherit (lib) mkIf mkMerge;
inherit (puzzlelib) mkOpt mkBool;
cfg = config.${namespace}.utils.vm;
in {
options.${namespace}.utils.vm = {
enable = mkBool true "Whether to enable custom vm presets";
preset = mkOpt lib.types.str "performance" "Specify the prefered vm settings preset: performance, balance or powersave";
};
config = mkIf cfg.enable {
virtualisation.vmVariant = mkMerge [
(mkIf cfg.preset
== "performance" {
virtualisation = {
cores = 6;
memorySize = 4096;
graphics = true;
};
})
(mkIf cfg.preset
== "balance" {
virtualisation = {
cores = 4;
memorySize = 2048;
};
})
(mkIf cfg.preset
== "powersave" {
virtualisation = {
cores = 2;
memorySize = 1024;
};
})
];
};
}