liminix/modules/wlan.nix

53 lines
1.4 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";
};
};
};
}