wlan.nix (1404B)
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 }; 51 }; 52 }