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.concatStringsSep " " [
 | |
|           "-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}";
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 | 
