Unverified Commit 05aa80c0 authored by Jörg Thalheim's avatar Jörg Thalheim
Browse files

hardware: add enableRedistributalFirmware

Due the recent inclusion of broadcom-bt-firmware in enableAllFirmware,
it was required to set `nixpkgs.config.allowUnfree` to obtain the full
list. To make this dependency more explicit an assertion is added and an
alternative option `enableRedistributalFirmware` is provided to only
obtain firmware with an license allowing redistribution.
parent 6e738df1
Loading
Loading
Loading
Loading
+36 −13
Original line number Diff line number Diff line
@@ -2,7 +2,9 @@

with lib;

{
let
  cfg = config.hardware;
in {

  ###### interface

@@ -12,7 +14,16 @@ with lib;
      default = false;
      type = types.bool;
      description = ''
        Turn on this option if you want to enable all the firmware shipped in linux-firmware.
        Turn on this option if you want to enable all the firmware.
      '';
    };

    hardware.enableRedistributalFirmware = mkOption {
      default = false;
      type = types.bool;
      description = ''
        Turn on this option if you want to enable all the firmware with a license allowing redistribution.
        (i.e. free firmware and <literal>firmware-linux-nonfree</literal>)
      '';
    };

@@ -21,15 +32,27 @@ with lib;

  ###### implementation

  config = mkIf config.hardware.enableAllFirmware {
  config = mkMerge [
    (mkIf (cfg.enableAllFirmware || cfg.enableRedistributalFirmware) {
      hardware.firmware = with pkgs; [
        firmwareLinuxNonfree
        intel2200BGFirmware
        rtl8723bs-firmware
        rtl8192su-firmware
    ] ++ optionals config.nixpkgs.config.allowUnfree [
      ];
    })
    (mkIf cfg.enableAllFirmware {
      assertions = [{
        assertion = !cfg.enableAllFirmware || (config.nixpkgs.config.allowUnfree or false);
        message = ''
          the list of hardware.enableAllFirmware contains non-redistributable licensed firmware files.
            This requires nixpkgs.config.allowUnfree to be true.
            An alternative is to use the hardware.enableRedistributalFirmware option.
        '';
      }];
      hardware.firmware = with pkgs; [
        broadcom-bt-firmware
      ];
  };

    })
  ];
}
+1 −1
Original line number Diff line number Diff line
{
  hardware.enableAllFirmware = true;
  hardware.enableRedistributalFirmware = true;
}
+1 −1
Original line number Diff line number Diff line
{
  hardware.enableAllFirmware = true;
  hardware.enableRedistributalFirmware = true;
}
+1 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@

  config = lib.mkIf config.networking.enableIntel2100BGFirmware {

    hardware.enableAllFirmware = true;
    hardware.enableRedistributalFirmware = true;

  };

+1 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@

  config = lib.mkIf config.networking.enableIntel3945ABGFirmware {

    hardware.enableAllFirmware = true;
    hardware.enableRedistributalFirmware = true;

  };

Loading