Files
2025-11-07 17:00:53 -05:00

67 lines
1.8 KiB
Nix

{
lib,
stdenv,
fetchurl,
fetchpatch,
kernel,
kernelModuleMakeFlags,
kmod,
zlib,
}:
let
version = "3.2.2";
in
stdenv.mkDerivation {
pname = "netatop";
inherit version;
name = "netatop-${kernel.version}-${version}";
src = fetchurl {
url = "https://www.atoptool.nl/download/netatop-${version}.tar.gz";
hash = "sha256-UIqJd809HN1nWHoTwl46QUZHtI+S0c44/BOLWRSuo/Y=";
};
nativeBuildInputs = kernel.moduleBuildDependencies;
buildInputs = [
kmod
zlib
];
hardeningDisable = [ "pic" ];
patches = [
# fix paths in netatop.service
./fix-paths.patch
# fix install paths and install the .ko instead of trying to invoke dkms
./fix-makefile-install.patch
# replace init_module as needed by Linux 6.15 and above (backwards compatible)
(fetchpatch {
url = "https://aur.archlinux.org/cgit/aur.git/plain/netatop_kernel_6.15.patch?h=netatop-dkms&id=e5da6fa4fee5499c3e437cdd34281dd2b200508f";
hash = "sha256-JyNQNyDJQkM/hLpb/hp3Sw2tMA8XnYogduGDFqTQ3nQ=";
})
];
preConfigure = ''
patchShebangs mkversion
kmod=${kmod} substituteAllInPlace netatop.service
'';
makeFlags = kernelModuleMakeFlags ++ [
"KERNDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"KMODDIRVERSION=${kernel.modDirVersion}"
# netatop builds both the module and daemon at once, and the daemon needs a wrapped cc to build
# pkgs/os-specific/linux/kernel/common-flags.nix unwraps the cc for kernel build, but we need the wrapped one
"CC=${stdenv.cc}/bin/cc"
];
meta = {
description = "Network monitoring module for atop";
mainProgram = "netatopd";
homepage = "https://www.atoptool.nl/downloadnetatop.php";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
maintainers = [ ];
};
}