about summary refs log tree commit diff
path: root/modules
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2024-01-04 11:55:51 +0300
committerAzat Bahawi <azat@bahawi.net>2024-01-04 11:55:51 +0300
commitb41c88fa6e6348d74dd9a27f51e72799bd9f7230 (patch)
treed149e2dec10dffa3bc617409ab192c8ebf9cfea9 /modules
parent2023-12-26 (diff)
2024-01-04
Diffstat (limited to '')
-rw-r--r--modules/common/alacritty.nix9
-rw-r--r--modules/common/emacs/doom/config.el2
-rw-r--r--modules/nixos/chromium.nix2
-rw-r--r--modules/nixos/firefox/addons.json22
-rw-r--r--modules/nixos/firefox/addons.nix579
-rw-r--r--modules/nixos/firefox/default.nix165
-rw-r--r--modules/nixos/firefox/userContent.css18
-rw-r--r--modules/nixos/monitoring/default.nix2
-rw-r--r--modules/nixos/profiles/headless.nix2
-rw-r--r--modules/nixos/thunderbird.nix5
10 files changed, 127 insertions, 679 deletions
diff --git a/modules/common/alacritty.nix b/modules/common/alacritty.nix
index 142f6c5..86d65eb 100644
--- a/modules/common/alacritty.nix
+++ b/modules/common/alacritty.nix
@@ -73,10 +73,6 @@ in {
               foreground = yellow;
               background = black;
             };
-            line_indicator = {
-              foreground = null;
-              background = null;
-            };
             selection = {
               text = "CellBackground";
               background = "CellForeground";
@@ -98,10 +94,6 @@ in {
             };
           };
         };
-        bell = {
-          duration = 0;
-          command = null; # TODO notify-send?
-        };
         cursor = {
           style = {
             shape = "Block";
@@ -109,7 +101,6 @@ in {
           };
           vi_mode_style = "Block";
         };
-        selection.save_to_clipboard = true; # TODO autocutsel?
       };
     };
   };
