aboutsummaryrefslogtreecommitdiff
path: root/gnu/system/keyboard.scm
blob: 5bd13a44be47804f124641186baa2437f15f4812 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu system keyboard)
  #:use-module (guix gexp)
  #:use-module ((gnu packages xorg)
                #:select (xkeyboard-config console-setup))
  #:use-module (srfi srfi-9 gnu)
  #:use-module (ice-9 match)
  #:export (keyboard-layout?
            keyboard-layout
            keyboard-layout-name
            keyboard-layout-variant
            keyboard-layout-model
            keyboard-layout-options

            keyboard-layout->console-keymap))

;;; Commentary:
;;;
;;; This module provides a data structure to represent keyboard layouts
;;; according to the XKB naming and classification (see the 'xkeyboard-config'
;;; package).
;;;
;;; Code:

(define-immutable-record-type <keyboard-layout>
  (%keyboard-layout name variant model options)
  keyboard-layout?
  (name      keyboard-layout-name)                ;string
  (variant   keyboard-layout-variant)             ;#f | string
  (model     keyboard-layout-model)               ;#f | string
  (options   keyboard-layout-options))            ;list of strings

(define* (keyboard-layout name #:optional variant
                          #:key model (options '()))
  "Return a new keyboard layout with the given NAME and VARIANT.

NAME must be a string such as \"fr\"; VARIANT must be a string such as
\"bepo\" or \"nodeadkeys\".  See the 'xkeyboard-config' package for valid
options."
  (%keyboard-layout name variant model options))

(define* (keyboard-layout->console-keymap layout
                                          #:key
                                          (xkeyboard-config xkeyboard-config))
  "Return a Linux console keymap file for LAYOUT, a <keyboard-layout> record.
Layout information is taken from the XKEYBOARD-CONFIG package."
  (define build
    (with-imported-modules '((guix build utils))
      #~(begin
          (use-modules (guix build utils)
                       (ice-9 popen)
                       (ice-9 match))

          (define pipe
            (open-pipe* OPEN_READ
                        #+(file-append console-setup "/bin/ckbcomp")
                        (string-append "-I"
                                       #+(file-append xkeyboard-config
                                                      "/share/X11/xkb"))
                        "-rules" "base"
                        #$@(match (keyboard-layout-model layout)
                             (#f      '())
                             (model   `("-model" ,model)))
                        #$(keyboard-layout-name layout)
                        #$(or (keyboard-layout-variant layout)
                              "")
                        #$(string-join (keyboard-layout-options layout) ",")))

          (call-with-output-file #$output
            (lambda (output)
              (dump-port pipe output)))

          ;; Note: ckbcomp errors out when the layout name is unknown, but
          ;; merely emits a warning when the variant is unknown.
          (unless (zero? (close-pipe pipe))
            (error "failed to create console keymap for keyboard layout"
                   #$(keyboard-layout-name layout))))))

  (computed-file (string-append "console-keymap."
                                (string-map (match-lambda
                                              (#\, #\-)
                                              (chr chr))
                                            (keyboard-layout-name layout)))
                 build))
gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7, gcc-objc-8, gcc-objc-9, gcc-objc-10, gcc-objc-11, gcc-objc-12, gcc-objc, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6, gcc-objc++-7, gcc-objc++-8, gcc-objc++-9, gcc-objc++-10, gcc-objc++-11, gcc-objc++-12, gcc-objc++, %objc-search-paths, %objc++-search-paths): Remove variables. * guix/search-paths.scm ($OBJC_INCLUDE_PATH, $OBJCPLUS_INCLUDE_PATH): New variables. (%gcc-search-paths): Include $OBJC_INCLUDE_PATH, $OBJCPLUS_INCLUDE_PATH. Change-Id: Ib4cd176eb88c733a82f2d31e8cc45b9c61720f8f Efraim Flashner 2024-08-31gnu: gcc@11: Update to 11.4.0....* gnu/packages/gcc.scm (gcc-11): Update to 11.4.0. Remove ‘gcc-10-tree-sra-union-handling.patch’. Change-Id: Iff8c9151326c87cb13db9c5b1a00c44b8eef95e3 Co-authored-by: Janneke Nieuwenhuizen <janneke@gnu.org> Signed-off-by: Ludovic Courtès <ludo@gnu.org> Greg Hogan 2024-08-31gnu: custom-gcc: Import the correct set of modules....* gnu/packages/gcc.scm (custom-gcc) [arguments] <modules>: Replace %default-gnu-imported-modules with %default-gnu-modules. Change-Id: I133daad4e05d5daa98fadd5acf2d0f4606b6e056 Maxim Cournoyer 2024-08-31gnu: make-libstdc++: Import the correct set of modules....* gnu/packages/gcc.scm (make-libstdc++) [arguments] <modules>: Replace %default-gnu-imported-modules with %default-gnu-modules. Change-Id: I3fe29766f767765e966c189395f618b7779f1e0d Maxim Cournoyer 2024-08-31gnu: gcc-4.8: Import the correct set of modules....* gnu/packages/gcc.scm (gcc-4.8) [arguments] <modules>: Replace %default-gnu-imported-modules with %default-gnu-modules. Change-Id: I8482661bd49a94adefc772fda0449023bdd5927e Maxim Cournoyer 2024-08-31build-systems: gnu: Export %default-gnu-imported-modules and %default-gnu-mod......Until now users would have to cargo cult or inspect the private %default-modules variable of (guix build-systems gnu) to discover which modules to include when extending the used modules via the #:modules argument. The renaming was automated via the command: $ git grep -l %gnu-build-system-modules | xargs sed 's/%gnu-build-system-modules/%default-gnu-imported-modules/' -i * guix/build-system/gnu.scm (%gnu-build-system-modules): Rename to... (%default-gnu-imported-modules): ... this. (%default-modules): Rename to... (%default-gnu-modules): ... this. Export. (dist-package, gnu-build, gnu-cross-build): Adjust accordingly. Change-Id: Idef307fff13cb76f3182d782b26e1cd3a5c757ee Maxim Cournoyer 2024-08-31gnu: make-libstdc++: Adjust order of phases....* gnu/packages/gcc.scm (make-libstdc++)[arguments]: Move custom 'fix-rs6000-libdir phase to after the 'unpack phase. Efraim Flashner 2024-08-31gnu: libstdc++-doc: Build libstdc++ info documentation....* gnu/packages/patches/gcc-13.2.0-libstdc++-docbook-xsl-uri.patch: New file. * gnu/packages/patches/gcc-13.2.0-libstdc++-info-install-fix.patch: Ditto. * gnu/packages/patches/gcc-5.5.0-libstdc++-xmlcatalog.patch: Ditto. * gnu/local.mk: Register them. * gnu/packages/gcc.scm (gcc-5)[source]: Use gcc-5.5.0-libstdc++-xmlcatalog.patch, gcc-13.2.0-libstdc++-docbook-xsl-uri.patch and gcc-13.2.0-libstdc++-info-install-fix.patch. (gcc-9)[source]: Use gcc-13.2.0-libstdc++-docbook-xsl-uri.patch and gcc-13.2.0-libstdc++-info-install-fix.patch. (make-libstdc++-doc)[arguments]<#:phases>: Remove 'set-xsl-directory. Adjust 'build and 'install for info documentation and to respect make-flags. [native-inputs]: Add docbook2x. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: Ie3b9de0328a10efadb28d211c3fe03f9b7aaf87f Bruno Victal 2024-08-31gnu: libstdc++-doc: Rewrite with G-Expressions....* gnu/packages/gcc.scm (make-libstdc++-doc): Rewrite arguments with G-Expressions. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: Idc8da964b7d777e0459c731625296ccd96546fa7 Bruno Victal 2024-08-31gnu: %objc++-search-paths: Express using $LIBRARY_PATH....* gnu/packages/gcc.scm (%objc++-search-paths): Express using $LIBRARY_PATH. Maxim Cournoyer 2024-08-31gnu: gccgo-4.9: Express search paths via (guix search-paths) variables....* gnu/packages/gcc.scm (gccgo-4.9) [native-search-paths]: Express search paths via (guix search-paths) variables. Maxim Cournoyer 2024-08-31gnu: gcc-2.95: Express search paths via (guix search-paths) variables....* gnu/packages/gcc.scm (gcc-2.95) [native-search-paths]: Express search paths via (guix search-paths) variables. Maxim Cournoyer 2024-08-31gnu: gcc-4.7: Use %gcc-search-paths for native-search-paths....* gnu/packages/gcc.scm (gcc-4.7) [native-search-paths]: Use %gcc-search-paths. Change-Id: Ia9acc98c2f7c7bc101ac43a4288ee4368c2b3dfa Maxim Cournoyer 2024-08-31gnu: libgccjit: Track the default GCC version....* gnu/packages/gcc.scm (libgccjit): Rewrite to use the default gcc version. Efraim Flashner 2024-08-28gnu: Add gfortran 13....* gnu/packages/gcc.scm (gfortran-13): New variable. Change-Id: Idf9a35548a9a80251cc70154c7d70f5b3a316db9 Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn> Romain GARBAGE 2024-08-19gnu: gcc@12: Update to 12.4.0....* gnu/packages/gcc.scm (gcc-12): Update to 12.4.0. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Change-Id: Ibdd003d5b61eb4b9e6a1b56428d01d51cca97b44 fanquake 2024-08-05gnu: gcc-14: Update to 14.2.0....* gnu/packages/gcc.scm (gcc-14): Update to 14.2.0. Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn> Change-Id: I250bf04c04233aa449f70701a238bfb4d4d07933 Michael Ford 2024-07-02gnu: Add libgccjit-14....* gnu/packages/gcc.scm (libgccjit-14): New variable. Change-Id: I9c5be52e4e07ca48ae7191b6ff0c163541544700 Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Zheng Junjie 2024-07-02gnu: Add gccgo-14....* gnu/packages/gcc.scm (gccgo-14): New variable. Change-Id: I065373047eb186ac410813b7eea0af3b44d8aaa7 Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Zheng Junjie 2024-07-02gnu: Add gcc-14....* gnu/packages/gcc.scm (gcc-14): New variable. Change-Id: I7eca4e35e010a69c13489c10c72c29d6e628bb72 Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Zheng Junjie 2024-06-11gnu: gcc: Add tuning targets for powerpc64le-linux....* gnu/packages/gcc.scm (%gcc-10-ppc64le-micro-architectures): New variable. (gcc-10, gcc-11, gcc-12, gcc-13)[properties]: Add entry in compiler-cpu-architectures for powerpc64le. Change-Id: I3f5d0f5949eea7ac1b1914ac1db2867f5d14aee6 Efraim Flashner 2024-05-30gnu: gcc-13: Remove unneeded patch for i586-gnu....* gnu/packages/gcc.scm (gcc-13)[arguments]: When building for i586-gnu delete the inherited phase 'patch-hurd-libpthread as it exists upstream. Change-Id: I0837dcff325b15b6975b34dbd7268faaa223ecdd Efraim Flashner 2024-05-30gnu: gccgo-12: Fix building on riscv64-linux....* gnu/packages/gcc.scm (make-gccgo)[arguments]: When building gccgo-12 for riscv64-linux don't add a phase to adjust the order of libgo dependencies. Change-Id: I600c744ce33ad802a5c466c19df41dcbb29a2be0 Efraim Flashner 2024-05-22gnu: gcc-13: Update to 13.3.0....* gnu/packages/gcc.scm (gcc-13): Update to 13.3.0. Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn> Change-Id: Ia2dc3185acbb6671b2719e2d88d55b7d2b8fb92e Michael Ford 2024-04-04gnu: libstdc++: Support cross-compilation to powerpc64le-linux-gnu....Previously the phase would fail when cross-compiling because the patch could not be found in ‘inputs’. * gnu/packages/gcc.scm (make-libstdc++): Add alternative ‘patch-powerpc’ phase for when (%current-target-system) is true. Change-Id: Ia503d761d34596d95cc9d33edd911cebcc2e0d9e Ludovic Courtès 2024-03-07cpu: Enable tuning for i686-linux....* gnu/packages/gcc.scm (gcc-7, gcc-10, gcc-11, gcc-12, gcc-13) [properties]: In compiler-cpu-architectures use the x86_64-micro-architectures list for i686. * guix/cpu.scm (cpu->gcc-architecture): Expand the x86_64 case to also support i686. Change-Id: I0b820ceb715960db5e702814fa278dc8c619a836 Efraim Flashner 2024-03-07cpu: Rename x86-64-v1 to x86-64....This is the actual micro-architecture designation used by compilers. * gnu/packages/gcc.scm (%gcc-11-x86_64-micro-architectures): Rename x86-64-v1 to x86-64. * gnu/packages/golang.scm (%go-1.18-x86_64-micro-architectures): Same. * guix/cpu.scm (cpu->micro-architecture-level): Same. (gcc-architecture->micro-architecture-level): Same. Change-Id: I19ed556a7e8deb4a77f4c63fca3b794f25092788 Efraim Flashner 2024-03-05gnu: gcc@11: fix 'compiler-cpu-architectures' property....* gnu/packages/gcc.scm (%gcc-11-x86_64-micro-architectures): fix typo `alterlake' to `alderlake'. Change-Id: Ia1a7af3f25040101f6995b6a4df5f298bfbbeb44 Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Zheng Junjie