From 4c2cc47a043fff3000e7e89cae6d765baa15b000 Mon Sep 17 00:00:00 2001 From: "quentin@aristote.fr" Date: Sun, 11 Oct 2026 22:52:33 +0200 Subject: home: firefox: install extensions natively --- flake.nix | 4 +- .../personal/programs/firefox/default.nix | 50 +- modules/nixos/personal/system.nix | 1 - pkgs/default.nix | 4 - pkgs/firefoxAddons/addons.json | 17 - pkgs/firefoxAddons/default.nix | 527 --------------------- pkgs/firefoxAddons/update.sh | 1 - 7 files changed, 39 insertions(+), 565 deletions(-) delete mode 100644 pkgs/firefoxAddons/addons.json delete mode 100644 pkgs/firefoxAddons/default.nix delete mode 100755 pkgs/firefoxAddons/update.sh diff --git a/flake.nix b/flake.nix index ee0e6a3..93d9116 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,6 @@ outputs = { self, - nur, nixpkgs, flake-parts, ... @@ -23,7 +22,7 @@ overlays.personal = _: super: let - my-packages = import ./pkgs (super.extend nur.overlays.default); + my-packages = import ./pkgs super; in { inherit @@ -52,7 +51,6 @@ perSystem = { - config, system, pkgs, lib, diff --git a/modules/home-manager/personal/programs/firefox/default.nix b/modules/home-manager/personal/programs/firefox/default.nix index 46aaca1..0966be1 100644 --- a/modules/home-manager/personal/programs/firefox/default.nix +++ b/modules/home-manager/personal/programs/firefox/default.nix @@ -11,6 +11,33 @@ let inherit (pkgs.lib.personal) toUserJS; }; engines = import ./engines.nix { inherit lib pkgs; }; + 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"; + }; + }; + in { config = lib.mkMerge [ @@ -23,21 +50,20 @@ in }; programs.firefox = { configPath = "${config.xdg.configHome}/mozilla/firefox"; + policies.ExtensionSettings = { + "*".installation_mode = "blocked"; + } + // lib.mapAttrs' (name: value: { + name = value.id; + value = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi"; + installation_mode = "force_installed"; + updates_disabled = true; + }; + }) extensions; profiles.default = { id = 0; # isDefault = true extensions = { - packages = with pkgs.personal.firefoxAddons; [ - canvasblocker - clearurls - darkreader - neat-url - redirector - smart-referer - temporary-containers - ublock-origin - unpaywall - url-in-title - ]; settings."FirefoxColor@mozilla.com" = { force = true; settings.theme.colors = diff --git a/modules/nixos/personal/system.nix b/modules/nixos/personal/system.nix index 49ba6c8..63f0805 100644 --- a/modules/nixos/personal/system.nix +++ b/modules/nixos/personal/system.nix @@ -24,7 +24,6 @@ in type = with lib.types; listOf str; default = [ "nixpkgs" - "my-nixpkgs/nur" "nixos-hardware" ]; }; diff --git a/pkgs/default.nix b/pkgs/default.nix index e3eaa72..9b96b53 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -5,10 +5,6 @@ let lockscreen = super.callPackage ./lockscreen { }; - firefoxAddons = super.callPackage ./firefoxAddons { - buildMozillaXpiAddon = super.nur.repos.rycee.firefox-addons.buildFirefoxXpiAddon; - }; - rftg = super.callPackage ./rftg { }; static = { diff --git a/pkgs/firefoxAddons/addons.json b/pkgs/firefoxAddons/addons.json deleted file mode 100644 index d5ed691..0000000 --- a/pkgs/firefoxAddons/addons.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { "slug": "canvasblocker" }, - { "slug": "clearurls" }, - { "slug": "neat-url" }, - { "slug": "redirector" }, - { "slug": "smart-referer" }, - { "slug": "temporary-containers" }, - { "slug": "ublock-origin" }, - - { "slug": "darkreader" }, - { "slug": "add-custom-search-engine" }, - { "slug": "multi-account-containers" }, - { "slug": "tree-style-tab" }, - { "slug": "unpaywall" }, - { "slug": "url-in-title" }, - { "slug": "floccus" } -] diff --git a/pkgs/firefoxAddons/default.nix b/pkgs/firefoxAddons/default.nix deleted file mode 100644 index 9fa1cf1..0000000 --- a/pkgs/firefoxAddons/default.nix +++ /dev/null @@ -1,527 +0,0 @@ -{ - buildMozillaXpiAddon, - lib, -}: -{ - "add-custom-search-engine" = buildMozillaXpiAddon { - pname = "add-custom-search-engine"; - version = "5.0"; - addonId = "{af37054b-3ace-46a2-ac59-709e4412bec6}"; - url = "https://addons.mozilla.org/firefox/downloads/file/4464745/add_custom_search_engine-5.0.xpi"; - sha256 = "8b91bae54ef4d3b00cf7478fffc1bc005037bf6acd554d22169f95754b996e96"; - meta = with lib; { - description = "Add a custom search engine to the list of available search engines in the search bar and URL bar."; - license = licenses.mpl20; - mozPermissions = [ - "https://paste.mozilla.org/api/" - "https://dpaste.org/api/" - "search" - ]; - platforms = platforms.all; - }; - }; - "canvasblocker" = buildMozillaXpiAddon { - pname = "canvasblocker"; - version = "1.12"; - addonId = "CanvasBlocker@kkapsner.de"; - url = "https://addons.mozilla.org/firefox/downloads/file/4691016/canvasblocker-1.12.xpi"; - sha256 = "0698d92c4bd2d190b2f4025613bf4bd3dba40910d58ab4cf1b32f36637a244c9"; - meta = with lib; { - homepage = "https://github.com/kkapsner/CanvasBlocker/"; - description = "Alters some JS APIs to prevent fingerprinting."; - license = licenses.mpl20; - mozPermissions = [ - "" - "storage" - "tabs" - "webRequest" - "webRequestBlocking" - "contextualIdentities" - "cookies" - "privacy" - ]; - platforms = platforms.all; - }; - }; - "clearurls" = buildMozillaXpiAddon { - pname = "clearurls"; - version = "1.27.3"; - addonId = "{74145f27-f039-47ce-a470-a662b129930a}"; - url = "https://addons.mozilla.org/firefox/downloads/file/4432106/clearurls-1.27.3.xpi"; - sha256 = "54926b6e4274d5935a5fc0daa6320f1d371e3d2f1a5877467ca3ab22a65c4f20"; - meta = with lib; { - homepage = "https://clearurls.xyz/"; - description = "Removes tracking elements from URLs"; - license = licenses.lgpl3; - mozPermissions = [ - "" - "webRequest" - "webRequestBlocking" - "storage" - "unlimitedStorage" - "contextMenus" - "webNavigation" - "tabs" - "downloads" - "*://*.google.com/*" - "*://*.google.ad/*" - "*://*.google.ae/*" - "*://*.google.com.af/*" - "*://*.google.com.ag/*" - "*://*.google.com.ai/*" - "*://*.google.al/*" - "*://*.google.am/*" - "*://*.google.co.ao/*" - "*://*.google.com.ar/*" - "*://*.google.as/*" - "*://*.google.at/*" - "*://*.google.com.au/*" - "*://*.google.az/*" - "*://*.google.ba/*" - "*://*.google.com.bd/*" - "*://*.google.be/*" - "*://*.google.bf/*" - "*://*.google.bg/*" - "*://*.google.com.bh/*" - "*://*.google.bi/*" - "*://*.google.bj/*" - "*://*.google.com.bn/*" - "*://*.google.com.bo/*" - "*://*.google.com.br/*" - "*://*.google.bs/*" - "*://*.google.bt/*" - "*://*.google.co.bw/*" - "*://*.google.by/*" - "*://*.google.com.bz/*" - "*://*.google.ca/*" - "*://*.google.cd/*" - "*://*.google.cf/*" - "*://*.google.cg/*" - "*://*.google.ch/*" - "*://*.google.ci/*" - "*://*.google.co.ck/*" - "*://*.google.cl/*" - "*://*.google.cm/*" - "*://*.google.cn/*" - "*://*.google.com.co/*" - "*://*.google.co.cr/*" - "*://*.google.com.cu/*" - "*://*.google.cv/*" - "*://*.google.com.cy/*" - "*://*.google.cz/*" - "*://*.google.de/*" - "*://*.google.dj/*" - "*://*.google.dk/*" - "*://*.google.dm/*" - "*://*.google.com.do/*" - "*://*.google.dz/*" - "*://*.google.com.ec/*" - "*://*.google.ee/*" - "*://*.google.com.eg/*" - "*://*.google.es/*" - "*://*.google.com.et/*" - "*://*.google.fi/*" - "*://*.google.com.fj/*" - "*://*.google.fm/*" - "*://*.google.fr/*" - "*://*.google.ga/*" - "*://*.google.ge/*" - "*://*.google.gg/*" - "*://*.google.com.gh/*" - "*://*.google.com.gi/*" - "*://*.google.gl/*" - "*://*.google.gm/*" - "*://*.google.gp/*" - "*://*.google.gr/*" - "*://*.google.com.gt/*" - "*://*.google.gy/*" - "*://*.google.com.hk/*" - "*://*.google.hn/*" - "*://*.google.hr/*" - "*://*.google.ht/*" - "*://*.google.hu/*" - "*://*.google.co.id/*" - "*://*.google.ie/*" - "*://*.google.co.il/*" - "*://*.google.im/*" - "*://*.google.co.in/*" - "*://*.google.iq/*" - "*://*.google.is/*" - "*://*.google.it/*" - "*://*.google.je/*" - "*://*.google.com.jm/*" - "*://*.google.jo/*" - "*://*.google.co.jp/*" - "*://*.google.co.ke/*" - "*://*.google.com.kh/*" - "*://*.google.ki/*" - "*://*.google.kg/*" - "*://*.google.co.kr/*" - "*://*.google.com.kw/*" - "*://*.google.kz/*" - "*://*.google.la/*" - "*://*.google.com.lb/*" - "*://*.google.li/*" - "*://*.google.lk/*" - "*://*.google.co.ls/*" - "*://*.google.lt/*" - "*://*.google.lu/*" - "*://*.google.lv/*" - "*://*.google.com.ly/*" - "*://*.google.co.ma/*" - "*://*.google.md/*" - "*://*.google.me/*" - "*://*.google.mg/*" - "*://*.google.mk/*" - "*://*.google.ml/*" - "*://*.google.com.mm/*" - "*://*.google.mn/*" - "*://*.google.ms/*" - "*://*.google.com.mt/*" - "*://*.google.mu/*" - "*://*.google.mv/*" - "*://*.google.mw/*" - "*://*.google.com.mx/*" - "*://*.google.com.my/*" - "*://*.google.co.mz/*" - "*://*.google.com.na/*" - "*://*.google.com.nf/*" - "*://*.google.com.ng/*" - "*://*.google.com.ni/*" - "*://*.google.ne/*" - "*://*.google.nl/*" - "*://*.google.no/*" - "*://*.google.com.np/*" - "*://*.google.nr/*" - "*://*.google.nu/*" - "*://*.google.co.nz/*" - "*://*.google.com.om/*" - "*://*.google.com.pa/*" - "*://*.google.com.pe/*" - "*://*.google.com.pg/*" - "*://*.google.com.ph/*" - "*://*.google.com.pk/*" - "*://*.google.pl/*" - "*://*.google.pn/*" - "*://*.google.com.pr/*" - "*://*.google.ps/*" - "*://*.google.pt/*" - "*://*.google.com.py/*" - "*://*.google.com.qa/*" - "*://*.google.ro/*" - "*://*.google.ru/*" - "*://*.google.rw/*" - "*://*.google.com.sa/*" - "*://*.google.com.sb/*" - "*://*.google.sc/*" - "*://*.google.se/*" - "*://*.google.com.sg/*" - "*://*.google.sh/*" - "*://*.google.si/*" - "*://*.google.sk/*" - "*://*.google.com.sl/*" - "*://*.google.sn/*" - "*://*.google.so/*" - "*://*.google.sm/*" - "*://*.google.sr/*" - "*://*.google.st/*" - "*://*.google.com.sv/*" - "*://*.google.td/*" - "*://*.google.tg/*" - "*://*.google.co.th/*" - "*://*.google.com.tj/*" - "*://*.google.tk/*" - "*://*.google.tl/*" - "*://*.google.tm/*" - "*://*.google.tn/*" - "*://*.google.to/*" - "*://*.google.com.tr/*" - "*://*.google.tt/*" - "*://*.google.com.tw/*" - "*://*.google.co.tz/*" - "*://*.google.com.ua/*" - "*://*.google.co.ug/*" - "*://*.google.co.uk/*" - "*://*.google.com.uy/*" - "*://*.google.co.uz/*" - "*://*.google.com.vc/*" - "*://*.google.co.ve/*" - "*://*.google.vg/*" - "*://*.google.co.vi/*" - "*://*.google.com.vn/*" - "*://*.google.vu/*" - "*://*.google.ws/*" - "*://*.google.rs/*" - "*://*.google.co.za/*" - "*://*.google.co.zm/*" - "*://*.google.co.zw/*" - "*://*.google.cat/*" - "*://*.yandex.ru/*" - "*://*.yandex.com/*" - "*://*.ya.ru/*" - ]; - platforms = platforms.all; - }; - }; - "darkreader" = buildMozillaXpiAddon { - pname = "darkreader"; - version = "4.9.124"; - addonId = "addon@darkreader.org"; - url = "https://addons.mozilla.org/firefox/downloads/file/4748915/darkreader-4.9.124.xpi"; - sha256 = "ce703c98545999cee0b5c416f4fd4a3080f1405440f005d5c5cf23ac0868bcbd"; - meta = with lib; { - homepage = "https://darkreader.org/"; - description = "Dark mode for every website. Take care of your eyes, use dark theme for night and daily browsing."; - license = licenses.mit; - mozPermissions = [ - "alarms" - "contextMenus" - "storage" - "tabs" - "theme" - "" - ]; - platforms = platforms.all; - }; - }; - "floccus" = buildMozillaXpiAddon { - pname = "floccus"; - version = "5.9.1"; - addonId = "floccus@handmadeideas.org"; - url = "https://addons.mozilla.org/firefox/downloads/file/4759586/floccus-5.9.1.xpi"; - sha256 = "fd10810c818a6168a1c5bb67d95af33a29ed21d5c4978bfa79fd5bb342376263"; - meta = with lib; { - homepage = "https://floccus.org"; - description = "Securely synchronize bookmarks across Chrome, Firefox, Edge, and more using your own cloud storage."; - license = licenses.mpl20; - mozPermissions = [ - "*://*/*" - "alarms" - "bookmarks" - "storage" - "unlimitedStorage" - "tabs" - "tabGroups" - "identity" - ]; - platforms = platforms.all; - }; - }; - "multi-account-containers" = buildMozillaXpiAddon { - pname = "multi-account-containers"; - version = "8.3.7"; - addonId = "@testpilot-containers"; - url = "https://addons.mozilla.org/firefox/downloads/file/4733069/multi_account_containers-8.3.7.xpi"; - sha256 = "7f6f5ef7b106d33d1b99d2c5e53a2065d07f784b1852fe9b9f78394e9b405165"; - meta = with lib; { - homepage = "https://github.com/mozilla/multi-account-containers/#readme"; - description = "Firefox Multi-Account Containers lets you keep parts of your online life separated into color-coded tabs. Cookies are separated by container, allowing you to use the web with multiple accounts and integrate Mozilla VPN for an extra layer of privacy."; - license = licenses.mpl20; - mozPermissions = [ - "" - "activeTab" - "cookies" - "contextMenus" - "contextualIdentities" - "history" - "idle" - "management" - "storage" - "unlimitedStorage" - "tabs" - "webRequestBlocking" - "webRequest" - ]; - platforms = platforms.all; - }; - }; - "neat-url" = buildMozillaXpiAddon { - pname = "neat-url"; - version = "5.0.0"; - addonId = "neaturl@hugsmile.eu"; - url = "https://addons.mozilla.org/firefox/downloads/file/3557562/neat_url-5.0.0.xpi"; - sha256 = "0b41899ea0eb424517bbe7ce067eae22de0ff659a0f171671e604edef86cfa2c"; - meta = with lib; { - homepage = "https://github.com/Smile4ever/Neat-URL"; - description = "Remove garbage from URLs."; - license = licenses.gpl2; - mozPermissions = [ - "storage" - "notifications" - "contextMenus" - "webRequest" - "webRequestBlocking" - "tabs" - "" - ]; - platforms = platforms.all; - }; - }; - "redirector" = buildMozillaXpiAddon { - pname = "redirector"; - version = "3.5.3"; - addonId = "redirector@einaregilsson.com"; - url = "https://addons.mozilla.org/firefox/downloads/file/3535009/redirector-3.5.3.xpi"; - sha256 = "eddbd3d5944e748d0bd6ecb6d9e9cf0e0c02dced6f42db21aab64190e71c0f71"; - meta = with lib; { - homepage = "http://einaregilsson.com/redirector/"; - description = "Automatically redirects to user-defined urls on certain pages"; - license = licenses.mit; - mozPermissions = [ - "webRequest" - "webRequestBlocking" - "webNavigation" - "storage" - "tabs" - "http://*/*" - "https://*/*" - "notifications" - ]; - platforms = platforms.all; - }; - }; - "smart-referer" = buildMozillaXpiAddon { - pname = "smart-referer"; - version = "0.2.15"; - addonId = "smart-referer@meh.paranoid.pk"; - url = "https://addons.mozilla.org/firefox/downloads/file/3470999/smart_referer-0.2.15.xpi"; - sha256 = "4751ab905c4d9d13b1f21c9fc179efed7d248e3476effb5b393268b46855bf1a"; - meta = with lib; { - homepage = "https://gitlab.com/smart-referer/smart-referer"; - description = "Improve your privacy by limiting Referer information leak!\n\nPlease note that this extension has been largely superseded by better browser defaults for websites using HTTPS (almost all) and is not maintained anymore."; - mozPermissions = [ - "menus" - "storage" - "theme" - "webRequest" - "webRequestBlocking" - "*://*/*" - ]; - platforms = platforms.all; - }; - }; - "temporary-containers" = buildMozillaXpiAddon { - pname = "temporary-containers"; - version = "1.9.2"; - addonId = "{c607c8df-14a7-4f28-894f-29e8722976af}"; - url = "https://addons.mozilla.org/firefox/downloads/file/3723251/temporary_containers-1.9.2.xpi"; - sha256 = "3340a08c29be7c83bd0fea3fc27fde71e4608a4532d932114b439aa690e7edc0"; - meta = with lib; { - homepage = "https://github.com/stoically/temporary-containers"; - description = "Open tabs, websites, and links in automatically managed disposable containers which isolate the data websites store (cookies, storage, and more) from each other, enhancing your privacy and security while you browse."; - license = licenses.mit; - mozPermissions = [ - "" - "contextMenus" - "contextualIdentities" - "cookies" - "management" - "storage" - "tabs" - "webRequest" - "webRequestBlocking" - ]; - platforms = platforms.all; - }; - }; - "tree-style-tab" = buildMozillaXpiAddon { - pname = "tree-style-tab"; - version = "4.3.4"; - addonId = "treestyletab@piro.sakura.ne.jp"; - url = "https://addons.mozilla.org/firefox/downloads/file/4781258/tree_style_tab-4.3.4.xpi"; - sha256 = "c665f0bfdab104a3f28eba709f3437b8743667a2b3b67ba657f7403fe602d327"; - meta = with lib; { - homepage = "http://piro.sakura.ne.jp/xul/_treestyletab.html.en"; - description = "Show tabs like a tree."; - mozPermissions = [ - "activeTab" - "contextualIdentities" - "cookies" - "menus" - "menus.overrideContext" - "notifications" - "search" - "sessions" - "storage" - "tabGroups" - "tabs" - "theme" - ]; - platforms = platforms.all; - }; - }; - "ublock-origin" = buildMozillaXpiAddon { - pname = "ublock-origin"; - version = "1.70.0"; - addonId = "uBlock0@raymondhill.net"; - url = "https://addons.mozilla.org/firefox/downloads/file/4721638/ublock_origin-1.70.0.xpi"; - sha256 = "f2730d2877005763a45d765749892e936f49cae713d28f7aa6ea314454b89cf1"; - meta = with lib; { - homepage = "https://github.com/gorhill/uBlock#ublock-origin"; - description = "Finally, an efficient wide-spectrum content blocker. Easy on CPU and memory."; - license = licenses.gpl3; - mozPermissions = [ - "alarms" - "dns" - "menus" - "privacy" - "storage" - "tabs" - "unlimitedStorage" - "webNavigation" - "webRequest" - "webRequestBlocking" - "" - "http://*/*" - "https://*/*" - "file://*/*" - "https://easylist.to/*" - "https://*.fanboy.co.nz/*" - "https://filterlists.com/*" - "https://forums.lanik.us/*" - "https://github.com/*" - "https://*.github.io/*" - "https://github.com/uBlockOrigin/*" - "https://ublockorigin.github.io/*" - "https://*.reddit.com/r/uBlockOrigin/*" - ]; - platforms = platforms.all; - }; - }; - "unpaywall" = buildMozillaXpiAddon { - pname = "unpaywall"; - version = "3.98"; - addonId = "{f209234a-76f0-4735-9920-eb62507a54cd}"; - url = "https://addons.mozilla.org/firefox/downloads/file/3816853/unpaywall-3.98.xpi"; - sha256 = "6893bea86d3c4ed7f1100bf0e173591b526a062f4ddd7be13c30a54573c797fb"; - meta = with lib; { - homepage = "https://unpaywall.org/products/extension"; - description = "Get free text of research papers as you browse, using Unpaywall's index of ten million legal, open-access articles."; - license = licenses.mit; - mozPermissions = [ - "*://*.oadoi.org/*" - "storage" - "" - ]; - platforms = platforms.all; - }; - }; - "url-in-title" = buildMozillaXpiAddon { - pname = "url-in-title"; - version = "0.6resigned1"; - addonId = "{fcdb71fb-c9e5-48a3-9d04-e32713f5da88}"; - url = "https://addons.mozilla.org/firefox/downloads/file/4271802/url_in_title-0.6resigned1.xpi"; - sha256 = "a20bc859e834f423c54140260e9401f6df1347e749b92effb561bd9cfee973a4"; - meta = with lib; { - homepage = "https://github.com/cloutierjo/titleUrl"; - description = "Add the current host name to the windows title bar. It adds the possibility to recognize the window from other application that work based on windows titles like KeePass's autotype."; - license = licenses.gpl3; - mozPermissions = [ - "" - "tabs" - "storage" - ]; - platforms = platforms.all; - }; - }; -} diff --git a/pkgs/firefoxAddons/update.sh b/pkgs/firefoxAddons/update.sh deleted file mode 100755 index 56c6104..0000000 --- a/pkgs/firefoxAddons/update.sh +++ /dev/null @@ -1 +0,0 @@ -nix run git+https://git.sr.ht/~rycee/mozilla-addons-to-nix# addons.json default.nix -- cgit v1.3.1