flake.nix: add proper *-vm packages

This commit is contained in:
Astro 2022-05-24 17:02:12 +02:00
parent e084a09640
commit af4c66bb79
1 changed files with 23 additions and 10 deletions

View File

@ -216,21 +216,34 @@
builtins.foldl' (result: host: builtins.foldl' (result: host:
let let
inherit (self.nixosConfigurations.${host}) config; inherit (self.nixosConfigurations.${host}) config;
vmConfig = (nixpkgs.lib.nixosSystem {
modules = [ { inherit config; } ];
}).config;
in in
result // result //
nixpkgs.lib.optionalAttrs (config.system.build ? sdImage) { nixpkgs.lib.optionalAttrs (config.system.build ? sdImage) {
"${host}-sdImage" = config.system.build.sdImage; "${host}-sdImage" = config.system.build.sdImage;
} // } //
# if you want to try your containers in a vm, turn off nixpkgs.lib.optionalAttrs (config.system.build ? vm) {
# `boot.isContainer` just for testing. # boot any machine in a microvm
nixpkgs.lib.optionalAttrs (config.system.build ? vm && !config.boot.isContainer) { "${host}-vm" = (self.nixosConfigurations.${host}
"${host}-vm" = vmConfig.system.build.vm .extendModules {
.overrideAttrs (oa: { modules = [
meta.mainProgram = "run-${host}-vm"; 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) { nixpkgs.lib.optionalAttrs (config.system.build ? tftproot) {
"${host}-tftproot" = config.system.build.tftproot; "${host}-tftproot" = config.system.build.tftproot;