1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 kernel,
6 kernelModuleMakeFlags,
7 bc,
8 nix-update-script,
9}:
10
11stdenv.mkDerivation (finalAttrs: {
12 pname = "rtl8821ce";
13 version = "0-unstable-2025-08-20";
14
15 src = fetchFromGitHub {
16 owner = "tomaspinho";
17 repo = "rtl8821ce";
18 rev = "5df613d114d1ca6072aeaf9f64666029896eed61";
19 hash = "sha256-JEaMfpu2F9Pcg7aLwKEUnRMMqC0Y0r1WRmHMCRba280=";
20 };
21
22 hardeningDisable = [ "pic" ];
23
24 nativeBuildInputs = [ bc ] ++ kernel.moduleBuildDependencies;
25 makeFlags = kernelModuleMakeFlags;
26
27 prePatch = ''
28 substituteInPlace ./Makefile \
29 --replace-fail /lib/modules/ "${kernel.dev}/lib/modules/" \
30 --replace-fail /sbin/depmod \# \
31 --replace-fail '$(MODDESTDIR)' "$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/"
32 '';
33
34 preInstall = ''
35 mkdir -p "$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/"
36 '';
37
38 enableParallelBuilding = true;
39
40 passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch=master" ]; };
41
42 meta = {
43 description = "Realtek rtl8821ce driver";
44 homepage = "https://github.com/tomaspinho/rtl8821ce";
45 license = lib.licenses.gpl2Only;
46 platforms = lib.platforms.linux;
47 maintainers = with lib.maintainers; [ defelo ];
48 broken =
49 stdenv.hostPlatform.isAarch64
50 || ((lib.versions.majorMinor kernel.version) == "5.4" && kernel.isHardened);
51 };
52})