diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 30e4cc9d9c74..3c50a9c5b8d8 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -7995,6 +7995,12 @@ githubId = 19036; name = "Matthew Bauer"; }; + matthiasbenaets = { + email = "matthias.benaets@gmail.com"; + github = "MatthiasBenaets"; + githubId = 89214559; + name = "Matthias Benaets"; + }; matthiasbeyer = { email = "mail@beyermatthias.de"; matrix = "@musicmatze:beyermatthi.as"; diff --git a/nixos/modules/hardware/new-lg4ff.nix b/nixos/modules/hardware/new-lg4ff.nix new file mode 100644 index 000000000000..46581e478640 --- /dev/null +++ b/nixos/modules/hardware/new-lg4ff.nix @@ -0,0 +1,28 @@ +{ pkgs, lib, config, ... }: + +with lib; + +let + cfg = config.hardware.new-lg4ff; +in { + options.hardware.new-lg4ff = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Enables improved Linux module drivers for Logitech driving wheels. + This will replace the existing in-kernel hid-logitech modules. + Works most notably on the Logitech G25, G27, G29 and Driving Force (GT). + ''; + }; + }; + + config = { + boot = { + extraModulePackages = [ pkgs.new-lg4ff ]; + kernelModules = [ "hid-logitech-new" ]; + }; + }; + + meta.maintainers = with lib.maintainers; [ matthiasbenaets ]; +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 81b386999703..902fffd60f9b 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -66,6 +66,7 @@ ./hardware/network/ath-user-regd.nix ./hardware/network/b43.nix ./hardware/network/intel-2200bg.nix + ./hardware/new-lg4ff.nix ./hardware/nitrokey.nix ./hardware/opengl.nix ./hardware/openrazer.nix diff --git a/pkgs/os-specific/linux/new-lg4ff/default.nix b/pkgs/os-specific/linux/new-lg4ff/default.nix new file mode 100644 index 000000000000..df2b66e9079a --- /dev/null +++ b/pkgs/os-specific/linux/new-lg4ff/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, kernel, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "new-lg4ff"; + version = "0.3.3"; + + src = fetchFromGitHub { + owner = "berarma"; + repo = "new-lg4ff"; + rev = "${version}"; + sha256 = "+05xDpNI4m6wTS+YPgA0fP4iM10nMOZOtCrdQxpevBU="; + }; + + preBuild = '' + substituteInPlace Makefile --replace "modules_install" "INSTALL_MOD_PATH=$out modules_install" + sed -i '/depmod/d' Makefile + sed -i "10i\\\trmmod hid-logitech 2> /dev/null || true" Makefile + sed -i "11i\\\trmmod hid-logitech-new 2> /dev/null || true" Makefile + ''; + + nativeBuildInputs = kernel.moduleBuildDependencies; + + makeFlags = [ + "KVERSION=${kernel.modDirVersion}" + "KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + ]; + + meta = with lib; { + description = "Experimental Logitech force feedback module for Linux"; + homepage = "https://github.com/berarma/new-lg4ff"; + license = licenses.gpl2Only; + maintainers = with maintainers; [ matthiasbenaets ]; + platforms = platforms.linux; + broken = stdenv.isAarch64; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f2f6d5bbaab8..024257e9590d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -23097,6 +23097,10 @@ with pkgs; stdenv = gcc11Stdenv; }; + new-lg4ff = callPackage ../os-specific/linux/new-lg4ff { + inherit (linuxPackages) kernel; + }; + nmon = callPackage ../os-specific/linux/nmon { }; hwdata = callPackage ../os-specific/linux/hwdata { };