2024-08-12 21:12:18 +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
|
2024-08-06 22:55:23 +02:00
|
|
|
buildEnv
|
2024-08-03 10:28:48 +02:00
|
|
|
buildLinux
|
2024-08-12 22:52:12 +02:00
|
|
|
buildPackages
|
2024-08-03 10:28:48 +02:00
|
|
|
fetchFromGitHub
|
2024-08-12 22:52:12 +02:00
|
|
|
overrideCC
|
2024-08-12 21:12:18 +02:00
|
|
|
runCommand;
|
2024-07-31 11:00:49 +02:00
|
|
|
|
2024-08-12 21:12:18 +02:00
|
|
|
kernel = let
|
2024-08-13 21:54:11 +02:00
|
|
|
inherit (pkgs.llvmPackages_19)
|
2024-08-12 22:52:12 +02:00
|
|
|
llvm clang-unwrapped lld
|
|
|
|
clang bintools;
|
|
|
|
|
2024-08-12 21:12:18 +02:00
|
|
|
args = {
|
|
|
|
inherit (pkgs) lib hostPlatform;
|
|
|
|
};
|
2024-08-02 22:14:55 +02:00
|
|
|
|
2024-08-12 21:12:18 +02:00
|
|
|
firmwareEnv = buildEnv {
|
|
|
|
name = "linux-firmware";
|
|
|
|
pathsToLink = [ "/lib/firmware" ];
|
|
|
|
paths = with pkgs; [
|
|
|
|
linux-firmware
|
|
|
|
sof-firmware
|
|
|
|
wireless-regdb
|
|
|
|
];
|
|
|
|
};
|
|
|
|
in buildLinux rec {
|
2024-08-12 22:52:12 +02:00
|
|
|
pname = "linux-hardened";
|
|
|
|
version = "6.10.4-hardened1";
|
2024-08-02 22:14:55 +02:00
|
|
|
|
2024-08-12 22:52:12 +02:00
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "anthraxx";
|
|
|
|
repo = pname;
|
|
|
|
rev = "v${version}";
|
|
|
|
hash = "sha256-qq2vmrUIYUuXEwuZoXrXbZY/li+ReFNuqhsy1R0yx0s=";
|
|
|
|
};
|
|
|
|
|
|
|
|
defconfig = "allnoconfig";
|
|
|
|
enableCommonConfig = false;
|
2024-08-02 22:14:55 +02:00
|
|
|
|
2024-08-12 22:52:12 +02:00
|
|
|
extraMakeFlags = [
|
|
|
|
"LLVM=1"
|
2024-08-02 22:14:55 +02:00
|
|
|
|
2024-08-12 22:52:12 +02:00
|
|
|
"HOSTCC=${clang}/bin/clang"
|
|
|
|
"HOSTCXX=${clang}/bin/clang++"
|
|
|
|
"HOSTLD=${bintools}/bin/ld.lld"
|
|
|
|
"HOSTAR=${bintools}/bin/ar"
|
2024-08-02 22:14:55 +02:00
|
|
|
|
2024-08-12 22:52:12 +02:00
|
|
|
"CC=${clang-unwrapped}/bin/clang"
|
|
|
|
"LD=${lld}/bin/ld.lld"
|
|
|
|
"AR=${llvm}/bin/llvm-ar"
|
|
|
|
"NM=${llvm}/bin/llvm-nm"
|
|
|
|
"OBJCOPY=${llvm}/bin/llvm-objcopy"
|
|
|
|
"OBJDUMP=${llvm}/bin/llvm-objdump"
|
|
|
|
"READELF=${llvm}/bin/llvm-readelf"
|
|
|
|
"STRIP=${llvm}/bin/llvm-strip"
|
|
|
|
|
|
|
|
"KCFLAGS=-march=${arch}"
|
|
|
|
];
|
|
|
|
|
|
|
|
structuredExtraConfig =
|
|
|
|
(import ./base.nix args) //
|
|
|
|
(import config args) //
|
|
|
|
lib.optionalAttrs (firmware != [ ]) {
|
|
|
|
EXTRA_FIRMWARE = lib.kernel.freeform (toString firmware);
|
|
|
|
EXTRA_FIRMWARE_DIR = lib.kernel.freeform "${firmwareEnv}/lib/firmware";
|
2024-08-03 10:28:48 +02:00
|
|
|
};
|
2024-08-12 21:12:18 +02:00
|
|
|
|
2024-08-12 22:52:12 +02:00
|
|
|
features = {
|
|
|
|
efiBootStub = true;
|
2024-08-03 10:28:48 +02:00
|
|
|
};
|
2024-08-12 22:52:12 +02:00
|
|
|
|
|
|
|
isHardened = true;
|
|
|
|
};
|
2024-08-12 21:12:18 +02:00
|
|
|
in kernel.overrideAttrs (base: {
|
2024-08-03 10:28:48 +02:00
|
|
|
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
|
|
|
|
'';
|
|
|
|
})
|