71 lines
1.5 KiB
Nix
71 lines
1.5 KiB
Nix
ethercat:
|
|
{
|
|
lib,
|
|
stdenv,
|
|
kernelModuleMakeFlags,
|
|
kernel,
|
|
}:
|
|
let
|
|
# Aside from a generic drivers there are special drivers for specific NICs
|
|
# (for example r8139, r8169, e100, e1000, e1000e) which are only available
|
|
# for these kernel versions
|
|
extraSupportedKernel = lib.elem (lib.versions.majorMinor kernel.version) [
|
|
"5.10"
|
|
"5.14"
|
|
"5.15"
|
|
"6.1"
|
|
"6.4"
|
|
"6.12"
|
|
];
|
|
in
|
|
stdenv.mkDerivation {
|
|
pname = "ethercat";
|
|
version = "${kernel.version}-${ethercat.version}";
|
|
|
|
__structuredAttrs = true;
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
inherit (ethercat) src;
|
|
|
|
nativeBuildInputs = kernel.moduleBuildDependencies ++ ethercat.nativeBuildInputs;
|
|
|
|
configureFlags = [
|
|
"--with-linux-dir=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
|
"--enable-userlib=no"
|
|
"--enable-tool=no"
|
|
"--enable-kernel=yes"
|
|
"--enable-ccat=yes"
|
|
]
|
|
++ lib.optionals extraSupportedKernel [
|
|
"--enable-e100=yes"
|
|
"--enable-e1000=yes"
|
|
"--enable-e1000e=yes"
|
|
"--enable-r8169=yes"
|
|
"--enable-igb=yes"
|
|
]
|
|
++ lib.optionals (extraSupportedKernel && lib.versionAtLeast kernel.version "5.14") [
|
|
"--enable-igc=yes"
|
|
];
|
|
|
|
makeFlags = kernelModuleMakeFlags ++ [
|
|
"INSTALL_MOD_PATH=${placeholder "out"}"
|
|
];
|
|
|
|
buildFlags = [ "modules" ];
|
|
|
|
installTargets = [ "modules_install" ];
|
|
|
|
meta = {
|
|
description = ethercat.meta.description + " - kernel modules";
|
|
|
|
inherit (ethercat.meta)
|
|
homepage
|
|
changelog
|
|
license
|
|
maintainers
|
|
platforms
|
|
;
|
|
};
|
|
}
|