{ config, lib, ... }: let extensions = { canvasblocker = { id = "CanvasBlocker@kkapsner.de"; # default settings look fine }; url-in-title-keepass = { id = "{45cf9154-a39d-4c84-93e7-840362a3d8d0}"; # no settings }; clearurls = { id = "{74145f27-f039-47ce-a470-a662b129930a}"; # default settings are fine and # contain data that should be updated automatically }; temporary-containers = { id = "{c607c8df-14a7-4f28-894f-29e8722976af}"; # exported settings settings = lib.fromJSON (builtins.readFile ./temporary-containers.json); }; floccus = { id = "floccus@handmadeideas.org"; # to replace with hm-managed bookmarks }; darkreader = { id = "addon@darkreader.org"; # no settings stored in browser-extension-data/ }; ublock-origin = { id = "uBlock0@raymondhill.net"; settings = lib.fromJSON (builtins.readFile ./ublock-origin.json); }; 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; }; }