diff --git a/flake.nix b/flake.nix index d37096a3..de8ed1eb 100644 --- a/flake.nix +++ b/flake.nix @@ -216,21 +216,34 @@ builtins.foldl' (result: host: let inherit (self.nixosConfigurations.${host}) config; - vmConfig = (nixpkgs.lib.nixosSystem { - modules = [ { inherit config; } ]; - }).config; in result // nixpkgs.lib.optionalAttrs (config.system.build ? sdImage) { "${host}-sdImage" = config.system.build.sdImage; } // - # if you want to try your containers in a vm, turn off - # `boot.isContainer` just for testing. - nixpkgs.lib.optionalAttrs (config.system.build ? vm && !config.boot.isContainer) { - "${host}-vm" = vmConfig.system.build.vm - .overrideAttrs (oa: { - meta.mainProgram = "run-${host}-vm"; - }); + nixpkgs.lib.optionalAttrs (config.system.build ? vm) { + # boot any machine in a microvm + "${host}-vm" = (self.nixosConfigurations.${host} + .extendModules { + modules = [ + microvm.nixosModules.microvm + { + microvm = { + mem = 2048; + hypervisor = "qemu"; + socket = null; + shares = [ { + tag = "ro-store"; + source = "/nix/store"; + mountPoint = "/nix/.ro-store"; + } ]; + }; + boot.isContainer = lib.mkForce false; + fileSystems."/".fsType = lib.mkForce "tmpfs"; + } + ]; + }) + .config.microvm.declaredRunner; } // nixpkgs.lib.optionalAttrs (config.system.build ? tftproot) { "${host}-tftproot" = config.system.build.tftproot;