Files
cross-kmod-nix/kernel.nix
2026-02-10 13:44:36 +00:00

76 lines
1.1 KiB
Nix

{ pkgs }:
{
url,
rev,
hash,
configGz,
}:
let
kernelSrc = pkgs.fetchgit {
inherit url rev hash;
fetchSubmodules = false;
deepClone = false;
leaveDotGit = false;
postFetch = ''
rm -f $out/.gitmodules
'';
};
stdenv = pkgs.stdenv;
in
stdenv.mkDerivation {
pname = "kernel-env-prepared";
version = "0.01";
src = kernelSrc;
nativeBuildInputs =
with pkgs.buildPackages;
[
bc
bison
flex
openssl
rsync
perl
]
++ [
pkgs.pkgsCross.aarch64-multiplatform.buildPackages.gcc
];
sourceRoot = ".";
setSourceRoot = "sourceRoot=$(echo */)";
env = {
ARCH = "arm64";
CROSS_COMPILE = "aarch64-unknown-linux-gnu-";
KCFLAGS = "-Wno-error";
HOSTCC = "gcc";
};
postPatch = ''
[ -f drivers/Kconfig ] && sed -i '/kernelsu/d' drivers/Kconfig
patchShebangs scripts/
'';
configurePhase = ''
zcat ${configGz} > .config
make olddefconfig
'';
buildPhase = ''
export KCFLAGS="-Wno-error"
make modules_prepare -j$(nproc)
'';
installPhase = ''
mkdir -p $out
cp -r . $out/
'';
dontFixup = true;
}