From 1c66b6db8cd4b85a7c3df59b43fcc99a0f1716dd Mon Sep 17 00:00:00 2001 From: kalipso Date: Thu, 21 Nov 2024 13:00:21 +0100 Subject: [PATCH] [microvm] add microvm deployment option to host --- machines/modules/malobeo/microvm_host.nix | 27 +++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/machines/modules/malobeo/microvm_host.nix b/machines/modules/malobeo/microvm_host.nix index e730488..91797fe 100644 --- a/machines/modules/malobeo/microvm_host.nix +++ b/machines/modules/malobeo/microvm_host.nix @@ -13,6 +13,14 @@ in type = types.bool; description = lib.mdDoc "Setup bridge device for microvms."; }; + + deployHosts = mkOption { + default = []; + type = types.listOf string; + description = '' + List hostnames of MicroVMs that should be automatically initializes and autostart + ''; + }; }; }; @@ -48,5 +56,24 @@ in networkConfig.Bridge = "microvm"; }; }; + + imports = mkIf cfg.deployHosts != [] [ + inputs.microvm.nixosModules.host + ]; + + microvm.autostart = cfg.deployHosts; + microvm.vms = + let + # Map the values to each hostname to then generate a Attrs using listToAttrs + mapperFunc = name: { inherit name; value = { + # Host build-time reference to where the MicroVM NixOS is defined + # under nixosConfigurations + flake = self; + # Specify from where to let `microvm -u` update later on + updateFlake = "git+https://git.dynamicdiscord.de/kalipso/infrastructure?ref=microvm"; + }; }; + in + mkIf cfg.deployHosts != [] + builtins.listToAttrs (map mapperFunc cfg.deployHosts); }; }