lang-bootstrap/06/using-nix/2a6-linux-headers.nix

40 lines
1.2 KiB
Nix
Raw Normal View History

2025-04-18 12:41:04 +01:00
{ fetchurl, mkDerivationStage2, stage1, static-gnumake, static-binutils, gnugcc10 }:
let
source-tarball-linux = fetchurl {
# local = /downloads/linux-6.4.12.tar.xz;
url = "https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.4.12.tar.xz";
sha256 = "cca91be956fe081f8f6da72034cded96fe35a50be4bfb7e103e354aa2159a674";
};
in
mkDerivationStage2 {
name = "bootstrap-2a6-linux-headers";
buildInputPaths = [
"${stage1.protobusybox}/bin"
"${static-gnumake}/bin"
"${static-binutils}/bin"
"${gnugcc10}/bin"
];
script = ''
# unpack:
mkdir build-dir; cd build-dir
unpack ${source-tarball-linux} \
linux-6.4.12/Makefile \
linux-6.4.12/arch/x86 \
linux-6.4.12/include \
linux-6.4.12/scripts \
linux-6.4.12/tools
# build:
make -j $NPROC \
CONFIG_SHELL=${stage1.protobusybox}/bin/ash \
CC=gcc HOSTCC=gcc ARCH=x86_64 \
headers
# install:
find usr/include -name '.*' | xargs rm
mkdir -p $out
cp -rv usr/include $out/
# check for build path leaks:
( ! grep -rF $(pwd) $out )
'';
}