From 4ecebc0cddfdeb5939c6cce3869aa9004faa1e1e Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Thu, 13 Jul 2023 06:41:07 -0500 Subject: [PATCH] adding qmk to guix Inside of base we now have the appropriate udev rules and the manifest to setup qmk. Also we have qmk setup as a submodule. --- .gitmodules | 3 ++ guix/base.scm | 132 ++++++++++++++++++++++++++++++++++++++++------- qmk/qmk_firmware | 1 + 3 files changed, 117 insertions(+), 19 deletions(-) create mode 160000 qmk/qmk_firmware diff --git a/.gitmodules b/.gitmodules index e69de29..5fe4c51 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "qmk"] + path = qmk/qmk_firmware + url = git@gitlab.com:chriscochrun/qmk_firmware.git diff --git a/guix/base.scm b/guix/base.scm index 094369d..54c1b0b 100644 --- a/guix/base.scm +++ b/guix/base.scm @@ -35,27 +35,120 @@ root ALL=(ALL) ALL %wheel ALL=(ALL) ALL YOUR-USER-NAME ALL=(ALL) NOPASSWD:/run/current-system/profile/bin/chvt,/run/current-system/profile/bin/loginctl")) + +(define qmk-udev-rules + (udev-rule + "50-qmk.rules" + (string-append + "# Atmel DFU +### ATmega16U2 +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"2fef\", TAG+=\"uaccess\" +### ATmega32U2 +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"2ff0\", TAG+=\"uaccess\" +### ATmega16U4 +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"2ff3\", TAG+=\"uaccess\" +### ATmega32U4 +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"2ff4\", TAG+=\"uaccess\" +### AT90USB64 +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"2ff9\", TAG+=\"uaccess\" +### AT90USB162 +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"2ffa\", TAG+=\"uaccess\" +### AT90USB128 +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"2ffb\", TAG+=\"uaccess\" + +# Input Club +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1c11\", ATTRS{idProduct}==\"b007\", TAG+=\"uaccess\" + +# STM32duino +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1eaf\", ATTRS{idProduct}==\"0003\", TAG+=\"uaccess\" +# STM32 DFU +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"df11\", TAG+=\"uaccess\" + +# BootloadHID +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"16c0\", ATTRS{idProduct}==\"05df\", TAG+=\"uaccess\" + +# USBAspLoader +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"16c0\", ATTRS{idProduct}==\"05dc\", TAG+=\"uaccess\" + +# USBtinyISP +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1782\", ATTRS{idProduct}==\"0c9f\", TAG+=\"uaccess\" + +# ModemManager should ignore the following devices +# Atmel SAM-BA (Massdrop) +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"6124\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" + +# Caterina (Pro Micro) +## pid.codes shared PID +### Keyboardio Atreus 2 Bootloader +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1209\", ATTRS{idProduct}==\"2302\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +## Spark Fun Electronics +### Pro Micro 3V3/8MHz +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1b4f\", ATTRS{idProduct}==\"9203\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +### Pro Micro 5V/16MHz +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1b4f\", ATTRS{idProduct}==\"9205\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +### LilyPad 3V3/8MHz (and some Pro Micro clones) +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1b4f\", ATTRS{idProduct}==\"9207\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +## Pololu Electronics +### A-Star 32U4 +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1ffb\", ATTRS{idProduct}==\"0101\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +## Arduino SA +### Leonardo +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"2341\", ATTRS{idProduct}==\"0036\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +### Micro +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"2341\", ATTRS{idProduct}==\"0037\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +## Adafruit Industries LLC +### Feather 32U4 +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"239a\", ATTRS{idProduct}==\"000c\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +### ItsyBitsy 32U4 3V3/8MHz +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"239a\", ATTRS{idProduct}==\"000d\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +### ItsyBitsy 32U4 5V/16MHz +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"239a\", ATTRS{idProduct}==\"000e\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +## dog hunter AG +### Leonardo +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"2a03\", ATTRS{idProduct}==\"0036\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" +### Micro +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"2a03\", ATTRS{idProduct}==\"0037\", TAG+=\"uaccess\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" + +# hid_listen +KERNEL==\"hidraw*\", MODE=\"0660\", GROUP=\"plugdev\", TAG+=\"uaccess\", TAG+=\"udev-acl\" + +# hid bootloaders +## QMK HID +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"2067\", TAG+=\"uaccess\" +## PJRC's HalfKay +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"16c0\", ATTRS{idProduct}==\"0478\", TAG+=\"uaccess\" + +# APM32 DFU +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"314b\", ATTRS{idProduct}==\"0106\", TAG+=\"uaccess\" + +# GD32V DFU +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"28e9\", ATTRS{idProduct}==\"0189\", TAG+=\"uaccess\" + +# WB32 DFU +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"342d\", ATTRS{idProduct}==\"dfa0\", TAG+=\"uaccess\" +"))) + (define-public base-system-packages (append (map specification->package - '( "nss-certs" - "sway" - "dbus-glib" - "hyprland" - "mesa" - "mesa-utils" - "libvdpau" - "android-udev-rules" - "adb" - "fastboot" - "vulkan-tools" - "vulkan-headers" - "libva" - "libva-utils" - "intel-vaapi-driver" - "libvdpau" - "libvdpau-va-gl" - "emacs-next-pgtk")) - %base-packages)) + '( "nss-certs" + "sway" + "dbus-glib" + "hyprland" + "mesa" + "mesa-utils" + "libvdpau" + "android-udev-rules" + "adb" + "fastboot" + "vulkan-tools" + "vulkan-headers" + "libva" + "libva-utils" + "intel-vaapi-driver" + "libvdpau" + "libvdpau-va-gl" + "emacs-next-pgtk")) + %base-packages)) (define-public base-system-services (append @@ -75,6 +168,7 @@ YOUR-USER-NAME ALL=(ALL) NOPASSWD:/run/current-system/profile/bin/chvt,/run/cur (udev-rules-service 'brightnessctl-udev-rules brightnessctl) (udev-rules-service 'android android-udev-rules #:groups '("adbusers")) + (udev-rules-service 'qmk qmk-udev-rules) (service nix-service-type) diff --git a/qmk/qmk_firmware b/qmk/qmk_firmware new file mode 160000 index 0000000..7dad54f --- /dev/null +++ b/qmk/qmk_firmware @@ -0,0 +1 @@ +Subproject commit 7dad54fdded54f7ea4bf66214385b77025961536