"loadkeys" can take multiple files as arguments, and this may be useful
in practice (as discussed with suitsmeveryfine on #guix¹).  So
'console-keymap-service' should be modified accordingly.

¹ https://gnunet.org/bot/log/guix/2016-04-08#T994015

>From 8c58974b549479a8e97cf64f21393aa495596e13 Mon Sep 17 00:00:00 2001
From: Alex Kost <alez...@gmail.com>
Date: Sat, 9 Apr 2016 00:21:15 +0300
Subject: [PATCH] services: 'console-keymap-service' takes multiple files.

* gnu/services/base.scm (console-keymap-service-type): Type procedure
takes a list of files instead of a single file.
(console-keymap-service): Take 'files' as rest arguments.
* doc/guix.texi (Base Services): Improve documentation of
'console-keymap-service'.
---
 doc/guix.texi         | 13 +++++++++++--
 gnu/services/base.scm | 10 +++++-----
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index a34d547..ccf37da 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -7262,8 +7262,17 @@ Run @var{udev}, which populates the @file{/dev} directory dynamically.
 
 @deffn {Scheme Procedure} console-keymap-service @var{file}
 @cindex keyboard layout
-Return a service to load console keymap from @var{file} using
-@command{loadkeys} command.
+Return a service to load console keymaps from @var{files} using
+@command{loadkeys} command.  Most likely, you want to load some default
+keymap, which can be done like this:
+
+@example
+(console-keymap-service "dvorak")
+@end example
+
+But also you can specify a full file name (or file names) of your
+keymap(s).  See @code{man loadkeys} for details.
+
 @end deffn
 
 @deffn {Scheme Procedure} gpm-service-type [#:gpm @var{gpm}] @
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index b168543..a3585cc 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -494,18 +494,18 @@ strings or string-valued gexps."
 (define console-keymap-service-type
   (shepherd-service-type
    'console-keymap
-   (lambda (file)
+   (lambda (files)
      (shepherd-service
       (documentation (string-append "Load console keymap (loadkeys)."))
       (provision '(console-keymap))
       (start #~(lambda _
                  (zero? (system* (string-append #$kbd "/bin/loadkeys")
-                                 #$file))))
+                                 #$@files))))
       (respawn? #f)))))
 
-(define (console-keymap-service file)
-  "Return a service to load console keymap from @var{file}."
-  (service console-keymap-service-type file))
+(define (console-keymap-service . files)
+  "Return a service to load console keymaps from @var{files}."
+  (service console-keymap-service-type files))
 
 (define console-font-service-type
   (shepherd-service-type
-- 
2.7.3

Reply via email to