summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/services/monitoring/collectd.nix21
-rw-r--r--pkgs/tools/system/collectd/default.nix9
2 files changed, 29 insertions, 1 deletions
diff --git a/nixos/modules/services/monitoring/collectd.nix b/nixos/modules/services/monitoring/collectd.nix
index 660d108587de..8d81737a3ef0 100644
--- a/nixos/modules/services/monitoring/collectd.nix
+++ b/nixos/modules/services/monitoring/collectd.nix
@@ -5,7 +5,7 @@ with lib;
let
cfg = config.services.collectd;
- conf = pkgs.writeText "collectd.conf" ''
+ unvalidated_conf = pkgs.writeText "collectd-unvalidated.conf" ''
BaseDir "${cfg.dataDir}"
AutoLoadPlugin ${boolToString cfg.autoLoadPlugin}
Hostname "${config.networking.hostName}"
@@ -30,6 +30,15 @@ let
${cfg.extraConfig}
'';
+ conf = if cfg.validateConfig then
+ pkgs.runCommand "collectd.conf" {} ''
+ echo testing ${unvalidated_conf}
+ # collectd -t fails if BaseDir does not exist.
+ sed '1s/^BaseDir.*$/BaseDir "."/' ${unvalidated_conf} > collectd.conf
+ ${package}/bin/collectd -t -C collectd.conf
+ cp ${unvalidated_conf} $out
+ '' else unvalidated_conf;
+
package =
if cfg.buildMinimalPackage
then minimalPackage
@@ -43,6 +52,16 @@ in {
options.services.collectd = with types; {
enable = mkEnableOption "collectd agent";
+ validateConfig = mkOption {
+ default = true;
+ description = ''
+ Validate the syntax of collectd configuration file at build time.
+ Disable this if you use the Include directive on files unavailable in
+ the build sandbox, or when cross-compiling.
+ '';
+ type = types.bool;
+ };
+
package = mkOption {
default = pkgs.collectd;
defaultText = literalExpression "pkgs.collectd";
diff --git a/pkgs/tools/system/collectd/default.nix b/pkgs/tools/system/collectd/default.nix
index cdd51aa9fa3e..8d272b15acf1 100644
--- a/pkgs/tools/system/collectd/default.nix
+++ b/pkgs/tools/system/collectd/default.nix
@@ -17,6 +17,15 @@ stdenv.mkDerivation rec {
sha256 = "1mh97afgq6qgmpvpr84zngh58m0sl1b4wimqgvvk376188q09bjv";
};
+ patches = [
+ # fix -t never printing syntax errors
+ # should be included in next release
+ (fetchpatch {
+ url = "https://github.com/collectd/collectd/commit/3f575419e7ccb37a3b10ecc82adb2e83ff2826e1.patch";
+ sha256 = "0jwjdlfl0dp7mlbwygp6h0rsbaqfbgfm5z07lr5l26z6hhng2h2y";
+ })
+ ];
+
nativeBuildInputs = [ pkg-config autoreconfHook ];
buildInputs = [
libtool