netdata: 2.6.3 -> 2.8.0 (#446721)
This commit is contained in:
@@ -11,13 +11,14 @@ let
|
||||
mkdir -p $out/libexec/netdata/plugins.d
|
||||
ln -s /run/wrappers/bin/apps.plugin $out/libexec/netdata/plugins.d/apps.plugin
|
||||
ln -s /run/wrappers/bin/cgroup-network $out/libexec/netdata/plugins.d/cgroup-network
|
||||
ln -s /run/wrappers/bin/perf.plugin $out/libexec/netdata/plugins.d/perf.plugin
|
||||
ln -s /run/wrappers/bin/slabinfo.plugin $out/libexec/netdata/plugins.d/slabinfo.plugin
|
||||
ln -s /run/wrappers/bin/debugfs.plugin $out/libexec/netdata/plugins.d/debugfs.plugin
|
||||
ln -s /run/wrappers/bin/freeipmi.plugin $out/libexec/netdata/plugins.d/freeipmi.plugin
|
||||
ln -s /run/wrappers/bin/systemd-journal.plugin $out/libexec/netdata/plugins.d/systemd-journal.plugin
|
||||
ln -s /run/wrappers/bin/logs-management.plugin $out/libexec/netdata/plugins.d/logs-management.plugin
|
||||
ln -s /run/wrappers/bin/network-viewer.plugin $out/libexec/netdata/plugins.d/network-viewer.plugin
|
||||
ln -s /run/wrappers/bin/debugfs.plugin $out/libexec/netdata/plugins.d/debugfs.plugin
|
||||
ln -s /run/wrappers/bin/otel-plugin $out/libexec/netdata/plugins.d/otel-plugin
|
||||
ln -s /run/wrappers/bin/perf.plugin $out/libexec/netdata/plugins.d/perf.plugin
|
||||
ln -s /run/wrappers/bin/slabinfo.plugin $out/libexec/netdata/plugins.d/slabinfo.plugin
|
||||
ln -s /run/wrappers/bin/systemd-journal.plugin $out/libexec/netdata/plugins.d/systemd-journal.plugin
|
||||
'';
|
||||
|
||||
plugins = [
|
||||
@@ -452,7 +453,6 @@ in
|
||||
group = cfg.group;
|
||||
permissions = "u+rx,g+x,o-rwx";
|
||||
};
|
||||
|
||||
}
|
||||
// lib.optionalAttrs (cfg.package.withIpmi) {
|
||||
"freeipmi.plugin" = {
|
||||
@@ -481,6 +481,15 @@ in
|
||||
permissions = "u+rx,g+x,o-rwx";
|
||||
};
|
||||
}
|
||||
// lib.optionalAttrs (cfg.package.withOtel) {
|
||||
"otel-plugin" = {
|
||||
source = "${cfg.package}/libexec/netdata/plugins.d/otel-plugin.org";
|
||||
setuid = true;
|
||||
owner = "root";
|
||||
group = cfg.group;
|
||||
permissions = "u+rx,g+x,o-rwx";
|
||||
};
|
||||
}
|
||||
// lib.optionalAttrs (cfg.package.withSystemdJournal) {
|
||||
"systemd-journal.plugin" = {
|
||||
source = "${cfg.package}/libexec/netdata/plugins.d/systemd-journal.plugin.org";
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
bash,
|
||||
bison,
|
||||
buildGoModule,
|
||||
cargo,
|
||||
cmake,
|
||||
corrosion,
|
||||
cups,
|
||||
curl,
|
||||
dlib,
|
||||
@@ -35,6 +37,8 @@
|
||||
pkg-config,
|
||||
protobuf,
|
||||
replaceVars,
|
||||
rustc,
|
||||
rustPlatform,
|
||||
snappy,
|
||||
stdenv,
|
||||
systemd,
|
||||
@@ -53,282 +57,303 @@
|
||||
withNdsudo ? false,
|
||||
withNetfilter ? stdenv.hostPlatform.isLinux,
|
||||
withNetworkViewer ? stdenv.hostPlatform.isLinux,
|
||||
withOtel ? true,
|
||||
withSsl ? true,
|
||||
withSystemdJournal ? stdenv.hostPlatform.isLinux,
|
||||
withSystemdUnits ? stdenv.hostPlatform.isLinux,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
version = "2.6.3";
|
||||
pname = "netdata";
|
||||
stdenv.mkDerivation (
|
||||
finalAttrs:
|
||||
{
|
||||
pname = "netdata";
|
||||
version = "2.8.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "netdata";
|
||||
repo = "netdata";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-J6QHeukhtHHLx92NGtoOmPwq6gvL9eyVYBQiDD1cEDk=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
src = fetchFromGitHub {
|
||||
owner = "netdata";
|
||||
repo = "netdata";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-QV9h+TMAuRCkYFr8KMOPhWq5fEnKpmA/HxQ8fV/jKBI=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
bison
|
||||
cmake
|
||||
flex
|
||||
go
|
||||
makeWrapper
|
||||
ninja
|
||||
pkg-config
|
||||
]
|
||||
++ lib.optionals withCups [ cups.dev ];
|
||||
|
||||
# bash is only used to rewrite shebangs
|
||||
buildInputs = [
|
||||
bash
|
||||
curl
|
||||
jemalloc
|
||||
json_c
|
||||
libuv
|
||||
libyaml
|
||||
lz4
|
||||
protobuf
|
||||
zlib
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
libossp_uuid
|
||||
]
|
||||
|
||||
++ lib.optionals (stdenv.hostPlatform.isLinux) [
|
||||
libcap
|
||||
libuuid
|
||||
lm_sensors
|
||||
]
|
||||
++ lib.optionals withConnPrometheus [ snappy ]
|
||||
++ lib.optionals withConnPubSub [
|
||||
google-cloud-cpp
|
||||
grpc
|
||||
]
|
||||
++ lib.optionals withCups [ cups ]
|
||||
++ lib.optionals withEbpf [
|
||||
libbpf
|
||||
libelf
|
||||
]
|
||||
++ lib.optionals withIpmi [ freeipmi ]
|
||||
++ lib.optionals withLibbacktrace [ libbacktrace ]
|
||||
++ lib.optionals withNetfilter [
|
||||
libmnl
|
||||
libnetfilter_acct
|
||||
]
|
||||
++ lib.optionals withSsl [ openssl ]
|
||||
++ lib.optionals withSystemdJournal [ systemd ]
|
||||
++ lib.optionals withSystemdUnits [ systemd ];
|
||||
|
||||
patches = [
|
||||
# Allow ndsudo to use non-hardcoded `PATH`
|
||||
# See https://github.com/netdata/netdata/pull/17377#issuecomment-2183017868
|
||||
# https://github.com/netdata/netdata/security/advisories/GHSA-pmhq-4cxq-wj93
|
||||
./ndsudo-fix-path.patch
|
||||
|
||||
./use-local-libbacktrace.patch
|
||||
]
|
||||
++ lib.optional withCloudUi (
|
||||
replaceVars ./dashboard-v3-add.patch {
|
||||
# FIXME web.archive.org link can be replace once https://github.com/netdata/netdata-cloud/issues/1081 resolved
|
||||
# last update 04/01/2025 04:45:14
|
||||
dashboardTarball = fetchurl {
|
||||
url = "https://web.archive.org/web/20250401044514/https://app.netdata.cloud/agent.tar.gz";
|
||||
hash = "sha256-NtmM1I3VrvFErMoBl+w63Nt0DzOOsaB98cxE/axm8mE=";
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
# Guard against unused build-time development inputs in closure. Without
|
||||
# the ./skip-CONFIGURE_COMMAND.patch patch the closure retains inputs up
|
||||
# to bootstrap tools:
|
||||
# https://github.com/NixOS/nixpkgs/pull/175719
|
||||
# We pick zlib.dev as a simple canary package with pkg-config input.
|
||||
disallowedReferences = lib.optional (!withDebug) zlib.dev;
|
||||
|
||||
donStrip = withDebug || withLibbacktrace;
|
||||
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.hostPlatform.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 withIpmi ''
|
||||
mv $out/libexec/netdata/plugins.d/freeipmi.plugin \
|
||||
$out/libexec/netdata/plugins.d/freeipmi.plugin.org
|
||||
''}
|
||||
${lib.optionalString withNdsudo ''
|
||||
mv $out/libexec/netdata/plugins.d/ndsudo \
|
||||
$out/libexec/netdata/plugins.d/ndsudo.org
|
||||
|
||||
ln -s /var/lib/netdata/ndsudo/ndsudo $out/libexec/netdata/plugins.d/ndsudo
|
||||
''}
|
||||
${lib.optionalString withNetworkViewer ''
|
||||
mv $out/libexec/netdata/plugins.d/network-viewer.plugin \
|
||||
$out/libexec/netdata/plugins.d/network-viewer.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 withSystemdUnits ''
|
||||
mv $out/libexec/netdata/plugins.d/systemd-units.plugin \
|
||||
$out/libexec/netdata/plugins.d/systemd-units.plugin.org
|
||||
''}
|
||||
'';
|
||||
|
||||
preConfigure = ''
|
||||
export GOCACHE=$TMPDIR/go-cache
|
||||
export GOPATH=$TMPDIR/go
|
||||
export GOSUMDB=off
|
||||
|
||||
substituteInPlace packaging/cmake/Modules/NetdataGoTools.cmake \
|
||||
--replace-fail \
|
||||
'GOPROXY=https://proxy.golang.org' \
|
||||
'GOPROXY=file://${finalAttrs.passthru.netdata-go-modules},file://${finalAttrs.passthru.nd-mcp}'
|
||||
|
||||
# Prevent the path to be caught into the Nix store path.
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail 'set(CACHE_DIR "''${NETDATA_RUNTIME_PREFIX}/var/cache/netdata")' 'set(CACHE_DIR "/var/cache/netdata")' \
|
||||
--replace-fail 'set(CONFIG_DIR "''${NETDATA_RUNTIME_PREFIX}/etc/netdata")' 'set(CONFIG_DIR "/etc/netdata")' \
|
||||
--replace-fail 'set(LIBCONFIG_DIR "''${NETDATA_RUNTIME_PREFIX}/usr/lib/netdata/conf.d")' 'set(LIBCONFIG_DIR "${placeholder "out"}/share/netdata/conf.d")' \
|
||||
--replace-fail 'set(LOG_DIR "''${NETDATA_RUNTIME_PREFIX}/var/log/netdata")' 'set(LOG_DIR "/var/log/netdata")' \
|
||||
--replace-fail 'set(PLUGINS_DIR "''${NETDATA_RUNTIME_PREFIX}/usr/libexec/netdata/plugins.d")' 'set(PLUGINS_DIR "${placeholder "out"}/libexec/netdata/plugins.d")' \
|
||||
--replace-fail 'set(VARLIB_DIR "''${NETDATA_RUNTIME_PREFIX}/var/lib/netdata")' 'set(VARLIB_DIR "/var/lib/netdata")' \
|
||||
--replace-fail 'set(pkglibexecdir_POST "''${NETDATA_RUNTIME_PREFIX}/usr/libexec/netdata")' 'set(pkglibexecdir_POST "${placeholder "out"}/libexec/netdata")' \
|
||||
--replace-fail 'set(localstatedir_POST "''${NETDATA_RUNTIME_PREFIX}/var")' 'set(localstatedir_POST "/var")' \
|
||||
--replace-fail 'set(sbindir_POST "''${NETDATA_RUNTIME_PREFIX}/''${BINDIR}")' 'set(sbindir_POST "${placeholder "out"}/bin")' \
|
||||
--replace-fail 'set(configdir_POST "''${NETDATA_RUNTIME_PREFIX}/etc/netdata")' 'set(configdir_POST "/etc/netdata")' \
|
||||
--replace-fail 'set(libconfigdir_POST "''${NETDATA_RUNTIME_PREFIX}/usr/lib/netdata/conf.d")' 'set(libconfigdir_POST "${placeholder "out"}/share/netdata/conf.d")' \
|
||||
--replace-fail 'set(cachedir_POST "''${NETDATA_RUNTIME_PREFIX}/var/cache/netdata")' 'set(libconfigdir_POST "/var/cache/netdata")' \
|
||||
--replace-fail 'set(registrydir_POST "''${NETDATA_RUNTIME_PREFIX}/var/lib/netdata/registry")' 'set(registrydir_POST "/var/lib/netdata/registry")' \
|
||||
--replace-fail 'set(varlibdir_POST "''${NETDATA_RUNTIME_PREFIX}/var/lib/netdata")' 'set(varlibdir_POST "/var/lib/netdata")' \
|
||||
--replace-fail 'set(BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH "usr/share/netdata")' 'set(BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH "${placeholder "out"}/share/netdata")'
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DWEB_DIR=share/netdata/web"
|
||||
(lib.cmakeBool "ENABLE_DASHBOARD" withCloudUi)
|
||||
(lib.cmakeBool "ENABLE_DBENGINE" withDBengine)
|
||||
(lib.cmakeBool "ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE" withConnPrometheus)
|
||||
(lib.cmakeBool "ENABLE_JEMALLOC" true)
|
||||
(lib.cmakeBool "ENABLE_LIBBACKTRACE" withLibbacktrace)
|
||||
(lib.cmakeBool "ENABLE_ML" withML)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_CUPS" withCups)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_EBPF" withEbpf)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_FREEIPMI" withIpmi)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_NETWORK_VIEWER" withNetworkViewer)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_SYSTEMD_JOURNAL" withSystemdJournal)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_SYSTEMD_UNITS" withSystemdUnits)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_XENSTAT" false)
|
||||
# Suggested by upstream.
|
||||
"-G Ninja"
|
||||
]
|
||||
++ lib.optional withML "-DNETDATA_DLIB_SOURCE_PATH=${dlib.src}";
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/netdata-claim.sh --prefix PATH : ${lib.makeBinPath [ openssl ]}
|
||||
wrapProgram $out/libexec/netdata/plugins.d/cgroup-network-helper.sh --prefix PATH : ${lib.makeBinPath [ bash ]}
|
||||
wrapProgram $out/bin/netdatacli --set NETDATA_PIPENAME /run/netdata/ipc
|
||||
${lib.optionalString (stdenv.hostPlatform.isLinux) ''
|
||||
substituteInPlace $out/lib/netdata/conf.d/go.d/sensors.conf --replace-fail '/usr/bin/sensors' '${lm_sensors}/bin/sensors'
|
||||
''}
|
||||
|
||||
# Time to cleanup the output directory.
|
||||
unlink $out/sbin
|
||||
cp $out/etc/netdata/edit-config $out/bin/netdata-edit-config
|
||||
mv $out/lib/netdata/conf.d $out/share/netdata/conf.d
|
||||
rm -rf $out/{var,usr,etc}
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
passthru = rec {
|
||||
nd-mcp =
|
||||
(buildGoModule {
|
||||
pname = "nd-mcp";
|
||||
version = finalAttrs.version;
|
||||
inherit (finalAttrs) src;
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/src/web/mcp/bridges/stdio-golang";
|
||||
|
||||
vendorHash = "sha256-6JfHrBloJQ5wHyogIPTVDZjlITWZXbsv2m2lMlQmBUY=";
|
||||
|
||||
proxyVendor = true;
|
||||
doCheck = false;
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Netdata Model Context Protocol (MCP) Integration";
|
||||
license = lib.licenses.gpl3Only;
|
||||
};
|
||||
}).goModules;
|
||||
|
||||
netdata-go-modules =
|
||||
(buildGoModule {
|
||||
pname = "netdata-go-plugins";
|
||||
inherit (finalAttrs) version src;
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/src/go/plugin/go.d";
|
||||
|
||||
vendorHash = "sha256-aOFmfBcBjnTfFHfMNemSJHbnMnhBojYrGe21zDxPxME=";
|
||||
doCheck = false;
|
||||
proxyVendor = true;
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
"-X main.version=${finalAttrs.version}"
|
||||
];
|
||||
|
||||
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
|
||||
withNdsudo
|
||||
withNetworkViewer
|
||||
withSystemdJournal
|
||||
;
|
||||
tests.netdata = nixosTests.netdata;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
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 ];
|
||||
mainProgram = "netdata";
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [
|
||||
mkg20001
|
||||
rhoriguchi
|
||||
nativeBuildInputs = [
|
||||
bison
|
||||
cmake
|
||||
flex
|
||||
go
|
||||
makeWrapper
|
||||
ninja
|
||||
pkg-config
|
||||
]
|
||||
++ lib.optionals withCups [ cups.dev ]
|
||||
++ lib.optionals (withOtel || withSystemdJournal) [
|
||||
cargo
|
||||
corrosion
|
||||
rustc
|
||||
rustPlatform.cargoSetupHook
|
||||
];
|
||||
};
|
||||
})
|
||||
|
||||
# bash is only used to rewrite shebangs
|
||||
buildInputs = [
|
||||
bash
|
||||
curl
|
||||
jemalloc
|
||||
json_c
|
||||
libuv
|
||||
libyaml
|
||||
lz4
|
||||
protobuf
|
||||
zlib
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
libossp_uuid
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
libcap
|
||||
libuuid
|
||||
lm_sensors
|
||||
]
|
||||
++ lib.optionals withConnPrometheus [ snappy ]
|
||||
++ lib.optionals withConnPubSub [
|
||||
google-cloud-cpp
|
||||
grpc
|
||||
]
|
||||
++ lib.optionals withCups [ cups ]
|
||||
++ lib.optionals withEbpf [
|
||||
libbpf
|
||||
libelf
|
||||
]
|
||||
++ lib.optionals withIpmi [ freeipmi ]
|
||||
++ lib.optionals withLibbacktrace [ libbacktrace ]
|
||||
++ lib.optionals withNetfilter [
|
||||
libmnl
|
||||
libnetfilter_acct
|
||||
]
|
||||
++ lib.optionals withSsl [ openssl ]
|
||||
++ lib.optionals (withSystemdJournal || withSystemdUnits) [ systemd ];
|
||||
|
||||
patches = [
|
||||
# Allow ndsudo to use non-hardcoded `PATH`
|
||||
# See https://github.com/netdata/netdata/pull/17377#issuecomment-2183017868
|
||||
# https://github.com/netdata/netdata/security/advisories/GHSA-pmhq-4cxq-wj93
|
||||
./ndsudo-fix-path.patch
|
||||
|
||||
./use-local-corrosion.patch
|
||||
./use-local-libbacktrace.patch
|
||||
]
|
||||
++ lib.optional withCloudUi (
|
||||
replaceVars ./dashboard-v3-add.patch {
|
||||
# FIXME web.archive.org link can be replace once https://github.com/netdata/netdata-cloud/issues/1081 resolved
|
||||
# last update 04/01/2025 04:45:14
|
||||
dashboardTarball = fetchurl {
|
||||
url = "https://web.archive.org/web/20250401044514/https://app.netdata.cloud/agent.tar.gz";
|
||||
hash = "sha256-NtmM1I3VrvFErMoBl+w63Nt0DzOOsaB98cxE/axm8mE=";
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
# Guard against unused build-time development inputs in closure. Without
|
||||
# the ./skip-CONFIGURE_COMMAND.patch patch the closure retains inputs up
|
||||
# to bootstrap tools:
|
||||
# https://github.com/NixOS/nixpkgs/pull/175719
|
||||
# We pick zlib.dev as a simple canary package with pkg-config input.
|
||||
disallowedReferences = lib.optional (!withDebug) zlib.dev;
|
||||
|
||||
donStrip = withDebug || withLibbacktrace;
|
||||
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.hostPlatform.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 withIpmi ''
|
||||
mv $out/libexec/netdata/plugins.d/freeipmi.plugin \
|
||||
$out/libexec/netdata/plugins.d/freeipmi.plugin.org
|
||||
''}
|
||||
${lib.optionalString withNdsudo ''
|
||||
mv $out/libexec/netdata/plugins.d/ndsudo \
|
||||
$out/libexec/netdata/plugins.d/ndsudo.org
|
||||
|
||||
ln -s /var/lib/netdata/ndsudo/ndsudo $out/libexec/netdata/plugins.d/ndsudo
|
||||
''}
|
||||
${lib.optionalString withNetworkViewer ''
|
||||
mv $out/libexec/netdata/plugins.d/network-viewer.plugin \
|
||||
$out/libexec/netdata/plugins.d/network-viewer.plugin.org
|
||||
''}
|
||||
${lib.optionalString withOtel ''
|
||||
mv $out/libexec/netdata/plugins.d/otel-plugin \
|
||||
$out/libexec/netdata/plugins.d/otel-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 withSystemdUnits ''
|
||||
mv $out/libexec/netdata/plugins.d/systemd-units.plugin \
|
||||
$out/libexec/netdata/plugins.d/systemd-units.plugin.org
|
||||
''}
|
||||
'';
|
||||
|
||||
preConfigure = ''
|
||||
${lib.optionalString (withOtel || withSystemdJournal) ''
|
||||
export CMAKE_PREFIX_PATH="${corrosion}:$CMAKE_PREFIX_PATH"
|
||||
''}
|
||||
|
||||
export GOCACHE=$TMPDIR/go-cache
|
||||
export GOPATH=$TMPDIR/go
|
||||
export GOSUMDB=off
|
||||
|
||||
substituteInPlace packaging/cmake/Modules/NetdataGoTools.cmake \
|
||||
--replace-fail \
|
||||
'GOPROXY=https://proxy.golang.org' \
|
||||
'GOPROXY=file://${finalAttrs.passthru.netdata-go-modules},file://${finalAttrs.passthru.nd-mcp}'
|
||||
|
||||
# Prevent the path to be caught into the Nix store path.
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail 'set(CACHE_DIR "''${NETDATA_RUNTIME_PREFIX}/var/cache/netdata")' 'set(CACHE_DIR "/var/cache/netdata")' \
|
||||
--replace-fail 'set(CONFIG_DIR "''${NETDATA_RUNTIME_PREFIX}/etc/netdata")' 'set(CONFIG_DIR "/etc/netdata")' \
|
||||
--replace-fail 'set(LIBCONFIG_DIR "''${NETDATA_RUNTIME_PREFIX}/usr/lib/netdata/conf.d")' 'set(LIBCONFIG_DIR "${placeholder "out"}/share/netdata/conf.d")' \
|
||||
--replace-fail 'set(LOG_DIR "''${NETDATA_RUNTIME_PREFIX}/var/log/netdata")' 'set(LOG_DIR "/var/log/netdata")' \
|
||||
--replace-fail 'set(PLUGINS_DIR "''${NETDATA_RUNTIME_PREFIX}/usr/libexec/netdata/plugins.d")' 'set(PLUGINS_DIR "${placeholder "out"}/libexec/netdata/plugins.d")' \
|
||||
--replace-fail 'set(VARLIB_DIR "''${NETDATA_RUNTIME_PREFIX}/var/lib/netdata")' 'set(VARLIB_DIR "/var/lib/netdata")' \
|
||||
--replace-fail 'set(pkglibexecdir_POST "''${NETDATA_RUNTIME_PREFIX}/usr/libexec/netdata")' 'set(pkglibexecdir_POST "${placeholder "out"}/libexec/netdata")' \
|
||||
--replace-fail 'set(localstatedir_POST "''${NETDATA_RUNTIME_PREFIX}/var")' 'set(localstatedir_POST "/var")' \
|
||||
--replace-fail 'set(BINDIR usr/sbin)' 'set(BINDIR "${placeholder "out"}/sbin")' \
|
||||
--replace-fail 'set(BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH "usr/share/netdata")' 'set(BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH "${placeholder "out"}/share/netdata")'
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DWEB_DIR=share/netdata/web"
|
||||
(lib.cmakeBool "ENABLE_DASHBOARD" withCloudUi)
|
||||
(lib.cmakeBool "ENABLE_DBENGINE" withDBengine)
|
||||
(lib.cmakeBool "ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE" withConnPrometheus)
|
||||
(lib.cmakeBool "ENABLE_JEMALLOC" true)
|
||||
(lib.cmakeBool "ENABLE_LIBBACKTRACE" withLibbacktrace)
|
||||
(lib.cmakeBool "ENABLE_ML" withML)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_CUPS" withCups)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_EBPF" withEbpf)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_FREEIPMI" withIpmi)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_NETWORK_VIEWER" withNetworkViewer)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_OTEL" withOtel)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_SYSTEMD_JOURNAL" withSystemdJournal)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_SYSTEMD_UNITS" withSystemdUnits)
|
||||
(lib.cmakeBool "ENABLE_PLUGIN_XENSTAT" false)
|
||||
# Suggested by upstream.
|
||||
"-G Ninja"
|
||||
]
|
||||
++ lib.optional withML "-DNETDATA_DLIB_SOURCE_PATH=${dlib.src}";
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/netdata-claim.sh --prefix PATH : ${lib.makeBinPath [ openssl ]}
|
||||
wrapProgram $out/libexec/netdata/plugins.d/cgroup-network-helper.sh --prefix PATH : ${lib.makeBinPath [ bash ]}
|
||||
wrapProgram $out/bin/netdatacli --set NETDATA_PIPENAME /run/netdata/ipc
|
||||
${lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
substituteInPlace $out/lib/netdata/conf.d/go.d/sensors.conf --replace-fail '/usr/bin/sensors' '${lm_sensors}/bin/sensors'
|
||||
''}
|
||||
|
||||
# Time to cleanup the output directory.
|
||||
unlink $out/sbin
|
||||
cp $out/etc/netdata/edit-config $out/bin/netdata-edit-config
|
||||
mv $out/lib/netdata/conf.d $out/share/netdata/conf.d
|
||||
rm -rf $out/{var,usr,etc}
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
passthru = {
|
||||
nd-mcp =
|
||||
(buildGoModule {
|
||||
pname = "${finalAttrs.pname}-nd-mcp";
|
||||
inherit (finalAttrs) version src;
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/src/web/mcp/bridges/stdio-golang";
|
||||
|
||||
vendorHash = "sha256-jyCTp52Dc2IuRwzGT+sHFljO30oqAMfe3xVdEpV+R2c=";
|
||||
proxyVendor = true;
|
||||
doCheck = false;
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
|
||||
meta = finalAttrs.meta // {
|
||||
description = "Netdata Model Context Protocol (MCP) Integration";
|
||||
license = lib.licenses.gpl3Only;
|
||||
};
|
||||
}).goModules;
|
||||
|
||||
netdata-go-modules =
|
||||
(buildGoModule {
|
||||
pname = "${finalAttrs.pname}-go-plugins";
|
||||
inherit (finalAttrs) version src;
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/src/go/plugin/go.d";
|
||||
|
||||
vendorHash = "sha256-AVNUbKCvO+Z3eKE+bJ/VFDo1tS9DdlmMw6M3OSdHiIU=";
|
||||
proxyVendor = true;
|
||||
doCheck = false;
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
"-X main.version=${finalAttrs.version}"
|
||||
];
|
||||
|
||||
meta = finalAttrs.meta // {
|
||||
description = "Netdata orchestrator for data collection modules written in Go";
|
||||
mainProgram = "godplugin";
|
||||
license = lib.licenses.gpl3Only;
|
||||
};
|
||||
}).goModules;
|
||||
|
||||
inherit
|
||||
withIpmi
|
||||
withNdsudo
|
||||
withNetworkViewer
|
||||
withOtel
|
||||
withSystemdJournal
|
||||
;
|
||||
|
||||
tests.netdata = nixosTests.netdata;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
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 ];
|
||||
mainProgram = "netdata";
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [
|
||||
mkg20001
|
||||
rhoriguchi
|
||||
];
|
||||
};
|
||||
}
|
||||
// lib.optionalAttrs (withOtel || withSystemdJournal) {
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
pname = "${finalAttrs.pname}-nd-jf";
|
||||
inherit (finalAttrs) version src cargoRoot;
|
||||
hash = "sha256-HY6OtKHP75mO9X+F2a6H6e+3M0pgZBOIIaxAI9OhgkQ=";
|
||||
};
|
||||
cargoRoot = "src/crates/jf";
|
||||
}
|
||||
)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 414a3c54b..cf1fcb7b4 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -230,13 +230,8 @@ cmake_dependent_option(ENABLE_NETDATA_JOURNAL_FILE_READER "Enable netdata's jour
|
||||
|
||||
# Setup Rust/Corrosion for plugins that need it
|
||||
if(ENABLE_NETDATA_JOURNAL_FILE_READER OR ENABLE_PLUGIN_OTEL)
|
||||
- include(FetchContent)
|
||||
- FetchContent_Declare(
|
||||
- Corrosion
|
||||
- GIT_REPOSITORY https://github.com/netdata/corrosion.git
|
||||
- GIT_TAG f3b91559efca32c6b54837866ef35ba98ff5b2ca # stable/v0.5
|
||||
- )
|
||||
- FetchContent_MakeAvailable(Corrosion)
|
||||
+ find_package(Corrosion REQUIRED)
|
||||
+
|
||||
corrosion_import_crate(MANIFEST_PATH src/crates/jf/Cargo.toml
|
||||
CRATES journal_reader_ffi otel-plugin)
|
||||
endif()
|
||||
Reference in New Issue
Block a user