python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / tools / security / tracee / default.nix
blobbb4b558fc68553202963a554f9c414160bb9a22a
1 { lib
2 , buildGoModule
3 , fetchFromGitHub
5 , llvmPackages_13
6 , pkg-config
8 , zlib
9 , elfutils
10 , libbpf
12 , nixosTests
13 , testers
14 , tracee
17 let
18   inherit (llvmPackages_13) clang;
20 buildGoModule rec {
21   pname = "tracee";
22   version = "0.9.2";
24   src = fetchFromGitHub {
25     owner = "aquasecurity";
26     repo = pname;
27     rev = "v${version}";
28     sha256 = "sha256-w/x7KhopkADKvpDc5TE5Kf34pRY6HP3kX1Lqujnl0b8=";
29   };
30   vendorSha256 = "sha256-5RXNRNoMydFcemNGgyfqcUPtfMVgMYdiyWo/sZi8GQw=";
32   patches = [
33     ./use-our-libbpf.patch
34   ];
36   enableParallelBuilding = true;
37   # needed to build bpf libs
38   hardeningDisable = [ "stackprotector" ];
40   nativeBuildInputs = [ pkg-config clang ];
41   buildInputs = [ elfutils libbpf zlib ];
43   makeFlags = [
44     "VERSION=v${version}"
45     "GO_DEBUG_FLAG=-s -w"
46     # don't actually need git but the Makefile checks for it
47     "CMD_GIT=echo"
48   ];
50   buildPhase = ''
51     runHook preBuild
52     mkdir -p ./dist
53     make $makeFlags ''${enableParallelBuilding:+-j$NIX_BUILD_CORES} bpf-core all
54     runHook postBuild
55   '';
57   # tests require a separate go module
58   # integration tests are ran within a nixos vm
59   # see passthru.tests.integration
60   doCheck = false;
62   installPhase = ''
63     runHook preInstall
65     mkdir -p $out/{bin,share/tracee}
67     cp ./dist/tracee-ebpf $out/bin
68     cp ./dist/tracee-rules $out/bin
70     cp -r ./dist/rules $out/share/tracee/
71     cp -r ./cmd/tracee-rules/templates $out/share/tracee/
73     runHook postInstall
74   '';
76   doInstallCheck = true;
77   installCheckPhase = ''
78     runHook preInstallCheck
80     $out/bin/tracee-ebpf --help
81     $out/bin/tracee-ebpf --version | grep "v${version}"
83     $out/bin/tracee-rules --help
85     runHook postInstallCheck
86   '';
88   passthru.tests = {
89     integration = nixosTests.tracee;
90     version = testers.testVersion {
91       package = tracee;
92       version = "v${version}";
93       command = "tracee-ebpf --version";
94     };
95   };
97   meta = with lib; {
98     homepage = "https://aquasecurity.github.io/tracee/latest/";
99     changelog = "https://github.com/aquasecurity/tracee/releases/tag/v${version}";
100     description = "Linux Runtime Security and Forensics using eBPF";
101     longDescription = ''
102       Tracee is a Runtime Security and forensics tool for Linux. It is using
103       Linux eBPF technology to trace your system and applications at runtime,
104       and analyze collected events to detect suspicious behavioral patterns. It
105       is delivered as a Docker image that monitors the OS and detects suspicious
106       behavior based on a pre-defined set of behavioral patterns.
107     '';
108     license = licenses.asl20;
109     maintainers = with maintainers; [ jk ];
110     platforms = [ "x86_64-linux" ];
111   };