diff --git a/lib/runner.nix b/lib/runner.nix index cc4b0d5d..62a8c0dd 100644 --- a/lib/runner.nix +++ b/lib/runner.nix @@ -43,8 +43,11 @@ let ${preStart} ${createVolumesScript vmHostPackages microvmConfig.volumes} ${lib.optionalString (hypervisorConfig.requiresMacvtapAsFds or false) openMacvtapFds} + runtime_args=${lib.optionalString (microvmConfig.extraArgsScript != null) '' + $(${microvmConfig.extraArgsScript}) + ''} - exec ${execArg} ${command} + exec ${execArg} ${command} ''${runtime_args:-} ''; } // lib.optionalAttrs canShutdown { microvm-shutdown = shutdownCommand; diff --git a/nixos-modules/microvm/options.nix b/nixos-modules/microvm/options.nix index 5f208914..9c3cde67 100644 --- a/nixos-modules/microvm/options.nix +++ b/nixos-modules/microvm/options.nix @@ -63,6 +63,16 @@ in type = types.lines; }; + extraArgsScript = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + A script to provide additional arguments for the hypervisor at runtime. + + The script must output a single line with arguments for the hypervisor. + ''; + }; + socket = mkOption { description = "Hypervisor control socket path"; default = "${hostName}.sock";