ops/nixos: enable ceph in libvirtd

This commit is contained in:
Luke Granger-Brown 2021-02-11 02:21:59 +00:00
parent a484168097
commit 93b5d2c288
2 changed files with 18 additions and 6 deletions

View file

@ -80,6 +80,10 @@ in {
enable = true; enable = true;
qemuRunAsRoot = false; qemuRunAsRoot = false;
qemuPackage = pkgs.qemu_full; qemuPackage = pkgs.qemu_full;
package = pkgs.libvirt.override {
enableCeph = true;
enableIscsi = true;
};
}; };
security.polkit.enable = true; security.polkit.enable = true;
users.users.lukegb.extraGroups = lib.mkAfter [ "libvirtd" ]; users.users.lukegb.extraGroups = lib.mkAfter [ "libvirtd" ];

View file

@ -46,6 +46,14 @@ in {
''; '';
}; };
package = mkOption {
type = types.package;
default = pkgs.libvirt;
description = ''
libvirt package to use.
'';
};
qemuPackage = mkOption { qemuPackage = mkOption {
type = types.package; type = types.package;
default = pkgs.qemu; default = pkgs.qemu;
@ -169,26 +177,26 @@ in {
source = "/run/${dirName}/nix-helpers/qemu-bridge-helper"; source = "/run/${dirName}/nix-helpers/qemu-bridge-helper";
}; };
systemd.packages = [ pkgs.libvirt ]; systemd.packages = [ cfg.package ];
systemd.services.libvirtd-config = { systemd.services.libvirtd-config = {
description = "Libvirt Virtual Machine Management Daemon - configuration"; description = "Libvirt Virtual Machine Management Daemon - configuration";
script = '' script = ''
# Copy default libvirt network config .xml files to /var/lib # Copy default libvirt network config .xml files to /var/lib
# Files modified by the user will not be overwritten # Files modified by the user will not be overwritten
for i in $(cd ${pkgs.libvirt}/var/lib && echo \ for i in $(cd ${cfg.package}/var/lib && echo \
libvirt/qemu/networks/*.xml libvirt/qemu/networks/autostart/*.xml \ libvirt/qemu/networks/*.xml libvirt/qemu/networks/autostart/*.xml \
libvirt/nwfilter/*.xml ); libvirt/nwfilter/*.xml );
do do
mkdir -p /var/lib/$(dirname $i) -m 755 mkdir -p /var/lib/$(dirname $i) -m 755
cp -npd ${pkgs.libvirt}/var/lib/$i /var/lib/$i cp -npd ${cfg.package}/var/lib/$i /var/lib/$i
done done
# Copy generated qemu config to libvirt directory # Copy generated qemu config to libvirt directory
cp -f ${qemuConfigFile} /var/lib/${dirName}/qemu.conf cp -f ${qemuConfigFile} /var/lib/${dirName}/qemu.conf
# stable (not GC'able as in /nix/store) paths for using in <emulator> section of xml configs # stable (not GC'able as in /nix/store) paths for using in <emulator> section of xml configs
for emulator in ${pkgs.libvirt}/libexec/libvirt_lxc ${cfg.qemuPackage}/bin/qemu-kvm ${cfg.qemuPackage}/bin/qemu-system-*; do for emulator in ${cfg.package}/libexec/libvirt_lxc ${cfg.qemuPackage}/bin/qemu-kvm ${cfg.qemuPackage}/bin/qemu-system-*; do
ln -s --force "$emulator" /run/${dirName}/nix-emulators/ ln -s --force "$emulator" /run/${dirName}/nix-emulators/
done done
@ -249,7 +257,7 @@ in {
systemd.services.virtlogd = { systemd.services.virtlogd = {
description = "Virtual machine log manager"; description = "Virtual machine log manager";
serviceConfig.ExecStart = "@${pkgs.libvirt}/sbin/virtlogd virtlogd"; serviceConfig.ExecStart = "@${cfg.package}/sbin/virtlogd virtlogd";
restartIfChanged = false; restartIfChanged = false;
}; };
@ -261,7 +269,7 @@ in {
systemd.services.virtlockd = { systemd.services.virtlockd = {
description = "Virtual machine lock manager"; description = "Virtual machine lock manager";
serviceConfig.ExecStart = "@${pkgs.libvirt}/sbin/virtlockd virtlockd"; serviceConfig.ExecStart = "@${cfg.package}/sbin/virtlockd virtlockd";
restartIfChanged = false; restartIfChanged = false;
}; };