summaryrefslogtreecommitdiff
path: root/gnu/services
diff options
context:
space:
mode:
authorOleg Pykhalov <go.wigust@gmail.com>2025-09-30 15:43:58 +0300
committerOleg Pykhalov <go.wigust@gmail.com>2025-10-07 14:18:05 +0300
commit0824f8a3eb54b5893150176f5bbe89e89fe3826e (patch)
tree80f62fa3273f8a2d91bf1bdc4b19dd764ea1cb1d /gnu/services
parentdad7b8d70da67be321d700719769f846411ecf4c (diff)
services: libvirt: Add configurable service requirements.
This enhances flexibility by allowing users to specify custom service dependencies for libvirt, rather than being limited to the default hardcoded requirements. This is particularly useful for complex deployments or when integrating with custom service configurations. Note that default 'dbus-system' requirement may not be strictly necessary for basic libvirt operation. For instance, libvirt can function without issues in many cases even when dbus-system is not included in the requirements, allowing for more minimal deployments. * gnu/services/virtualization.scm (list-of-symbols?, serialize-list-of-symbols): New procedures. (libvirt-configuration): Add 'requirement' field to allow custom service dependencies. (libvirt-shepherd-service): Use the configured requirements instead of hardcoded ones. * doc/guix.texi (Virtualization Services): Document the new 'requirement' option. Change-Id: I05cfbb5227cff9b7d9b55ee37774c96e39c4c526
Diffstat (limited to 'gnu/services')
-rw-r--r--gnu/services/virtualization.scm12
1 files changed, 11 insertions, 1 deletions
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index f369c29c76d..06524f7851d 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -135,6 +135,7 @@
135 libvirt-configuration-ovs-timeout 135 libvirt-configuration-ovs-timeout
136 libvirt-configuration-prio-workers 136 libvirt-configuration-prio-workers
137 libvirt-configuration-qemu 137 libvirt-configuration-qemu
138 libvirt-configuration-requirement
138 libvirt-configuration-sasl-allowed-usernames 139 libvirt-configuration-sasl-allowed-usernames
139 libvirt-configuration-tcp-port 140 libvirt-configuration-tcp-port
140 libvirt-configuration-tls-allowed-dn-list 141 libvirt-configuration-tls-allowed-dn-list
@@ -214,6 +215,12 @@
214(define list-of-file-likes? 215(define list-of-file-likes?
215 (list-of file-like?)) 216 (list-of file-like?))
216 217
218(define list-of-symbols?
219 (list-of symbol?))
220
221(define (serialize-list-of-symbols field-name val)
222 val)
223
217(define-configuration libvirt-configuration 224(define-configuration libvirt-configuration
218 (libvirt 225 (libvirt
219 (file-like libvirt) 226 (file-like libvirt)
@@ -224,6 +231,9 @@
224 (dmidecode 231 (dmidecode
225 (file-like dmidecode) 232 (file-like dmidecode)
226 "The Dmidecode package to use.") 233 "The Dmidecode package to use.")
234 (requirement
235 (list-of-symbols '(dbus-system))
236 "Shepherd services dependencies to the provisioned Shepherd service.")
227 (firmwares 237 (firmwares
228 (list-of-file-likes (list ovmf-x86-64)) 238 (list-of-file-likes (list ovmf-x86-64))
229 "List of UEFI/BIOS firmware packages to make available. Each firmware 239 "List of UEFI/BIOS firmware packages to make available. Each firmware
@@ -495,7 +505,7 @@ avoid potential infinite waits blocking libvirt."))
495 (list (shepherd-service 505 (list (shepherd-service
496 (documentation "Run the libvirt daemon.") 506 (documentation "Run the libvirt daemon.")
497 (provision '(libvirtd)) 507 (provision '(libvirtd))
498 (requirement '(dbus-system)) 508 (requirement (libvirt-configuration-requirement config))
499 (start #~(make-forkexec-constructor 509 (start #~(make-forkexec-constructor
500 (list (string-append #$libvirt "/sbin/libvirtd") 510 (list (string-append #$libvirt "/sbin/libvirtd")
501 "-f" #$config-file 511 "-f" #$config-file