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