{ config, lib, ... }: let extensions = { canvasblocker = { id = "CanvasBlocker@kkapsner.de"; }; url-in-title-keepass = { id = "{fcdb71fb-c9e5-48a3-9d04-e32713f5da88}"; }; clearurls = { id = "{74145f27-f039-47ce-a470-a662b129930a}"; }; temporary-containers = { id = "{c607c8df-14a7-4f28-894f-29e8722976af}"; }; floccus = { id = "floccus@handmadeideas.org"; }; darkreader = { id = "addon@darkreader.org"; }; ublock-origin = { id = "uBlock0@raymondhill.net"; }; firefox-color = { id = "FirefoxColor@mozilla.com"; settings.theme.colors = let mkBgColor = lib.mkForce ( with config.lib.stylix.colors; { r = base00-rgb-r; g = base00-rgb-g; b = base00-rgb-b; } ); in { frame = mkBgColor; sidebar_border = mkBgColor; popup_border = mkBgColor; tab_baground_separator = mkBgColor; tab_line = mkBgColor; toolbar_field_border_focus = mkBgColor; }; }; }; in { programs.firefox = { policies.ExtensionSettings = { "*".installation_mode = "blocked"; } // lib.mapAttrs' (name: { id, ... }: { name = id; value = { install_url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi"; installation_mode = "force_installed"; updates_disabled = true; }; }) extensions; profiles.default.extensions.settings = lib.mapAttrs' ( _: { id, settings ? { }, }: { name = id; value = if settings != { } then { force = true; inherit settings; } else { force = false; }; } ) extensions; }; }