Put all firmware in $out/lib/firmware
This way, hardware.firmware can be a list of packages.
This commit is contained in:
parent
ce6daa507a
commit
9c61317002
8 changed files with 24 additions and 28 deletions
|
@ -22,9 +22,7 @@ with lib;
|
|||
###### implementation
|
||||
|
||||
config = mkIf config.hardware.enableAllFirmware {
|
||||
hardware.firmware = [
|
||||
"${pkgs.firmwareLinuxNonfree}/lib/firmware"
|
||||
];
|
||||
hardware.firmware = [ pkgs.firmwareLinuxNonfree ];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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 ];
|
||||
}
|
||||
|
|
|
@ -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
|
||||
'';
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -15,8 +15,8 @@ stdenv.mkDerivation {
|
|||
phases = [ "unpackPhase" "installPhase" ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out
|
||||
b43-fwcutter -w $out linux/wl_apsta.o
|
||||
mkdir -p $out/lib/firmware
|
||||
b43-fwcutter -w $out/lib/firmware linux/wl_apsta.o
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
|
|
@ -5,16 +5,16 @@ stdenv.mkDerivation rec {
|
|||
version = "1.5";
|
||||
|
||||
name = "${pname}-${version}";
|
||||
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/zd1211/${name}.tar.bz2";
|
||||
sha256 = "04ibs0qw8bh6h6zmm5iz6lddgknwhsjq8ib3gyck6a7psw83h7gi";
|
||||
};
|
||||
|
||||
|
||||
buildPhase = "true";
|
||||
|
||||
installPhase = "mkdir -p $out/zd1211; cp * $out/zd1211";
|
||||
|
||||
installPhase = "mkdir -p $out/lib/firmware/zd1211; cp * $out/lib/firmware/zd1211";
|
||||
|
||||
meta = {
|
||||
description = "Firmware for the ZyDAS ZD1211(b) 802.11a/b/g USB WLAN chip";
|
||||
homepage = http://sourceforge.net/projects/zd1211/;
|
||||
|
|
|
@ -56,7 +56,7 @@ stdenv.mkDerivation {
|
|||
mkdir -p $out/etc/udev/rules.d
|
||||
|
||||
makeFlagsArray=(KERNELSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source \
|
||||
FIRMWARE_DIR=$out/firmware FXLOAD=${fxload}/sbin/fxload \
|
||||
FIRMWARE_DIR=$out/lib/firmware FXLOAD=${fxload}/sbin/fxload \
|
||||
DESTDIR=$out SKIP_DEPMOD=1 \
|
||||
USE_UDEV=y)
|
||||
''; # */
|
||||
|
|
Loading…
Reference in a new issue