{ pkgs, lib, fetchurl, runCommand }: let # Extension IDs are used as keys, see .applications.gecko.id in manifest.json localAddon = { id, src, settings ? null }: { policies = { ExtensionSettings.${id} = { installation_mode = "force_installed"; install_url = "file://${src}"; }; } // (lib.optionalAttrs (settings != null) { "3rdparty".Extensions.${id} = settings; }); }; addon = { id, url, sha256, settings ? null }: localAddon { inherit id settings; src = fetchurl { inherit url sha256; }; }; in { # This can be safe-ish, if extension installation is also disabled disableExtensionSignatureChecking.preferences = { xpinstall.signatures.required = false; }; privacybadger = addon { id = "jid1-MnnxcxisBPnSXQ@jetpack"; url = "https://addons.mozilla.org/firefox/downloads/file/3509922/privacy_badger-2020.2.19-an+fx.xpi"; sha256 = "1issggv5wl5x3a4p3q8hrhbkhgsdx9f2qzbscg6y6f75yazswc20"; settings = { showIntroPage = false; }; }; noscript = addon { id = "{73a6fe31-595d-460b-a920-fcc0f8843232}"; url = "https://addons.mozilla.org/firefox/downloads/file/3517653/noscript_security_suite-11.0.15-an+fx.xpi"; sha256 = "0gb0a6pp0rj9jpg1094arqvcwxh1rd2m47ijawlidybm29qmyyay"; }; noscriptFork = localAddon { id = "{73a6fe31-595d-460b-a920-fcc0f8843232}"; src = import (pkgs.fetchzip { url = https://git.tx0.co/firefox-profiles/noscript/snapshot/noscript-63e23c676fb86f33e70d7362bf625b534ce65346.tar.xz ; sha256 = "0f0hna8fjj7vdjgmnjkd567smg8gda8jp9sl21nz3dx0s5d0vw8f"; }); settings.defaultSettings = builtins.readFile ./noscript/config.json; }; ublock = addon { id = "uBlock0@raymondhill.net"; url = "https://addons.mozilla.org/firefox/downloads/file/3509800/ublock_origin-1.25.0-an+fx.xpi"; sha256 = "0pyna4c2b2ffh8ifjj4c8ga9b73g37pk432nyinf8majyb1fq6rc"; settings.adminSettings = builtins.readFile ./ublock/config.json; }; qwantjunior = localAddon { id = "qwantjunior@search.mozilla.org"; src = runCommand "addon.xpi" { nativeBuildInputs = [ pkgs.zip ]; } '' SRC=${./qwantsearch} cd $SRC zip -r $out . ''; settings.settings = { searchRegionKey = "DE"; searchLanguageKey = "de"; interfaceLanguageKey = "de_de"; }; }; qwantjuniorSystem.policies = { "3rdparty".Extensions."qwantjunior@search.mozilla.org".settings = { searchRegionKey = "DE"; searchLanguageKey = "de"; interfaceLanguageKey = "de_de"; }; }; /* borderify.policies = { ExtensionSettings."borderify@example.com" = { installation_mode = "force_installed"; install_url = "file://${../../borderify.xpi}"; }; }; */ }