{ 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";
      };
    };
  };
}