at 23.05-pre 115 lines 3.7 kB view raw
1{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, kernel, installShellFiles, pkg-config 2, luajit, ncurses, perl, jsoncpp, libb64, openssl, curl, jq, gcc, elfutils, tbb, protobuf, grpc 3, libyamlcpp, nlohmann_json 4}: 5 6with lib; 7let 8 # Compare with https://github.com/draios/sysdig/blob/dev/cmake/modules/falcosecurity-libs.cmake 9 libsRev = "e5c53d648f3c4694385bbe488e7d47eaa36c229a"; 10 libsSha256 = "sha256-pG10y5PpDqaF/cq8oAvax5B/ls2UTRQd7tCfBjWVf0U="; 11 12 # Compare with https://github.com/falcosecurity/libs/blob/master/cmake/modules/valijson.cmake#L17 13 valijson = fetchFromGitHub { 14 owner = "tristanpenman"; 15 repo = "valijson"; 16 rev = "v0.6"; 17 sha256 = "sha256-ZD19Q2MxMQd3yEKbY90GFCrerie5/jzgO8do4JQDoKM="; 18 }; 19 20in 21stdenv.mkDerivation rec { 22 pname = "sysdig"; 23 version = "0.29.3"; 24 25 src = fetchFromGitHub { 26 owner = "draios"; 27 repo = "sysdig"; 28 rev = version; 29 sha256 = "sha256-dMLeroOd9CgvmgQdPfX8oBxQSyksZi/hP4vO03JhlF0="; 30 }; 31 32 nativeBuildInputs = [ cmake perl installShellFiles pkg-config ]; 33 buildInputs = [ 34 luajit 35 ncurses 36 libb64 37 openssl 38 curl 39 jq 40 gcc 41 elfutils 42 tbb 43 protobuf 44 grpc 45 libyamlcpp 46 jsoncpp 47 nlohmann_json 48 ] ++ optionals (kernel != null) kernel.moduleBuildDependencies; 49 50 hardeningDisable = [ "pic" ]; 51 52 postUnpack = '' 53 cp -r ${fetchFromGitHub { 54 owner = "falcosecurity"; 55 repo = "libs"; 56 rev = libsRev; 57 sha256 = libsSha256; 58 }} libs 59 chmod -R +w libs 60 cmakeFlagsArray+=("-DFALCOSECURITY_LIBS_SOURCE_DIR=$(pwd)/libs" "-DVALIJSON_INCLUDE=${valijson}/include") 61 ''; 62 63 cmakeFlags = [ 64 "-DUSE_BUNDLED_DEPS=OFF" 65 "-DSYSDIG_VERSION=${version}" 66 "-DCREATE_TEST_TARGETS=OFF" 67 ] ++ optional (kernel == null) "-DBUILD_DRIVER=OFF"; 68 69 # needed since luajit-2.1.0-beta3 70 NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg -DluaL_getn(L,i)=((int)lua_objlen(L,i))"; 71 72 preConfigure = '' 73 if ! grep -q "${libsRev}" cmake/modules/falcosecurity-libs.cmake; then 74 echo "falcosecurity-libs checksum needs to be updated!" 75 exit 1 76 fi 77 cmakeFlagsArray+=(-DCMAKE_EXE_LINKER_FLAGS="-ltbb -lcurl -labsl_synchronization") 78 '' + optionalString (kernel != null) '' 79 export INSTALL_MOD_PATH="$out" 80 export KERNELDIR="${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" 81 ''; 82 83 postInstall = 84 '' 85 # Fix the bash completion location 86 installShellCompletion --bash $out/etc/bash_completion.d/sysdig 87 rm $out/etc/bash_completion.d/sysdig 88 rmdir $out/etc/bash_completion.d 89 rmdir $out/etc 90 '' 91 + optionalString (kernel != null) '' 92 make install_driver 93 kernel_dev=${kernel.dev} 94 kernel_dev=''${kernel_dev#/nix/store/} 95 kernel_dev=''${kernel_dev%%-linux*dev*} 96 if test -f "$out/lib/modules/${kernel.modDirVersion}/extra/scap.ko"; then 97 sed -i "s#$kernel_dev#................................#g" $out/lib/modules/${kernel.modDirVersion}/extra/scap.ko 98 else 99 xz -d $out/lib/modules/${kernel.modDirVersion}/extra/scap.ko.xz 100 sed -i "s#$kernel_dev#................................#g" $out/lib/modules/${kernel.modDirVersion}/extra/scap.ko 101 xz $out/lib/modules/${kernel.modDirVersion}/extra/scap.ko 102 fi 103 ''; 104 105 106 meta = { 107 description = "A tracepoint-based system tracing tool for Linux (with clients for other OSes)"; 108 license = with licenses; [ asl20 gpl2 mit ]; 109 maintainers = [maintainers.raskin]; 110 platforms = ["x86_64-linux"] ++ platforms.darwin; 111 broken = kernel != null && versionOlder kernel.version "4.14"; 112 homepage = "https://sysdig.com/opensource/"; 113 downloadPage = "https://github.com/draios/sysdig/releases"; 114 }; 115}