diff --git a/machines/modules/host_builder.nix b/machines/modules/host_builder.nix index d1fc74de..0fe75743 100644 --- a/machines/modules/host_builder.nix +++ b/machines/modules/host_builder.nix @@ -195,8 +195,7 @@ rec { vmNestedMicroVMOverwrites = host: sopsDummy: { - services.malobeo.microvm.deployHosts = pkgs.lib.mkForce []; - microvm.vms = + microvm.vms = pkgs.lib.mkForce ( let # Map the values to each hostname to then generate an Attrset using listToAttrs mapperFunc = name: { inherit name; value = { @@ -216,7 +215,7 @@ rec { }; }; }; in - builtins.listToAttrs (map mapperFunc self.nixosConfigurations.${host}.config.services.malobeo.microvm.deployHosts); + builtins.listToAttrs (map mapperFunc self.nixosConfigurations.${host}.config.services.malobeo.microvm.deployHosts)); }; buildVM = host: networking: sopsDummy: disableDisko: varPath: writableStore: fwdPort: (self.nixosConfigurations.${host}.extendModules { diff --git a/machines/modules/malobeo/microvm_host.nix b/machines/modules/malobeo/microvm_host.nix index f6655539..9b67d63c 100644 --- a/machines/modules/malobeo/microvm_host.nix +++ b/machines/modules/malobeo/microvm_host.nix @@ -102,6 +102,22 @@ in /run/current-system/sw/bin/microvm -Ru ${name} ''; }; + + "microvm-init-dirs@${name}" = { + description = "Initialize microvm directories"; + after = [ "zfs-mount.service" ]; + wantedBy = [ "microvm@${name}.service" ]; + unitConfig.ConditionPathExists = "!/var/lib/microvms/${name}/.is_initialized"; + serviceConfig = { + Type = "oneshot"; + }; + script = '' + mkdir -p /var/lib/microvms/${name}/var + mkdir -p /var/lib/microvms/${name}/etc + mkdir -p /var/lib/microvms/data/${name} + touch /var/lib/microvms/${name}/.is_initialized + ''; + }; }) {} (cfg.deployHosts); systemd.timers = builtins.foldl' (timers: name: timers // {