diff --git a/nixos-modules/host/default.nix b/nixos-modules/host/default.nix index 932c9720..a25021db 100644 --- a/nixos-modules/host/default.nix +++ b/nixos-modules/host/default.nix @@ -58,7 +58,9 @@ in isFlake = flake != null; guestConfig = if isFlake then flake.nixosConfigurations.${name}.config - else microvmConfig.config.config; + else if microvmConfig.evaluatedConfig != null + then microvmConfig.evaluatedConfig.config + else microvmConfig.config.config; runner = guestConfig.microvm.declaredRunner; in { diff --git a/nixos-modules/host/options.nix b/nixos-modules/host/options.nix index cbbe5b10..61c7605f 100644 --- a/nixos-modules/host/options.nix +++ b/nixos-modules/host/options.nix @@ -25,6 +25,15 @@ vms = mkOption { type = with types; attrsOf (submodule ({ config, name, ... }: { options = { + evaluatedConfig = mkOption { + description = '' + An already evaluated configuration of this MicroVM. + Allows supplying an already evaluated configuration or an alternative configuration evaluation function instead of NixOS's default eval-config. + ''; + default = null; + type = nullOr types.unspecified; + }; + config = mkOption { description = '' A specification of the desired configuration of this MicroVM,