From patchwork Wed Nov 29 20:32:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Trofimov X-Patchwork-Id: 57115 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 7A29527BBEA; Wed, 29 Nov 2023 20:33:32 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id C6E1227BBE2 for ; Wed, 29 Nov 2023 20:33:27 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r8REw-0005l5-El; Wed, 29 Nov 2023 15:32:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r8REt-0005kA-Td for guix-patches@gnu.org; Wed, 29 Nov 2023 15:32:56 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r8REt-0002pO-Lh for guix-patches@gnu.org; Wed, 29 Nov 2023 15:32:55 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1r8RF0-0007fb-O0; Wed, 29 Nov 2023 15:33:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#67534] [PATCH] gnu: qmk: Support custom keyboards. Resent-From: Sergey Trofimov Original-Sender: "Debbugs-submit" Resent-CC: efraim@flashner.co.il, vagrant@debian.org, guix-patches@gnu.org Resent-Date: Wed, 29 Nov 2023 20:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 67534 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 67534@debbugs.gnu.org Cc: Sergey Trofimov , Efraim Flashner , Vagrant Cascadian X-Debbugs-Original-To: guix-patches@gnu.org X-Debbugs-Original-Xcc: Efraim Flashner , Vagrant Cascadian Received: via spool by submit@debbugs.gnu.org id=B.170128997429453 (code B ref -1); Wed, 29 Nov 2023 20:33:02 +0000 Received: (at submit) by debbugs.gnu.org; 29 Nov 2023 20:32:54 +0000 Received: from localhost ([127.0.0.1]:51545 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r8REr-0007ez-Sa for submit@debbugs.gnu.org; Wed, 29 Nov 2023 15:32:54 -0500 Received: from lists.gnu.org ([2001:470:142::17]:58188) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r8REq-0007em-PX for submit@debbugs.gnu.org; Wed, 29 Nov 2023 15:32:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r8REd-0005cS-9q for guix-patches@gnu.org; Wed, 29 Nov 2023 15:32:39 -0500 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r8REb-0002oB-0z for guix-patches@gnu.org; Wed, 29 Nov 2023 15:32:39 -0500 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-a08e4352992so25227366b.1 for ; Wed, 29 Nov 2023 12:32:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sarg.org.ru; s=google; t=1701289952; x=1701894752; darn=gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=LTr7aZeHAuvEWNDeV8yoPp2AIeoMYxrruS87Jbs1XAk=; b=YiyoriyNTd6pzB6JC4jjJAMOsHT+AN5cTs5P6m9NKmZx8o2fdAjodKqxYTwox/ZADd 49OOOpB8F20fJgwS/enbiFeBE/IuEz54iuuyuyknUjZJg+ytFFdPHMITdbMZrw1IwmAA UO2WiAm8JUpgdoKV0qkDWTdoPMNHmfoMaHmj8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701289952; x=1701894752; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=LTr7aZeHAuvEWNDeV8yoPp2AIeoMYxrruS87Jbs1XAk=; b=CvI/F6yb0FcZDbCDxLyf0wrl222RxJZ4Yrh3ZWN0P4R8Lf2XTWd8KOGAniB2ZXJQRA mwqtYa+vWbOovJNEaI0S2E5QfR/LPZlw87NLbxdLbemrKuJcPc3LC8Bjg8oCS2ssmguo e1jsXRxZH5IkXR1LXi3SuoX6f6qZG9CkVO8VSfrjZd7iLeza0Daztm7Iiajxz6G1aaw6 ATqelyU0z7Y69+UI4urRsl7zOrxNn1FCPjhZXynuiVQJ5DqbDqn1plTWg2g83BsQudvV 2ZJ81dlwfp/SLtTRfq44ImgxH3RvqAnZ3X/yD4f5OkRlBIuqaGe3DmSzkXmmUe5LrIn9 3gYQ== X-Gm-Message-State: AOJu0Ywv7v9rV+IiwvTezCarEFxJV/6BiAKL86f+gZ7s6Iu17xosmicN M/zX8/ULVug2rkgdm4UnaLX37oU3GBSctrSyVsK2+A== X-Google-Smtp-Source: AGHT+IGJ7X4o3cygkEfu2o7jV2daYQ5Mf0+OzCVF87lxHK/qHwpOk1IOuZ9FjLPjgrKUpcq5/LF3HA== X-Received: by 2002:a17:906:a1c9:b0:9be:2b53:ac4d with SMTP id bx9-20020a170906a1c900b009be2b53ac4dmr13656696ejb.74.1701289952314; Wed, 29 Nov 2023 12:32:32 -0800 (PST) Received: from localhost ([2a02:2454:a09d:d000:a64e:31ff:fe38:fd6c]) by smtp.gmail.com with ESMTPSA id w15-20020a17090633cf00b009dd8debf9d8sm8217992eja.157.2023.11.29.12.32.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Nov 2023 12:32:32 -0800 (PST) From: Sergey Trofimov Date: Wed, 29 Nov 2023 21:32:12 +0100 Message-ID: <940c712802a6bb69dde97dca4b6c01524d0a0a1e.1701289507.git.sarg@sarg.org.ru> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Received-SPF: none client-ip=2a00:1450:4864:20::636; envelope-from=sarg@sarg.org.ru; helo=mail-ej1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/firmware.scm (make-qmk-firmware/implementation): Add keyboard-source-directory parameter. --- gnu/packages/firmware.scm | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) base-commit: cd46757c1a0f886848fbb6828c028dd2a2532767 -- 2.41.0 diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 294bbea184..e06b321cde 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -1406,14 +1406,16 @@ (define-public qmk (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 "_" "-") "-" @@ -1472,6 +1474,15 @@ (define* (make-qmk-firmware/implementation keyboard keymap (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 _