summary refs log tree commit diff
path: root/nixos/modules/virtualisation
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/virtualisation')
-rw-r--r--nixos/modules/virtualisation/libvirtd.nix19
1 files changed, 6 insertions, 13 deletions
diff --git a/nixos/modules/virtualisation/libvirtd.nix b/nixos/modules/virtualisation/libvirtd.nix
index 98828c280bf9..a2bfc447e9dc 100644
--- a/nixos/modules/virtualisation/libvirtd.nix
+++ b/nixos/modules/virtualisation/libvirtd.nix
@@ -147,19 +147,12 @@ in
             done
           ''; # */
 
-        serviceConfig.ExecStart = ''@${pkgs.libvirt}/sbin/libvirtd libvirtd --config "${configFile}" --daemon ${concatStringsSep " " cfg.extraOptions}'';
-        serviceConfig.Type = "forking";
-        serviceConfig.KillMode = "process"; # when stopping, leave the VMs alone
-
-        # Wait until libvirtd is ready to accept requests.
-        postStart =
-          ''
-            for ((i = 0; i < 60; i++)); do
-                if ${pkgs.libvirt}/bin/virsh list > /dev/null; then exit 0; fi
-                sleep 1
-            done
-            exit 1 # !!! seems to be ignored
-          '';
+        serviceConfig = {
+          ExecStart = ''@${pkgs.libvirt}/sbin/libvirtd libvirtd --config "${configFile}" --daemon ${concatStringsSep " " cfg.extraOptions}'';
+          Type = "notify";
+          KillMode = "process"; # when stopping, leave the VMs alone
+          Restart = "on-failure";
+        };
       };
 
     users.extraGroups.libvirtd.gid = config.ids.gids.libvirtd;