diff --git a/modules/common/emacs/doom/config.el b/modules/common/emacs/doom/config.el
index 7d92aea..13eb5ba 100644
--- a/modules/common/emacs/doom/config.el
+++ b/modules/common/emacs/doom/config.el
@@ -171,7 +171,7 @@
 
 (setq elfeed-db-directory "~/.elfeed"
       elfeed-enclosure-default-dir (concat elfeed-db-directory "/enclosures")
-      rmh-elfeed-org-files '((concat elfeed-db-directory "/index.org"))
+      rmh-elfeed-org-files (list (concat elfeed-db-directory "/index.org"))
       elfeed-goodies/powerline-default-separator nil
       elfeed-goodies/entry-pane-size 0.75
       elfeed-goodies/entry-pane-position 'bottom)
diff --git a/modules/nixos/chromium.nix b/modules/nixos/chromium.nix
index 4f0ae12..3b87b4c 100644
--- a/modules/nixos/chromium.nix
+++ b/modules/nixos/chromium.nix
@@ -16,7 +16,7 @@ in {
       programs.chromium = {
         enable = true;
 
-        package = pkgs.chromium;
+        package = pkgs.ungoogled-chromium;
 
         extensions = [
           {id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";} # uBlock Origin
diff --git a/modules/nixos/firefox/addons.json b/modules/nixos/firefox/addons.json
index 09c7f0f..c1ea3fa 100644
--- a/modules/nixos/firefox/addons.json
+++ b/modules/nixos/firefox/addons.json
@@ -4,18 +4,12 @@
     "slug": "bitwarden-password-manager"
   },
   {
-    "slug": "canvasblocker"
-  },
-  {
     "slug": "consent-o-matic"
   },
   {
     "slug": "darkreader"
   },
   {
-    "slug": "font-fingerprint-defender"
-  },
-  {
     "slug": "furiganaize"
   },
   {
@@ -25,25 +19,17 @@
     "slug": "languagetool"
   },
   {
-    "pname": "localcdn",
-    "slug": "localcdn-fork-of-decentraleyes"
-  },
-  {
     "slug": "no-pdf-download"
   },
   {
-    "slug": "noscript"
-  },
-  {
-    "pname": "privacy-badger",
-    "slug": "privacy-badger17"
+    "pname": "rikaichamp",
+    "slug": "10ten-ja-reader"
   },
   {
-    "slug": "privacy-redirect"
+    "slug": "redirector"
   },
   {
-    "pname": "rikaichamp",
-    "slug": "10ten-ja-reader"
+    "slug": "skip-redirect"
   },
   {
     "slug": "ublock-origin"
diff --git a/modules/nixos/firefox/addons.nix b/modules/nixos/firefox/addons.nix
index a38e6d4..f640ff9 100644
--- a/modules/nixos/firefox/addons.nix
+++ b/modules/nixos/firefox/addons.nix
@@ -4,10 +4,10 @@
 }: {
   "bitwarden" = buildFirefoxXpiAddon {
     pname = "bitwarden";
-    version = "2023.12.0";
+    version = "2023.12.1";
     addonId = "{446900e4-71c2-419f-a6a7-df9c091e268b}";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4205620/bitwarden_password_manager-2023.12.0.xpi";
-    sha256 = "f3e508d10c7bbd03890235354355c4bc526db24ebe241ce16630f272614258f4";
+    url = "https://addons.mozilla.org/firefox/downloads/file/4211087/bitwarden_password_manager-2023.12.1.xpi";
+    sha256 = "40f695fbe5153a7614f25289a9388f95c59a952fb039b8b9c33fd7bd99ea2da2";
     meta = with lib; {
       homepage = "https://bitwarden.com";
       description = "A secure and free password manager for all of your devices.";
@@ -29,29 +29,6 @@
       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 = [
-        "<all_urls>"
-        "storage"
-        "tabs"
-        "webRequest"
-        "webRequestBlocking"
-        "contextualIdentities"
-        "cookies"
-        "privacy"
-      ];
-      platforms = platforms.all;
-    };
-  };
   "consent-o-matic" = buildFirefoxXpiAddon {
     pname = "consent-o-matic";
     version = "1.0.12";
@@ -87,20 +64,6 @@
       platforms = platforms.all;
     };
   };
-  "font-fingerprint-defender" = buildFirefoxXpiAddon {
-    pname = "font-fingerprint-defender";
-    version = "0.1.4";
-    addonId = "{96ef5869-e3ba-4d21-b86e-21b163096400}";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4028360/font_fingerprint_defender-0.1.4.xpi";
-    sha256 = "845e2d1e9fde67d21a6f4c2b0ed8bd81e81829883aca99f9569919abc06e9b34";
-    meta = with lib; {
-      homepage = "https://mybrowseraddon.com/font-defender.html";
-      description = "Defending against Font fingerprinting by reporting a fake value.";
-      license = licenses.mpl20;
-      mozPermissions = ["storage" "contextMenus" "notifications" "*://*/*"];
-      platforms = platforms.all;
-    };
-  };
   "furiganaize" = buildFirefoxXpiAddon {
     pname = "furiganaize";
     version = "0.7.2";
@@ -172,27 +135,6 @@
       platforms = platforms.all;
     };
   };
-  "localcdn" = buildFirefoxXpiAddon {
-    pname = "localcdn";
-    version = "2.6.60";
-    addonId = "{b86e4813-687a-43e6-ab65-0bde4ab75758}";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4208268/localcdn_fork_of_decentraleyes-2.6.60.xpi";
-    sha256 = "9ffd3609de89b8e0a4c9a425178f5e08b1ed2729fb0dd106320b72bcfc1d3392";
-    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";
@@ -207,487 +149,25 @@
       platforms = platforms.all;
     };
   };
-  "noscript" = buildFirefoxXpiAddon {
-    pname = "noscript";
-    version = "11.4.29";
-    addonId = "{73a6fe31-595d-460b-a920-fcc0f8843232}";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4206186/noscript-11.4.29.xpi";
-    sha256 = "05b98840b05ef2acbac333543e4b7c3d40fee2ce5fb4e29260b05e2ff6fe24cd";
+  "redirector" = buildFirefoxXpiAddon {
+    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 = "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;
+      homepage = "http://einaregilsson.com/redirector/";
+      description = "Automatically redirects to user-defined urls on certain pages";
+      license = licenses.mit;
       mozPermissions = [
-        "contextMenus"
-        "storage"
-        "tabs"
-        "unlimitedStorage"
-        "webNavigation"
         "webRequest"
         "webRequestBlocking"
-        "dns"
-        "<all_urls>"
-        "file://*/*"
-        "ftp://*/*"
-      ];
-      platforms = platforms.all;
-    };
-  };
-  "privacy-badger" = buildFirefoxXpiAddon {
-    pname = "privacy-badger";
-    version = "2023.12.1";
-    addonId = "jid1-MnnxcxisBPnSXQ@jetpack";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4203344/privacy_badger17-2023.12.1.xpi";
-    sha256 = "aacac794c211fc6ea7dc51529883fd3e477aff37441d29ae7f576ab0f8c737b7";
-    meta = with lib; {
-      homepage = "https://privacybadger.org/";
-      description = "Automatically learns to block invisible trackers.";
-      license = licenses.gpl3;
-      mozPermissions = [
-        "<all_urls>"
-        "alarms"
-        "tabs"
         "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"
-        "<all_urls>"
-        "*://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/*"
+        "tabs"
+        "http://*/*"
+        "https://*/*"
+        "notifications"
       ];
       platforms = platforms.all;
     };
@@ -716,6 +196,27 @@
       platforms = platforms.all;
     };
   };
+  "skip-redirect" = buildFirefoxXpiAddon {
+    pname = "skip-redirect";
+    version = "2.3.6";
+    addonId = "skipredirect@sblask";
+    url = "https://addons.mozilla.org/firefox/downloads/file/3920533/skip_redirect-2.3.6.xpi";
+    sha256 = "dbe8950245c1f475c5c1c6daab89c79b83ba4680621c91e80f15be7b09b618ae";
+    meta = with lib; {
+      description = "Some web pages use intermediary pages before redirecting to a final page. This add-on tries to extract the final url from the intermediary url and goes there straight away if successful.";
+      license = licenses.mit;
+      mozPermissions = [
+        "<all_urls>"
+        "clipboardWrite"
+        "contextMenus"
+        "notifications"
+        "storage"
+        "webRequest"
+        "webRequestBlocking"
+      ];
+      platforms = platforms.all;
+    };
+  };
   "ublock-origin" = buildFirefoxXpiAddon {
     pname = "ublock-origin";
     version = "1.54.0";
@@ -778,10 +279,10 @@
   };
   "violentmonkey" = buildFirefoxXpiAddon {
     pname = "violentmonkey";
-    version = "2.16.0";
+    version = "2.17.0";
     addonId = "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4185752/violentmonkey-2.16.0.xpi";
-    sha256 = "cd1529f42c4ee591e86d55ea382c8be523236b866ad2c06088152450f682da9c";
+    url = "https://addons.mozilla.org/firefox/downloads/file/4213757/violentmonkey-2.17.0.xpi";
+    sha256 = "8a0d00f6b0a0ec2b77cab4576b0c30a81705ef7e1f45de9856c36c193afc6843";
     meta = with lib; {
       homepage = "https://violentmonkey.github.io/";
       description = "Userscript support for browsers, open source.";
diff --git a/modules/nixos/firefox/default.nix b/modules/nixos/firefox/default.nix
index 73b5b58..7c69f71 100644
--- a/modules/nixos/firefox/default.nix
+++ b/modules/nixos/firefox/default.nix
@@ -106,18 +106,14 @@ in {
           in
             with addons;
               [
-                bitwarden
-                canvasblocker
                 consent-o-matic
                 darkreader
-                font-fingerprint-defender
                 furiganaize
                 languagetool
-                localcdn
                 no-pdf-download
-                noscript
-                privacy-redirect
+                redirector
                 rikaichamp
+                skip-redirect
                 ublock-origin
                 user-agent-switcher
                 violentmonkey
@@ -225,7 +221,7 @@ in {
               };
 
               "godocs.io" = {
-                urls = [{template = "https://godocs.io/?q={}";}];
+                urls = [{template = "https://godocs.io/?q={searchTerms}";}];
                 icon = ''${pkgs.fetchurl {
                     url = "https://go.dev/images/favicon-gopher.svg";
                     sha256 = "sha256-OlKpUUeYF8TtMoX4e0ERK1ocIb53OJ8ZDxvwJaQVM/0=";
@@ -451,116 +447,103 @@ in {
             };
           };
 
-          # NOTE Kinda breaks explicit bookmarking...
-          # bookmarks = [
-          #   {
-          #     name = "Local";
-          #     bookmarks = with config.nixfiles.modules; [
-          #       (mkIf syncthing.enable {
-          #         name = "Syncthing";
-          #         url = "http://${config.services.syncthing.guiAddress}";
-          #       })
-          #       (mkIf ipfs.enable {
-          #         name = "IPFS";
-          #         url = "http://127.0.0.1:${toString ipfs.apiPort}/webui";
-          #       })
-          #     ];
-          #   }
-          # ];
+          # NOTE This silently overrides all other bookmarks.
+          bookmarks = [
+            {
+              name = "Bookmarks Toolbar";
+              toolbar = true;
+              bookmarks = with config.nixfiles.modules; [
+                (mkIf syncthing.enable {
+                  name = "Syncthing";
+                  url = "http://${config.services.syncthing.guiAddress}";
+                })
+                (mkIf ipfs.enable {
+                  name = "IPFS";
+                  url = "http://127.0.0.1:${toString ipfs.apiPort}/webui";
+                })
+              ];
+            }
+          ];
 
           # https://github.com/arkenfox/user.js/blob/master/user.js
           arkenfox = {
             enable = true;
             "0000".enable = true;
-            "0100".enable = true;
+            "0100" = {
+              enable = true;
+              "0103"."browser.startup.homepage".value = "about:blank";
+            };
             "0200".enable = true;
             "0300".enable = true;
             "0400" = {
               enable = true;
-              "0401" = {
-                enable = true;
-                "browser.safebrowsing.malware.enabled" = {
-                  enable = true;
-                  value = false;
-                };
-                "browser.safebrowsing.phishing.enabled" = {
-                  enable = true;
-                  value = false;
-                };
-              };
-              "0402" = {
-                enable = true;
-                "browser.safebrowsing.downloads.enabled" = {
-                  enable = true;
-                  value = false;
-                };
-              };
+              "0401"."browser.safebrowsing.phishing.enabled".enable = true;
+              "0402"."browser.safebrowsing.downloads.enabled".enable = true;
               "0404" = {
-                enable = true;
-                "browser.safebrowsing.downloads.remote.block_potentially_unwanted" = {
-                  enable = true;
-                  value = false;
-                };
-                "browser.safebrowsing.downloads.remote.block_uncommon" = {
-                  enable = true;
-                  value = false;
-                };
-              };
-              "0405" = {
-                enable = true;
-                "browser.safebrowsing.allowOverride" = {
-                  enable = true;
-                  value = false;
-                };
+                "browser.safebrowsing.downloads.remote.block_potentially_unwanted".enable = true;
+                "browser.safebrowsing.downloads.remote.block_uncommon".enable = true;
               };
+              "0405"."browser.safebrowsing.allowOverride".enable = true;
             };
             "0600".enable = true;
             "0700" = {
               enable = true;
-              "0710" = {
+              "0710"."network.trr.mode" = {
                 enable = true;
-                "network.trr.mode" = {
+                value = 5;
+              };
+            };
+            "0800" = {
+              enable = true;
+              "0830" = {
+                "browser.search.separatePrivateDefault" = {
                   enable = true;
-                  value = 5;
+                  value = false;
+                };
+                "browser.search.separatePrivateDefault.ui.enabled" = {
+                  enable = true;
+                  value = false;
                 };
               };
             };
-            "0800".enable = true;
             "0900".enable = true;
             "1000" = {
               enable = true;
-              "1001" = {
-                enable = true;
-                "browser.cache.disk.enable" = {
-                  enable = true;
-                  value = true;
-                };
-              };
+              "1001".enable = false;
             };
             "1200".enable = true;
             "1600".enable = true;
-            "1700".enable = false;
+            "1700".enable = true;
             "2000".enable = true;
-            "2400".enable = false;
+            "2400".enable = true;
             "2600" = {
               enable = true;
-              "2615" = {
-                enable = true;
-                "permissions.default.shortcuts" = {
-                  enable = true;
-                  value = 2;
-                };
-              };
+              "2615"."permissions.default.shortcuts".enable = true;
             };
             "2700".enable = true;
-            "2800".enable = true;
-            "4500".enable = false;
-            "5000".enable = false;
-            "5500".enable = false;
-            "6000".enable = false;
-            "7000".enable = false;
-            "8000".enable = false;
-            "9000".enable = false;
+            "2800" = {
+              enable = true;
+              "2811"."privacy.clearOnShutdown.history".value = false;
+            };
+            "4500" = {
+              enable = true;
+              "4502".enable = false;
+              "4504".enable = false;
+            };
+            "5000" = {
+              enable = true;
+              "5003".enable = true;
+              "5017".enable = true;
+              "5019".enable = true;
+            };
+            "5500" = {
+              enable = true;
+              "5508".enable = true;
+            };
+            "6000".enable = true;
+            "7000".enable = true;
+            "8000".enable = true;
+            "9000".enable = true;
           };
 
           settings = {
@@ -568,9 +551,6 @@ in {
             "browser.backspace_action" = 0;
             "browser.disableResetPrompt" = true;
             "browser.download.autohideButton" = false;
-            "browser.eme.ui.enabled" = false;
-            "browser.newtabpage.activity-stream.feeds.system.topsites" = false;
-            "browser.newtabpage.activity-stream.feeds.topsites" = false;
             "browser.newtabpage.introShown" = true;
             "browser.onboarding.enabled" = false;
             "browser.open.lastDir" = config.my.home;
@@ -578,6 +558,7 @@ in {
             "browser.region.update.region" = "US";
             "browser.search.region" = "US";
             "browser.search.update" = false;
+            "browser.shell.checkDefaultBrowser" = false;
             "browser.tabs.closeWindowWithLastTab" = true;
             "browser.tabs.firefox-view" = false;
             "browser.tabs.firefox-view-next" = false;
@@ -585,13 +566,13 @@ in {
             "browser.tabs.warnOnClose" = false;
             "browser.tabs.warnOnCloseOtherTabs" = false;
             "browser.tabs.warnOnOpen" = false;
-            "browser.toolbars.bookmarks.visibility" = "never";
+            "browser.toolbars.bookmarks.visibility" = "newtab";
+            "browser.translations.enable" = false;
             "browser.urlbar.decodeURLsOnCopy" = true;
             "browser.warnOnQuitShortcut" = false;
             "devtools.everOpened" = true;
             "doh-rollout.home-region" = "US";
             "extensions.pocket.enabled" = false;
-            "extensions.screenshots.disabled" = true;
             "extensions.update.autoUpdateDefault" = false;
             "extensions.update.enabled" = false;
             "full-screen-api.warning.delay" = 0;
@@ -601,10 +582,8 @@ in {
             "identity.fxaccounts.enabled" = false;
             "media.autoplay.blocking_policy" = 2;
             "media.autoplay.default" = 5;
-            "media.eme.enabled" = false;
             "media.hardwaremediakeys.enabled" = false;
             "reader.parse-on-load.enabled" = false;
-            "signon.rememberSignons" = false;
             "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
           };
         };
diff --git a/modules/nixos/firefox/userContent.css b/modules/nixos/firefox/userContent.css
index 544539f..c9a33b7 100644
--- a/modules/nixos/firefox/userContent.css
+++ b/modules/nixos/firefox/userContent.css
@@ -118,14 +118,16 @@
     #sidebar,
     .ai-start,
     .bottom-notice,
-    .comment-user,
     .d-flex.g4,
     .d-flex.s-btn-group,
     .js-add-link.comments-link,
     .js-consent-banner,
     .js-dismissable-hero,
     .js-post-issue,
+    .js-saves-btn,
     .js-show-link.comments-link,
+    .js-vote-down-btn,
+    .js-vote-up-btn,
     .post-taglist,
     .s-notice,
     .s-topbar,
@@ -176,16 +178,16 @@
     }
 }
 
-@-moz-document regexp("https?://habr\.com/(ru|en)/(article|company/.*/news|companies|blog|post)/.*")
+@-moz-document regexp("https?://habr\.com/(ru|en)/(articles|company/.*/news|companies|blog|post)/.*")
 {
     .Vue-Toastification__container,
+    .tm-article-labels,
+    .tm-article-presenter__banner,
     .tm-article-presenter__footer,
     .tm-article-presenter__meta,
     .tm-article-snippet__labels,
-    .tm-article-sticky-panel,
     .tm-base-layout__header,
     .tm-block.tm-block_spacing-bottom,
-    .tm-block_spacing-around,
     .tm-comment-footer,
     .tm-comment__header,
     .tm-editoral-subscription,
@@ -342,14 +344,6 @@
     }
 }
 
-@-moz-document regexp("https?://(www\.)?protondb\.com/app/.*")
-{
-    /* SteamDeck reports. */
-    div[class*="GameReports__Container"]:nth-child(8) {
-        display: none !important;
-    }
-}
-
 @-moz-document regexp("https?://open-vsx\.org.*")
 {
     MuiCollapse-container,
diff --git a/modules/nixos/monitoring/default.nix b/modules/nixos/monitoring/default.nix
index cc06fbb..fbc0e60 100644
--- a/modules/nixos/monitoring/default.nix
+++ b/modules/nixos/monitoring/default.nix
@@ -15,7 +15,7 @@ in {
     nixfiles.modules = {
       alertmanager.enable = true;
       grafana.enable = true;
-      loki.enable = true;
+      loki.enable = false; # FIXME High RAM usage.
       prometheus.enable = true;
     };
 
diff --git a/modules/nixos/profiles/headless.nix b/modules/nixos/profiles/headless.nix
index 40f68ed..f0357ab 100644
--- a/modules/nixos/profiles/headless.nix
+++ b/modules/nixos/profiles/headless.nix
@@ -15,7 +15,7 @@ in {
       fail2ban.enable = true;
 
       node-exporter.enable = true;
-      promtail.enable = true;
+      promtail.enable = false; # FIXME High RAM usage.
     };
 
     # Pin version to prevent any surprises. Try keeping this up-to-date[1] with
diff --git a/modules/nixos/thunderbird.nix b/modules/nixos/thunderbird.nix
index 2261dcd..ff0d823 100644
--- a/modules/nixos/thunderbird.nix
+++ b/modules/nixos/thunderbird.nix
@@ -32,10 +32,7 @@ in {
         "general.autoScroll" = true;
         "general.smoothScroll" = true;
         "mail.default_send_format" = 0;
-        "mail.tabs.drawInTitlebar" =
-          if config.nixfiles.modules.kde.enable
-          then 1
-          else 0;
+        "mail.tabs.drawInTitlebar" = 1;
         "mailnews.start_page.url" = "about:blank";
         "media.autoplay.blocking_policy" = 2;
         "media.autoplay.default" = 5;

Consider giving Nix/NixOS a try! <3