guix-glicid/glicid/services/virtualization.scm

47 lines
1.6 KiB
Scheme
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(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 records)
; #:use-module (guix utils)
#:use-module (guix gexp) ;; file-like?
#:use-module (gnu services configuration) ;; define-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)) ;; 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))))))
(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)))
))