aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/services/web-servers/lighttpd/collectd.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/services/web-servers/lighttpd/collectd.nix')
-rw-r--r--nixpkgs/nixos/modules/services/web-servers/lighttpd/collectd.nix58
1 files changed, 58 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/services/web-servers/lighttpd/collectd.nix b/nixpkgs/nixos/modules/services/web-servers/lighttpd/collectd.nix
new file mode 100644
index 00000000000..3f262451c2c
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/web-servers/lighttpd/collectd.nix
@@ -0,0 +1,58 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.services.lighttpd.collectd;
+
+ collectionConf = pkgs.writeText "collection.conf" ''
+ datadir: "${config.services.collectd.dataDir}"
+ libdir: "${config.services.collectd.package}/lib/collectd"
+ '';
+
+ defaultCollectionCgi = config.services.collectd.package.overrideDerivation(old: {
+ name = "collection.cgi";
+ dontConfigure = true;
+ buildPhase = "true";
+ installPhase = ''
+ substituteInPlace contrib/collection.cgi --replace '"/etc/collection.conf"' '$ENV{COLLECTION_CONF}'
+ cp contrib/collection.cgi $out
+ '';
+ });
+in
+{
+
+ options.services.lighttpd.collectd = {
+
+ enable = mkEnableOption "collectd subservice accessible at http://yourserver/collectd";
+
+ collectionCgi = mkOption {
+ type = types.path;
+ default = defaultCollectionCgi;
+ description = ''
+ Path to collection.cgi script from (collectd sources)/contrib/collection.cgi
+ This option allows to use a customized version
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ services.lighttpd.enableModules = [ "mod_cgi" "mod_alias" "mod_setenv" ];
+
+ services.lighttpd.extraConfig = ''
+ $HTTP["url"] =~ "^/collectd" {
+ cgi.assign = (
+ ".cgi" => "${pkgs.perl}/bin/perl"
+ )
+ alias.url = (
+ "/collectd" => "${cfg.collectionCgi}"
+ )
+ setenv.add-environment = (
+ "PERL5LIB" => "${with pkgs.perlPackages; makePerlPath [ CGI HTMLParser URI pkgs.rrdtool ]}",
+ "COLLECTION_CONF" => "${collectionConf}"
+ )
+ }
+ '';
+ };
+
+}