diff --git a/doc/guix.texi b/doc/guix.texi index 58c3688c03..87892fc892 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -10383,15 +10383,31 @@ See @code{man loadkeys} for details. @cindex mouse @cindex gpm -@deffn {Scheme Procedure} gpm-service [#:gpm @var{gpm}] @ - [#:options] -Run @var{gpm}, the general-purpose mouse daemon, with the given -command-line @var{options}. GPM allows users to use the mouse in the console, -notably to select, copy, and paste text. The default value of @var{options} -uses the @code{ps2} protocol, which works for both USB and PS/2 mice. +@defvr {Scheme Variable} gpm-service-type +This is the type of the service that runs GPM, the @dfn{general-purpose +mouse daemon}, which provides mouse support to the Linux console. GPM +allows users to use the mouse in the console, notably to select, copy, +and paste text. -This service is not part of @var{%base-services}. -@end deffn +The value for services of this type must be a @code{gpm-configuration} +(see below). This service is not part of @var{%base-services}. +@end defvr + +@deftp {Data Type} gpm-configuration +Data type representing the configuration of GPM. + +@table @asis +@item @code{options} (default: @code{%default-gpm-options}) +Command-line options passed to @command{gpm}. The default set of +options instruct @command{gpm} to listen to mouse events on +@file{/dev/input/mice}. @xref{Command Line,,, gpm, gpm manual}, for +more information. + +@item @code{gpm} (default: @code{gpm}) +The GPM package to use. + +@end table +@end deftp @anchor{guix-publish-service-type} @deffn {Scheme Variable} guix-publish-service-type diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 694aab882e..eb82b2ddcf 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1962,10 +1962,16 @@ extra rules from the packages listed in @var{rules}." "Return a service that uses @var{device} as a swap device." (service swap-service-type device)) +(define %default-gpm-options + ;; Default options for GPM. + '("-m" "/dev/input/mice" "-t" "ps2")) + (define-record-type* gpm-configuration make-gpm-configuration gpm-configuration? - (gpm gpm-configuration-gpm) ;package - (options gpm-configuration-options)) ;list of strings + (gpm gpm-configuration-gpm ;package + (default gpm)) + (options gpm-configuration-options ;list of strings + (default %default-gpm-options))) (define gpm-shepherd-service (match-lambda @@ -2000,14 +2006,15 @@ extra rules from the packages listed in @var{rules}." (extensions (list (service-extension shepherd-root-service-type gpm-shepherd-service))) + (default-value (gpm-configuration)) (description "Run GPM, the general-purpose mouse daemon, with the given command-line options. GPM allows users to use the mouse in the console, notably to select, copy, and paste text. The default options use the @code{ps2} protocol, which works for both USB and PS/2 mice."))) -(define* (gpm-service #:key (gpm gpm) - (options '("-m" "/dev/input/mice" "-t" "ps2"))) +(define* (gpm-service #:key (gpm gpm) ;deprecated + (options %default-gpm-options)) "Run @var{gpm}, the general-purpose mouse daemon, with the given command-line @var{options}. GPM allows users to use the mouse in the console, notably to select, copy, and paste text. The default value of @var{options}