nixos/riemann: refactor config

Previously it was only possible to use very simple Riemann config.
For more complicated scenarios you need a directory of clojure
files and the config file that riemann starts with should be in this
directory.
This commit is contained in:
David Smith 2018-08-01 13:36:16 +01:00
parent b8c4f02131
commit 1d497bbff1
1 changed files with 18 additions and 4 deletions

View File

@ -17,9 +17,9 @@ let
launcher = writeScriptBin "riemann" '' launcher = writeScriptBin "riemann" ''
#!/bin/sh #!/bin/sh
exec ${jdk}/bin/java ${concatStringsSep "\n" cfg.extraJavaOpts} \ exec ${jdk}/bin/java ${concatStringsSep " " cfg.extraJavaOpts} \
-cp ${classpath} \ -cp ${classpath} \
riemann.bin ${writeText "riemann-config.clj" riemannConfig} riemann.bin ${cfg.configFile}
''; '';
in { in {
@ -37,7 +37,8 @@ in {
config = mkOption { config = mkOption {
type = types.lines; type = types.lines;
description = '' description = ''
Contents of the Riemann configuration file. Contents of the Riemann configuration file. For more complicated
config you should use configFile.
''; '';
}; };
configFiles = mkOption { configFiles = mkOption {
@ -47,7 +48,15 @@ in {
Extra files containing Riemann configuration. These files will be Extra files containing Riemann configuration. These files will be
loaded at runtime by Riemann (with Clojure's loaded at runtime by Riemann (with Clojure's
<literal>load-file</literal> function) at the end of the <literal>load-file</literal> function) at the end of the
configuration. configuration if you use the config option, this is ignored if you
use configFile.
'';
};
configFile = mkOption {
type = types.str;
description = ''
A Riemann config file. Any files in the same directory as this file
will be added to the classpath by Riemann.
''; '';
}; };
extraClasspathEntries = mkOption { extraClasspathEntries = mkOption {
@ -77,6 +86,10 @@ in {
group = "riemann"; group = "riemann";
}; };
services.riemann.configFile = mkDefault (
writeText "riemann-config.clj" riemannConfig
);
systemd.services.riemann = { systemd.services.riemann = {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = [ inetutils ]; path = [ inetutils ];
@ -84,6 +97,7 @@ in {
User = "riemann"; User = "riemann";
ExecStart = "${launcher}/bin/riemann"; ExecStart = "${launcher}/bin/riemann";
}; };
serviceConfig.LimitNOFILE = 65536;
}; };
}; };