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