Commit 88ae6281d80a
Changed files (1)
modules
microvm
modules/microvm/default.nix
@@ -315,5 +315,29 @@ in
systemd.tmpfiles.rules = mapAttrsToList (
name: _vmCfg: "d ${cfg.stateDir}/${name} 0755 vincent users -"
) cfg.vms;
+
+ # Attach tap interfaces to bridge after they're created
+ systemd.services = mapAttrs' (
+ name: _vmCfg:
+ let
+ tap = tapName name;
+ in
+ nameValuePair "microvm-bridge-${name}" {
+ description = "Attach MicroVM '${name}' tap to bridge";
+ after = [
+ "microvm-tap-interfaces@${name}.service"
+ "network-addresses-${cfg.bridge}.service"
+ ];
+ requires = [ "microvm-tap-interfaces@${name}.service" ];
+ before = [ "microvm@${name}.service" ];
+ partOf = [ "microvm@${name}.service" ];
+ serviceConfig = {
+ Type = "oneshot";
+ RemainAfterExit = true;
+ ExecStart = "${pkgs.iproute2}/bin/ip link set ${tap} master ${cfg.bridge}";
+ ExecStop = "${pkgs.iproute2}/bin/ip link set ${tap} nomaster";
+ };
+ }
+ ) cfg.vms;
};
}