1{ lib, stdenv, fetchFromGitHub, kernel }:
2
3stdenv.mkDerivation rec {
4 version = "2.7.1";
5 name = "ena-${version}-${kernel.version}";
6
7 src = fetchFromGitHub {
8 owner = "amzn";
9 repo = "amzn-drivers";
10 rev = "ena_linux_${version}";
11 sha256 = "sha256-JkGzmmsAmLvL9e+bg58H79GNHgsqydK/79VoWEq5/Mc=";
12 };
13
14 hardeningDisable = [ "pic" ];
15
16 nativeBuildInputs = kernel.moduleBuildDependencies;
17 makeFlags = kernel.makeFlags;
18
19 # linux 3.12
20 NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration";
21
22 configurePhase = ''
23 runHook preConfigure
24 cd kernel/linux/ena
25 substituteInPlace Makefile --replace '/lib/modules/$(BUILD_KERNEL)' ${kernel.dev}/lib/modules/${kernel.modDirVersion}
26 runHook postConfigure
27 '';
28
29 installPhase = ''
30 runHook preInstall
31 $STRIP -S ena.ko
32 dest=$out/lib/modules/${kernel.modDirVersion}/misc
33 mkdir -p $dest
34 cp ena.ko $dest/
35 xz $dest/ena.ko
36 runHook postInstall
37 '';
38
39 meta = with lib; {
40 description = "Amazon Elastic Network Adapter (ENA) driver for Linux";
41 homepage = "https://github.com/amzn/amzn-drivers";
42 license = licenses.gpl2Only;
43 maintainers = [ maintainers.eelco ];
44 platforms = platforms.linux;
45 broken = kernel.kernelAtLeast "5.17";
46 };
47}