M gnu/local.mk => gnu/local.mk +1 -0
@@ 1674,6 1674,7 @@ dist_patch_DATA = \
%D%/packages/patches/librewolf-neuter-locale-download.patch \
%D%/packages/patches/librewolf-use-system-wide-dir.patch \
%D%/packages/patches/libvirt-add-install-prefix.patch \
+ %D%/packages/patches/libvirt-respect-modules-path.patch \
%D%/packages/patches/libziparchive-add-includes.patch \
%D%/packages/patches/lightdm-arguments-ordering.patch \
%D%/packages/patches/lightdm-vnc-ipv6.patch \
A gnu/packages/patches/libvirt-respect-modules-path.patch => gnu/packages/patches/libvirt-respect-modules-path.patch +15 -0
@@ 0,0 1,15 @@
+Honor the LINUX_MODULE_DIRECTORY environment variable.
+
+Upstream-status: N/A
+
+--- a/src/util/virpci.c
++++ b/src/util/virpci.c
+@@ -1459,6 +1459,7 @@ virPCIDeviceFindBestVFIOVariant(virPCIDevice *dev,
+ }
+
+ uname(&unameInfo);
+- modulesAliasPath = g_strdup_printf("/lib/modules/%s/modules.alias", unameInfo.release);
++ char* modulepath = getenv("LINUX_MODULE_DIRECTORY");
++ modulesAliasPath = g_strdup_printf("%s/%s/modules.alias", modulepath ? modulepath : "/lib/modules", unameInfo.release);
+ if (virFileReadAll(modulesAliasPath, 8 * 1024 * 1024, &modulesAliasContent) < 0)
+ return -1;
M gnu/packages/virtualization.scm => gnu/packages/virtualization.scm +2 -1
@@ 1562,7 1562,8 @@ pretty simple, REST API.")
version ".tar.xz"))
(sha256
(base32 "15jpfrn3d2zyhbm5ip7bmpjb6ch2bfxm1h6yfgh0l3bw3g9ppgg1"))
- (patches (search-patches "libvirt-add-install-prefix.patch"))))
+ (patches (search-patches "libvirt-add-install-prefix.patch"
+ "libvirt-respect-modules-path.patch"))))
(build-system meson-build-system)
(arguments
(list
M gnu/services/virtualization.scm => gnu/services/virtualization.scm +7 -4
@@ 508,11 508,14 @@ potential infinite waits blocking libvirt."))
(list (string-append #$libvirt "/sbin/libvirtd")
"-f" #$config-file
#$@(if listen-tcp? '("--listen") '()))
- ;; For finding qemu and ip binaries.
+ ;; For finding qemu, ip binaries and kernel modules.
#:environment-variables
- (list (string-append
- "PATH=/run/current-system/profile/bin:"
- "/run/current-system/profile/sbin"))))
+ (list
+ (string-append
+ "PATH=/run/current-system/profile/bin:"
+ "/run/current-system/profile/sbin")
+ "LINUX_MODULE_DIRECTORY="
+ "/run/booted-system/kernel/lib/modules")))
(stop #~(make-kill-destructor))))))
(define libvirt-service-type