anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / networking / ids / zeek / default.nix
blob8286c46bcb484ab222df91b77acd958cc348a237
1 { lib
2 , stdenv
3 , callPackage
4 , fetchurl
5 , cmake
6 , flex
7 , bison
8 , openssl
9 , libkqueue
10 , libpcap
11 , zlib
12 , file
13 , curl
14 , libmaxminddb
15 , gperftools
16 , python3
17 , swig
18 , gettext
19 , coreutils
20 , ncurses
23 let
24   broker = callPackage ./broker { };
25   python = python3.withPackages (p: [ p.gitpython p.semantic-version ]);
27 stdenv.mkDerivation rec {
28   pname = "zeek";
29   version = "6.2.1";
31   src = fetchurl {
32     url = "https://download.zeek.org/zeek-${version}.tar.gz";
33     hash = "sha256-ZOOlK9mfZVrfxvgFREgqcRcSs18EMpADD8Y4Ev391Bw=";
34   };
36   strictDeps = true;
38   patches = [
39     ./fix-installation.patch
40   ];
42   nativeBuildInputs = [
43     bison
44     cmake
45     file
46     flex
47     python
48     swig
49   ];
51   buildInputs = [
52     broker
53     curl
54     gperftools
55     libmaxminddb
56     libpcap
57     ncurses
58     openssl
59     zlib
60     python
61   ] ++ lib.optionals stdenv.hostPlatform.isLinux [
62     libkqueue
63   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
64     gettext
65   ];
67   postPatch = ''
68     patchShebangs ./ci/collect-repo-info.py
69     patchShebangs ./auxil/spicy/scripts
70   '';
72   cmakeFlags = [
73     "-DBroker_ROOT=${broker}"
74     "-DENABLE_PERFTOOLS=true"
75     "-DINSTALL_AUX_TOOLS=true"
76     "-DZEEK_ETC_INSTALL_DIR=/etc/zeek"
77     "-DZEEK_LOG_DIR=/var/log/zeek"
78     "-DZEEK_STATE_DIR=/var/lib/zeek"
79     "-DZEEK_SPOOL_DIR=/var/spool/zeek"
80     "-DDISABLE_JAVASCRIPT=ON"
81   ] ++ lib.optionals stdenv.hostPlatform.isLinux [
82     "-DLIBKQUEUE_ROOT_DIR=${libkqueue}"
83   ];
85   env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-faligned-allocation";
87   postInstall = ''
88     for file in $out/share/zeek/base/frameworks/notice/actions/pp-alarms.zeek $out/share/zeek/base/frameworks/notice/main.zeek; do
89       substituteInPlace $file \
90          --replace "/bin/rm" "${coreutils}/bin/rm" \
91          --replace "/bin/cat" "${coreutils}/bin/cat"
92     done
94     for file in $out/share/zeek/policy/misc/trim-trace-file.zeek $out/share/zeek/base/frameworks/logging/postprocessors/scp.zeek $out/share/zeek/base/frameworks/logging/postprocessors/sftp.zeek; do
95       substituteInPlace $file --replace "/bin/rm" "${coreutils}/bin/rm"
96     done
97   '';
99   passthru = {
100     inherit broker;
101   };
103   meta = with lib; {
104     description = "Network analysis framework much different from a typical IDS";
105     homepage = "https://www.zeek.org";
106     changelog = "https://github.com/zeek/zeek/blob/v${version}/CHANGES";
107     license = licenses.bsd3;
108     maintainers = with maintainers; [ pSub tobim ];
109     platforms = platforms.unix;
110   };