1{ lib, stdenv, fetchFromGitHub, cmake, kernel, installShellFiles
2, luajit, ncurses, perl, jsoncpp, libb64, openssl, curl, jq, gcc, elfutils, tbb, protobuf, grpc
3}:
4
5with lib;
6stdenv.mkDerivation rec {
7 pname = "sysdig";
8 version = "0.27.1";
9
10 src = fetchFromGitHub {
11 owner = "draios";
12 repo = "sysdig";
13 rev = version;
14 sha256 = "sha256-lYjMvxMIReANNwMr62u881Nugrs9piOaN3EmrvGzRns=";
15 };
16
17 nativeBuildInputs = [ cmake perl installShellFiles ];
18 buildInputs = [
19 luajit ncurses jsoncpp libb64 openssl curl jq gcc elfutils tbb protobuf grpc
20 ] ++ optionals (kernel != null) kernel.moduleBuildDependencies;
21
22 hardeningDisable = [ "pic" ];
23
24 cmakeFlags = [
25 "-DUSE_BUNDLED_DEPS=OFF"
26 "-DSYSDIG_VERSION=${version}"
27 "-DCREATE_TEST_TARGETS=OFF"
28 ] ++ optional (kernel == null) "-DBUILD_DRIVER=OFF";
29
30 # needed since luajit-2.1.0-beta3
31 NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg -DluaL_getn(L,i)=((int)lua_objlen(L,i))";
32
33 preConfigure = ''
34 cmakeFlagsArray+=(-DCMAKE_EXE_LINKER_FLAGS="-ltbb -lcurl -labsl_synchronization")
35
36 export INSTALL_MOD_PATH="$out"
37 '' + optionalString (kernel != null) ''
38 export KERNELDIR="${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
39 '';
40
41 postInstall =
42 ''
43 # Fix the bash completion location
44 installShellCompletion --bash $out/etc/bash_completion.d/sysdig
45 rm $out/etc/bash_completion.d/sysdig
46 rmdir $out/etc/bash_completion.d
47 rmdir $out/etc
48 ''
49 + optionalString (kernel != null) ''
50 make install_driver
51 kernel_dev=${kernel.dev}
52 kernel_dev=''${kernel_dev#/nix/store/}
53 kernel_dev=''${kernel_dev%%-linux*dev*}
54 if test -f "$out/lib/modules/${kernel.modDirVersion}/extra/sysdig-probe.ko"; then
55 sed -i "s#$kernel_dev#................................#g" $out/lib/modules/${kernel.modDirVersion}/extra/sysdig-probe.ko
56 else
57 xz -d $out/lib/modules/${kernel.modDirVersion}/extra/sysdig-probe.ko.xz
58 sed -i "s#$kernel_dev#................................#g" $out/lib/modules/${kernel.modDirVersion}/extra/sysdig-probe.ko
59 xz $out/lib/modules/${kernel.modDirVersion}/extra/sysdig-probe.ko
60 fi
61 '';
62
63
64 meta = {
65 description = "A tracepoint-based system tracing tool for Linux (with clients for other OSes)";
66 license = with licenses; [ asl20 gpl2 mit ];
67 maintainers = [maintainers.raskin];
68 platforms = ["x86_64-linux"] ++ platforms.darwin;
69 broken = kernel != null && versionOlder kernel.version "4.14";
70 homepage = "https://sysdig.com/opensource/";
71 downloadPage = "https://github.com/draios/sysdig/releases";
72 };
73}