summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2015-08-25 00:27:06 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2015-08-25 00:40:34 +0200
commit9c61317002edf32812d793aebac86a990edcd1cb (patch)
tree0fcf366014270704b5705b54c4ee01445c78ce3c /nixos
parentce6daa507a4e110aa33447f70bd4764df9ea10c8 (diff)
downloadnixpkgs-9c61317002edf32812d793aebac86a990edcd1cb.tar
nixpkgs-9c61317002edf32812d793aebac86a990edcd1cb.tar.gz
nixpkgs-9c61317002edf32812d793aebac86a990edcd1cb.tar.bz2
nixpkgs-9c61317002edf32812d793aebac86a990edcd1cb.tar.lz
nixpkgs-9c61317002edf32812d793aebac86a990edcd1cb.tar.xz
nixpkgs-9c61317002edf32812d793aebac86a990edcd1cb.tar.zst
nixpkgs-9c61317002edf32812d793aebac86a990edcd1cb.zip
Put all firmware in $out/lib/firmware
This way, hardware.firmware can be a list of packages.
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/hardware/all-firmware.nix4
-rw-r--r--nixos/modules/hardware/video/encoder/wis-go7007.nix8
-rw-r--r--nixos/modules/services/hardware/udev.nix22
-rw-r--r--nixos/modules/system/activation/top-level.nix2
-rw-r--r--nixos/modules/system/boot/kernel.nix2
5 files changed, 17 insertions, 21 deletions
diff --git a/nixos/modules/hardware/all-firmware.nix b/nixos/modules/hardware/all-firmware.nix
index e4bdeb55cad..1a04baef193 100644
--- a/nixos/modules/hardware/all-firmware.nix
+++ b/nixos/modules/hardware/all-firmware.nix
@@ -22,9 +22,7 @@ with lib;
   ###### implementation
 
   config = mkIf config.hardware.enableAllFirmware {
-    hardware.firmware = [
-      "${pkgs.firmwareLinuxNonfree}/lib/firmware"
-    ];
+    hardware.firmware = [ pkgs.firmwareLinuxNonfree ];
   };
 
 }
diff --git a/nixos/modules/hardware/video/encoder/wis-go7007.nix b/nixos/modules/hardware/video/encoder/wis-go7007.nix
index c0eb2b814b3..e9b3cf72a8d 100644
--- a/nixos/modules/hardware/video/encoder/wis-go7007.nix
+++ b/nixos/modules/hardware/video/encoder/wis-go7007.nix
@@ -5,11 +5,11 @@ let
 in
 
 {
-  boot.extraModulePackages = [wis_go7007];
+  boot.extraModulePackages = [ wis_go7007 ];
 
-  environment.systemPackages = [wis_go7007];
+  environment.systemPackages = [ wis_go7007 ];
 
-  hardware.firmware = ["${wis_go7007}/firmware"];
+  hardware.firmware = [ wis_go7007 ];
 
-  services.udev.packages = [wis_go7007];
+  services.udev.packages = [ wis_go7007 ];
 }
diff --git a/nixos/modules/services/hardware/udev.nix b/nixos/modules/services/hardware/udev.nix
index fc89de777e8..513eb27b406 100644
--- a/nixos/modules/services/hardware/udev.nix
+++ b/nixos/modules/services/hardware/udev.nix
@@ -171,25 +171,23 @@ in
     };
 
     hardware.firmware = mkOption {
-      type = types.listOf types.path;
+      type = types.listOf types.package;
       default = [];
       description = ''
-        List of directories containing firmware files.  Such files
+        List of packages containing firmware files.  Such files
         will be loaded automatically if the kernel asks for them
         (i.e., when it has detected specific hardware that requires
-        firmware to function).  If more than one path contains a
-        firmware file with the same name, the first path in the list
-        takes precedence.  Note that you must rebuild your system if
-        you add files to any of these directories.  For quick testing,
+        firmware to function).  If multiple packages contain firmware
+        files with the same name, the first package in the list takes
+        precedence.  Note that you must rebuild your system if you add
+        files to any of these directories.  For quick testing,
         put firmware files in <filename>/root/test-firmware</filename>
-        and add that directory to the list.  Note that you can also
-        add firmware packages to this list as these are directories in
-        the nix store.
+        and add that directory to the list.
       '';
       apply = list: pkgs.buildEnv {
         name = "firmware";
         paths = list;
-        pathsToLink = [ "/" ];
+        pathsToLink = [ "/lib/firmware" ];
         ignoreCollisions = true;
       };
     };
@@ -236,7 +234,7 @@ in
       (isYes "NET")
     ];
 
-    boot.extraModprobeConfig = "options firmware_class path=${config.hardware.firmware}";
+    boot.extraModprobeConfig = "options firmware_class path=${config.hardware.firmware}/lib/firmware";
 
     system.activationScripts.udevd =
       ''
@@ -254,7 +252,7 @@ in
 
         # Allow the kernel to find our firmware.
         if [ -e /sys/module/firmware_class/parameters/path ]; then
-          echo -n "${config.hardware.firmware}" > /sys/module/firmware_class/parameters/path
+          echo -n "${config.hardware.firmware}/lib/firmware" > /sys/module/firmware_class/parameters/path
         fi
       '';
 
diff --git a/nixos/modules/system/activation/top-level.nix b/nixos/modules/system/activation/top-level.nix
index 83930079816..a977ddb7bb4 100644
--- a/nixos/modules/system/activation/top-level.nix
+++ b/nixos/modules/system/activation/top-level.nix
@@ -50,7 +50,7 @@ let
 
         ln -s ${config.system.build.initialRamdisk}/initrd $out/initrd
 
-        ln -s ${config.hardware.firmware} $out/firmware
+        ln -s ${config.hardware.firmware}/lib/firmware $out/firmware
       ''}
 
       echo "$activationScript" > $out/activate
diff --git a/nixos/modules/system/boot/kernel.nix b/nixos/modules/system/boot/kernel.nix
index ae868219aa4..ac40e8a49ac 100644
--- a/nixos/modules/system/boot/kernel.nix
+++ b/nixos/modules/system/boot/kernel.nix
@@ -216,7 +216,7 @@ in
       ];
 
     # The Linux kernel >= 2.6.27 provides firmware.
-    hardware.firmware = [ "${kernel}/lib/firmware" ];
+    hardware.firmware = [ kernel ];
 
     # Create /etc/modules-load.d/nixos.conf, which is read by
     # systemd-modules-load.service to load required kernel modules.