nixos/prometheus: use pkgs.formats.json.generate to write config file

The old way of writing the file omited qoutes within strings which are needed by some configurations like federations.
The quotes got lost when `echo`ing the content via `echo '${builtins.toJSON x}'`.
The pkgs.formats.json does handle that race condition properly, so this commit switches the writing to that helper.
This commit is contained in:
Shawn8901 2022-04-18 17:35:58 +02:00
parent 439aeb2fe9
commit 7f01ff7822

View file

@ -3,6 +3,7 @@
with lib; with lib;
let let
json = pkgs.formats.json { };
cfg = config.services.prometheus; cfg = config.services.prometheus;
workingDir = "/var/lib/" + cfg.stateDir; workingDir = "/var/lib/" + cfg.stateDir;
@ -34,13 +35,7 @@ let
promtool ${what} $out promtool ${what} $out
'' else file; '' else file;
# Pretty-print JSON to a file generatedPrometheusYml = json.generate "prometheus.yml" promConfig;
writePrettyJSON = name: x:
pkgs.runCommandLocal name { } ''
echo '${builtins.toJSON x}' | ${pkgs.jq}/bin/jq . > $out
'';
generatedPrometheusYml = writePrettyJSON "prometheus.yml" promConfig;
# This becomes the main config file for Prometheus # This becomes the main config file for Prometheus
promConfig = { promConfig = {