wlan.nix (1638B)
1 { lib, pkgs, config, ...}: 2 let 3 inherit (lib) mkEnableOption mkOption types isDerivation hasAttr ; 4 inherit (pkgs.pseudofile) dir symlink; 5 inherit (pkgs) stdenv wireless-regdb; 6 regulatory = stdenv.mkDerivation { 7 name = "regulatory.db"; 8 phases = ["installPhase"]; 9 installPhase = '' 10 mkdir -p $out 11 cp ${wireless-regdb}/lib/firmware/regulatory.db $out/ 12 ''; 13 }; 14 in { 15 config = { 16 filesystem = dir { 17 lib = dir { 18 firmware = dir { 19 "regulatory.db" = symlink "${regulatory}/regulatory.db"; 20 }; 21 }; 22 }; 23 programs.busybox.applets = [ 24 "insmod" "rmmod" 25 ]; 26 kernel = rec { 27 config = { 28 # Most of this is necessary infra to allow wireless stack/ 29 # drivers to be built as module 30 ASN1 = "y"; 31 ASYMMETRIC_KEY_TYPE = "y"; 32 ASYMMETRIC_PUBLIC_KEY_SUBTYPE = "y"; 33 CRC_CCITT = "y"; 34 CRYPTO = "y"; 35 CRYPTO_ARC4 = "y"; 36 CRYPTO_CBC = "y"; 37 CRYPTO_CCM = "y"; 38 CRYPTO_CMAC = "y"; 39 CRYPTO_GCM = "y"; 40 CRYPTO_HASH_INFO = "y"; 41 CRYPTO_USER_API = "y"; # ARC4 needs this 42 CRYPTO_USER_API_HASH = "y"; 43 CRYPTO_USER_API_ENABLE_OBSOLETE = "y"; # ARC4 needs this 44 CRYPTO_LIB_ARC4 = "y"; # for WEP 45 CRYPTO_RSA = "y"; 46 CRYPTO_SHA1 = "y"; 47 ENCRYPTED_KEYS = "y"; 48 KEYS = "y"; 49 50 WLAN = "y"; 51 CFG80211 = "m"; 52 MAC80211 = "m"; 53 EXPERT = "y"; 54 CFG80211_CERTIFICATION_ONUS = "y"; 55 CFG80211_REQUIRE_SIGNED_REGDB = "n"; # depends on ONUS 56 CFG80211_CRDA_SUPPORT = "n"; 57 }; 58 }; 59 }; 60 }