Alex Kost <alez...@gmail.com> writes:
> Sometimes people on #guix ask about a way to change a console keymap,
> for example: <https://gnunet.org/bot/log/guix/2015-04-25#T640696>.
>
> So I think it would be good to add a service for loadkeys, what do
> people think?
>
> 宋文武: This patch is based on your work
> <http://lists.gnu.org/archive/html/guix-devel/2014-11/msg00692.html>, so
> I tried to credit you in a commit message, but I'm not sure If I did it
> right. Is it OK?
Yes, thanks!
>
> From f879481f96386617d070b146aa2c3d1988deff40 Mon Sep 17 00:00:00 2001
> From: Alex Kost <alez...@gmail.com>
> Date: Sat, 25 Apr 2015 22:52:29 +0300
> Subject: [PATCH] services: Add console-keymap service.
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> * gnu/services/base.scm (console-keymap-service): New procedure.
> * doc/guix.texi (Base Services): Document it.
>
> Co-authored-by: 宋文武 <iyzs...@gmail.com>
> ---
> doc/guix.texi | 5 +++++
> gnu/services/base.scm | 15 +++++++++++++++
> 2 files changed, 20 insertions(+)
>
> diff --git a/doc/guix.texi b/doc/guix.texi
> index 4269d4f..c342ebc 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -4737,6 +4737,11 @@ passed to @command{guix-daemon}.
> Run @var{udev}, which populates the @file{/dev} directory dynamically.
> @end deffn
>
> +@deffn {Monadic Procedure} console-keymap-service @var{file}
> +Return a service to load console keymap from @var{file} using
> +@command{loadkeys} command.
> +@end deffn
> +
>
> @node Networking Services
> @subsubsection Networking Services
> diff --git a/gnu/services/base.scm b/gnu/services/base.scm
> index d0a2e8c..49eccda 100644
> --- a/gnu/services/base.scm
> +++ b/gnu/services/base.scm
> @@ -1,5 +1,6 @@
> ;;; GNU Guix --- Functional package management for GNU
> ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <l...@gnu.org>
> +;;; Copyright © 2015 Alex Kost <alez...@gmail.com>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -46,6 +47,7 @@
> swap-service
> user-processes-service
> host-name-service
> + console-keymap-service
> console-font-service
> udev-service
> mingetty-service
> @@ -313,6 +315,19 @@ stopped before 'kill' is called."
> (else
> (zero? (cdr (waitpid pid))))))))
>
> +(define (console-keymap-service file)
> + "Return a service to load console keymap from @var{file}."
> + (with-monad %store-monad
> + (return
> + (service
> + (documentation
> + (string-append "Load '" file "' console keymap (loadkeys)."))
> + (provision '(console-keymap))
> + (start #~(lambda _
> + (zero? (system* (string-append #$kbd "/bin/loadkeys")
> + #$file))))
> + (respawn? #f)))))
> +
> (define* (console-font-service tty #:optional (font "LatGrkCyr-8x16"))
> "Return a service that sets up Unicode support in @var{tty} and loads
> @var{font} for that tty (fonts are per virtual console in Linux.)"
> --
> 2.2.1