From fe9b420f3049bb20eb1d7bfa0e06e125fbe90d57 Mon Sep 17 00:00:00 2001 From: Tristan Druyen Date: Fri, 11 Oct 2024 02:11:34 +0200 Subject: [PATCH] chore: Add hid-fanatecff pkg --- pkgs/hid-fanatecff.nix | 57 ++++++++++++++++++ systems/nixos-desk/default.nix | 104 +++++++++++++++++---------------- 2 files changed, 112 insertions(+), 49 deletions(-) create mode 100644 pkgs/hid-fanatecff.nix diff --git a/pkgs/hid-fanatecff.nix b/pkgs/hid-fanatecff.nix new file mode 100644 index 0000000..0bfbe75 --- /dev/null +++ b/pkgs/hid-fanatecff.nix @@ -0,0 +1,57 @@ +{ stdenv +, pkgs +, lib +, fetchFromGitHub +, kmod +, kernelPackages +, breakpointHook +, +}: +let + kernel = kernelPackages.kernel; +in +stdenv.mkDerivation rec { + name = "hid-fanatecff-${version}-${kernel.version}"; + version = "0.1.2"; + + src = fetchFromGitHub { + owner = "gotzl"; + repo = "hid-fanatecff"; + rev = version; + sha256 = "sha256-twDbjX0p/A18L2x7eS2hyneuQq7rLMxTBT/GfTdweAE="; + }; + + sourceRoot = "source"; + hardeningDisable = [ "pic" "format" ]; + nativeBuildInputs = + kernel.moduleBuildDependencies + ++ [ + pkgs.linuxConsoleTools + ]; + + makeFlags = [ + "KVERSION=${kernel.modDirVersion}" + "KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + "MODULEDIR=$(out)/lib/modules/${kernel.modDirVersion}" + ]; + + preInstallPhase = '' + sed -i '/fanatec.rules/d' Makefile + sed -i '/depmod/d' Makefile + mkdir -p $out/lib/modules/${kernel.modDirVersion} + ''; + postPhase = '' + substituteInPlace fanatec.rules --replace /usr/bin/evdev-joystick ${pkgs.linuxConsoleTools}/bin/evdev-joystick + mkdir -p $out/lib/udev/rules.d + cp fanatec.rules $out/lib/udev/rules.d/99-fanatec.rules + ''; + preInstallPhases = [ "preInstallPhase" ]; + postPhases = [ "postPhase" ]; + + meta = with lib; { + description = "A kernel module that provides support for fanatec wheels and pedals"; + homepage = "https://github.com/gotzl/hid-fanatecff"; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/systems/nixos-desk/default.nix b/systems/nixos-desk/default.nix index 5e56504..565bba1 100644 --- a/systems/nixos-desk/default.nix +++ b/systems/nixos-desk/default.nix @@ -27,61 +27,67 @@ ./disko.nix ]; - config = { - system.stateVersion = "23.05"; + config = + let + hid-fanatecff = pkgs.callPackage ../../pkgs/hid-fanatecff.nix { kernelPackages = config.boot.kernelPackages; }; + in + { + system.stateVersion = "23.05"; - nix.settings.system-features = [ - "benchmark" - "big-parallel" - "kvm" - "nixos-test" - "gccarch-x86-64-v3" - "gccarch-znver2" - ]; - boot = { - kernelPackages = pkgs.pkgsx86_64_v3.linuxPackages_cachyos; - loader = { - systemd-boot = { - enable = lib.mkForce false; #lanzaboote - configurationLimit = 16; + nix.settings.system-features = [ + "benchmark" + "big-parallel" + "kvm" + "nixos-test" + "gccarch-x86-64-v3" + "gccarch-znver3" + ]; + boot = { + kernelPackages = pkgs.pkgsx86_64_v3.linuxPackages_cachyos; + # extraModulePackages = [ hid-fanatecff ]; + loader = { + systemd-boot = { + enable = lib.mkForce false; #lanzaboote + configurationLimit = 16; + }; + + efi.canTouchEfiVariables = true; }; - efi.canTouchEfiVariables = true; + # TODO Extract secureboot module + lanzaboote = { + enable = true; + configurationLimit = 16; + pkiBundle = "/etc/secureboot"; + }; + + initrd = { + availableKernelModules = [ "ahci" "nvme" "xhci_pci" "uas" "usbhid" "usb_storage" "sd_mod" ]; + kernelModules = [ ]; + systemd.enable = true; + }; }; - # TODO Extract secureboot module - lanzaboote = { - enable = true; - configurationLimit = 16; - pkiBundle = "/etc/secureboot"; + programs.fuse.userAllowOther = true; + environment.systemPackages = with pkgs; [ + lm_sensors + sshfs + coreutils-full + cpu-x + sbctl # secureboot debugging/config/mgmt + ]; + + services.btrfs.autoScrub.enable = true; + # services.udev.packages = [ hid-fanatecff ]; + + networking = { + hostName = "nixos-desk"; + useDHCP = lib.mkDefault true; + }; + hardware = { + enableRedistributableFirmware = true; }; - initrd = { - availableKernelModules = [ "ahci" "nvme" "xhci_pci" "uas" "usbhid" "usb_storage" "sd_mod" ]; - kernelModules = [ ]; - systemd.enable = true; - }; - - extraModulePackages = [ ]; + zramSwap.enable = true; }; - - environment.systemPackages = with pkgs; [ - lm_sensors - coreutils-full - cpu-x - sbctl # secureboot debugging/config/mgmt - ]; - - services.btrfs.autoScrub.enable = true; - - networking = { - hostName = "nixos-desk"; - useDHCP = lib.mkDefault true; - }; - hardware = { - enableRedistributableFirmware = true; - }; - - zramSwap.enable = true; - }; }