82 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, pkgs, lib, ... }:
 | |
| 
 | |
| with pkgs;
 | |
| with lib;
 | |
| 
 | |
| let
 | |
| 
 | |
|   cfg = config.services.riemann-dash;
 | |
| 
 | |
|   conf = writeText "config.rb" ''
 | |
|     riemann_base = "${cfg.dataDir}"
 | |
|     config.store[:ws_config] = "#{riemann_base}/config/config.json"
 | |
|     ${cfg.config}
 | |
|   '';
 | |
| 
 | |
|   launcher = writeScriptBin "riemann-dash" ''
 | |
|     #!/bin/sh
 | |
|     exec ${pkgs.riemann-dash}/bin/riemann-dash ${conf}
 | |
|   '';
 | |
| 
 | |
| in {
 | |
| 
 | |
|   options = {
 | |
| 
 | |
|     services.riemann-dash = {
 | |
|       enable = mkOption {
 | |
|         type = types.bool;
 | |
|         default = false;
 | |
|         description = ''
 | |
|           Enable the riemann-dash dashboard daemon.
 | |
|         '';
 | |
|       };
 | |
|       config = mkOption {
 | |
|         type = types.lines;
 | |
|         description = ''
 | |
|           Contents added to the end of the riemann-dash configuration file.
 | |
|         '';
 | |
|       };
 | |
|       dataDir = mkOption {
 | |
|         type = types.str;
 | |
|         default = "/var/riemann-dash";
 | |
|         description = ''
 | |
|           Location of the riemann-base dir. The dashboard configuration file is
 | |
|           is stored to this directory. The directory is created automatically on
 | |
|           service start, and owner is set to the riemanndash user.
 | |
|         '';
 | |
|       };
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
| 
 | |
|     users.groups.riemanndash.gid = config.ids.gids.riemanndash;
 | |
| 
 | |
|     users.users.riemanndash = {
 | |
|       description = "riemann-dash daemon user";
 | |
|       uid = config.ids.uids.riemanndash;
 | |
|       group = "riemanndash";
 | |
|     };
 | |
| 
 | |
|     systemd.tmpfiles.rules = [
 | |
|       "d '${cfg.dataDir}' - riemanndash riemanndash - -"
 | |
|     ];
 | |
| 
 | |
|     systemd.services.riemann-dash = {
 | |
|       wantedBy = [ "multi-user.target" ];
 | |
|       wants = [ "riemann.service" ];
 | |
|       after = [ "riemann.service" ];
 | |
|       preStart = ''
 | |
|         mkdir -p '${cfg.dataDir}/config'
 | |
|       '';
 | |
|       serviceConfig = {
 | |
|         User = "riemanndash";
 | |
|         ExecStart = "${launcher}/bin/riemann-dash";
 | |
|       };
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
| }
 | 
