From f71748184cd859ac15a46115b45bd4a38a43906c Mon Sep 17 00:00:00 2001 From: Defelo Date: Sun, 8 Jun 2025 21:49:42 +0200 Subject: [PATCH] nixos/olivetin: use yq-go to merge config files --- nixos/modules/services/web-apps/olivetin.nix | 28 +++++--------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/nixos/modules/services/web-apps/olivetin.nix b/nixos/modules/services/web-apps/olivetin.nix index 5facc7eb7a56..718c732e3c5a 100644 --- a/nixos/modules/services/web-apps/olivetin.nix +++ b/nixos/modules/services/web-apps/olivetin.nix @@ -102,30 +102,16 @@ in inherit (cfg) path; preStart = '' - tmp="$(mktemp -d)" - trap 'rm -rf "$tmp"' EXIT - cd "$tmp" + shopt -s nullglob - cp ${settingsFormat.generate "olivetin-config.yaml" cfg.settings} config.yaml - chmod +w config.yaml - for ((i=0; i < ${toString (lib.length cfg.extraConfigFiles)}; i++)); do - ${lib.getExe pkgs.yq} -yi ' - def merge($y): - . as $x | - if ($x | type == "object") and ($y | type == "object") then - $x + $y + with_entries(select(.key | in($y)) | .key as $key | .value |= merge($y[$key])) - elif ($x | type == "array") and ($y | type == "array") then - $x + $y - else - $y - end; - merge($f | fromjson) - ' config.yaml --rawfile f <(${lib.getExe pkgs.yq} -c . "$CREDENTIALS_DIRECTORY/config-$i.yaml") - done - chmod -w config.yaml + tmp="$(mktemp)" + ${lib.getExe pkgs.yq-go} eval-all '. as $item ireduce ({}; . *+ $item)' \ + ${settingsFormat.generate "olivetin-config.yaml" cfg.settings} \ + $CREDENTIALS_DIRECTORY/config-*.yaml > "$tmp" + chmod -w "$tmp" mkdir -p /run/olivetin/config - mv config.yaml /run/olivetin/config/config.yaml + mv "$tmp" /run/olivetin/config/config.yaml ''; serviceConfig = {