guix-glicid/glicid/services/virtualization.scm

62 lines
1.6 KiB
Scheme
Raw Normal View History

(define-module (glicid services virtualization)
2022-06-18 11:42:36 +02:00
#:use-module (glicid packages virtualization)
#: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.")
)
)