From 7c7c77d6a70f920f3428b22c7423519f0bf3a6ee Mon Sep 17 00:00:00 2001 From: "Jan B." Date: Tue, 3 Sep 2024 20:55:34 +0200 Subject: [PATCH 1/7] tuxedo-keyboard: 3.2.14 -> 4.6.2 --- .../linux/tuxedo-keyboard/default.nix | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/os-specific/linux/tuxedo-keyboard/default.nix b/pkgs/os-specific/linux/tuxedo-keyboard/default.nix index 23285d5e26d2c02..13a14747a5516f8 100644 --- a/pkgs/os-specific/linux/tuxedo-keyboard/default.nix +++ b/pkgs/os-specific/linux/tuxedo-keyboard/default.nix @@ -1,14 +1,15 @@ -{ lib, stdenv, fetchFromGitHub, kernel, linuxHeaders, pahole }: +{ lib, stdenv, fetchFromGitLab, kernel, linuxHeaders, pahole }: stdenv.mkDerivation (finalAttrs: { pname = "tuxedo-keyboard-${kernel.version}"; - version = "3.2.14"; + version = "4.6.2"; - src = fetchFromGitHub { - owner = "tuxedocomputers"; - repo = "tuxedo-keyboard"; + src = fetchFromGitLab { + group = "tuxedocomputers"; + owner = "development/packages"; + repo = "tuxedo-drivers"; rev = "v${finalAttrs.version}"; - hash = "sha256-L3NsUUKA/snUcRWwlZidsBiTznhfulNldidEDDmNOkw="; + hash = "sha256-HS/KGhgFW0vO2SSFYSdseQBhAZC70eAx9JvRgR6e6qs="; }; buildInputs = [ @@ -23,9 +24,8 @@ stdenv.mkDerivation (finalAttrs: { mkdir -p "$out/lib/modules/${kernel.modDirVersion}" - for module in clevo_acpi.ko clevo_wmi.ko tuxedo_keyboard.ko tuxedo_io/tuxedo_io.ko uniwill_wmi.ko; do - mv src/$module $out/lib/modules/${kernel.modDirVersion} - done + find src/ -type f -name '*.ko' \ + -exec mv {} $out/lib/modules/${kernel.modDirVersion} \; runHook postInstall ''; @@ -33,7 +33,7 @@ stdenv.mkDerivation (finalAttrs: { meta = { broken = stdenv.hostPlatform.isAarch64 || (lib.versionOlder kernel.version "5.5"); description = "Keyboard and hardware I/O driver for TUXEDO Computers laptops"; - homepage = "https://github.com/tuxedocomputers/tuxedo-keyboard/"; + homepage = "https://gitlab.com/tuxedocomputers/development/packages/tuxedo-drivers"; license = lib.licenses.gpl3Plus; longDescription = '' This driver provides support for Fn keys, brightness/color/mode for most TUXEDO From 1a22ae157bb8517f736a4c64b43c4a5560fd64c0 Mon Sep 17 00:00:00 2001 From: "Jan B." Date: Sat, 21 Sep 2024 20:28:25 +0200 Subject: [PATCH 2/7] tuxedo-drivers: init at 4.6.2 --- .../default.nix | 19 ++++++++++++++----- pkgs/top-level/linux-kernels.nix | 3 ++- 2 files changed, 16 insertions(+), 6 deletions(-) rename pkgs/os-specific/linux/{tuxedo-keyboard => tuxedo-drivers}/default.nix (72%) diff --git a/pkgs/os-specific/linux/tuxedo-keyboard/default.nix b/pkgs/os-specific/linux/tuxedo-drivers/default.nix similarity index 72% rename from pkgs/os-specific/linux/tuxedo-keyboard/default.nix rename to pkgs/os-specific/linux/tuxedo-drivers/default.nix index 13a14747a5516f8..ee0d6575459c1bd 100644 --- a/pkgs/os-specific/linux/tuxedo-keyboard/default.nix +++ b/pkgs/os-specific/linux/tuxedo-drivers/default.nix @@ -1,7 +1,14 @@ -{ lib, stdenv, fetchFromGitLab, kernel, linuxHeaders, pahole }: +{ + lib, + stdenv, + fetchFromGitLab, + kernel, + linuxHeaders, + pahole, +}: stdenv.mkDerivation (finalAttrs: { - pname = "tuxedo-keyboard-${kernel.version}"; + pname = "tuxedo-drivers-${kernel.version}"; version = "4.6.2"; src = fetchFromGitLab { @@ -36,10 +43,12 @@ stdenv.mkDerivation (finalAttrs: { homepage = "https://gitlab.com/tuxedocomputers/development/packages/tuxedo-drivers"; license = lib.licenses.gpl3Plus; longDescription = '' - This driver provides support for Fn keys, brightness/color/mode for most TUXEDO - keyboards (except white backlight-only models). + Drivers for several platform devices for TUXEDO notebooks: + - Driver for Fn-keys + - SysFS control of brightness/color/mode for most TUXEDO keyboards + - Hardware I/O driver for TUXEDO Control Center - Can be used with the "hardware.tuxedo-keyboard" NixOS module. + Can be used with the "hardware.tuxedo-drivers" NixOS module. ''; maintainers = [ lib.maintainers.blanky0230 ]; platforms = lib.platforms.linux; diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 3c00a5693a58b1f..33f62dc20c499f1 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -481,7 +481,7 @@ in { rust-out-of-tree-module = if lib.versionAtLeast kernel.version "6.7" then callPackage ../os-specific/linux/rust-out-of-tree-module { } else null; - tuxedo-keyboard = if lib.versionAtLeast kernel.version "4.14" then callPackage ../os-specific/linux/tuxedo-keyboard { } else null; + tuxedo-drivers = if lib.versionAtLeast kernel.version "4.14" then callPackage ../os-specific/linux/tuxedo-drivers { } else null; jool = callPackage ../os-specific/linux/jool { }; @@ -611,6 +611,7 @@ in { xmm7360-pci = throw "Support for the XMM7360 WWAN card was added to the iosm kmod in mainline kernel version 5.18"; amdgpu-pro = throw "amdgpu-pro was removed due to lack of maintenance"; # Added 2024-06-16 kvdo = throw "kvdo was removed, because it was added to mainline in kernel version 6.9"; # Added 2024-07-08 + tuxedo-keyboard = self.tuxedo-drivers; }); hardenedPackagesFor = kernel: overrides: packagesFor (hardenedKernelFor kernel overrides); From b0261b04ad34ee9e55713e39116d102a680234b3 Mon Sep 17 00:00:00 2001 From: "Jan B." Date: Sat, 21 Sep 2024 20:33:53 +0200 Subject: [PATCH 3/7] nixos/tuxedo-drivers: init --- nixos/modules/hardware/tuxedo-drivers.nix | 35 +++++++++++++++++++ nixos/modules/hardware/tuxedo-keyboard.nix | 32 ----------------- nixos/modules/module-list.nix | 2 +- nixos/modules/services/hardware/tuxedo-rs.nix | 2 +- 4 files changed, 37 insertions(+), 34 deletions(-) create mode 100644 nixos/modules/hardware/tuxedo-drivers.nix delete mode 100644 nixos/modules/hardware/tuxedo-keyboard.nix diff --git a/nixos/modules/hardware/tuxedo-drivers.nix b/nixos/modules/hardware/tuxedo-drivers.nix new file mode 100644 index 000000000000000..aa951782dbc05b2 --- /dev/null +++ b/nixos/modules/hardware/tuxedo-drivers.nix @@ -0,0 +1,35 @@ +{ config, lib, ... }: +let + cfg = config.hardware.tuxedo-drivers; + tuxedo-drivers = config.boot.kernelPackages.tuxedo-drivers; +in +{ + imports = [ + (lib.mkRenamedOptionModule + [ + "hardware" + "tuxedo-keyboard" + ] + [ + "hardware" + "tuxedo-drivers" + ] + ) + ]; + + options.hardware.tuxedo-drivers = { + enable = lib.mkEnableOption '' + The tuxedo-drivers driver enables access to the following on TUXEDO notebooks: + - Driver for Fn-keys + - SysFS control of brightness/color/mode for most TUXEDO keyboards + - Hardware I/O driver for TUXEDO Control Center + + For more inforation it is best to check at the source code description: + ''; + }; + + config = lib.mkIf cfg.enable { + boot.kernelModules = [ "tuxedo_keyboard" ]; + boot.extraModulePackages = [ tuxedo-drivers ]; + }; +} diff --git a/nixos/modules/hardware/tuxedo-keyboard.nix b/nixos/modules/hardware/tuxedo-keyboard.nix deleted file mode 100644 index 01ec486fb88fca9..000000000000000 --- a/nixos/modules/hardware/tuxedo-keyboard.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.hardware.tuxedo-keyboard; - tuxedo-keyboard = config.boot.kernelPackages.tuxedo-keyboard; -in - { - options.hardware.tuxedo-keyboard = { - enable = lib.mkEnableOption '' - the tuxedo-keyboard driver. - - To configure the driver, pass the options to the {option}`boot.kernelParams` configuration. - There are several parameters you can change. It's best to check at the source code description which options are supported. - You can find all the supported parameters at: - - In order to use the `custom` lighting with the maximumg brightness and a color of `0xff0a0a` one would put pass {option}`boot.kernelParams` like this: - - ``` - boot.kernelParams = [ - "tuxedo_keyboard.mode=0" - "tuxedo_keyboard.brightness=255" - "tuxedo_keyboard.color_left=0xff0a0a" - ]; - ``` - ''; - }; - - config = lib.mkIf cfg.enable - { - boot.kernelModules = ["tuxedo_keyboard"]; - boot.extraModulePackages = [ tuxedo-keyboard ]; - }; - } diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 68cd01c3c6f4642..890de2bfde92c85 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -97,7 +97,7 @@ ./hardware/sensor/iio.nix ./hardware/steam-hardware.nix ./hardware/system-76.nix - ./hardware/tuxedo-keyboard.nix + ./hardware/tuxedo-drivers.nix ./hardware/ubertooth.nix ./hardware/uinput.nix ./hardware/uni-sync.nix diff --git a/nixos/modules/services/hardware/tuxedo-rs.nix b/nixos/modules/services/hardware/tuxedo-rs.nix index cfdc1c64d1183d3..4ba7825ae8a53a9 100644 --- a/nixos/modules/services/hardware/tuxedo-rs.nix +++ b/nixos/modules/services/hardware/tuxedo-rs.nix @@ -14,7 +14,7 @@ in config = lib.mkIf cfg.enable (lib.mkMerge [ { - hardware.tuxedo-keyboard.enable = true; + hardware.tuxedo-drivers.enable = true; systemd = { services.tailord = { From 44ef829b40c13ba3f5bf8f07019c747b7d8d736b Mon Sep 17 00:00:00 2001 From: "Jan B." Date: Sat, 21 Sep 2024 18:11:17 +0200 Subject: [PATCH 4/7] tuxedo-drivers: 4.6.2 -> 4.7.0 --- pkgs/os-specific/linux/tuxedo-drivers/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/tuxedo-drivers/default.nix b/pkgs/os-specific/linux/tuxedo-drivers/default.nix index ee0d6575459c1bd..d3f6cc8452573b1 100644 --- a/pkgs/os-specific/linux/tuxedo-drivers/default.nix +++ b/pkgs/os-specific/linux/tuxedo-drivers/default.nix @@ -9,14 +9,14 @@ stdenv.mkDerivation (finalAttrs: { pname = "tuxedo-drivers-${kernel.version}"; - version = "4.6.2"; + version = "4.7.0"; src = fetchFromGitLab { group = "tuxedocomputers"; owner = "development/packages"; repo = "tuxedo-drivers"; rev = "v${finalAttrs.version}"; - hash = "sha256-HS/KGhgFW0vO2SSFYSdseQBhAZC70eAx9JvRgR6e6qs="; + hash = "sha256-wZUQHIkbxt9ckTFs8VTrA5I+ebBeaOm+Fb0+GqX5y0c="; }; buildInputs = [ From 629d9786ba30b82f0e20c8e86e894177536b72c0 Mon Sep 17 00:00:00 2001 From: "Jan B." Date: Mon, 7 Oct 2024 20:29:44 +0200 Subject: [PATCH 5/7] maintainers: add keksgesicht --- maintainers/maintainer-list.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 8cc8bd2a599909b..2f71ad44aa3567b 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -10890,6 +10890,13 @@ github = "keenanweaver"; githubId = 37268985; }; + keksgesicht = { + name = "Jan Braun"; + email = "git@keksgesicht.net"; + github = "Keksgesicht"; + githubId = 32649612; + keys = [ { fingerprint = "019B EA80 C49D 47D2 A00A 3A96 47D0 99E3 32A6 194F"; } ]; + }; keldu = { email = "mail@keldu.de"; github = "keldu"; From 97baf372f5a03ae07a7bec6bc2907bc2a0a8d660 Mon Sep 17 00:00:00 2001 From: "Jan B." Date: Mon, 7 Oct 2024 20:30:21 +0200 Subject: [PATCH 6/7] tuxedo-drivers: add myself and a few others as maintainers --- pkgs/os-specific/linux/tuxedo-drivers/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/tuxedo-drivers/default.nix b/pkgs/os-specific/linux/tuxedo-drivers/default.nix index d3f6cc8452573b1..feef9de79b62f06 100644 --- a/pkgs/os-specific/linux/tuxedo-drivers/default.nix +++ b/pkgs/os-specific/linux/tuxedo-drivers/default.nix @@ -50,7 +50,12 @@ stdenv.mkDerivation (finalAttrs: { Can be used with the "hardware.tuxedo-drivers" NixOS module. ''; - maintainers = [ lib.maintainers.blanky0230 ]; + maintainers = with lib.maintainers; [ + aprl + blanky0230 + keksgesicht + xaverdh + ]; platforms = lib.platforms.linux; }; }) From c5989b0173fa669297d1f92cee201cf77aa6c3eb Mon Sep 17 00:00:00 2001 From: "Jan B." Date: Mon, 7 Oct 2024 20:47:24 +0200 Subject: [PATCH 7/7] tuxedo-drivers: update build commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: April John Co-Authored-By: Dominik Xaver Hörl thanks to the work of: - https://github.com/NixOS/nixpkgs/pull/293017 - https://github.com/NixOS/nixpkgs/pull/343483 --- .../linux/tuxedo-drivers/default.nix | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/pkgs/os-specific/linux/tuxedo-drivers/default.nix b/pkgs/os-specific/linux/tuxedo-drivers/default.nix index feef9de79b62f06..fb9f62d4cf5ea07 100644 --- a/pkgs/os-specific/linux/tuxedo-drivers/default.nix +++ b/pkgs/os-specific/linux/tuxedo-drivers/default.nix @@ -3,7 +3,7 @@ stdenv, fetchFromGitLab, kernel, - linuxHeaders, + kmod, pahole, }: @@ -19,23 +19,17 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-wZUQHIkbxt9ckTFs8VTrA5I+ebBeaOm+Fb0+GqX5y0c="; }; - buildInputs = [ - pahole - linuxHeaders - ]; + buildInputs = [ pahole ]; + nativeBuildInputs = [ kmod ] ++ kernel.moduleBuildDependencies; - makeFlags = [ "KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" ]; - - installPhase = '' - runHook preInstall - - mkdir -p "$out/lib/modules/${kernel.modDirVersion}" - - find src/ -type f -name '*.ko' \ - -exec mv {} $out/lib/modules/${kernel.modDirVersion} \; - - runHook postInstall - ''; + # kernel makeFlags contain O=$$(buildRoot), that upstream passes through to make and causes build failure, so we filter it out here + makeFlags = + (lib.filter (flag: lib.head (lib.strings.splitString "=" flag) != "O") kernel.makeFlags) + ++ [ + "KERNELRELEASE=${kernel.modDirVersion}" + "KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + "INSTALL_MOD_PATH=${placeholder "out"}" + ]; meta = { broken = stdenv.hostPlatform.isAarch64 || (lib.versionOlder kernel.version "5.5");