guix-glicid/glicid/services/virtualization.scm

37 lines
1.6 KiB
Scheme

(define-module (glicid services virtualization)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
#:use-module ((gnu services virtualization) #:prefix gnu:)
#:use-module ((gnu packages virtualization) #:prefix gnu:)
#:use-module (guix gexp)
#:use-module (gnu services configuration)
#:export (qemu-guest-agent-service-type)
)
(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))
(define (qemu-guest-agent-shepherd-service config)
(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))
(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))))))
(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)))))