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