{ config, lib, inputs, namespace, ... }:
let
  inherit (lib) types optionalAttrs;
  inherit (lib.${namespace}) mkOpt mkBoolOpt;

  cfg = config.${namespace}.hardware.asahi;
in
{
  imports = [
    inputs.apple-silicon.nixosModules.default
  ];

  options.${namespace}.hardware.asahi = {
    enable = lib.mkEnableOption "support for asahi linux";
    enableGPU = mkBoolOpt false "enable gpu driver";
    firmwareDirectory = mkOpt types.path null "firmware directory";
  };

  config = {
    hardware.asahi = {
      enable = cfg.enable;
    } // optionalAttrs cfg.enable {
      peripheralFirmwareDirectory = cfg.firmwareDirectory;
      useExperimentalGPUDriver = cfg.enableGPU;
    };
  };
}