{ 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; }; }) ]; }; }