From 97ac0801d187b2911e8caa45316399de12f6f199 Mon Sep 17 00:00:00 2001 From: bricked Date: Tue, 18 Feb 2025 21:24:24 +0000 Subject: [PATCH] firefox: prevent extensions settings override (#6490) Prevents extensions settings from accidentally being overriden when using `profiles..extensions.settings`. Adds the `profiles..extensions.force` option to acknowledge the risk. --- modules/programs/firefox/mkFirefoxModule.nix | 26 +++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/modules/programs/firefox/mkFirefoxModule.nix b/modules/programs/firefox/mkFirefoxModule.nix index 115af89d..db787124 100644 --- a/modules/programs/firefox/mkFirefoxModule.nix +++ b/modules/programs/firefox/mkFirefoxModule.nix @@ -703,6 +703,17 @@ in { ''; }; + force = mkOption { + description = '' + Whether to override all previous firefox settings. + + This is required when using `settings`. + ''; + default = false; + example = true; + type = types.bool; + }; + settings = mkOption { default = { }; example = literalExpression '' @@ -829,7 +840,20 @@ in { (mkNoDuplicateAssertion cfg.profiles "profile") ] ++ (mapAttrsToList (_: profile: mkNoDuplicateAssertion profile.containers "container") - cfg.profiles); + cfg.profiles) ++ (mapAttrsToList (profileName: profile: { + assertion = profile.extensions.settings == { } + || profile.extensions.force; + message = '' + Using '${ + lib.showAttrPath + (modulePath ++ [ "profiles" profileName "extensions" "settings" ]) + }' will override all previous extensions settings. + Enable '${ + lib.showAttrPath + (modulePath ++ [ "profiles" profileName "extensions" "force" ]) + }' to acknowledge this. + ''; + }) cfg.profiles); warnings = optional (cfg.enableGnomeExtensions or false) '' Using '${moduleName}.enableGnomeExtensions' has been deprecated and