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