Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 91 lines 2.0 kB view raw
1{ 2 lib, 3 callPackage, 4 buildGoModule, 5 fetchFromGitHub, 6 withDpi ? true, 7 libpcap, 8 libprotoident, 9 libflowmanager, 10 libtrace, 11 versionCheckHook, 12 nix-update-script, 13}: 14let 15 ndpi = callPackage ./ndpi_4_0.nix { }; 16in 17buildGoModule (finalAttrs: { 18 pname = "netcap"; 19 version = "0.6.11"; 20 21 src = fetchFromGitHub { 22 owner = "dreadl0ck"; 23 repo = "netcap"; 24 tag = "v${finalAttrs.version}"; 25 hash = "sha256-SCBKOIC/s+rfrVWmryp9EBp7ARpZZcxymsnZWtEHrhk="; 26 }; 27 28 vendorHash = "sha256-MvHrJLhcFA0fEgK+YT0rwI6wIwTGMcLWQt6AYkx1eZM="; 29 30 subPackages = [ "cmd" ]; 31 32 buildInputs = [ 33 libpcap 34 ] 35 ++ lib.optionals withDpi [ 36 ndpi 37 libprotoident 38 libflowmanager 39 libtrace 40 ]; 41 42 ldflags = [ 43 "-s -w" 44 ]; 45 46 tags = lib.optionals (!withDpi) [ 47 "nodpi" 48 ]; 49 50 CGO_LDFLAGS = lib.optionalString withDpi '' 51 -L${ndpi}/lib -lndpi 52 -L${libprotoident}/lib -lndpi 53 ''; 54 55 CGO_CFLAGS = lib.optionalString withDpi '' 56 -I${ndpi}/include 57 -I${libprotoident}/include 58 ''; 59 60 postInstall = '' 61 mv $out/bin/cmd $out/bin/net 62 ''; 63 64 checkFlags = 65 let 66 skippedTests = [ 67 # couldn't open packet socket: operation not permitted 68 "TestCaptureLive" 69 # requires local test data 70 "TestCapturePCAP" 71 ]; 72 in 73 [ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ]; 74 75 nativeInstallCheckInputs = [ versionCheckHook ]; 76 versionCheckProgram = "${placeholder "out"}/bin/net"; 77 versionCheckProgramArg = "--version"; 78 doInstallCheck = true; 79 80 passthru.updateScript = nix-update-script { }; 81 82 meta = { 83 description = "Framework for secure and scalable network traffic analysis"; 84 homepage = "https://netcap.io"; 85 downloadPage = "https://github.com/dreadl0ck/netcap"; 86 changelog = "https://github.com/dreadl0ck/netcap/releases/tag/v${finalAttrs.version}"; 87 license = lib.licenses.gpl3Only; 88 maintainers = with lib.maintainers; [ felbinger ]; 89 mainProgram = "net"; 90 }; 91})