This is an automated email from the git hooks/post-receive script.
guix_mirror_bot pushed a commit to branch master
in repository guix.
The following commit(s) were added to refs/heads/master by this push:
new a375202ad3 gnu: libvirt: Configure default libvirt network.
a375202ad3 is described below
commit a375202ad3443e4c3fb492160e32aa6abcc965bd
Author: Giacomo Leidi <[email protected]>
AuthorDate: Tue Feb 17 11:46:46 2026 +0100
gnu: libvirt: Configure default libvirt network.
* gnu/services/virtualization.scm (%libvirt-activation): Activate
default libvirt network configuration file.
* gnu/tests/virtualization.scm (run-libvirt-test): Drop network
definition test and replace it with a test checking that the default
network is inactive by default.
Change-Id: I03b6314a390c6d93ebf886d7033867ff5cacad74
---
gnu/services/virtualization.scm | 16 ++++++++++++++--
gnu/tests/virtualization.scm | 20 ++++++++++++++------
2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index fc42dcb8a7..3c9aadaae3 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2024 Raven Hallsby <[email protected]>
;;; Copyright © 2025 Maxim Cournoyer <[email protected]>
;;; Copyright © 2025 Nigko Yerden <[email protected]>
+;;; Copyright © 2026 Giacomo Leidi <[email protected]>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -493,10 +494,21 @@ avoid potential infinite waits blocking libvirt."))
(list (user-group (name "libvirt") (system? #t))))
(define (%libvirt-activation config)
- (let ((sock-dir (libvirt-configuration-unix-sock-dir config)))
+ (let ((package (libvirt-configuration-libvirt config))
+ (sock-dir (libvirt-configuration-unix-sock-dir config)))
#~(begin
(use-modules (guix build utils))
- (mkdir-p #$sock-dir))))
+ (mkdir-p #$sock-dir)
+ (mkdir-p "/etc/libvirt/qemu/networks")
+ ;; special-files-service-type could be used but it creates a file union
+ ;; and libvirtd needs to write in /etc/libvirt. This makes /etc/libvirt
+ ;; read-only and libvirt crashes at startup. activate-special-files
+ ;; creates a single symlink to the store for
+ ;; /etc/libvirt/qemu/networks/default.xml so libvirt doesn't notice and
+ ;; starts successfully.
+ (activate-special-files
+ '(("/etc/libvirt/qemu/networks/default.xml"
+ #$(file-append package
"/etc/libvirt/qemu/networks/default.xml")))))))
(define (libvirt-shepherd-service config)
(let* ((config-file (libvirt-conf-file config))
diff --git a/gnu/tests/virtualization.scm b/gnu/tests/virtualization.scm
index 070ceecc2c..05b2e0748b 100644
--- a/gnu/tests/virtualization.scm
+++ b/gnu/tests/virtualization.scm
@@ -119,15 +119,23 @@
"-c" "qemu:///system" "connect"))
marionette))
- (test-eq "create default network"
- 0
+ (test-equal "default network is inactive"
+ "no"
(marionette-eval
'(begin
+ (use-modules (ice-9 popen)
+ (ice-9 textual-ports))
(chdir "/tmp")
- (system* #$(file-append libvirt "/bin/virsh")
- "-c" "qemu:///system" "net-define"
- #$(file-append libvirt
-
"/etc/libvirt/qemu/networks/default.xml")))
+ (define port
+ (open-input-pipe
+ (string-join '(#$(file-append libvirt "/bin/virsh")
+ "-c" "qemu:///system" "net-info"
+ "default" "|" "grep" "Active:" "|"
+ "awk" "'{ print $2; }'")
+ " ")))
+ (define answer (get-string-all port))
+ (close-port port)
+ (string-trim-both answer))
marionette))
(test-eq "start default network"