~ruther/guix-local

2e503a5a94cf11359256dcb8e035960d0e244b6a — Sergey Trofimov 2 years ago 6906657
gnu: qmk: Support custom keyboards.

* gnu/packages/firmware.scm (make-qmk-firmware/implementation):
Add keyboard-source-directory parameter.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: I68ae5df0b0aae088ca8002dca7e30de2b23e9aa0
1 files changed, 18 insertions(+), 7 deletions(-)

M gnu/packages/firmware.scm
M gnu/packages/firmware.scm => gnu/packages/firmware.scm +18 -7
@@ 1503,14 1503,16 @@ having to run @command{qmk} as root when flashing the firmware.")
(define* (make-qmk-firmware/implementation keyboard keymap
                                           #:key (description "")
                                           keymap-json
                                           keymap-source-directory)
                                           keymap-source-directory
                                           keyboard-source-directory)
  "Return a package to build the QMK firmware for KEYBOARD with KEYMAP.
Keyboard should be the name of a sub-directory under the @file{keyboards}
directory.  For custom keymaps, KEYMAP-JSON, a file-like object of a JSON
representation of KEYMAP as generated by the @url{https://config.qmk.fm/, QMK
Configurator} tool or KEYMAP-SOURCE-DIRECTORY, a file-like object directory
containing the keymap source files files such as @file{keymap.c}, can be
provided."
Keyboard should be the name of a sub-directory under the @file{keyboards} directory.
For custom keymaps, KEYMAP-JSON, a file-like object of a JSON representation of
KEYMAP as generated by the @url{https://config.qmk.fm/, QMK Configurator} tool or
KEYMAP-SOURCE-DIRECTORY, a file-like object directory containing the keymap source
files files such as @file{keymap.c}, can be provided.  For keyboards not available in
upstream repository, provide a file-like object directory containing the whole
keyboard definition in KEYBOARD-SOURCE-DIRECTORY."
  (package
    (name (string-append "qmk-firmware-"
                         (string-replace-substring keyboard "_" "-") "-"


@@ 1570,6 1572,15 @@ provided."
                      (base32
                       "1rmhm4rxvq8skxqn6vc4n4ly1ak6whj7c386zbsci4pxx548n9h4"))))
               "lib/lufa")))
          #$@(if keyboard-source-directory
                 #~((add-after 'unpack 'copy-keyboard-source-directory
                      (lambda _
                        (let ((keyboard-dir #$(string-append "keyboards/" keyboard)))
                          (false-if-exception (delete-file-recursively
                                               keyboard-dir))
                          (copy-recursively #$keyboard-source-directory
                                            keyboard-dir)))))
                 #~())
          #$@(if keymap-source-directory
                 #~((add-after 'unpack 'copy-keymap-source-directory
                      (lambda _