From 56ac489c8750450a16bc500972ac4e727b905acd Mon Sep 17 00:00:00 2001 From: Ingo Reitz <9l@9lo.re> Date: Wed, 20 May 2026 04:13:13 +0200 Subject: [PATCH 1/2] ethercat: add myself as maintainer, fix license(s) (cherry picked from commit 7c69005b703555af1e42535b350c40f7c9d7daea) --- pkgs/by-name/et/ethercat/package.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/et/ethercat/package.nix b/pkgs/by-name/et/ethercat/package.nix index b0734d3a7745..cb7a1167e6ba 100644 --- a/pkgs/by-name/et/ethercat/package.nix +++ b/pkgs/by-name/et/ethercat/package.nix @@ -35,8 +35,14 @@ stdenv.mkDerivation (finalAttrs: { description = "IgH EtherCAT Master for Linux"; homepage = "https://etherlab.org/ethercat"; changelog = "https://gitlab.com/etherlab.org/ethercat/-/blob/${finalAttrs.version}/NEWS"; - license = lib.licenses.gpl2Plus; - maintainers = with lib.maintainers; [ stv0g ]; + license = with lib.licenses; [ + gpl2Only + lgpl21Only + ]; + maintainers = with lib.maintainers; [ + ninelore + stv0g + ]; platforms = [ "x86_64-linux" ]; }; }) From 5e8242f9a85c25c61754674dcdc6f7f77c809205 Mon Sep 17 00:00:00 2001 From: Ingo Reitz <9l@9lo.re> Date: Wed, 20 May 2026 04:20:34 +0200 Subject: [PATCH 2/2] ethercat: add kernel module (cherry picked from commit af49b2a0b0134dce99c92d28b9b76bbe04ec0c86) --- pkgs/by-name/et/ethercat/kernel-module.nix | 70 ++++++++++++++++++++++ pkgs/by-name/et/ethercat/package.nix | 5 +- pkgs/top-level/linux-kernels.nix | 2 + 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 pkgs/by-name/et/ethercat/kernel-module.nix diff --git a/pkgs/by-name/et/ethercat/kernel-module.nix b/pkgs/by-name/et/ethercat/kernel-module.nix new file mode 100644 index 000000000000..8586e273ae02 --- /dev/null +++ b/pkgs/by-name/et/ethercat/kernel-module.nix @@ -0,0 +1,70 @@ +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 + ; + }; +} diff --git a/pkgs/by-name/et/ethercat/package.nix b/pkgs/by-name/et/ethercat/package.nix index cb7a1167e6ba..b87dc7c2224e 100644 --- a/pkgs/by-name/et/ethercat/package.nix +++ b/pkgs/by-name/et/ethercat/package.nix @@ -29,7 +29,10 @@ stdenv.mkDerivation (finalAttrs: { "--enable-kernel=no" ]; - passthru.updateScript = gitUpdater { }; + passthru = { + kernelModule = import ./kernel-module.nix finalAttrs.finalPackage; + updateScript = gitUpdater { }; + }; meta = { description = "IgH EtherCAT Master for Linux"; diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index fe8ebd43504f..20c211fad60a 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -332,6 +332,8 @@ in inherit kernel; }; + ethercat = callPackage pkgs.ethercat.kernelModule { }; + evdi = callPackage ../os-specific/linux/evdi { }; fanout = callPackage ../os-specific/linux/fanout { };