at 22.05-pre 73 lines 2.6 kB view raw
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}