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; {