summary refs log tree commit diff
diff options
context:
space:
mode:
authormisuzu <bakalolka@gmail.com>2021-11-24 12:30:03 +0200
committermisuzu <bakalolka@gmail.com>2022-01-10 23:56:53 +0200
commit9e6145c73b76777558d93dc1796c32302e8c9bc5 (patch)
tree723b06f1b28e160ffdc26ba1ad907885b2cdd2bf
parent0ecf7d414811f831060cf55707c374d54fbb1dec (diff)
downloadnixpkgs-9e6145c73b76777558d93dc1796c32302e8c9bc5.tar
nixpkgs-9e6145c73b76777558d93dc1796c32302e8c9bc5.tar.gz
nixpkgs-9e6145c73b76777558d93dc1796c32302e8c9bc5.tar.bz2
nixpkgs-9e6145c73b76777558d93dc1796c32302e8c9bc5.tar.lz
nixpkgs-9e6145c73b76777558d93dc1796c32302e8c9bc5.tar.xz
nixpkgs-9e6145c73b76777558d93dc1796c32302e8c9bc5.tar.zst
nixpkgs-9e6145c73b76777558d93dc1796c32302e8c9bc5.zip
nixos/netdata: add configDir option
This option makes the complete netdata configuration directory available for
modification. The default configuration is merged with changes
defined in the configDir option.

Co-authored-by: Michael Raitza <spacefrogg-github@meterriblecrew.net>
-rw-r--r--nixos/modules/services/monitoring/netdata.nix31
1 files changed, 30 insertions, 1 deletions
diff --git a/nixos/modules/services/monitoring/netdata.nix b/nixos/modules/services/monitoring/netdata.nix
index 00bdd9fcda0..4985b3b4413 100644
--- a/nixos/modules/services/monitoring/netdata.nix
+++ b/nixos/modules/services/monitoring/netdata.nix
@@ -19,8 +19,17 @@ let
     "${wrappedPlugins}/libexec/netdata/plugins.d"
   ] ++ cfg.extraPluginPaths;
 
+  configDirectory = pkgs.runCommand "netdata-config-d" { } ''
+    mkdir $out
+    ${concatStringsSep "\n" (mapAttrsToList (path: file: ''
+        mkdir -p "$out/$(dirname ${path})"
+        ln -s "${file}" "$out/${path}"
+      '') cfg.configDir)}
+  '';
+
   localConfig = {
     global = {
+      "config directory" = configDirectory;
       "plugins directory" = concatStringsSep " " plugins;
     };
     web = {
@@ -130,6 +139,26 @@ in {
         '';
       };
 
+      configDir = mkOption {
+        type = types.attrsOf types.path;
+        default = {};
+        description = ''
+          Complete netdata config directory except netdata.conf.
+          The default configuration is merged with changes
+          defined in this option.
+          Each top-level attribute denotes a path in the configuration
+          directory as in environment.etc.
+          Its value is the absolute path and must be readable by netdata.
+          Cannot be combined with configText.
+        '';
+        example = literalExpression ''
+          "health_alarm_notify.conf" = pkgs.writeText "health_alarm_notify.conf" '''
+            sendmail="/path/to/sendmail"
+          ''';
+          "health.d" = "/run/secrets/netdata/health.d";
+        '';
+      };
+
       enableAnalyticsReporting = mkOption {
         type = types.bool;
         default = false;
@@ -154,7 +183,7 @@ in {
       description = "Real time performance monitoring";
       after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
-      path = (with pkgs; [ curl gawk iproute2 which ])
+      path = (with pkgs; [ curl gawk iproute2 which procps ])
         ++ lib.optional cfg.python.enable (pkgs.python3.withPackages cfg.python.extraPackages)
         ++ lib.optional config.virtualisation.libvirtd.enable (config.virtualisation.libvirtd.package);
       environment = {