71 lines
1.9 KiB
Nix
71 lines
1.9 KiB
Nix
{
|
|
config,
|
|
inputs,
|
|
lib,
|
|
...
|
|
}:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.custom.services.netdata;
|
|
in
|
|
{
|
|
options.custom.services.netdata = {
|
|
enable = mkOption { default = false; };
|
|
parent = mkOption { default = false; };
|
|
child = mkOption { default = false; };
|
|
};
|
|
|
|
config =
|
|
let
|
|
role =
|
|
if cfg.parent then
|
|
"parent"
|
|
else if cfg.child then
|
|
"child"
|
|
else
|
|
"";
|
|
in
|
|
mkIf cfg.enable {
|
|
# https://github.com/netdata/netdata
|
|
# https://wiki.nixos.org/wiki/Netdata
|
|
services.netdata = {
|
|
enable = true;
|
|
|
|
# Override package to include v2 dashboard
|
|
# https://learn.netdata.cloud/docs/developer-and-contributor-corner/redistributed-software
|
|
package = mkIf cfg.parent pkgs.netdata.override { withCloudUi = true; }; # !! NCUL1 non-free license
|
|
|
|
# Minimize overhead for children
|
|
# https://learn.netdata.cloud/docs/netdata-agent/configuration/daemon-configuration
|
|
# https://learn.netdata.cloud/docs/netdata-agent/configuration/how-to-optimize-the-netdata-agent-s-performance
|
|
config = {
|
|
global."memory mode" = mkIf cfg.child "ram";
|
|
health.enabled = mkIf cfg.child "no";
|
|
ml.enabled = mkIf cfg.child "no";
|
|
|
|
web = {
|
|
mode = mkIf cfg.child "none";
|
|
"enable gzip compression" = "no";
|
|
};
|
|
};
|
|
|
|
configDir."stream.conf" = mkIf (
|
|
role != ""
|
|
) config.age.secrets."${config.custom.profile}/netdata/${role}.conf".path;
|
|
};
|
|
|
|
age.secrets =
|
|
let
|
|
secret = filename: {
|
|
file = "${inputs.self}/secrets/${filename}";
|
|
owner = "netdata";
|
|
group = "netdata";
|
|
};
|
|
in
|
|
mkIf (role != "") {
|
|
"${config.custom.profile}/netdata/${role}.conf" = secret "${config.custom.profile}/netdata/${role}.conf";
|
|
};
|
|
};
|
|
}
|