biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / networking / netsniff-ng / default.nix
bloba6bf4383b31785e0bda13c1168f4026027602445
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , makeWrapper
5 , bison
6 , flex
7 , geoip
8 , geolite-legacy
9 , libcli
10 , libnet
11 , libnetfilter_conntrack
12 , libnl
13 , libpcap
14 , libsodium
15 , liburcu
16 , ncurses
17 , pkg-config
18 , gnumake42
19 , zlib
22 stdenv.mkDerivation rec {
23   pname = "netsniff-ng";
24   version = "0.6.8";
26   src = fetchFromGitHub {
27     repo = pname;
28     owner = pname;
29     rev = "v${version}";
30     sha256 = "10ih8amaqspy0zwg7hqvypa1v7ixpjl0n608cyfgyfzffp73lbqf";
31   };
33   nativeBuildInputs = [
34     bison
35     flex
36     makeWrapper
37     pkg-config
38     gnumake42 # fails with make 4.4
39   ];
41   buildInputs = [
42     geoip
43     geolite-legacy
44     libcli
45     libnet
46     libnl
47     libnetfilter_conntrack
48     libpcap
49     libsodium
50     liburcu
51     ncurses
52     zlib
53   ];
55   # ./configure is not autoGNU but some home-brewn magic
56   configurePhase = ''
57     patchShebangs configure
58     substituteInPlace configure --replace "which" "command -v"
59     NACL_INC_DIR=${libsodium.dev}/include/sodium NACL_LIB=sodium ./configure
60   '';
62   enableParallelBuilding = true;
64   # All files installed to /etc are just static data that can go in the store
65   makeFlags = [ "PREFIX=$(out)" "ETCDIR=$(out)/etc" ];
67   postInstall = ''
68     # trafgen and bpfc can call out to cpp to process config files.
69     wrapProgram "$out/sbin/trafgen" --prefix PATH ":" "${stdenv.cc}/bin"
70     wrapProgram "$out/sbin/bpfc" --prefix PATH ":" "${stdenv.cc}/bin"
72     ln -sv ${geolite-legacy}/share/GeoIP/GeoIP.dat $out/etc/netsniff-ng/country4.dat
73     ln -sv ${geolite-legacy}/share/GeoIP/GeoIPv6.dat $out/etc/netsniff-ng/country6.dat
74     ln -sv ${geolite-legacy}/share/GeoIP/GeoIPCity.dat $out/etc/netsniff-ng/city4.dat
75     ln -sv ${geolite-legacy}/share/GeoIP/GeoIPCityv6.dat $out/etc/netsniff-ng/city6.dat
76     ln -sv ${geolite-legacy}/share/GeoIP/GeoIPASNum.dat $out/etc/netsniff-ng/asname4.dat
77     ln -sv ${geolite-legacy}/share/GeoIP/GeoIPASNumv6.dat $out/etc/netsniff-ng/asname6.dat
78     rm -v $out/etc/netsniff-ng/geoip.conf # updating databases after installation is impossible
79   '';
81   meta = with lib; {
82     description = "Swiss army knife for daily Linux network plumbing";
83     longDescription = ''
84       netsniff-ng is a free Linux networking toolkit. Its gain of performance
85       is reached by zero-copy mechanisms, so that on packet reception and
86       transmission the kernel does not need to copy packets from kernel space
87       to user space and vice versa. The toolkit can be used for network
88       development and analysis, debugging, auditing or network reconnaissance.
89     '';
90     homepage = "http://netsniff-ng.org/";
91     license = with licenses; [ gpl2Only ];
92     platforms = platforms.linux;
93   };