liminix/modules/wlan.nix

61 lines
1.6 KiB
Nix

{ lib, pkgs, config, ...}:
let
inherit (lib) mkEnableOption mkOption types isDerivation hasAttr ;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs) stdenv wireless-regdb;
regulatory = stdenv.mkDerivation {
name = "regulatory.db";
phases = ["installPhase"];
installPhase = ''
mkdir -p $out
cp ${wireless-regdb}/lib/firmware/regulatory.db $out/
'';
};
in {
config = {
filesystem = dir {
lib = dir {
firmware = dir {
"regulatory.db" = symlink "${regulatory}/regulatory.db";
};
};
};
programs.busybox.applets = [
"insmod" "rmmod"
];
kernel = rec {
config = {
# Most of this is necessary infra to allow wireless stack/
# drivers to be built as module
ASN1 = "y";
ASYMMETRIC_KEY_TYPE = "y";
ASYMMETRIC_PUBLIC_KEY_SUBTYPE = "y";
CRC_CCITT = "y";
CRYPTO = "y";
CRYPTO_ARC4 = "y";
CRYPTO_CBC = "y";
CRYPTO_CCM = "y";
CRYPTO_CMAC = "y";
CRYPTO_GCM = "y";
CRYPTO_HASH_INFO = "y";
CRYPTO_USER_API = "y"; # ARC4 needs this
CRYPTO_USER_API_HASH = "y";
CRYPTO_USER_API_ENABLE_OBSOLETE = "y"; # ARC4 needs this
CRYPTO_LIB_ARC4 = "y"; # for WEP
CRYPTO_RSA = "y";
CRYPTO_SHA1 = "y";
ENCRYPTED_KEYS = "y";
KEYS = "y";
WLAN = "y";
CFG80211 = "m";
MAC80211 = "m";
EXPERT = "y";
CFG80211_CERTIFICATION_ONUS = "y";
CFG80211_REQUIRE_SIGNED_REGDB = "n"; # depends on ONUS
CFG80211_CRDA_SUPPORT = "n";
};
};
};
}