From 800133566d79ba66faec6f2aca40f9e52b6a7c4d Mon Sep 17 00:00:00 2001 From: rnhmjoj Date: Tue, 5 Sep 2023 16:28:57 +0200 Subject: [PATCH] firefox wrapper: fix merging of policies files If multiple extraPolicies or extraPoliciesFiles are given, the JSON objects are merged using `jq` with the `a + b` operator, which simply combines all the unique keys of `a`, `b` with the duplicated keys from `b`, without recursion. This strategy is completely wrong in this case: as policy files consists of a single key, "policies", all that happens is that `b` takes over, in other words: $(jq -s '.[0] + .[1]' a b) == $(cat b) So there is no merging at all, the final policies.json file is simply the last file in the list. The `a * b` operation should be used instead, which performs the merge by recursing in each key. --- pkgs/applications/networking/browsers/firefox/wrapper.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index e909b15f77ae..12924180c25c 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -362,7 +362,7 @@ let extraPoliciesFiles=(${builtins.toString extraPoliciesFiles}) for extraPoliciesFile in "''${extraPoliciesFiles[@]}"; do - jq -s '.[0] + .[1]' "$POL_PATH" $extraPoliciesFile > .tmp.json + jq -s '.[0] * .[1]' "$POL_PATH" $extraPoliciesFile > .tmp.json mv .tmp.json "$POL_PATH" done