From 0faf4787f6654cbf0126bf5f0587c1942d1a3e63 Mon Sep 17 00:00:00 2001 From: Christian Harke Date: Sun, 17 Aug 2025 23:20:32 +0200 Subject: [PATCH 1/2] linuxPackages.hid-fanatecff: init at 0.2.2 --- .../linux/hid-fanatecff/default.nix | 56 +++++++++++++++++++ pkgs/top-level/linux-kernels.nix | 2 + 2 files changed, 58 insertions(+) create mode 100644 pkgs/os-specific/linux/hid-fanatecff/default.nix diff --git a/pkgs/os-specific/linux/hid-fanatecff/default.nix b/pkgs/os-specific/linux/hid-fanatecff/default.nix new file mode 100644 index 000000000000..9ccdb93cc322 --- /dev/null +++ b/pkgs/os-specific/linux/hid-fanatecff/default.nix @@ -0,0 +1,56 @@ +{ + lib, + stdenv, + fetchFromGitHub, + kernel, + kernelModuleMakeFlags, + bashNonInteractive, + linuxConsoleTools, + nix-update-script, +}: + +let + moduleDir = "lib/modules/${kernel.modDirVersion}/kernel/drivers/hid"; +in +stdenv.mkDerivation (finalAttrs: { + pname = "hid-fanatecff"; + version = "0.2.2"; + + src = fetchFromGitHub { + owner = "gotzl"; + repo = "hid-fanatecff"; + tag = finalAttrs.version; + hash = "sha256-aVuTnrxw7zWMZ1U21DUKDvcYlIp7iHJHaX8ijmUd/TE="; + }; + + nativeBuildInputs = kernel.moduleBuildDependencies; + + postPatch = '' + mkdir -p $out/{lib/udev/rules.d,${moduleDir}} + + sed -i '/depmod/d' Makefile + substituteInPlace Makefile \ + --replace-fail '/etc/udev/rules.d' "$out/lib/udev/rules.d" + + substituteInPlace fanatec.rules \ + --replace-fail '/usr/bin/evdev-joystick' '${lib.getExe' linuxConsoleTools "evdev-joystick"}' \ + --replace-fail '/bin/sh' '${lib.getExe bashNonInteractive}' + ''; + + makeFlags = kernelModuleMakeFlags ++ [ + "KVERSION=${kernel.modDirVersion}" + "KERNEL_SRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + "MODULEDIR=$(out)/${moduleDir}" + ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Linux module driver for Fanatec driving wheels"; + homepage = "https://github.com/gotzl/hid-fanatecff"; + license = lib.licenses.gpl2Only; + maintainers = with lib.maintainers; [ rake5k ]; + platforms = lib.platforms.linux; + mainProgram = "hid-fanatecff"; + }; +}) diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 05e6ff2ef64d..cc7e4661de97 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -481,6 +481,8 @@ in nct6687d = callPackage ../os-specific/linux/nct6687d { }; + hid-fanatecff = callPackage ../os-specific/linux/hid-fanatecff { }; + new-lg4ff = callPackage ../os-specific/linux/new-lg4ff { }; zenergy = callPackage ../os-specific/linux/zenergy { }; From ea3e190c7ef0ee0b79c41b68bb508198f7767e2e Mon Sep 17 00:00:00 2001 From: Christian Harke Date: Sun, 17 Aug 2025 23:21:10 +0200 Subject: [PATCH 2/2] nixos/hid-fanatecff: init module --- nixos/modules/hardware/hid-fanatecff.nix | 19 +++++++++++++++++++ nixos/modules/module-list.nix | 1 + 2 files changed, 20 insertions(+) create mode 100644 nixos/modules/hardware/hid-fanatecff.nix diff --git a/nixos/modules/hardware/hid-fanatecff.nix b/nixos/modules/hardware/hid-fanatecff.nix new file mode 100644 index 000000000000..b227eff5fb3c --- /dev/null +++ b/nixos/modules/hardware/hid-fanatecff.nix @@ -0,0 +1,19 @@ +{ lib, config, ... }: + +let + cfg = config.hardware.hid-fanatecff; + inherit (config.boot.kernelPackages) hid-fanatecff; + inherit (lib) maintainers mkEnableOption mkIf; +in +{ + options.hardware.hid-fanatecff = { + enable = mkEnableOption "hid-fanatecff, a Linux kernel driver that aims to add support for Fanatec devices"; + }; + + config = mkIf cfg.enable { + boot.extraModulePackages = [ hid-fanatecff ]; + services.udev.packages = [ hid-fanatecff ]; + }; + + meta.maintainers = with maintainers; [ rake5k ]; +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 4f2d56c7f86d..f3dbc112b842 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -73,6 +73,7 @@ ./hardware/gpgsmartcards.nix ./hardware/graphics.nix ./hardware/hackrf.nix + ./hardware/hid-fanatecff.nix ./hardware/i2c.nix ./hardware/infiniband.nix ./hardware/inputmodule.nix