{ lib, stdenv, fetchFromGitHub, kernel, kernelModuleMakeFlags, }: let isKernelRT = (kernel.structuredExtraConfig ? PREEMPT_RT) && (kernel.structuredExtraConfig.PREEMPT_RT == lib.kernel.yes); in stdenv.mkDerivation (finalAttrs: { name = "${finalAttrs.pname}-${finalAttrs.version}-${kernel.version}"; pname = "lkrg"; version = "1.0.0"; src = fetchFromGitHub { owner = "lkrg-org"; repo = "lkrg"; rev = "v${finalAttrs.version}"; hash = "sha256-Eb0+rgbI+gbY1NjVyPLB6kZgDsYoSCxjy162GophiMI="; }; hardeningDisable = [ "pic" ]; nativeBuildInputs = kernel.moduleBuildDependencies; makeFlags = kernelModuleMakeFlags ++ [ "KERNEL=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" ]; enableParallelBuilding = true; dontConfigure = true; prePatch = '' substituteInPlace Makefile --replace "KERNEL := " "KERNEL ?= " ''; installPhase = '' runHook preInstall install -D lkrg.ko $out/lib/modules/${kernel.modDirVersion}/extra/lkrg.ko runHook postInstall ''; meta = { description = "LKRG Linux Kernel module"; longDescription = "LKRG performs runtime integrity checking of the Linux kernel and detection of security vulnerability exploits against the kernel."; homepage = "https://lkrg.org/"; license = lib.licenses.gpl2Only; maintainers = with lib.maintainers; [ chivay ]; platforms = lib.platforms.linux; broken = kernel.kernelOlder "5.10" || isKernelRT; }; })