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)))
|
|
|
|
|
))
|
|
|
|
|
|