diff --git a/pkgs/tools/system/netdata/default.nix b/pkgs/tools/system/netdata/default.nix index 84050ab400dc..c7c7554914c7 100644 --- a/pkgs/tools/system/netdata/default.nix +++ b/pkgs/tools/system/netdata/default.nix @@ -1,36 +1,71 @@ -{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, makeWrapper -, CoreFoundation, IOKit, libossp_uuid -, nixosTests -, bash, curl, jemalloc, json_c, libuv, zlib, libyaml, libelf, libbpf -, libcap, libuuid, lm_sensors, protobuf -, go, buildGoModule, ninja -, withCups ? false, cups -, withDBengine ? true, lz4 -, withIpmi ? (!stdenv.isDarwin), freeipmi -, withNetfilter ? (!stdenv.isDarwin), libmnl, libnetfilter_acct -, withCloud ? false -, withCloudUi ? false -, withConnPubSub ? false, google-cloud-cpp, grpc -, withConnPrometheus ? false, snappy -, withSsl ? true, openssl -, withSystemdJournal ? (!stdenv.isDarwin), systemd -, withDebug ? false -, withEbpf ? false -, withNetworkViewer ? (!stdenv.isDarwin) +{ + lib, + stdenv, + fetchFromGitHub, + bash, + buildGoModule, + cmake, + cups, + curl, + darwin, + freeipmi, + go, + google-cloud-cpp, + grpc, + jemalloc, + json_c, + libbpf, + libcap, + libelf, + libmnl, + libnetfilter_acct, + libossp_uuid, + libuuid, + libuv, + libyaml, + lm_sensors, + lz4, + makeWrapper, + ninja, + nixosTests, + openssl, + overrideSDK, + pkg-config, + protobuf, + snappy, + systemd, + withCloud ? false, + withCloudUi ? false, + withConnPrometheus ? false, + withConnPubSub ? false, + withCups ? false, + withDBengine ? true, + withDebug ? false, + withEbpf ? false, + withIpmi ? (stdenv.isLinux), + withNetfilter ? (stdenv.isLinux), + withNetworkViewer ? (stdenv.isLinux), + withSsl ? true, + withSystemdJournal ? (stdenv.isLinux), + zlib, }: - -stdenv.mkDerivation rec { - version = "1.47.0"; +let + stdenv' = if stdenv.isDarwin then overrideSDK stdenv "11.0" else stdenv; +in +stdenv'.mkDerivation (finalAttrs: { + version = "1.47.1"; pname = "netdata"; src = fetchFromGitHub { owner = "netdata"; repo = "netdata"; - rev = "v${version}"; - hash = if withCloudUi - then "sha256-eMapy4HQaEblDfZt2uVSfBWRlkstX7TxZDBgSv5bW/I=" + rev = "v${finalAttrs.version}"; + hash = + if withCloudUi then + "sha256-/iXmIjWpZ0s/LELZM7rYYQ9cjLNdfdisyOvDyLddSY4=" # we delete the v2 GUI after fetching - else "sha256-Gx7u3Owh/fVAnSw91xfdcmyx4m+bvQAvDaUxzXQ36/0="; + else + "sha256-pAqxxsWYgqbmF6wFBfTCYYc3x/Ufyz2Xs4bwB1ToHjo="; fetchSubmodules = true; # Remove v2 dashboard distributed under NCUL1. Make sure an empty @@ -43,19 +78,53 @@ stdenv.mkDerivation rec { strictDeps = true; - nativeBuildInputs = [ cmake pkg-config makeWrapper go ninja ] - ++ lib.optionals withCups [ cups.dev ]; + nativeBuildInputs = [ + cmake + pkg-config + makeWrapper + go + ninja + ] ++ lib.optionals withCups [ cups.dev ]; # bash is only used to rewrite shebangs - buildInputs = [ bash curl jemalloc json_c libuv zlib libyaml lm_sensors ] - ++ lib.optionals stdenv.isDarwin [ CoreFoundation IOKit libossp_uuid ] - ++ lib.optionals (!stdenv.isDarwin) [ libcap libuuid ] + buildInputs = + [ + bash + curl + jemalloc + json_c + libuv + zlib + libyaml + ] + ++ lib.optionals stdenv.isDarwin ( + with darwin.apple_sdk.frameworks; + [ + CoreFoundation + IOKit + libossp_uuid + ] + ) + ++ lib.optionals (stdenv.isLinux) [ + libcap + libuuid + lm_sensors + ] ++ lib.optionals withCups [ cups ] ++ lib.optionals withDBengine [ lz4 ] ++ lib.optionals withIpmi [ freeipmi ] - ++ lib.optionals withNetfilter [ libmnl libnetfilter_acct ] - ++ lib.optionals withConnPubSub [ google-cloud-cpp grpc ] + ++ lib.optionals withNetfilter [ + libmnl + libnetfilter_acct + ] + ++ lib.optionals withConnPubSub [ + google-cloud-cpp + grpc + ] ++ lib.optionals withConnPrometheus [ snappy ] - ++ lib.optionals withEbpf [ libelf libbpf ] + ++ lib.optionals withEbpf [ + libelf + libbpf + ] ++ lib.optionals (withCloud || withConnPrometheus) [ protobuf ] ++ lib.optionals withSystemdJournal [ systemd ] ++ lib.optionals withSsl [ openssl ]; @@ -79,40 +148,42 @@ stdenv.mkDerivation rec { donStrip = withDebug; env.NIX_CFLAGS_COMPILE = lib.optionalString withDebug "-O1 -ggdb -DNETDATA_INTERNAL_CHECKS=1"; - postInstall = '' - # Relocate one folder above. - mv $out/usr/* $out/ - '' + lib.optionalString (!stdenv.isDarwin) '' - # rename this plugin so netdata will look for setuid wrapper - mv $out/libexec/netdata/plugins.d/apps.plugin \ - $out/libexec/netdata/plugins.d/apps.plugin.org - mv $out/libexec/netdata/plugins.d/cgroup-network \ - $out/libexec/netdata/plugins.d/cgroup-network.org - mv $out/libexec/netdata/plugins.d/perf.plugin \ - $out/libexec/netdata/plugins.d/perf.plugin.org - mv $out/libexec/netdata/plugins.d/slabinfo.plugin \ - $out/libexec/netdata/plugins.d/slabinfo.plugin.org - mv $out/libexec/netdata/plugins.d/debugfs.plugin \ - $out/libexec/netdata/plugins.d/debugfs.plugin.org - ${lib.optionalString withSystemdJournal '' - mv $out/libexec/netdata/plugins.d/systemd-journal.plugin \ - $out/libexec/netdata/plugins.d/systemd-journal.plugin.org - ''} - ${lib.optionalString withIpmi '' - mv $out/libexec/netdata/plugins.d/freeipmi.plugin \ - $out/libexec/netdata/plugins.d/freeipmi.plugin.org - ''} - ${lib.optionalString withNetworkViewer '' - mv $out/libexec/netdata/plugins.d/network-viewer.plugin \ - $out/libexec/netdata/plugins.d/network-viewer.plugin.org - ''} - ${lib.optionalString (!withCloudUi) '' - rm -rf $out/share/netdata/web/index.html - cp $out/share/netdata/web/v1/index.html $out/share/netdata/web/index.html - ''} - ''; + postInstall = + '' + # Relocate one folder above. + mv $out/usr/* $out/ + '' + + lib.optionalString (stdenv.isLinux) '' + # rename this plugin so netdata will look for setuid wrapper + mv $out/libexec/netdata/plugins.d/apps.plugin \ + $out/libexec/netdata/plugins.d/apps.plugin.org + mv $out/libexec/netdata/plugins.d/cgroup-network \ + $out/libexec/netdata/plugins.d/cgroup-network.org + mv $out/libexec/netdata/plugins.d/perf.plugin \ + $out/libexec/netdata/plugins.d/perf.plugin.org + mv $out/libexec/netdata/plugins.d/slabinfo.plugin \ + $out/libexec/netdata/plugins.d/slabinfo.plugin.org + mv $out/libexec/netdata/plugins.d/debugfs.plugin \ + $out/libexec/netdata/plugins.d/debugfs.plugin.org + ${lib.optionalString withSystemdJournal '' + mv $out/libexec/netdata/plugins.d/systemd-journal.plugin \ + $out/libexec/netdata/plugins.d/systemd-journal.plugin.org + ''} + ${lib.optionalString withIpmi '' + mv $out/libexec/netdata/plugins.d/freeipmi.plugin \ + $out/libexec/netdata/plugins.d/freeipmi.plugin.org + ''} + ${lib.optionalString withNetworkViewer '' + mv $out/libexec/netdata/plugins.d/network-viewer.plugin \ + $out/libexec/netdata/plugins.d/network-viewer.plugin.org + ''} + ${lib.optionalString (!withCloudUi) '' + rm -rf $out/share/netdata/web/index.html + cp $out/share/netdata/web/v1/index.html $out/share/netdata/web/index.html + ''} + ''; - preConfigure = lib.optionalString (!stdenv.isDarwin) '' + preConfigure = '' export GOCACHE=$TMPDIR/go-cache export GOPATH=$TMPDIR/go export GOSUMDB=off @@ -120,7 +191,7 @@ stdenv.mkDerivation rec { substituteInPlace packaging/cmake/Modules/NetdataGoTools.cmake \ --replace-fail \ 'GOPROXY=https://proxy.golang.org' \ - 'GOPROXY=file://${passthru.netdata-go-modules}' + 'GOPROXY=file://${finalAttrs.passthru.netdata-go-modules}' # Prevent the path to be caught into the Nix store path. substituteInPlace CMakeLists.txt \ @@ -174,37 +245,41 @@ stdenv.mkDerivation rec { enableParallelBuild = true; passthru = rec { - netdata-go-modules = (buildGoModule { - pname = "netdata-go-plugins"; - inherit version src; + netdata-go-modules = + (buildGoModule { + pname = "netdata-go-plugins"; + inherit (finalAttrs) version src; - sourceRoot = "${src.name}/src/go/plugin/go.d"; + sourceRoot = "${finalAttrs.src.name}/src/go/plugin/go.d"; - vendorHash = "sha256-NZ1tg+lvXNgypqmjjb5f7dHH6DIA9VOa4PMM4eq11n0="; - doCheck = false; - proxyVendor = true; + vendorHash = "sha256-NZ1tg+lvXNgypqmjjb5f7dHH6DIA9VOa4PMM4eq11n0="; + doCheck = false; + proxyVendor = true; - ldflags = [ "-s" "-w" "-X main.version=${version}" ]; + ldflags = [ + "-s" + "-w" + "-X main.version=${finalAttrs.version}" + ]; - passthru.tests = tests; - meta = meta // { - description = "Netdata orchestrator for data collection modules written in Go"; - mainProgram = "godplugin"; - license = lib.licenses.gpl3Only; - }; - }).goModules; + passthru.tests = tests; + meta = finalAttrs.meta // { + description = "Netdata orchestrator for data collection modules written in Go"; + mainProgram = "godplugin"; + license = lib.licenses.gpl3Only; + }; + }).goModules; inherit withIpmi withNetworkViewer; tests.netdata = nixosTests.netdata; }; meta = with lib; { - broken = stdenv.isDarwin || stdenv.buildPlatform != stdenv.hostPlatform || withEbpf; + broken = stdenv.buildPlatform != stdenv.hostPlatform || withEbpf; description = "Real-time performance monitoring tool"; homepage = "https://www.netdata.cloud/"; changelog = "https://github.com/netdata/netdata/releases/tag/v${version}"; - license = [ licenses.gpl3Plus ] - ++ lib.optionals (withCloudUi) [ licenses.ncul1 ]; + license = [ licenses.gpl3Plus ] ++ lib.optionals (withCloudUi) [ licenses.ncul1 ]; platforms = platforms.unix; maintainers = [ ]; }; -} +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f9cb26f34e8f..e9736d1ec8d3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9664,7 +9664,6 @@ with pkgs; nerdctl = callPackage ../applications/networking/cluster/nerdctl { }; netdata = callPackage ../tools/system/netdata { - inherit (darwin.apple_sdk.frameworks) CoreFoundation IOKit; protobuf = protobuf_21; }; netdataCloud = netdata.override {