Collect firmware files using buildEnv

This commit is contained in:
Mikael Voss 2024-08-06 20:55:23 +00:00
parent 1c204258af
commit 740e835bc8
No known key found for this signature in database

View file

@ -7,6 +7,7 @@ pkgs:
let
inherit (pkgs)
lib
buildEnv
buildLinux
fetchFromGitHub
gccStdenv
@ -19,31 +20,15 @@ let
inherit (pkgs) lib hostPlatform;
};
firmwareCollection =
runCommand "linux-firmware"
{
inherit firmware;
firmwarePackages = with pkgs; [
linux-firmware
sof-firmware
wireless-regdb
];
}
''
for dir in ''${firmwarePackages[@]}; do
pushd "$dir/lib/firmware"
for fw in ''${firmware}; do
if [ -e "$fw" ]; then
local base="$(dirname "$fw")"
mkdir -p "$out/lib/firmware/$base"
ln -s "$dir/lib/firmware/$fw" "$out/lib/firmware/$base"
fi
done
popd
done
'';
firmwareEnv = buildEnv {
name = "linux-firmware";
pathsToLink = [ "/lib/firmware" ];
paths = with pkgs; [
linux-firmware
sof-firmware
wireless-regdb
];
};
in
buildLinux rec {
pname = "linux-hardened";
@ -65,7 +50,7 @@ let
// (import config args)
// lib.optionalAttrs (firmware != [ ]) {
EXTRA_FIRMWARE = lib.kernel.freeform (toString firmware);
EXTRA_FIRMWARE_DIR = lib.kernel.freeform "${firmwareCollection}/lib/firmware";
EXTRA_FIRMWARE_DIR = lib.kernel.freeform "${firmwareEnv}/lib/firmware";
};
features = {