1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 gitUpdater,
6 kernel,
7 kernelModuleMakeFlags,
8}:
9let
10 rev-prefix = "ena_linux_";
11 version = "2.15.0";
12in
13stdenv.mkDerivation {
14 inherit version;
15 name = "ena-${version}-${kernel.version}";
16
17 src = fetchFromGitHub {
18 owner = "amzn";
19 repo = "amzn-drivers";
20 rev = "${rev-prefix}${version}";
21 hash = "sha256-AwA7YduFACxmDk4+K/ghp39tdkjewgk4NLktnrSpK5k=";
22 };
23
24 hardeningDisable = [ "pic" ];
25
26 nativeBuildInputs = kernel.moduleBuildDependencies;
27 makeFlags = kernelModuleMakeFlags;
28
29 env.KERNEL_BUILD_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
30
31 configurePhase = ''
32 runHook preConfigure
33 cd kernel/linux/ena
34 export ENA_PHC_INCLUDE=1
35 runHook postConfigure
36 '';
37
38 installPhase = ''
39 runHook preInstall
40 $STRIP -S ena.ko
41 dest=$out/lib/modules/${kernel.modDirVersion}/misc
42 mkdir -p $dest
43 cp ena.ko $dest/
44 xz $dest/ena.ko
45 runHook postInstall
46 '';
47
48 passthru.updateScript = gitUpdater {
49 inherit rev-prefix;
50 };
51
52 meta = with lib; {
53 description = "Amazon Elastic Network Adapter (ENA) driver for Linux";
54 homepage = "https://github.com/amzn/amzn-drivers";
55 license = licenses.gpl2Only;
56 maintainers = with maintainers; [
57 sielicki
58 arianvp
59 ];
60 platforms = platforms.linux;
61 };
62}