2024-08-03 10:28:48 +02:00
|
|
|
pkgs:
|
|
|
|
{
|
|
|
|
arch,
|
|
|
|
config,
|
|
|
|
firmware,
|
|
|
|
}:
|
2024-07-31 11:00:49 +02:00
|
|
|
let
|
2024-08-03 10:28:48 +02:00
|
|
|
inherit (pkgs)
|
|
|
|
lib
|
|
|
|
buildLinux
|
|
|
|
fetchFromGitHub
|
|
|
|
gccStdenv
|
|
|
|
runCommand
|
|
|
|
;
|
2024-07-31 11:00:49 +02:00
|
|
|
|
2024-08-02 22:14:55 +02:00
|
|
|
kernel =
|
2024-08-03 10:28:48 +02:00
|
|
|
let
|
|
|
|
args = {
|
|
|
|
inherit (pkgs) lib hostPlatform;
|
|
|
|
};
|
2024-08-02 22:14:55 +02:00
|
|
|
|
2024-08-03 10:28:48 +02:00
|
|
|
firmwareCollection =
|
|
|
|
runCommand "linux-firmware"
|
|
|
|
{
|
|
|
|
inherit firmware;
|
|
|
|
firmwarePackages = with pkgs; [
|
|
|
|
linux-firmware
|
|
|
|
sof-firmware
|
|
|
|
wireless-regdb
|
|
|
|
];
|
|
|
|
}
|
|
|
|
''
|
|
|
|
for dir in ''${firmwarePackages[@]}; do
|
|
|
|
pushd "$dir/lib/firmware"
|
2024-07-31 11:00:49 +02:00
|
|
|
|
2024-08-03 10:28:48 +02:00
|
|
|
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
|
2024-07-31 11:00:49 +02:00
|
|
|
|
2024-08-03 10:28:48 +02:00
|
|
|
popd
|
|
|
|
done
|
|
|
|
'';
|
|
|
|
in
|
|
|
|
buildLinux rec {
|
|
|
|
pname = "linux-hardened";
|
|
|
|
version = "6.10.2-hardened1";
|
2024-08-02 22:14:55 +02:00
|
|
|
|
2024-08-03 10:28:48 +02:00
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "anthraxx";
|
|
|
|
repo = pname;
|
|
|
|
rev = "v${version}";
|
|
|
|
hash = "sha256-a9kxt09pQjUJUsdqaIMyA7Us6sxueaacetWKv59Xy3s=";
|
|
|
|
};
|
2024-08-02 22:14:55 +02:00
|
|
|
|
2024-08-03 10:28:48 +02:00
|
|
|
defconfig = "allnoconfig";
|
|
|
|
extraMakeFlags = [ "KCFLAGS=-march=${arch}" ];
|
|
|
|
enableCommonConfig = false;
|
2024-08-02 22:14:55 +02:00
|
|
|
|
2024-08-03 10:28:48 +02:00
|
|
|
structuredExtraConfig =
|
|
|
|
(import ./base.nix args)
|
|
|
|
// (import config args)
|
2024-08-03 10:30:05 +02:00
|
|
|
// lib.optionalAttrs (firmware != [ ]) {
|
2024-08-03 10:28:48 +02:00
|
|
|
EXTRA_FIRMWARE = lib.kernel.freeform (toString firmware);
|
|
|
|
EXTRA_FIRMWARE_DIR = lib.kernel.freeform "${firmwareCollection}/lib/firmware";
|
|
|
|
};
|
2024-08-02 22:14:55 +02:00
|
|
|
|
2024-08-03 10:28:48 +02:00
|
|
|
features = {
|
|
|
|
efiBootStub = true;
|
|
|
|
};
|
|
|
|
isHardened = true;
|
|
|
|
stdenv = gccStdenv;
|
|
|
|
};
|
|
|
|
in
|
|
|
|
kernel.overrideAttrs (base: {
|
|
|
|
installFlags = base.installFlags or [ ] ++ [ "INSTALL_MOD_PATH=$(out)" ];
|
2024-07-31 11:00:49 +02:00
|
|
|
|
|
|
|
postInstall = ''
|
|
|
|
if [ -z "''${dontStrip-}" ]; then
|
|
|
|
installFlagsArray+=( "INSTALL_MOD_STRIP=1" )
|
|
|
|
fi
|
|
|
|
|
|
|
|
make modules_install $makeFlags "''${makeFlagsArray[@]}" \
|
|
|
|
$installFlags "''${installFlagsArray[@]}"
|
|
|
|
|
|
|
|
depmod -b $out ${base.version}
|
|
|
|
touch $out/lib/modules/${base.version}/modules.order
|
|
|
|
'';
|
|
|
|
})
|