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"

Reply via email to