diff --git a/doc/guix.texi b/doc/guix.texi index a3dd344a70..601afeda06 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -22503,6 +22503,22 @@ that enables sharing the clipboard with a vm and setting the guest display resolution when the graphical console window resizes. @end deffn +@cindex inputattach +@subsubheading inputattach Service + +@deftp {Data Type} inputattach-configuration +@table @asis +@item @code{device-type} The type of device to connect to. +@item @code{device} The device file to connect to the device. +@item @code{log-file} The file to log messages to. +@end table +@end deftp + +@deffn {Scheme Procedure} inputattach-service-type +Return a service that runs inputattach on a device and +dispatches events from it. +@end deffn + @subsection Dictionary Services @cindex dictionary The @code{(gnu services dict)} module provides the following service: diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 0dee57e3bc..8f8e177ca9 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2018 Efraim Flashner ;;; Copyright © 2018 Ricardo Wurmus ;;; Copyright © 2017, 2019 Christopher Baines +;;; Copyright © 2019 Tim Gesthuizen ;;; ;;; This file is part of GNU Guix. ;;; @@ -123,6 +124,10 @@ (define-module (gnu services desktop) enlightenment-desktop-configuration? enlightenment-desktop-service-type + inputattach-configuration + inputattach-configuration? + inputattach-service-type + %desktop-services)) ;;; Commentary: @@ -1019,6 +1024,47 @@ (define enlightenment-desktop-service-type thumbnails and makes setuid the programs which enlightenment needs to function as expected."))) + +;;; +;;; inputattach-service-type +;;; + +(define-record-type* + inputattach-configuration + make-inputattach-configuration + inputattach-configuration? + (device-type inputattach-configuration-device-type + (default "wacom")) + (device inputattach-configuration-device + (default "/dev/ttyS0")) + (log-file inputattach-configuration-log-file + (default #f))) + +(define inputattach-shepherd-service + (match-lambda + (($ type device log-file) + (list (shepherd-service + (provision '(inputattach)) + (requirement '(udev)) + (documentation "inputattach daemon") + (start #~(make-forkexec-constructor + (list (string-append #$inputattach + "/bin/inputattach") + (string-append "--" #$type) + #$device) + #:log-file #$log-file)) + (stop #~(make-kill-destructor))))))) + +(define inputattach-service-type + (service-type + (name 'inputattach) + (extensions + (list (service-extension shepherd-root-service-type + inputattach-shepherd-service))) + (default-value (inputattach-configuration)) + (description "Return a service that runs inputattach on a device and +dispatches events from it."))) + ;;; ;;; The default set of desktop services.