blob: 2acfa0ec12e40aed18c063c22d7e64cf1c934349 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
{ config, pkgs, lib, ... }:
let
inherit (config.boot.kernelPackages) kernel;
modBaseDir = "kernel/drivers/net/wireless";
rtl8192cu = pkgs.stdenv.mkDerivation {
name = "rtl8192cu-${kernel.version}";
src = pkgs.fetchFromGitHub {
owner = "pvaret";
repo = "rtl8192cu-fixes";
rev = "f3edeeef68808f0f6fc06b5e36b559e1d06232ab";
sha256 = "0v0rrxfmvi9flrg3xns826a6n1mlgd3vs5z2x59aqvwfj5b4rv7b";
};
patches = lib.optional (lib.versionAtLeast kernel.version "4.0")
./kernel-4.x.patch;
postPatch = ''
substituteInPlace Makefile --replace /sbin/depmod :
'';
makeFlags = [
"BUILD_KERNEL=${kernel.modDirVersion}"
"KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"MODDESTDIR=$(out)/lib/modules/${kernel.modDirVersion}/${modBaseDir}/"
];
preInstall = ''
mkdir -p "$out/lib/modules/${kernel.modDirVersion}/${modBaseDir}"
'';
enableParallelBuilding = true;
};
in {
options.vuizvui.hardware.rtl8192cu = {
enable = lib.mkEnableOption "support for RTL8192CU wireless chipset";
};
config = lib.mkIf config.vuizvui.hardware.rtl8192cu.enable {
boot.extraModulePackages = [ rtl8192cu ];
# Note that the module is called "8192cu" so we don't blacklist the module
# we actually want to use. The ones we blacklist here are the modules from
# the mainline kernel, which unfortunately do not seem to work very well.
boot.blacklistedKernelModules = [ "rtl8192cu" "rtl8192c_common" "rtlwifi" ];
networking.enableRTL8192cFirmware = true;
};
}
|