From 34f74229f8291156f35de943fbecfbe90c3366a9 Mon Sep 17 00:00:00 2001 From: Azat Bahawi Date: Tue, 28 Nov 2023 23:10:04 +0300 Subject: 2023-11-28 --- .gitignore | 1 + Taskfile.dist.yml | 16 + flake.lock | 24 +- flake.nix | 24 +- modules/common/common/nix.nix | 3 +- modules/nixos/firefox/addons.json | 59 +++ modules/nixos/firefox/addons.nix | 1002 +++++++++++++++++++++++++++++++++++++ modules/nixos/firefox/default.nix | 64 ++- 8 files changed, 1137 insertions(+), 56 deletions(-) create mode 100644 Taskfile.dist.yml create mode 100644 modules/nixos/firefox/addons.json create mode 100644 modules/nixos/firefox/addons.nix diff --git a/.gitignore b/.gitignore index a0e2b39..1028b64 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.qcow2 .direnv/ .pre-commit-config.yaml +/.task/ /result* diff --git a/Taskfile.dist.yml b/Taskfile.dist.yml new file mode 100644 index 0000000..e0e8240 --- /dev/null +++ b/Taskfile.dist.yml @@ -0,0 +1,16 @@ +--- +version: '3' + +tasks: + update-firefox-addons: + vars: + input: "{{ .ROOT_DIR }}/modules/nixos/firefox/addons.json" + output: "{{ .ROOT_DIR }}/modules/nixos/firefox/addons.nix" + sources: + - "{{ .input }}" + generates: + - "{{ .output }}" + cmds: + - nix run sourcehut:~rycee/mozilla-addons-to-nix {{ .input }} {{ .output }} + - nix fmt {{ .output }} + - nix run .#deadnix -- --edit --quiet {{ .output }} diff --git a/flake.lock b/flake.lock index b306f68..7390826 100644 --- a/flake.lock +++ b/flake.lock @@ -241,6 +241,7 @@ "gitignore": { "inputs": { "nixpkgs": [ + "pre-commit-hooks", "nixpkgs" ] }, @@ -254,7 +255,6 @@ }, "original": { "owner": "hercules-ci", - "ref": "master", "repo": "gitignore.nix", "type": "github" } @@ -476,22 +476,6 @@ "type": "github" } }, - "nur": { - "locked": { - "lastModified": 1700692941, - "narHash": "sha256-kthn0TMnP/EmfO4ujKYwXdzzFXqKmf3jdzQt7lRONaA=", - "owner": "nix-community", - "repo": "NUR", - "rev": "9e74bf0dc3167149e484519440359a347c5b68f4", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "master", - "repo": "NUR", - "type": "github" - } - }, "poetry2nix": { "inputs": { "flake-utils": [ @@ -527,9 +511,7 @@ "flake-utils": [ "flake-utils" ], - "gitignore": [ - "gitignore" - ], + "gitignore": "gitignore", "nixpkgs": [ "nixpkgs" ], @@ -563,7 +545,6 @@ "flake-compat": "flake-compat", "flake-registry": "flake-registry", "flake-utils": "flake-utils", - "gitignore": "gitignore", "home-manager": "home-manager", "impermanence": "impermanence", "nix-minecraft": "nix-minecraft", @@ -575,7 +556,6 @@ "nixvim": "nixvim", "nmap-vulners": "nmap-vulners", "nmap-vulscan": "nmap-vulscan", - "nur": "nur", "pre-commit-hooks": "pre-commit-hooks", "simple-nixos-mailserver": "simple-nixos-mailserver", "xmonad-ng": "xmonad-ng" diff --git a/flake.nix b/flake.nix index a70a934..e7a4624 100644 --- a/flake.nix +++ b/flake.nix @@ -41,13 +41,6 @@ ref = "master"; }; - nur = { - type = "github"; - owner = "nix-community"; - repo = "NUR"; - ref = "master"; - }; - darwin = { type = "github"; owner = "LnL7"; @@ -194,20 +187,11 @@ inputs = { flake-compat.follows = "flake-compat"; flake-utils.follows = "flake-utils"; - gitignore.follows = "gitignore"; nixpkgs-stable.follows = "nixpkgs-stable"; nixpkgs.follows = "nixpkgs"; }; }; - gitignore = { - type = "github"; - owner = "hercules-ci"; - repo = "gitignore.nix"; - ref = "master"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - xmonad-ng = { # type = "path"; # path = "/home/azahi/src/xmonad-ng"; @@ -269,9 +253,11 @@ overlays = [self.overlays.default]; }; - devShells.default = self.legacyPackages.${system}.mkShell { - inherit (self.checks.${system}.preCommit) shellHook; - }; + devShells.default = with self.legacyPackages.${system}; + mkShell { + inherit (self.checks.${system}.preCommit) shellHook; + packages = [go-task]; + }; formatter = self.legacyPackages.${system}.alejandra; diff --git a/modules/common/common/nix.nix b/modules/common/common/nix.nix index ec3a4a3..39e3282 100644 --- a/modules/common/common/nix.nix +++ b/modules/common/common/nix.nix @@ -4,6 +4,7 @@ lib, localUsername ? lib.my.username, pkgs, + pkgsPr, this, ... }: @@ -82,8 +83,8 @@ with lib; { nixpkgs.overlays = with inputs; [ self.overlays.default - nur.overlay (_: _: { + inherit (pkgsPr 270503 "sha256-f0eQY+PzwgtQoaIY+uslh8yqSfFHDYLEQUODO0FxTf0=") soju; }) ]; diff --git a/modules/nixos/firefox/addons.json b/modules/nixos/firefox/addons.json new file mode 100644 index 0000000..68c2f86 --- /dev/null +++ b/modules/nixos/firefox/addons.json @@ -0,0 +1,59 @@ +[ + { + "pname": "bitwarden", + "slug": "bitwarden-password-manager" + }, + { + "slug": "canvasblocker" + }, + { + "slug": "consent-o-matic" + }, + { + "slug": "darkreader" + }, + { + "pname": "dont-track-me-google", + "slug": "dont-track-me-google1" + }, + { + "slug": "furiganaize" + }, + { + "slug": "ipfs-companion" + }, + { + "slug": "languagetool" + }, + { + "pname": "localcdn", + "slug": "localcdn-fork-of-decentraleyes" + }, + { + "slug": "no-pdf-download" + }, + { + "slug": "noscript" + }, + { + "pname": "privacy-badger", + "slug": "privacy-badger17" + }, + { + "slug": "privacy-redirect" + }, + { + "pname": "rikaichamp", + "slug": "10ten-ja-reader" + }, + { + "slug": "ublock-origin" + }, + { + "pname": "user-agent-switcher", + "slug": "user-agent-string-switcher" + }, + { + "slug": "violentmonkey" + } +] diff --git a/modules/nixos/firefox/addons.nix b/modules/nixos/firefox/addons.nix new file mode 100644 index 0000000..fc4d51b --- /dev/null +++ b/modules/nixos/firefox/addons.nix @@ -0,0 +1,1002 @@ +{ + buildFirefoxXpiAddon, + lib, +}: { + "bitwarden" = buildFirefoxXpiAddon { + pname = "bitwarden"; + version = "2023.10.2"; + addonId = "{446900e4-71c2-419f-a6a7-df9c091e268b}"; + url = "https://addons.mozilla.org/firefox/downloads/file/4191732/bitwarden_password_manager-2023.10.2.xpi"; + sha256 = "3eac55c07a2802a6192e2788da86578d45158fca21ccdeb521e5281137ecc24a"; + meta = with lib; { + homepage = "https://bitwarden.com"; + description = "A secure and free password manager for all of your devices."; + license = licenses.gpl3; + mozPermissions = [ + "tabs" + "contextMenus" + "storage" + "unlimitedStorage" + "clipboardRead" + "clipboardWrite" + "idle" + "http://*/*" + "https://*/*" + "webRequest" + "webRequestBlocking" + "file:///*" + ]; + platforms = platforms.all; + }; + }; + "canvasblocker" = buildFirefoxXpiAddon { + pname = "canvasblocker"; + version = "1.9"; + addonId = "CanvasBlocker@kkapsner.de"; + url = "https://addons.mozilla.org/firefox/downloads/file/4097901/canvasblocker-1.9.xpi"; + sha256 = "5248c2c2dedd14b8aa2cd73f9484285d9453e93339f64fcf04a3d63c859cf3d7"; + 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; + }; + }; + "consent-o-matic" = buildFirefoxXpiAddon { + pname = "consent-o-matic"; + version = "1.0.12"; + addonId = "gdpr@cavi.au.dk"; + url = "https://addons.mozilla.org/firefox/downloads/file/4074847/consent_o_matic-1.0.12.xpi"; + sha256 = "013ea48757b8a4d84a2a0d944bc49b5612d62bae1d337f9569f425f2b8310e0f"; + meta = with lib; { + homepage = "https://consentomatic.au.dk/"; + description = "Automatic handling of GDPR consent forms"; + license = licenses.mit; + mozPermissions = ["activeTab" "storage" ""]; + platforms = platforms.all; + }; + }; + "darkreader" = buildFirefoxXpiAddon { + pname = "darkreader"; + version = "4.9.70"; + addonId = "addon@darkreader.org"; + url = "https://addons.mozilla.org/firefox/downloads/file/4198549/darkreader-4.9.70.xpi"; + sha256 = "3ccbe247031dd4fcc3d9bd840872ed38e9843729709f92803c234041070588a7"; + 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; + }; + }; + "dont-track-me-google" = buildFirefoxXpiAddon { + pname = "dont-track-me-google"; + version = "4.28"; + addonId = "dont-track-me-google@robwu.nl"; + url = "https://addons.mozilla.org/firefox/downloads/file/4132891/dont_track_me_google1-4.28.xpi"; + sha256 = "25bc90005d6f28d53182ef48c7efcbba72b198ce67cf1f0747dbd23d43078b26"; + meta = with lib; { + homepage = "https://github.com/Rob--W/dont-track-me-google"; + description = "Removes the annoying link-conversion at Google Search / maps / ..."; + license = licenses.mit; + mozPermissions = [ + "storage" + "*://*.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/*" + "*://*.google.ng/*" + ]; + platforms = platforms.all; + }; + }; + "furiganaize" = buildFirefoxXpiAddon { + pname = "furiganaize"; + version = "0.7.2"; + addonId = "{a2503cd4-4083-4c2f-bef2-37767a569867}"; + url = "https://addons.mozilla.org/firefox/downloads/file/4032306/furiganaize-0.7.2.xpi"; + sha256 = "7545bc418f2afbc576b0e762f2b2fa0545d5d94f3f80737e5356d087a5951c0b"; + meta = with lib; { + homepage = "https://github.com/kuanyui/Furiganaize"; + description = "Auto insert furigana (振り仮名) on Japanese kanji."; + license = licenses.mit; + mozPermissions = [ + "http://*/*" + "https://*/*" + "file://*/*" + "" + "activeTab" + "tabs" + "storage" + ]; + platforms = platforms.all; + }; + }; + "ipfs-companion" = buildFirefoxXpiAddon { + pname = "ipfs-companion"; + version = "3.1.0"; + addonId = "ipfs-firefox-addon@lidel.org"; + url = "https://addons.mozilla.org/firefox/downloads/file/4172699/ipfs_companion-3.1.0.xpi"; + sha256 = "784f6d1e0497d86f1e42cfe7de8548b5cc28fabe80e50771d90f59ddf1b9d3c1"; + meta = with lib; { + homepage = "https://github.com/ipfs/ipfs-companion"; + description = "Harness the power of IPFS in your browser"; + license = licenses.cc0; + mozPermissions = [ + "idle" + "tabs" + "notifications" + "proxy" + "storage" + "unlimitedStorage" + "contextMenus" + "clipboardWrite" + "webNavigation" + "webRequest" + "webRequestBlocking" + ]; + platforms = platforms.all; + }; + }; + "languagetool" = buildFirefoxXpiAddon { + pname = "languagetool"; + version = "8.3.0"; + addonId = "languagetool-webextension@languagetool.org"; + url = "https://addons.mozilla.org/firefox/downloads/file/4199245/languagetool-8.3.0.xpi"; + sha256 = "e357424e3df9dde4ba10eb9f8f3719ac4830681570557f4d51db15a462cd7667"; + meta = with lib; { + homepage = "https://languagetool.org"; + description = "With this extension you can check text with the free style and grammar checker LanguageTool. It finds many errors that a simple spell checker cannot detect, like mixing up there/their, a/an, or repeating a word."; + mozPermissions = [ + "activeTab" + "storage" + "contextMenus" + "alarms" + "http://*/*" + "https://*/*" + "file:///*" + "*://docs.google.com/document/*" + "*://languagetool.org/*" + ]; + platforms = platforms.all; + }; + }; + "localcdn" = buildFirefoxXpiAddon { + pname = "localcdn"; + version = "2.6.59"; + addonId = "{b86e4813-687a-43e6-ab65-0bde4ab75758}"; + url = "https://addons.mozilla.org/firefox/downloads/file/4197044/localcdn_fork_of_decentraleyes-2.6.59.xpi"; + sha256 = "0aa14f964d0a851151dd8ac5ad87ae9085eea8e44d0d19e3b6b2849f92422721"; + meta = with lib; { + homepage = "https://www.localcdn.org"; + description = "Emulates remote frameworks (e.g. jQuery, Bootstrap, AngularJS) and delivers them as local resource. Prevents unnecessary 3rd party requests to Google, StackPath, MaxCDN and more. Prepared rules for uBlock Origin/uMatrix."; + license = licenses.mpl20; + mozPermissions = [ + "*://*/*" + "privacy" + "storage" + "webNavigation" + "webRequest" + "webRequestBlocking" + ]; + platforms = platforms.all; + }; + }; + "no-pdf-download" = buildFirefoxXpiAddon { + pname = "no-pdf-download"; + version = "1.0.6"; + addonId = "{b9b25e4a-bdf4-4270-868c-3f619eaf437d}"; + url = "https://addons.mozilla.org/firefox/downloads/file/3020560/no_pdf_download-1.0.6.xpi"; + sha256 = "fa27b6729178a23ccf2eee07cd7650d841fc6040f2e5adfb919931b671ed79e6"; + meta = with lib; { + homepage = "https://github.com/MorbZ/no-pdf-download"; + description = "Opens all PDF files directly in the browser."; + license = licenses.mit; + mozPermissions = ["webRequest" "webRequestBlocking" ""]; + platforms = platforms.all; + }; + }; + "noscript" = buildFirefoxXpiAddon { + pname = "noscript"; + version = "11.4.28"; + addonId = "{73a6fe31-595d-460b-a920-fcc0f8843232}"; + url = "https://addons.mozilla.org/firefox/downloads/file/4178438/noscript-11.4.28.xpi"; + sha256 = "54d076b3226d454216117547f6441d2f95af3057d20f726e55d94b0f22573c14"; + meta = with lib; { + homepage = "https://noscript.net"; + description = "The best security you can get in a web browser! Allow potentially malicious web content to run only from sites you trust. Protect yourself against XSS other web security exploits."; + license = licenses.gpl2; + mozPermissions = [ + "contextMenus" + "storage" + "tabs" + "unlimitedStorage" + "webNavigation" + "webRequest" + "webRequestBlocking" + "dns" + "" + "file://*/*" + "ftp://*/*" + ]; + platforms = platforms.all; + }; + }; + "privacy-badger" = buildFirefoxXpiAddon { + pname = "privacy-badger"; + version = "2023.10.31"; + addonId = "jid1-MnnxcxisBPnSXQ@jetpack"; + url = "https://addons.mozilla.org/firefox/downloads/file/4188670/privacy_badger17-2023.10.31.xpi"; + sha256 = "37e96cbd257b73d7350605ed20494a82b578f25a2cefc3de2dab019e5ff6ced1"; + meta = with lib; { + homepage = "https://privacybadger.org/"; + description = "Automatically learns to block invisible trackers."; + license = licenses.gpl3; + mozPermissions = [ + "alarms" + "tabs" + "http://*/*" + "https://*/*" + "webNavigation" + "webRequest" + "webRequestBlocking" + "storage" + "privacy" + "https://*.facebook.com/*" + "http://*.facebook.com/*" + "https://*.messenger.com/*" + "http://*.messenger.com/*" + "*://*.facebookcorewwwi.onion/*" + "https://docs.google.com/*" + "http://docs.google.com/*" + "https://mail.google.com/*" + "http://mail.google.com/*" + "https://www.google.com/*" + "http://www.google.com/*" + "https://www.google.ad/*" + "http://www.google.ad/*" + "https://www.google.ae/*" + "http://www.google.ae/*" + "https://www.google.com.af/*" + "http://www.google.com.af/*" + "https://www.google.com.ag/*" + "http://www.google.com.ag/*" + "https://www.google.com.ai/*" + "http://www.google.com.ai/*" + "https://www.google.al/*" + "http://www.google.al/*" + "https://www.google.am/*" + "http://www.google.am/*" + "https://www.google.co.ao/*" + "http://www.google.co.ao/*" + "https://www.google.com.ar/*" + "http://www.google.com.ar/*" + "https://www.google.as/*" + "http://www.google.as/*" + "https://www.google.at/*" + "http://www.google.at/*" + "https://www.google.com.au/*" + "http://www.google.com.au/*" + "https://www.google.az/*" + "http://www.google.az/*" + "https://www.google.ba/*" + "http://www.google.ba/*" + "https://www.google.com.bd/*" + "http://www.google.com.bd/*" + "https://www.google.be/*" + "http://www.google.be/*" + "https://www.google.bf/*" + "http://www.google.bf/*" + "https://www.google.bg/*" + "http://www.google.bg/*" + "https://www.google.com.bh/*" + "http://www.google.com.bh/*" + "https://www.google.bi/*" + "http://www.google.bi/*" + "https://www.google.bj/*" + "http://www.google.bj/*" + "https://www.google.com.bn/*" + "http://www.google.com.bn/*" + "https://www.google.com.bo/*" + "http://www.google.com.bo/*" + "https://www.google.com.br/*" + "http://www.google.com.br/*" + "https://www.google.bs/*" + "http://www.google.bs/*" + "https://www.google.bt/*" + "http://www.google.bt/*" + "https://www.google.co.bw/*" + "http://www.google.co.bw/*" + "https://www.google.by/*" + "http://www.google.by/*" + "https://www.google.com.bz/*" + "http://www.google.com.bz/*" + "https://www.google.ca/*" + "http://www.google.ca/*" + "https://www.google.cd/*" + "http://www.google.cd/*" + "https://www.google.cf/*" + "http://www.google.cf/*" + "https://www.google.cg/*" + "http://www.google.cg/*" + "https://www.google.ch/*" + "http://www.google.ch/*" + "https://www.google.ci/*" + "http://www.google.ci/*" + "https://www.google.co.ck/*" + "http://www.google.co.ck/*" + "https://www.google.cl/*" + "http://www.google.cl/*" + "https://www.google.cm/*" + "http://www.google.cm/*" + "https://www.google.cn/*" + "http://www.google.cn/*" + "https://www.google.com.co/*" + "http://www.google.com.co/*" + "https://www.google.co.cr/*" + "http://www.google.co.cr/*" + "https://www.google.com.cu/*" + "http://www.google.com.cu/*" + "https://www.google.cv/*" + "http://www.google.cv/*" + "https://www.google.com.cy/*" + "http://www.google.com.cy/*" + "https://www.google.cz/*" + "http://www.google.cz/*" + "https://www.google.de/*" + "http://www.google.de/*" + "https://www.google.dj/*" + "http://www.google.dj/*" + "https://www.google.dk/*" + "http://www.google.dk/*" + "https://www.google.dm/*" + "http://www.google.dm/*" + "https://www.google.com.do/*" + "http://www.google.com.do/*" + "https://www.google.dz/*" + "http://www.google.dz/*" + "https://www.google.com.ec/*" + "http://www.google.com.ec/*" + "https://www.google.ee/*" + "http://www.google.ee/*" + "https://www.google.com.eg/*" + "http://www.google.com.eg/*" + "https://www.google.es/*" + "http://www.google.es/*" + "https://www.google.com.et/*" + "http://www.google.com.et/*" + "https://www.google.fi/*" + "http://www.google.fi/*" + "https://www.google.com.fj/*" + "http://www.google.com.fj/*" + "https://www.google.fm/*" + "http://www.google.fm/*" + "https://www.google.fr/*" + "http://www.google.fr/*" + "https://www.google.ga/*" + "http://www.google.ga/*" + "https://www.google.ge/*" + "http://www.google.ge/*" + "https://www.google.gg/*" + "http://www.google.gg/*" + "https://www.google.com.gh/*" + "http://www.google.com.gh/*" + "https://www.google.com.gi/*" + "http://www.google.com.gi/*" + "https://www.google.gl/*" + "http://www.google.gl/*" + "https://www.google.gm/*" + "http://www.google.gm/*" + "https://www.google.gr/*" + "http://www.google.gr/*" + "https://www.google.com.gt/*" + "http://www.google.com.gt/*" + "https://www.google.gy/*" + "http://www.google.gy/*" + "https://www.google.com.hk/*" + "http://www.google.com.hk/*" + "https://www.google.hn/*" + "http://www.google.hn/*" + "https://www.google.hr/*" + "http://www.google.hr/*" + "https://www.google.ht/*" + "http://www.google.ht/*" + "https://www.google.hu/*" + "http://www.google.hu/*" + "https://www.google.co.id/*" + "http://www.google.co.id/*" + "https://www.google.ie/*" + "http://www.google.ie/*" + "https://www.google.co.il/*" + "http://www.google.co.il/*" + "https://www.google.im/*" + "http://www.google.im/*" + "https://www.google.co.in/*" + "http://www.google.co.in/*" + "https://www.google.iq/*" + "http://www.google.iq/*" + "https://www.google.is/*" + "http://www.google.is/*" + "https://www.google.it/*" + "http://www.google.it/*" + "https://www.google.je/*" + "http://www.google.je/*" + "https://www.google.com.jm/*" + "http://www.google.com.jm/*" + "https://www.google.jo/*" + "http://www.google.jo/*" + "https://www.google.co.jp/*" + "http://www.google.co.jp/*" + "https://www.google.co.ke/*" + "http://www.google.co.ke/*" + "https://www.google.com.kh/*" + "http://www.google.com.kh/*" + "https://www.google.ki/*" + "http://www.google.ki/*" + "https://www.google.kg/*" + "http://www.google.kg/*" + "https://www.google.co.kr/*" + "http://www.google.co.kr/*" + "https://www.google.com.kw/*" + "http://www.google.com.kw/*" + "https://www.google.kz/*" + "http://www.google.kz/*" + "https://www.google.la/*" + "http://www.google.la/*" + "https://www.google.com.lb/*" + "http://www.google.com.lb/*" + "https://www.google.li/*" + "http://www.google.li/*" + "https://www.google.lk/*" + "http://www.google.lk/*" + "https://www.google.co.ls/*" + "http://www.google.co.ls/*" + "https://www.google.lt/*" + "http://www.google.lt/*" + "https://www.google.lu/*" + "http://www.google.lu/*" + "https://www.google.lv/*" + "http://www.google.lv/*" + "https://www.google.com.ly/*" + "http://www.google.com.ly/*" + "https://www.google.co.ma/*" + "http://www.google.co.ma/*" + "https://www.google.md/*" + "http://www.google.md/*" + "https://www.google.me/*" + "http://www.google.me/*" + "https://www.google.mg/*" + "http://www.google.mg/*" + "https://www.google.mk/*" + "http://www.google.mk/*" + "https://www.google.ml/*" + "http://www.google.ml/*" + "https://www.google.com.mm/*" + "http://www.google.com.mm/*" + "https://www.google.mn/*" + "http://www.google.mn/*" + "https://www.google.ms/*" + "http://www.google.ms/*" + "https://www.google.com.mt/*" + "http://www.google.com.mt/*" + "https://www.google.mu/*" + "http://www.google.mu/*" + "https://www.google.mv/*" + "http://www.google.mv/*" + "https://www.google.mw/*" + "http://www.google.mw/*" + "https://www.google.com.mx/*" + "http://www.google.com.mx/*" + "https://www.google.com.my/*" + "http://www.google.com.my/*" + "https://www.google.co.mz/*" + "http://www.google.co.mz/*" + "https://www.google.com.na/*" + "http://www.google.com.na/*" + "https://www.google.com.ng/*" + "http://www.google.com.ng/*" + "https://www.google.com.ni/*" + "http://www.google.com.ni/*" + "https://www.google.ne/*" + "http://www.google.ne/*" + "https://www.google.nl/*" + "http://www.google.nl/*" + "https://www.google.no/*" + "http://www.google.no/*" + "https://www.google.com.np/*" + "http://www.google.com.np/*" + "https://www.google.nr/*" + "http://www.google.nr/*" + "https://www.google.nu/*" + "http://www.google.nu/*" + "https://www.google.co.nz/*" + "http://www.google.co.nz/*" + "https://www.google.com.om/*" + "http://www.google.com.om/*" + "https://www.google.com.pa/*" + "http://www.google.com.pa/*" + "https://www.google.com.pe/*" + "http://www.google.com.pe/*" + "https://www.google.com.pg/*" + "http://www.google.com.pg/*" + "https://www.google.com.ph/*" + "http://www.google.com.ph/*" + "https://www.google.com.pk/*" + "http://www.google.com.pk/*" + "https://www.google.pl/*" + "http://www.google.pl/*" + "https://www.google.pn/*" + "http://www.google.pn/*" + "https://www.google.com.pr/*" + "http://www.google.com.pr/*" + "https://www.google.ps/*" + "http://www.google.ps/*" + "https://www.google.pt/*" + "http://www.google.pt/*" + "https://www.google.com.py/*" + "http://www.google.com.py/*" + "https://www.google.com.qa/*" + "http://www.google.com.qa/*" + "https://www.google.ro/*" + "http://www.google.ro/*" + "https://www.google.ru/*" + "http://www.google.ru/*" + "https://www.google.rw/*" + "http://www.google.rw/*" + "https://www.google.com.sa/*" + "http://www.google.com.sa/*" + "https://www.google.com.sb/*" + "http://www.google.com.sb/*" + "https://www.google.sc/*" + "http://www.google.sc/*" + "https://www.google.se/*" + "http://www.google.se/*" + "https://www.google.com.sg/*" + "http://www.google.com.sg/*" + "https://www.google.sh/*" + "http://www.google.sh/*" + "https://www.google.si/*" + "http://www.google.si/*" + "https://www.google.sk/*" + "http://www.google.sk/*" + "https://www.google.com.sl/*" + "http://www.google.com.sl/*" + "https://www.google.sn/*" + "http://www.google.sn/*" + "https://www.google.so/*" + "http://www.google.so/*" + "https://www.google.sm/*" + "http://www.google.sm/*" + "https://www.google.sr/*" + "http://www.google.sr/*" + "https://www.google.st/*" + "http://www.google.st/*" + "https://www.google.com.sv/*" + "http://www.google.com.sv/*" + "https://www.google.td/*" + "http://www.google.td/*" + "https://www.google.tg/*" + "http://www.google.tg/*" + "https://www.google.co.th/*" + "http://www.google.co.th/*" + "https://www.google.com.tj/*" + "http://www.google.com.tj/*" + "https://www.google.tl/*" + "http://www.google.tl/*" + "https://www.google.tm/*" + "http://www.google.tm/*" + "https://www.google.tn/*" + "http://www.google.tn/*" + "https://www.google.to/*" + "http://www.google.to/*" + "https://www.google.com.tr/*" + "http://www.google.com.tr/*" + "https://www.google.tt/*" + "http://www.google.tt/*" + "https://www.google.com.tw/*" + "http://www.google.com.tw/*" + "https://www.google.co.tz/*" + "http://www.google.co.tz/*" + "https://www.google.com.ua/*" + "http://www.google.com.ua/*" + "https://www.google.co.ug/*" + "http://www.google.co.ug/*" + "https://www.google.co.uk/*" + "http://www.google.co.uk/*" + "https://www.google.com.uy/*" + "http://www.google.com.uy/*" + "https://www.google.co.uz/*" + "http://www.google.co.uz/*" + "https://www.google.com.vc/*" + "http://www.google.com.vc/*" + "https://www.google.co.ve/*" + "http://www.google.co.ve/*" + "https://www.google.vg/*" + "http://www.google.vg/*" + "https://www.google.co.vi/*" + "http://www.google.co.vi/*" + "https://www.google.com.vn/*" + "http://www.google.com.vn/*" + "https://www.google.vu/*" + "http://www.google.vu/*" + "https://www.google.ws/*" + "http://www.google.ws/*" + "https://www.google.rs/*" + "http://www.google.rs/*" + "https://www.google.co.za/*" + "http://www.google.co.za/*" + "https://www.google.co.zm/*" + "http://www.google.co.zm/*" + "https://www.google.co.zw/*" + "http://www.google.co.zw/*" + "https://www.google.cat/*" + "http://www.google.cat/*" + "" + ]; + platforms = platforms.all; + }; + }; + "privacy-redirect" = buildFirefoxXpiAddon { + pname = "privacy-redirect"; + version = "1.1.49"; + addonId = "{b7f9d2cd-d772-4302-8c3f-eb941af36f76}"; + url = "https://addons.mozilla.org/firefox/downloads/file/3815058/privacy_redirect-1.1.49.xpi"; + sha256 = "9f1cf6e58fa3f86d180b5b99549fa666fa853a827c48cb231558566b0c1c3c75"; + meta = with lib; { + homepage = "https://github.com/SimonBrazell/privacy-redirect"; + description = "Redirects Twitter, YouTube, Instagram and more to privacy friendly alternatives."; + license = licenses.gpl3; + mozPermissions = [ + "storage" + "webRequest" + "webRequestBlocking" + "" + "*://twitter.com/*" + "*://www.twitter.com/*" + "*://mobile.twitter.com/*" + "*://pbs.twimg.com/*" + "*://video.twimg.com/*" + "*://invidious.snopyta.org/*" + "*://invidious.xyz/*" + "*://invidious.kavin.rocks/*" + "*://tube.connect.cafe/*" + "*://invidious.zapashcanon.fr/*" + "*://invidiou.site/*" + "*://vid.mint.lgbt/*" + "*://invidious.site/*" + "*://yewtu.be/*" + "*://invidious.tube/*" + "*://invidious.silkky.cloud/*" + "*://invidious.himiko.cloud/*" + "*://inv.skyn3t.in/*" + "*://tube.incognet.io/*" + "*://invidious.tinfoil-hat.net/*" + "*://invidious.namazso.eu/*" + "*://vid.puffyan.us/*" + "*://dev.viewtube.io/*" + "*://invidious.048596.xyz/*" + "*://fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad.onion/*" + "*://qklhadlycap4cnod.onion/*" + "*://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion/*" + "*://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion/*" + ]; + platforms = platforms.all; + }; + }; + "rikaichamp" = buildFirefoxXpiAddon { + pname = "rikaichamp"; + version = "1.15.1"; + addonId = "{59812185-ea92-4cca-8ab7-cfcacee81281}"; + url = "https://addons.mozilla.org/firefox/downloads/file/4162143/10ten_ja_reader-1.15.1.xpi"; + sha256 = "cf638be78da479ccd54fe6ace7990a5ba7757562ec48b2a177e24c86d2ee235c"; + meta = with lib; { + homepage = "https://github.com/birchill/10ten-ja-reader/"; + description = "Quickly translate Japanese by hovering over words. Formerly released as Rikaichamp."; + license = licenses.gpl3; + mozPermissions = [ + "alarms" + "clipboardWrite" + "contextMenus" + "storage" + "unlimitedStorage" + "http://*/*" + "https://*/*" + "file:///*" + "https://docs.google.com/*" + ]; + platforms = platforms.all; + }; + }; + "ublock-origin" = buildFirefoxXpiAddon { + pname = "ublock-origin"; + version = "1.54.0"; + addonId = "uBlock0@raymondhill.net"; + url = "https://addons.mozilla.org/firefox/downloads/file/4198829/ublock_origin-1.54.0.xpi"; + sha256 = "9797160908191710ff0858536ba6dc29ecad9923c30b2ad6d3e5e371d759e44d"; + 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 = [ + "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://*.letsblock.it/*" + "https://github.com/uBlockOrigin/*" + "https://ublockorigin.github.io/*" + "https://*.reddit.com/r/uBlockOrigin/*" + ]; + platforms = platforms.all; + }; + }; + "user-agent-switcher" = buildFirefoxXpiAddon { + pname = "user-agent-switcher"; + version = "0.5.0"; + addonId = "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}"; + url = "https://addons.mozilla.org/firefox/downloads/file/4098688/user_agent_string_switcher-0.5.0.xpi"; + sha256 = "9dc8da3c8c46d4f04d12fd789c63501fa6a2f502f859b286939a090db63eae33"; + meta = with lib; { + homepage = "http://add0n.com/useragent-switcher.html"; + description = "Spoof websites trying to gather information about your web navigation—like your browser type and operating system—to deliver distinct content you may not want."; + license = licenses.mpl20; + mozPermissions = [ + "storage" + "" + "webNavigation" + "webRequest" + "webRequestBlocking" + "contextMenus" + "*://*/*" + ]; + platforms = platforms.all; + }; + }; + "violentmonkey" = buildFirefoxXpiAddon { + pname = "violentmonkey"; + version = "2.16.0"; + addonId = "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}"; + url = "https://addons.mozilla.org/firefox/downloads/file/4185752/violentmonkey-2.16.0.xpi"; + sha256 = "cd1529f42c4ee591e86d55ea382c8be523236b866ad2c06088152450f682da9c"; + meta = with lib; { + homepage = "https://violentmonkey.github.io/"; + description = "Userscript support for browsers, open source."; + license = licenses.mit; + mozPermissions = [ + "tabs" + "" + "webRequest" + "webRequestBlocking" + "notifications" + "storage" + "unlimitedStorage" + "clipboardWrite" + "contextMenus" + "cookies" + ]; + platforms = platforms.all; + }; + }; +} diff --git a/modules/nixos/firefox/default.nix b/modules/nixos/firefox/default.nix index 041752d..a5d5c89 100644 --- a/modules/nixos/firefox/default.nix +++ b/modules/nixos/firefox/default.nix @@ -73,20 +73,56 @@ in { userContent = mkCssWithRoot ./userContent.css; - extensions = with pkgs.nur.repos.rycee.firefox-addons; - [ - bitwarden - consent-o-matic - darkreader - furiganaize - localcdn - no-pdf-download - noscript - privacy-redirect - ublock-origin - violentmonkey - ] - ++ optional config.nixfiles.modules.ipfs.enable ipfs-companion; + extensions = let + # This was done using the incredible addon generator[1]. All credit + # goes to Robert Helgesson. + # + # [1]: https://sr.ht/~rycee/mozilla-addons-to-nix/ + buildFirefoxXpiAddon = makeOverridable ({ + stdenv ? pkgs.stdenv, + fetchurl ? pkgs.fetchurl, + pname, + version, + addonId, + url, + sha256, + meta, + ... + }: + stdenv.mkDerivation { + name = "${pname}-${version}"; + inherit meta; + src = fetchurl {inherit url sha256;}; + preferLocalBuild = true; + allowSubstitutes = true; + buildCommand = '' + dst="$out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" + mkdir -p "$dst" + install -v -m644 "$src" "$dst/${addonId}.xpi" + ''; + }); + + addons = import ./addons.nix {inherit buildFirefoxXpiAddon lib;}; + in + with addons; + [ + bitwarden + canvasblocker + consent-o-matic + darkreader + dont-track-me-google + furiganaize + languagetool + localcdn + no-pdf-download + noscript + privacy-redirect + rikaichamp + ublock-origin + user-agent-switcher + violentmonkey + ] + ++ optional config.nixfiles.modules.ipfs.enable ipfs-companion; search = { force = true; -- cgit 1.4.1