summary refs log tree commit diff
path: root/nixos/modules/hardware
diff options
context:
space:
mode:
authorJörg Thalheim <joerg@thalheim.io>2017-05-08 08:50:03 +0100
committerJörg Thalheim <joerg@thalheim.io>2017-05-09 15:29:08 +0100
commit05aa80c06ab45da7c44b6bf1b858a87815665c71 (patch)
tree50a2aeffc0417ef57fe24c97183dc1112968d8d3 /nixos/modules/hardware
parent6e738df1763d5fe94e55348635270b26d08b71d2 (diff)
downloadnixlib-05aa80c06ab45da7c44b6bf1b858a87815665c71.tar
nixlib-05aa80c06ab45da7c44b6bf1b858a87815665c71.tar.gz
nixlib-05aa80c06ab45da7c44b6bf1b858a87815665c71.tar.bz2
nixlib-05aa80c06ab45da7c44b6bf1b858a87815665c71.tar.lz
nixlib-05aa80c06ab45da7c44b6bf1b858a87815665c71.tar.xz
nixlib-05aa80c06ab45da7c44b6bf1b858a87815665c71.tar.zst
nixlib-05aa80c06ab45da7c44b6bf1b858a87815665c71.zip
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.
Diffstat (limited to 'nixos/modules/hardware')
-rw-r--r--nixos/modules/hardware/all-firmware.nix49
-rw-r--r--nixos/modules/hardware/network/broadcom-43xx.nix2
-rw-r--r--nixos/modules/hardware/network/intel-2030.nix2
-rw-r--r--nixos/modules/hardware/network/intel-2100bg.nix2
-rw-r--r--nixos/modules/hardware/network/intel-3945abg.nix2
-rw-r--r--nixos/modules/hardware/network/intel-4965agn.nix2
-rw-r--r--nixos/modules/hardware/network/intel-5000.nix2
-rw-r--r--nixos/modules/hardware/network/intel-5150.nix2
-rw-r--r--nixos/modules/hardware/network/intel-6000.nix2
-rw-r--r--nixos/modules/hardware/network/intel-6000g2a.nix2
-rw-r--r--nixos/modules/hardware/network/intel-6000g2b.nix2
-rw-r--r--nixos/modules/hardware/network/ralink.nix2
-rw-r--r--nixos/modules/hardware/network/rtl8192c.nix2
-rw-r--r--nixos/modules/hardware/video/radeon.nix2
14 files changed, 49 insertions, 26 deletions
diff --git a/nixos/modules/hardware/all-firmware.nix b/nixos/modules/hardware/all-firmware.nix
index ceca3b887b58..8f26d8f57ea4 100644
--- a/nixos/modules/hardware/all-firmware.nix
+++ b/nixos/modules/hardware/all-firmware.nix
@@ -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 {
-    hardware.firmware = with pkgs; [
-      firmwareLinuxNonfree
-      intel2200BGFirmware
-      rtl8723bs-firmware
-      rtl8192su-firmware
-    ] ++ optionals config.nixpkgs.config.allowUnfree [
-      broadcom-bt-firmware
-    ];
-  };
-
+  config = mkMerge [
+    (mkIf (cfg.enableAllFirmware || cfg.enableRedistributalFirmware) {
+      hardware.firmware = with pkgs; [
+        firmwareLinuxNonfree
+        intel2200BGFirmware
+        rtl8723bs-firmware
+        rtl8192su-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.enableRedistributalFirmware option.
+        '';
+      }];
+      hardware.firmware = with pkgs; [
+        broadcom-bt-firmware
+      ];
+    })
+  ];
 }
diff --git a/nixos/modules/hardware/network/broadcom-43xx.nix b/nixos/modules/hardware/network/broadcom-43xx.nix
index 8fecdae36bf2..e0bd16a34830 100644
--- a/nixos/modules/hardware/network/broadcom-43xx.nix
+++ b/nixos/modules/hardware/network/broadcom-43xx.nix
@@ -1,3 +1,3 @@
 {
-  hardware.enableAllFirmware = true;
+  hardware.enableRedistributalFirmware = true;
 }
diff --git a/nixos/modules/hardware/network/intel-2030.nix b/nixos/modules/hardware/network/intel-2030.nix
index 8fecdae36bf2..e0bd16a34830 100644
--- a/nixos/modules/hardware/network/intel-2030.nix
+++ b/nixos/modules/hardware/network/intel-2030.nix
@@ -1,3 +1,3 @@
 {
-  hardware.enableAllFirmware = true;
+  hardware.enableRedistributalFirmware = true;
 }
diff --git a/nixos/modules/hardware/network/intel-2100bg.nix b/nixos/modules/hardware/network/intel-2100bg.nix
index 89fdce415dda..a54ce30e2d38 100644
--- a/nixos/modules/hardware/network/intel-2100bg.nix
+++ b/nixos/modules/hardware/network/intel-2100bg.nix
@@ -23,7 +23,7 @@
 
   config = lib.mkIf config.networking.enableIntel2100BGFirmware {
 
-    hardware.enableAllFirmware = true;
+    hardware.enableRedistributalFirmware = true;
 
   };
 
