From f8ef5a95054c66db4fd361ee7ab175edbed0f32e Mon Sep 17 00:00:00 2001 From: Bart van der Braak Date: Fri, 25 Oct 2024 22:28:42 +0200 Subject: [PATCH] Working example of extra yt6801 module --- tongfang/nixos/hardware-configuration.nix | 13 +++--- tongfang/nixos/yt6801-driver.nix | 52 +++++++++++------------ 2 files changed, 29 insertions(+), 36 deletions(-) diff --git a/tongfang/nixos/hardware-configuration.nix b/tongfang/nixos/hardware-configuration.nix index f928f09..b210710 100644 --- a/tongfang/nixos/hardware-configuration.nix +++ b/tongfang/nixos/hardware-configuration.nix @@ -4,23 +4,20 @@ { config, lib, pkgs, modulesPath, ... }: let - yt6801Overlay = (final: prev: { - yt6801-driver = import ./yt6801-driver.nix { - inherit (pkgs) lib stdenv fetchFromGitHub nukeReferences bc; - kernel = pkgs.linuxPackages.kernel; - }; - }); + yt6801 = import ./yt6801-driver.nix { + inherit (pkgs) lib stdenv fetchzip nukeReferences bc; + kernel = pkgs.linuxPackages.kernel; + }; in { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - nixpkgs.overlays = [ yt6801Overlay ]; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" "sdhci_pci" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ pkgs.yt6801-driver ]; + boot.extraModulePackages = [ yt6801 ]; fileSystems."/" = { device = "/dev/disk/by-uuid/c7cf28c3-5744-45cc-8a81-456d24e44b7a"; diff --git a/tongfang/nixos/yt6801-driver.nix b/tongfang/nixos/yt6801-driver.nix index 84fade1..493a1d2 100644 --- a/tongfang/nixos/yt6801-driver.nix +++ b/tongfang/nixos/yt6801-driver.nix @@ -1,44 +1,40 @@ -{ lib, stdenv, fetchFromGitHub, kernel, bc, nukeReferences }: +{ lib, stdenv, fetchzip, nukeReferences, bc, kernel }: stdenv.mkDerivation rec { pname = "yt6801"; version = "1.0.29"; + name = "${pname}-${version}-${kernel.version}"; - src = fetchFromGitHub { - owner = "bartvdbraak"; - repo = pname; - rev = "ea9c2d01c0f2a4171a774527dce4daca43e11956"; - hash = "sha256-oz6CeOUN6QWKXxe3WUZljhGDTFArsknjzBuQ4IchGeU="; + src = fetchzip { + url = "https://www.motor-comm.com/Public/Uploads/uploadfile/files/20240812/yt6801-linux-driver-1.0.29.zip"; + sha256 = "sha256-oz6CeOUN6QWKXxe3WUZljhGDTFArsknjzBuQ4IchGeU="; + stripRoot = false; }; - nativeBuildInputs = [ bc nukeReferences ] ++ kernel.moduleBuildDependencies; - buildInputs = [ kernel.dev ]; hardeningDisable = [ "pic" "format" ]; + KERNELDIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}"; + nativeBuildInputs = [ bc ] ++ kernel.moduleBuildDependencies; + preBuild = '' + cd src + ''; + buildFlags = [ "modules" ]; + + patchPhase = '' + substituteInPlace ./src/Makefile \ + --replace-fail 'KSRC_BASE = /lib/modules/$(shell uname -r)' "KSRC_BASE = ${KERNELDIR}" \ + --replace-fail 'sudo ls -l $(ko_dir)' "" \ + --replace-fail 'depmod $(shell uname -r)' "" \ + --replace-fail 'modprobe $(KFILE)' "" \ + --replace-fail '@modinfo $(ko_full)' "" + ''; makeFlags = [ "ARCH=${stdenv.hostPlatform.linuxArch}" - "KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" - "EXTRA_CFLAGS=-Wall -I${kernel.dev}/include" + ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + "CROSS_COMPILE=${stdenv.cc.targetPrefix}" ]; - postPatch = '' - substituteInPlace ./yt_nic_install.sh \ - --replace-quiet "/lib/modules" "$out/lib/modules/${kernel.modDirVersion}" \ - --replace-quiet "/sbin/depmod" "# depmod" - substituteInPlace ./src/Makefile \ - --replace-quiet "/lib/modules" "$out/lib/modules/${kernel.modDirVersion}" \ - --replace-quiet "KSRC_BASE = /lib/modules/$(shell uname -r)" \ - "KSRC_BASE = ${kernel.dev}/lib/modules/${kernel.modDirVersion}" - ''; - - preInstall = '' - mkdir -p "$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/net/ethernet/motorcomm" - ''; - - postInstall = '' - nuke-refs $out/lib/modules/*/kernel/drivers/net/ethernet/motorcomm/*.ko - ''; - + INSTALL_MOD_PATH = placeholder "out"; enableParallelBuilding = true; meta = with lib; {