diff options
author | polwex <polwex@sortug.com> | 2025-05-08 20:14:37 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-05-08 20:14:37 +0700 |
commit | 3efdd55d5cc2e784c6934e9d133f16844c324aad (patch) | |
tree | b901eda1a717f183eeeca297b54312e68a07e1c9 /hosts/local/master/rtl8188gu.nix | |
parent | 6dcb4af2623174c4c52202c7ea064f40a35091ed (diff) |
m
Diffstat (limited to 'hosts/local/master/rtl8188gu.nix')
-rw-r--r-- | hosts/local/master/rtl8188gu.nix | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/hosts/local/master/rtl8188gu.nix b/hosts/local/master/rtl8188gu.nix new file mode 100644 index 0000000..74aa78a --- /dev/null +++ b/hosts/local/master/rtl8188gu.nix @@ -0,0 +1,56 @@ +{ + stdenv, + lib, + fetchFromGitHub, + kernel, + bc, +}: let + modDestDir = "$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/net/wireless/realtek/rtl8188gu"; +in + stdenv.mkDerivation rec { + name = "r8188gu-${kernel.version}-${version}"; + # on update please verify that the source matches the realtek version + version = "1.0"; + + src = fetchFromGitHub { + owner = "McMCCRU"; + repo = "rtl8188gu"; + rev = "bb3292dbb72ba6675b5465245eee0e69912f6e76"; + hash = "sha256-ixu8v3ikTdqlNBEp6YrvuoDWKyi0RxjySXr+fTuO77Q="; + }; + + hardeningDisable = ["pic"]; + + nativeBuildInputs = kernel.moduleBuildDependencies ++ [bc]; + + preBuild = + '' + makeFlagsArray+=("KVER=${kernel.modDirVersion}") + makeFlagsArray+=("KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build") + makeFlagsArray+=("modules") + + # try to make it work for v5.8 - but update_mgmt_frame_registrations is too different + #find -type f -exec sed -i 's/sha256_/rtl_sha256_/g ; s/timespec/timespec64/ ; s/getboottime/getboottime64/ ; s/mgmt_frame_register/update_mgmt_frame_registrations/g' {} \+ + find -type f -exec sed -i 's/timespec/timespec64/ ; s/getboottime/getboottime64/ ; s/entry = proc_create_data.*/entry = NULL;/' {} \+ + '' + + lib.optionalString stdenv.hostPlatform.isAarch64 '' + makeFlagsArray+=("ARCH=arm64") + ''; + + enableParallelBuilding = true; + + installPhase = '' + mkdir -p ${modDestDir} + find . -name '*.ko' -exec cp --parents '{}' ${modDestDir} \; + find ${modDestDir} -name '*.ko' -exec xz -f '{}' \; + ''; + + meta = with lib; { + description = "Realtek RTL8188GU driver"; + longDescription = '' + A kernel module for Realtek 8188 network cards. + ''; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; + } |