summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2017-03-25 14:59:01 +0100
committerFranz Pletz <fpletz@fnordicwalking.de>2017-03-25 14:59:01 +0100
commitd545772640d13e0d2d984ad582888deda7cefa86 (patch)
tree8636220086e54fb1501ea0831284a4e8aa9769be
parentddb608814a4d13fcbdc0f1dc5da71f2363a88d3d (diff)
downloadnixlib-d545772640d13e0d2d984ad582888deda7cefa86.tar
nixlib-d545772640d13e0d2d984ad582888deda7cefa86.tar.gz
nixlib-d545772640d13e0d2d984ad582888deda7cefa86.tar.bz2
nixlib-d545772640d13e0d2d984ad582888deda7cefa86.tar.lz
nixlib-d545772640d13e0d2d984ad582888deda7cefa86.tar.xz
nixlib-d545772640d13e0d2d984ad582888deda7cefa86.tar.zst
nixlib-d545772640d13e0d2d984ad582888deda7cefa86.zip
libvirt: make guest suspend work, use upstream units
-rw-r--r--nixos/modules/virtualisation/libvirtd.nix30
-rw-r--r--pkgs/development/libraries/libvirt/default.nix6
2 files changed, 24 insertions, 12 deletions
diff --git a/nixos/modules/virtualisation/libvirtd.nix b/nixos/modules/virtualisation/libvirtd.nix
index 101ea9a4f51b..c0cebaddec8d 100644
--- a/nixos/modules/virtualisation/libvirtd.nix
+++ b/nixos/modules/virtualisation/libvirtd.nix
@@ -90,14 +90,16 @@ in {
 
   config = mkIf cfg.enable {
 
-    environment.systemPackages =
-      [ pkgs.libvirt pkgs.netcat-openbsd ]
-       ++ optional cfg.enableKVM pkgs.qemu_kvm;
+    environment.systemPackages = with pkgs;
+      [ libvirt netcat-openbsd ]
+       ++ optional cfg.enableKVM qemu_kvm;
 
     boot.kernelModules = [ "tun" ];
 
     users.extraGroups.libvirtd.gid = config.ids.gids.libvirtd;
 
+    systemd.packages = [ pkgs.libvirt ];
+
     systemd.services.libvirtd = {
       description = "Libvirt Virtual Machine Management Daemon";
 
@@ -105,13 +107,17 @@ in {
       after = [ "systemd-udev-settle.service" ]
               ++ optional vswitch.enable "vswitchd.service";
 
-      path = [
-          pkgs.bridge-utils
-          pkgs.dmidecode
-          pkgs.dnsmasq
-          pkgs.ebtables
+      environment = {
+        LIBVIRTD_ARGS = ''--config "${configFile}" ${concatStringsSep " " cfg.extraOptions}'';
+      };
+
+      path = with pkgs; [
+          bridge-utils
+          dmidecode
+          dnsmasq
+          ebtables
         ]
-        ++ optional cfg.enableKVM pkgs.qemu_kvm
+        ++ optional cfg.enableKVM qemu_kvm
         ++ optional vswitch.enable vswitch.package;
 
       preStart = ''
@@ -153,13 +159,17 @@ in {
       ''; # */
 
       serviceConfig = {
-        ExecStart = ''@${pkgs.libvirt}/sbin/libvirtd libvirtd --config "${configFile}" ${concatStringsSep " " cfg.extraOptions}'';
         Type = "notify";
         KillMode = "process"; # when stopping, leave the VMs alone
         Restart = "on-failure";
       };
     };
 
+    systemd.services.libvirt-guests = {
+      wantedBy = [ "multi-user.target" ];
+      path = with pkgs; [ coreutils libvirt gawk ];
+    };
+
     systemd.sockets.virtlogd = {
       description = "Virtual machine log manager socket";
       wantedBy = [ "sockets.target" ];
diff --git a/pkgs/development/libraries/libvirt/default.nix b/pkgs/development/libraries/libvirt/default.nix
index 08a70b5514d3..aa044c885ea5 100644
--- a/pkgs/development/libraries/libvirt/default.nix
+++ b/pkgs/development/libraries/libvirt/default.nix
@@ -58,7 +58,7 @@ stdenv.mkDerivation rec {
     "--with-numad"
     "--with-macvtap"
     "--with-virtualport"
-    "--with-init-script=redhat"
+    "--with-init-script=systemd+redhat"
     "--with-storage-zfs"
   ] ++ optionals stdenv.isDarwin [
     "--with-init-script=none"
@@ -72,7 +72,9 @@ stdenv.mkDerivation rec {
   postInstall = ''
     sed -i 's/ON_SHUTDOWN=suspend/ON_SHUTDOWN=''${ON_SHUTDOWN:-suspend}/' $out/libexec/libvirt-guests.sh
     substituteInPlace $out/libexec/libvirt-guests.sh \
-      --replace "$out/bin" "${gettext}/bin"
+      --replace "$out/bin" "${gettext}/bin" \
+      --replace "lock/subsys" "lock"
+    rm $out/lib/systemd/system/{virtlockd,virtlogd}.*
   '' + optionalString stdenv.isLinux ''
     wrapProgram $out/sbin/libvirtd \
       --prefix PATH : ${makeBinPath [ iptables iproute pmutils numad numactl ]}