summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/services/virtualization.scm16
-rw-r--r--gnu/tests/virtualization.scm20
2 files changed, 28 insertions, 8 deletions
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index fc42dcb8a79..3c9aadaae3f 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -9,6 +9,7 @@
9;;; Copyright © 2024 Raven Hallsby <karl@hallsby.com> 9;;; Copyright © 2024 Raven Hallsby <karl@hallsby.com>
10;;; Copyright © 2025 Maxim Cournoyer <maxim@guixotic.coop> 10;;; Copyright © 2025 Maxim Cournoyer <maxim@guixotic.coop>
11;;; Copyright © 2025 Nigko Yerden <nigko.yerden@gmail.com> 11;;; Copyright © 2025 Nigko Yerden <nigko.yerden@gmail.com>
12;;; Copyright © 2026 Giacomo Leidi <therewasa@fishinthecalculator.me>
12;;; 13;;;
13;;; This file is part of GNU Guix. 14;;; This file is part of GNU Guix.
14;;; 15;;;
@@ -493,10 +494,21 @@ avoid potential infinite waits blocking libvirt."))
493 (list (user-group (name "libvirt") (system? #t)))) 494 (list (user-group (name "libvirt") (system? #t))))
494 495
495(define (%libvirt-activation config) 496(define (%libvirt-activation config)
496 (let ((sock-dir (libvirt-configuration-unix-sock-dir config))) 497 (let ((package (libvirt-configuration-libvirt config))
498 (sock-dir (libvirt-configuration-unix-sock-dir config)))
497 #~(begin 499 #~(begin
498 (use-modules (guix build utils)) 500 (use-modules (guix build utils))
499 (mkdir-p #$sock-dir)))) 501 (mkdir-p #$sock-dir)
502 (mkdir-p "/etc/libvirt/qemu/networks")
503 ;; special-files-service-type could be used but it creates a file union
504 ;; and libvirtd needs to write in /etc/libvirt. This makes /etc/libvirt
505 ;; read-only and libvirt crashes at startup. activate-special-files
506 ;; creates a single symlink to the store for
507 ;; /etc/libvirt/qemu/networks/default.xml so libvirt doesn't notice and
508 ;; starts successfully.
509 (activate-special-files
510 '(("/etc/libvirt/qemu/networks/default.xml"
511 #$(file-append package "/etc/libvirt/qemu/networks/default.xml")))))))
500 512
501(define (libvirt-shepherd-service config) 513(define (libvirt-shepherd-service config)
502 (let* ((config-file (libvirt-conf-file config)) 514 (let* ((config-file (libvirt-conf-file config))
diff --git a/gnu/tests/virtualization.scm b/gnu/tests/virtualization.scm
index 070ceecc2c6..05b2e0748b0 100644
--- a/gnu/tests/virtualization.scm
+++ b/gnu/tests/virtualization.scm
@@ -119,15 +119,23 @@
119 "-c" "qemu:///system" "connect")) 119 "-c" "qemu:///system" "connect"))
120 marionette)) 120 marionette))
121 121
122 (test-eq "create default network" 122 (test-equal "default network is inactive"
123 0 123 "no"
124 (marionette-eval 124 (marionette-eval
125 '(begin 125 '(begin
126 (use-modules (ice-9 popen)
127 (ice-9 textual-ports))
126 (chdir "/tmp") 128 (chdir "/tmp")
127 (system* #$(file-append libvirt "/bin/virsh") 129 (define port
128 "-c" "qemu:///system" "net-define" 130 (open-input-pipe
129 #$(file-append libvirt 131 (string-join '(#$(file-append libvirt "/bin/virsh")
130 "/etc/libvirt/qemu/networks/default.xml"))) 132 "-c" "qemu:///system" "net-info"
133 "default" "|" "grep" "Active:" "|"
134 "awk" "'{ print $2; }'")
135 " ")))
136 (define answer (get-string-all port))
137 (close-port port)
138 (string-trim-both answer))
131 marionette)) 139 marionette))
132 140
133 (test-eq "start default network" 141 (test-eq "start default network"