summaryrefslogtreecommitdiff
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
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
-rw-r--r--doc/guix.texi3
-rw-r--r--gnu/services/virtualization.scm12
2 files changed, 14 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index a83560b53f9..9109ce4a388 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -39643,6 +39643,9 @@ The QEMU package to use.
@item @code{dmidecode} (default: @code{dmidecode}) (type: file-like)
The Dmidecode package to use.
+@item @code{requirement} (default: @code{'()}) (type: list-of-symbols)
+Shepherd services dependencies to the provisioned Shepherd service.
+
@item @code{firmwares} (default: @code{(ovmf-x86-64)}) (type: list-of-file-likes)
List of UEFI/BIOS firmware packages to make available. Each firmware
package should contain a @file{share/qemu/firmware/@var{NAME}.json} QEMU
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 @@
libvirt-configuration-ovs-timeout
libvirt-configuration-prio-workers
libvirt-configuration-qemu
+ libvirt-configuration-requirement
libvirt-configuration-sasl-allowed-usernames
libvirt-configuration-tcp-port
libvirt-configuration-tls-allowed-dn-list
@@ -214,6 +215,12 @@
(define list-of-file-likes?
(list-of file-like?))
+(define list-of-symbols?
+ (list-of symbol?))
+
+(define (serialize-list-of-symbols field-name val)
+ val)
+
(define-configuration libvirt-configuration
(libvirt
(file-like libvirt)
@@ -224,6 +231,9 @@
(dmidecode
(file-like dmidecode)
"The Dmidecode package to use.")
+ (requirement
+ (list-of-symbols '(dbus-system))
+ "Shepherd services dependencies to the provisioned Shepherd service.")
(firmwares
(list-of-file-likes (list ovmf-x86-64))
"List of UEFI/BIOS firmware packages to make available. Each firmware
@@ -495,7 +505,7 @@ avoid potential infinite waits blocking libvirt."))
(list (shepherd-service
(documentation "Run the libvirt daemon.")
(provision '(libvirtd))
- (requirement '(dbus-system))
+ (requirement (libvirt-configuration-requirement config))
(start #~(make-forkexec-constructor
(list (string-append #$libvirt "/sbin/libvirtd")
"-f" #$config-file