1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 kernel,
6 kernelModuleMakeFlags,
7 bc,
8 nukeReferences,
9}:
10
11stdenv.mkDerivation rec {
12 name = "rtl8189es-${kernel.version}-${version}";
13 version = "2025-04-29";
14
15 src = fetchFromGitHub {
16 owner = "jwrdegoede";
17 repo = "rtl8189ES_linux";
18 rev = "7b43c5c7971eabea263dc2b6cc0928b84323f310";
19 sha256 = "sha256-1BCrMJlXswVZrnbulrF2m0lh7jw8PgHzYPkLk6Stbx8=";
20 };
21
22 nativeBuildInputs = [
23 bc
24 nukeReferences
25 ]
26 ++ kernel.moduleBuildDependencies;
27
28 hardeningDisable = [
29 "pic"
30 "format"
31 ];
32
33 prePatch = ''
34 substituteInPlace ./Makefile --replace /lib/modules/ "${kernel.dev}/lib/modules/"
35 substituteInPlace ./Makefile --replace /sbin/depmod \#
36 substituteInPlace ./Makefile --replace '$(MODDESTDIR)' "$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/"
37 '';
38
39 makeFlags = kernelModuleMakeFlags ++ [
40 "KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
41 (
42 "CONFIG_PLATFORM_I386_PC="
43 + (if (stdenv.hostPlatform.isi686 || stdenv.hostPlatform.isx86_64) then "y" else "n")
44 )
45 ("CONFIG_PLATFORM_ARM_RPI=" + (if stdenv.hostPlatform.isAarch then "y" else "n"))
46 ];
47
48 preInstall = ''
49 mkdir -p "$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/"
50 '';
51
52 postInstall = ''
53 nuke-refs $out/lib/modules/*/kernel/net/wireless/*.ko
54 '';
55
56 meta = with lib; {
57 description = "Driver for Realtek rtl8189es";
58 homepage = "https://github.com/jwrdegoede/rtl8189ES_linux";
59 license = licenses.gpl2Only;
60 platforms = platforms.linux;
61 maintainers = with maintainers; [ danielfullmer ];
62 };
63}