diff --git a/nixos/modules/hardware/network/intel-3945abg.nix b/nixos/modules/hardware/network/intel-3945abg.nix
index f4f19d208348..a6e490d97892 100644
--- a/nixos/modules/hardware/network/intel-3945abg.nix
+++ b/nixos/modules/hardware/network/intel-3945abg.nix
@@ -22,7 +22,7 @@
 
   config = lib.mkIf config.networking.enableIntel3945ABGFirmware {
 
-    hardware.enableAllFirmware = true;
+    hardware.enableRedistributalFirmware = true;
 
   };
 
diff --git a/nixos/modules/hardware/network/intel-4965agn.nix b/nixos/modules/hardware/network/intel-4965agn.nix
index 8fecdae36bf2..e0bd16a34830 100644
--- a/nixos/modules/hardware/network/intel-4965agn.nix
+++ b/nixos/modules/hardware/network/intel-4965agn.nix
@@ -1,3 +1,3 @@
 {
-  hardware.enableAllFirmware = true;
+  hardware.enableRedistributalFirmware = true;
 }
diff --git a/nixos/modules/hardware/network/intel-5000.nix b/nixos/modules/hardware/network/intel-5000.nix
index 8fecdae36bf2..e0bd16a34830 100644
--- a/nixos/modules/hardware/network/intel-5000.nix
+++ b/nixos/modules/hardware/network/intel-5000.nix
@@ -1,3 +1,3 @@
 {
-  hardware.enableAllFirmware = true;
+  hardware.enableRedistributalFirmware = true;
 }
diff --git a/nixos/modules/hardware/network/intel-5150.nix b/nixos/modules/hardware/network/intel-5150.nix
index 8fecdae36bf2..e0bd16a34830 100644
--- a/nixos/modules/hardware/network/intel-5150.nix
+++ b/nixos/modules/hardware/network/intel-5150.nix
@@ -1,3 +1,3 @@
 {
-  hardware.enableAllFirmware = true;
+  hardware.enableRedistributalFirmware = true;
 }
diff --git a/nixos/modules/hardware/network/intel-6000.nix b/nixos/modules/hardware/network/intel-6000.nix
index 8fecdae36bf2..e0bd16a34830 100644
--- a/nixos/modules/hardware/network/intel-6000.nix
+++ b/nixos/modules/hardware/network/intel-6000.nix
@@ -1,3 +1,3 @@
 {
-  hardware.enableAllFirmware = true;
+  hardware.enableRedistributalFirmware = true;
 }
diff --git a/nixos/modules/hardware/network/intel-6000g2a.nix b/nixos/modules/hardware/network/intel-6000g2a.nix
index 8fecdae36bf2..e0bd16a34830 100644
--- a/nixos/modules/hardware/network/intel-6000g2a.nix
+++ b/nixos/modules/hardware/network/intel-6000g2a.nix
@@ -1,3 +1,3 @@
 {
-  hardware.enableAllFirmware = true;
+  hardware.enableRedistributalFirmware = true;
 }
diff --git a/nixos/modules/hardware/network/intel-6000g2b.nix b/nixos/modules/hardware/network/intel-6000g2b.nix
index 8fecdae36bf2..e0bd16a34830 100644
--- a/nixos/modules/hardware/network/intel-6000g2b.nix
+++ b/nixos/modules/hardware/network/intel-6000g2b.nix
@@ -1,3 +1,3 @@
 {
-  hardware.enableAllFirmware = true;
+  hardware.enableRedistributalFirmware = true;
 }
diff --git a/nixos/modules/hardware/network/ralink.nix b/nixos/modules/hardware/network/ralink.nix
index 0469ae3a1fb3..a15b0f8894b7 100644
--- a/nixos/modules/hardware/network/ralink.nix
+++ b/nixos/modules/hardware/network/ralink.nix
@@ -20,7 +20,7 @@
   ###### implementation
 
   config = lib.mkIf config.networking.enableRalinkFirmware {
-    hardware.enableAllFirmware = true;
+    hardware.enableRedistributalFirmware = true;
   };
 
 }
diff --git a/nixos/modules/hardware/network/rtl8192c.nix b/nixos/modules/hardware/network/rtl8192c.nix
index deae6355492c..44b4b767d348 100644
--- a/nixos/modules/hardware/network/rtl8192c.nix
+++ b/nixos/modules/hardware/network/rtl8192c.nix
@@ -20,7 +20,7 @@
   ###### implementation
 
   config = lib.mkIf config.networking.enableRTL8192cFirmware {
-    hardware.enableAllFirmware = true;
+    hardware.enableRedistributalFirmware = true;
   };
 
 }
diff --git a/nixos/modules/hardware/video/radeon.nix b/nixos/modules/hardware/video/radeon.nix
index 8fecdae36bf2..e0bd16a34830 100644
--- a/nixos/modules/hardware/video/radeon.nix
+++ b/nixos/modules/hardware/video/radeon.nix
@@ -1,3 +1,3 @@
 {
-  hardware.enableAllFirmware = true;
+  hardware.enableRedistributalFirmware = true;
 }