67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ options, config, lib, pkgs, ... }:
 | 
						|
 | 
						|
with lib;
 | 
						|
 | 
						|
let
 | 
						|
  cfg = config.services.grafana_reporter;
 | 
						|
 | 
						|
in {
 | 
						|
  options.services.grafana_reporter = {
 | 
						|
    enable = mkEnableOption "grafana_reporter";
 | 
						|
 | 
						|
    grafana = {
 | 
						|
      protocol = mkOption {
 | 
						|
        description = "Grafana protocol.";
 | 
						|
        default = "http";
 | 
						|
        type = types.enum ["http" "https"];
 | 
						|
      };
 | 
						|
      addr = mkOption {
 | 
						|
        description = "Grafana address.";
 | 
						|
        default = "127.0.0.1";
 | 
						|
        type = types.str;
 | 
						|
      };
 | 
						|
      port = mkOption {
 | 
						|
        description = "Grafana port.";
 | 
						|
        default = 3000;
 | 
						|
        type = types.int;
 | 
						|
      };
 | 
						|
 | 
						|
    };
 | 
						|
    addr = mkOption {
 | 
						|
      description = "Listening address.";
 | 
						|
      default = "127.0.0.1";
 | 
						|
      type = types.str;
 | 
						|
    };
 | 
						|
 | 
						|
    port = mkOption {
 | 
						|
      description = "Listening port.";
 | 
						|
      default = 8686;
 | 
						|
      type = types.int;
 | 
						|
    };
 | 
						|
 | 
						|
    templateDir = mkOption {
 | 
						|
      description = "Optional template directory to use custom tex templates";
 | 
						|
      default = "${pkgs.grafana_reporter}";
 | 
						|
      type = types.str;
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  config = mkIf cfg.enable {
 | 
						|
    systemd.services.grafana_reporter = {
 | 
						|
      description = "Grafana Reporter Service Daemon";
 | 
						|
      wantedBy = ["multi-user.target"];
 | 
						|
      after = ["network.target"];
 | 
						|
      serviceConfig = let
 | 
						|
        args = lib.concatSepString " " [
 | 
						|
          "-proto ${cfg.grafana.protocol}://"
 | 
						|
          "-ip ${cfg.grafana.addr}:${toString cfg.grafana.port}"
 | 
						|
          "-port :${toString cfg.port}"
 | 
						|
          "-templates ${cfg.templateDir}"
 | 
						|
        ];
 | 
						|
      in {
 | 
						|
        ExecStart = "${pkgs.grafana_reporter.bin}/bin/grafana-reporter ${args}";
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |