guix-glicid/glicid/services/virtualization.scm

48 lines
1.6 KiB
Scheme
Raw Normal View History

2023-05-25 12:00:44 +02:00
(define-module (glicid services virtualization)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
2023-05-25 15:49:08 +02:00
#:use-module ((gnu services virtualization) #:prefix gnu:)
#:use-module ((gnu packages virtualization) #:prefix gnu:)
2023-05-25 15:30:47 +02:00
; #:use-module (guix records)
; #:use-module (guix utils)
#:use-module (guix gexp) ;; file-like?
#:use-module (gnu services configuration) ;; define-configuration
#:export (qemu-guest-agent-service-type)
)
2023-05-25 12:00:44 +02:00
2023-05-26 12:26:36 +02:00
2023-05-26 12:37:16 +02:00
(define gnu:qemu-guest-agent-configuration-qemu (@@ (gnu services virtualization) qemu-guest-agent-configuration-qemu))
(define gnu:qemu-guest-agent-configuration-device (@@ (gnu services virtualization) qemu-guest-agent-configuration-device))
2023-05-26 12:26:36 +02:00
2023-05-25 12:00:44 +02:00
(define (qemu-guest-agent-shepherd-service config)
2023-05-26 12:26:36 +02:00
(let ((qemu (gnu:qemu-guest-agent-configuration-qemu config))
(device (gnu:qemu-guest-agent-configuration-device config)))
(list
(shepherd-service
(provision '(qemu-guest-agent))
(requirement '(udev)) ;; GLiCID
(documentation "Run the QEMU guest agent.")
(start #~(make-forkexec-constructor
`(,(string-append #$qemu "/bin/qemu-ga")
"--statedir" "/var/run"
,@(if (string-null? #$device)
'()
(list "--path" #$device)))
#:log-file "/var/log/qemu-ga.log"))
(stop #~(make-kill-destructor))))))
2023-05-25 15:30:47 +02:00
2023-05-25 15:49:08 +02:00
(define qemu-guest-agent-service-type
(service-type
(inherit gnu:qemu-guest-agent-service-type)
(extensions
(list (service-extension shepherd-root-service-type
qemu-guest-agent-shepherd-service)))
))