diff options
author | Franz Pletz <fpletz@fnordicwalking.de> | 2017-03-25 14:59:01 +0100 |
---|---|---|
committer | Franz Pletz <fpletz@fnordicwalking.de> | 2017-03-25 14:59:01 +0100 |
commit | d545772640d13e0d2d984ad582888deda7cefa86 (patch) | |
tree | 8636220086e54fb1501ea0831284a4e8aa9769be | |
parent | ddb608814a4d13fcbdc0f1dc5da71f2363a88d3d (diff) | |
download | nixlib-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.nix | 30 | ||||
-rw-r--r-- | pkgs/development/libraries/libvirt/default.nix | 6 |
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 ]} |