(define-module (glicid services virtualization) #:use-module (glicid packages virtualizartion) #:export ( qemu-guest-agent-configuration qemu-guest-agent-configuration? qemu-guest-agent-service-type ) ) (define-configuration qemu-guest-agent-configuration (qemu (file-like qemu-minimal) "QEMU package.") (device (string "") "Path to device or socket used to communicate with the host. If not specified, the QEMU default path is used." ) ) (define (qemu-guest-agent-shepherd-service config) (let ( (qemu (qemu-guest-agent-configuration-qemu config)) (device (qemu-guest-agent-configuration-device config)) ) (list (shepherd-service (provision '(qemu-guest-agent)) (documentation "Run the QEMU guest agent.") (start #~(make-forkexec-constructor `(, (string-append #$qemu "/bin/qemu-ga") "-d" "--pidfile=/var/run/qemu-ga.pid" "--statedir=/var/run" ,@(if #$device (list (string-append "--path=" #$device)) '() ) ) #:pid-file "/var/run/qemu-ga.pid" #:log-file "/var/log/qemu-ga.log") ) (stop #~(make-kill-destructor)) ) ) ) ) (define qemu-guest-agent-service-type (service-type (name 'qemu-guest-agent) (extensions (list ( service-extension shepherd-root-service-type qemu-guest-agent-shepherd-service )) ) (default-value (qemu-guest-agent-configuration)) (description "Run the QEMU guest agent.") ) )