diff options
-rw-r--r-- | modules/hardware/rtl8192cu.nix | 47 | ||||
-rw-r--r-- | modules/module-list.nix | 1 |
2 files changed, 48 insertions, 0 deletions
diff --git a/modules/hardware/rtl8192cu.nix b/modules/hardware/rtl8192cu.nix new file mode 100644 index 00000000..7ffdc63d --- /dev/null +++ b/modules/hardware/rtl8192cu.nix @@ -0,0 +1,47 @@ +{ 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"; + }; + + 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" ]; + }; +} diff --git a/modules/module-list.nix b/modules/module-list.nix index a0672259..c4a9e84a 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -1,5 +1,6 @@ [ ./hardware/gamecontroller.nix + ./hardware/rtl8192cu.nix ./hardware/t100ha ./hardware/thinkpad.nix ./profiles/common.nix |