61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, pkgs, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| let
 | |
|   cfg = config.hardware;
 | |
| in {
 | |
| 
 | |
|   ###### interface
 | |
| 
 | |
|   options = {
 | |
| 
 | |
|     hardware.enableAllFirmware = mkOption {
 | |
|       default = false;
 | |
|       type = types.bool;
 | |
|       description = ''
 | |
|         Turn on this option if you want to enable all the firmware.
 | |
|       '';
 | |
|     };
 | |
| 
 | |
|     hardware.enableRedistributableFirmware = 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>)
 | |
|       '';
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
| 
 | |
|   ###### implementation
 | |
| 
 | |
|   config = mkMerge [
 | |
|     (mkIf (cfg.enableAllFirmware || cfg.enableRedistributableFirmware) {
 | |
|       hardware.firmware = with pkgs; [
 | |
|         firmwareLinuxNonfree
 | |
|         intel2200BGFirmware
 | |
|         rtl8192su-firmware
 | |
|       ] ++ optional (pkgs.stdenv.hostPlatform.isAarch32 || pkgs.stdenv.hostPlatform.isAarch64) raspberrypiWirelessFirmware
 | |
|         ++ optionals (versionOlder config.boot.kernelPackages.kernel.version "4.13") [
 | |
|         rtl8723bs-firmware
 | |
|       ];
 | |
|     })
 | |
|     (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.enableRedistributableFirmware option.
 | |
|         '';
 | |
|       }];
 | |
|       hardware.firmware = with pkgs; [
 | |
|         broadcom-bt-firmware
 | |
|       ];
 | |
|     })
 | |
|   ];
 | |
| }
 | 
