hydra-config/collectd.nix

40 lines
948 B
Nix

{ pkgs ? import <nixpkgs> {},
...
}:
with pkgs;
let
collectdMakefileAm =
stdenv.mkDerivation {
name = "collectd-Makefile.am-BUILD_PLUGINs";
src = pkgs.collectd.src;
phases = [ "unpackPhase" "installPhase" ];
installPhase = "grep BUILD_PLUGIN Makefile.am > $out";
};
plugins =
let
findPlugins = s:
let
m = builtins.match ".*BUILD_PLUGIN_([A-Z0-9_]+)([.$\n]*)" s;
plugin = lib.toLower (builtins.elemAt m 0);
rest = builtins.elemAt m 1;
in if m == null
then []
else [plugin] ++ (findPlugins rest);
in
builtins.concatMap findPlugins (
lib.splitString "\n" (
builtins.readFile collectdMakefileAm
)
);
in
builtins.listToAttrs (
map (plugin: {
name = "collectd-plugin-${plugin}";
value = lib.hydraJob (pkgs.collectd.override {
enabledPlugins = [ plugin ];
});
}) plugins
)