about summary refs log tree commit diff
path: root/modules/nixos
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/acme.nix (renamed from modules/nixos/acme.nix)0
-rw-r--r--modules/alertmanager.nix (renamed from modules/nixos/alertmanager.nix)0
-rw-r--r--modules/android.nix (renamed from modules/nixos/android.nix)0
-rw-r--r--modules/beets.nix (renamed from modules/nixos/beets.nix)0
-rw-r--r--modules/bluetooth.nix (renamed from modules/nixos/bluetooth.nix)0
-rw-r--r--modules/chromium.nix (renamed from modules/nixos/chromium.nix)0
-rw-r--r--modules/clickhouse.nix (renamed from modules/nixos/clickhouse.nix)0
-rw-r--r--modules/common/ark.nix (renamed from modules/nixos/common/ark.nix)2
-rw-r--r--modules/common/console.nix (renamed from modules/nixos/common/console.nix)0
-rw-r--r--modules/common/documentation.nix (renamed from modules/nixos/common/documentation.nix)11
-rw-r--r--modules/common/kernel.nix (renamed from modules/nixos/common/kernel.nix)0
-rw-r--r--modules/common/locale.nix (renamed from modules/nixos/common/locale.nix)5
-rw-r--r--modules/common/networking.nix (renamed from modules/nixos/common/networking.nix)1
-rw-r--r--modules/common/security.nix (renamed from modules/nixos/common/security.nix)0
-rw-r--r--modules/common/services.nix (renamed from modules/nixos/common/services.nix)0
-rw-r--r--modules/common/systemd.nix (renamed from modules/nixos/common/systemd.nix)0
-rw-r--r--modules/common/tmp.nix (renamed from modules/nixos/common/tmp.nix)0
-rw-r--r--modules/common/users.nix (renamed from modules/nixos/common/users.nix)18
-rw-r--r--modules/docker.nix (renamed from modules/nixos/docker.nix)0
-rw-r--r--modules/dwm.nix (renamed from modules/nixos/dwm.nix)0
-rw-r--r--modules/emacs.nix (renamed from modules/nixos/emacs.nix)0
-rw-r--r--modules/endlessh-go.nix (renamed from modules/nixos/endlessh-go.nix)0
-rw-r--r--modules/endlessh.nix (renamed from modules/nixos/endlessh.nix)0
-rw-r--r--modules/fail2ban.nix (renamed from modules/nixos/fail2ban.nix)0
-rw-r--r--modules/firefox/addons.json (renamed from modules/nixos/firefox/addons.json)4
-rw-r--r--modules/firefox/default.nix (renamed from modules/nixos/firefox/default.nix)1
-rw-r--r--modules/firefox/userChrome.css (renamed from modules/nixos/firefox/userChrome.css)0
-rw-r--r--modules/firefox/userContent.css (renamed from modules/nixos/firefox/userContent.css)0
-rw-r--r--modules/foot.nix (renamed from modules/nixos/foot.nix)0
-rw-r--r--modules/games/default.nix (renamed from modules/nixos/games/default.nix)9
-rw-r--r--modules/games/gamemode.nix (renamed from modules/nixos/games/gamemode.nix)0
-rw-r--r--modules/games/lutris.nix (renamed from modules/nixos/games/lutris.nix)0
-rw-r--r--modules/games/mangohud.nix (renamed from modules/nixos/games/mangohud.nix)0
-rw-r--r--modules/games/minecraft.nix (renamed from modules/nixos/games/minecraft.nix)0
-rw-r--r--modules/games/steam-run.nix (renamed from modules/nixos/games/steam-run.nix)0
-rw-r--r--modules/games/steam.nix (renamed from modules/nixos/games/steam.nix)0
-rw-r--r--modules/git/favicon.ico (renamed from modules/nixos/git/favicon.ico)bin15406 -> 15406 bytes
-rw-r--r--modules/git/logo.gif (renamed from modules/nixos/git/logo.gif)bin138553 -> 138553 bytes
-rw-r--r--modules/gotify.nix (renamed from modules/nixos/gotify.nix)0
-rw-r--r--modules/grafana.nix (renamed from modules/nixos/grafana.nix)0
-rw-r--r--modules/hydra.nix (renamed from modules/nixos/hydra.nix)0
-rw-r--r--modules/incus.nix (renamed from modules/nixos/incus.nix)0
-rw-r--r--modules/ipfs.nix (renamed from modules/nixos/ipfs.nix)0
-rw-r--r--modules/jackett.nix (renamed from modules/nixos/jackett.nix)0
-rw-r--r--modules/k3s.nix (renamed from modules/nixos/k3s.nix)0
-rw-r--r--modules/kde.nix (renamed from modules/nixos/kde.nix)0
-rw-r--r--modules/libvirtd.nix (renamed from modules/nixos/libvirtd.nix)0
-rw-r--r--modules/lidarr.nix (renamed from modules/nixos/lidarr.nix)0
-rw-r--r--modules/loki.nix (renamed from modules/nixos/loki.nix)0
-rw-r--r--modules/matrix/dendrite.nix (renamed from modules/nixos/matrix/dendrite.nix)3
-rw-r--r--modules/matrix/element.nix (renamed from modules/nixos/matrix/element.nix)2
-rw-r--r--modules/monitoring/dashboards/endlessh.json (renamed from modules/nixos/monitoring/dashboards/endlessh.json)0
-rw-r--r--modules/monitoring/dashboards/nginx.json (renamed from modules/nixos/monitoring/dashboards/nginx.json)0
-rw-r--r--modules/monitoring/dashboards/node.json (renamed from modules/nixos/monitoring/dashboards/node.json)0
-rw-r--r--modules/monitoring/dashboards/ntfy.json (renamed from modules/nixos/monitoring/dashboards/ntfy.json)0
-rw-r--r--modules/monitoring/dashboards/postgresql.json (renamed from modules/nixos/monitoring/dashboards/postgresql.json)0
-rw-r--r--modules/monitoring/dashboards/redis.json (renamed from modules/nixos/monitoring/dashboards/redis.json)0
-rw-r--r--modules/monitoring/dashboards/unbound.json (renamed from modules/nixos/monitoring/dashboards/unbound.json)0
-rw-r--r--modules/monitoring/default.nix (renamed from modules/nixos/monitoring/default.nix)0
-rw-r--r--modules/monitoring/rules/nginx.yaml (renamed from modules/nixos/monitoring/rules/nginx.yaml)0
-rw-r--r--modules/monitoring/rules/node.yaml (renamed from modules/nixos/monitoring/rules/node.yaml)0
-rw-r--r--modules/monitoring/rules/postgres.yaml (renamed from modules/nixos/monitoring/rules/postgres.yaml)0
-rw-r--r--modules/monitoring/rules/redis.yaml (renamed from modules/nixos/monitoring/rules/redis.yaml)0
-rw-r--r--modules/mpd.nix (renamed from modules/nixos/mpd.nix)0
-rw-r--r--modules/murmur.nix (renamed from modules/nixos/murmur.nix)0
-rw-r--r--modules/nextcloud.nix (renamed from modules/nixos/nextcloud.nix)0
-rw-r--r--modules/nginx.nix (renamed from modules/nixos/nginx.nix)0
-rw-r--r--modules/nixos/common/default.nix21
-rw-r--r--modules/nixos/common/home-manager.nix4
-rw-r--r--modules/nixos/common/nix.nix35
-rw-r--r--modules/nixos/common/secrets.nix4
-rw-r--r--modules/nixos/common/shell.nix1
-rw-r--r--modules/nixos/common/stylix.nix46
-rw-r--r--modules/nixos/common/xdg.nix41
-rw-r--r--modules/nixos/default.nix75
-rw-r--r--modules/nixos/firefox/addons.nix1143
-rw-r--r--modules/nixos/git/default.nix136
-rw-r--r--modules/nixos/gnupg.nix41
-rw-r--r--modules/nixos/matrix/default.nix6
-rw-r--r--modules/nixos/mpv.nix92
-rw-r--r--modules/nixos/openssh.nix51
-rw-r--r--modules/nixos/profiles/default.nix37
-rw-r--r--modules/nixos/profiles/dev/containers.nix32
-rw-r--r--modules/nixos/profiles/dev/default.nix30
-rw-r--r--modules/nixos/zathura.nix13
-rw-r--r--modules/node-exporter.nix (renamed from modules/nixos/node-exporter.nix)0
-rw-r--r--modules/nsd.nix (renamed from modules/nixos/nsd.nix)0
-rw-r--r--modules/ntfy.nix (renamed from modules/nixos/ntfy.nix)0
-rw-r--r--modules/nullmailer.nix (renamed from modules/nixos/nullmailer.nix)0
-rw-r--r--modules/plausible.nix (renamed from modules/nixos/plausible.nix)0
-rw-r--r--modules/podman.nix (renamed from modules/nixos/podman.nix)0
-rw-r--r--modules/postgresql.nix (renamed from modules/nixos/postgresql.nix)0
-rw-r--r--modules/profiles/headful.nix (renamed from modules/nixos/profiles/headful.nix)67
-rw-r--r--modules/profiles/headless.nix (renamed from modules/nixos/profiles/headless.nix)15
-rw-r--r--modules/prometheus.nix (renamed from modules/nixos/prometheus.nix)0
-rw-r--r--modules/promtail.nix (renamed from modules/nixos/promtail.nix)0
-rw-r--r--modules/psd.nix (renamed from modules/nixos/psd.nix)0
-rw-r--r--modules/radarr.nix (renamed from modules/nixos/radarr.nix)0
-rw-r--r--modules/radicale.nix (renamed from modules/nixos/radicale.nix)0
-rw-r--r--modules/redis.nix (renamed from modules/nixos/redis.nix)0
-rw-r--r--modules/rss-bridge.nix (renamed from modules/nixos/rss-bridge.nix)10
-rw-r--r--modules/rtorrent.nix (renamed from modules/nixos/rtorrent.nix)0
-rw-r--r--modules/searx.nix (renamed from modules/nixos/searx.nix)0
-rw-r--r--modules/shadowsocks.nix (renamed from modules/nixos/shadowsocks.nix)0
-rw-r--r--modules/soju.nix (renamed from modules/nixos/soju.nix)0
-rw-r--r--modules/solaar.nix (renamed from modules/nixos/solaar.nix)0
-rw-r--r--modules/sonarr.nix (renamed from modules/nixos/sonarr.nix)0
-rw-r--r--modules/sound.nix (renamed from modules/nixos/sound.nix)0
-rw-r--r--modules/syncthing.nix (renamed from modules/nixos/syncthing.nix)0
-rw-r--r--modules/throttled.nix (renamed from modules/nixos/throttled.nix)0
-rw-r--r--modules/thunderbird.nix (renamed from modules/nixos/thunderbird.nix)0
-rw-r--r--modules/unbound.nix (renamed from modules/nixos/unbound.nix)0
-rw-r--r--modules/vaultwarden.nix (renamed from modules/nixos/vaultwarden.nix)0
-rw-r--r--modules/victoriametrics.nix (renamed from modules/nixos/victoriametrics.nix)4
-rw-r--r--modules/vim/default.nix (renamed from modules/nixos/vim/default.nix)34
-rw-r--r--modules/wayland.nix (renamed from modules/nixos/wayland.nix)0
-rw-r--r--modules/wireguard.nix (renamed from modules/nixos/wireguard.nix)0
-rw-r--r--modules/x11.nix (renamed from modules/nixos/x11.nix)0
-rw-r--r--modules/xmonad.nix (renamed from modules/nixos/xmonad.nix)0
119 files changed, 141 insertions, 1853 deletions
diff --git a/modules/nixos/acme.nix b/modules/acme.nix
index 6a75818..6a75818 100644
--- a/modules/nixos/acme.nix
+++ b/modules/acme.nix
diff --git a/modules/nixos/alertmanager.nix b/modules/alertmanager.nix
index a3457bc..a3457bc 100644
--- a/modules/nixos/alertmanager.nix
+++ b/modules/alertmanager.nix
diff --git a/modules/nixos/android.nix b/modules/android.nix
index 363bd6c..363bd6c 100644
--- a/modules/nixos/android.nix
+++ b/modules/android.nix
diff --git a/modules/nixos/beets.nix b/modules/beets.nix
index 732f400..732f400 100644
--- a/modules/nixos/beets.nix
+++ b/modules/beets.nix
diff --git a/modules/nixos/bluetooth.nix b/modules/bluetooth.nix
index 117aff7..117aff7 100644
--- a/modules/nixos/bluetooth.nix
+++ b/modules/bluetooth.nix
diff --git a/modules/nixos/chromium.nix b/modules/chromium.nix
index c7842d5..c7842d5 100644
--- a/modules/nixos/chromium.nix
+++ b/modules/chromium.nix
diff --git a/modules/nixos/clickhouse.nix b/modules/clickhouse.nix
index 12dc7fa..12dc7fa 100644
--- a/modules/nixos/clickhouse.nix
+++ b/modules/clickhouse.nix
diff --git a/modules/nixos/common/ark.nix b/modules/common/ark.nix
index 6c7148f..84ff6db 100644
--- a/modules/nixos/common/ark.nix
+++ b/modules/common/ark.nix
@@ -10,12 +10,12 @@ let
 in
 {
   imports = [
+    inputs.impermanence.nixosModules.impermanence
     (mkAliasOptionModule [ "ark" ] [
       "nixfiles"
       "modules"
       "ark"
     ])
-    inputs.impermanence.nixosModules.impermanence
   ];
 
   options.nixfiles.modules.ark =
diff --git a/modules/nixos/common/console.nix b/modules/common/console.nix
index 330310c..330310c 100644
--- a/modules/nixos/common/console.nix
+++ b/modules/common/console.nix
diff --git a/modules/nixos/common/documentation.nix b/modules/common/documentation.nix
index f7d1585..20856cb 100644
--- a/modules/nixos/common/documentation.nix
+++ b/modules/common/documentation.nix
@@ -7,9 +7,18 @@
 }:
 with lib;
 {
-  config = mkIf this.isHeadful {
+  config = {
+    hm.manual = {
+      manpages.enable = this.isHeadful;
+      html.enable = false;
+      json.enable = false;
+    };
+
     documentation = {
+      enable = this.isHeadful;
       dev.enable = true;
+      doc.enable = false;
+      info.enable = false;
       nixos.enable = true;
 
       man.man-db.manualPages =
diff --git a/modules/nixos/common/kernel.nix b/modules/common/kernel.nix
index 5c45b5d..5c45b5d 100644
--- a/modules/nixos/common/kernel.nix
+++ b/modules/common/kernel.nix
diff --git a/modules/nixos/common/locale.nix b/modules/common/locale.nix
index 8b91a5a..7e8eefb 100644
--- a/modules/nixos/common/locale.nix
+++ b/modules/common/locale.nix
@@ -6,6 +6,11 @@
 }:
 with lib;
 {
+  hm.home.language = {
+    collate = "C";
+    messages = "C";
+  };
+
   i18n = {
     defaultLocale = mkDefault "en_GB.UTF-8";
     supportedLocales = [
diff --git a/modules/nixos/common/networking.nix b/modules/common/networking.nix
index ecadf6e..727def4 100644
--- a/modules/nixos/common/networking.nix
+++ b/modules/common/networking.nix
@@ -123,6 +123,7 @@ in
 
       systemPackages = with pkgs; [
         ethtool
+        myip
         nethogs
       ];
     };
diff --git a/modules/nixos/common/security.nix b/modules/common/security.nix
index c635cdc..c635cdc 100644
--- a/modules/nixos/common/security.nix
+++ b/modules/common/security.nix
diff --git a/modules/nixos/common/services.nix b/modules/common/services.nix
index 12e4bf7..12e4bf7 100644
--- a/modules/nixos/common/services.nix
+++ b/modules/common/services.nix
diff --git a/modules/nixos/common/systemd.nix b/modules/common/systemd.nix
index b393d9f..b393d9f 100644
--- a/modules/nixos/common/systemd.nix
+++ b/modules/common/systemd.nix
diff --git a/modules/nixos/common/tmp.nix b/modules/common/tmp.nix
index d56e2b6..d56e2b6 100644
--- a/modules/nixos/common/tmp.nix
+++ b/modules/common/tmp.nix
diff --git a/modules/nixos/common/users.nix b/modules/common/users.nix
index a92a38e..ba1a89b 100644
--- a/modules/nixos/common/users.nix
+++ b/modules/common/users.nix
@@ -1,13 +1,17 @@
-{
-  lib,
-  localUsername ? lib.my.username,
-  ...
-}:
+{ lib, ... }:
 with lib;
 let
-  home = "/home/${localUsername}";
+  home = "/home/${my.username}";
 in
 {
+  imports = [
+    (mkAliasOptionModule [ "my" ] [
+      "users"
+      "users"
+      my.username
+    ])
+  ];
+
   ark.directories = [ home ];
 
   users = {
@@ -16,7 +20,7 @@ in
     users = {
       root.hashedPassword = "@HASHED_PASSWORD@";
 
-      ${localUsername} = {
+      ${my.username} = {
         isNormalUser = true;
         uid = 1000;
         description = my.fullname;
diff --git a/modules/nixos/docker.nix b/modules/docker.nix
index 62dc095..62dc095 100644
--- a/modules/nixos/docker.nix
+++ b/modules/docker.nix
diff --git a/modules/nixos/dwm.nix b/modules/dwm.nix
index 912be0c..912be0c 100644
--- a/modules/nixos/dwm.nix
+++ b/modules/dwm.nix
diff --git a/modules/nixos/emacs.nix b/modules/emacs.nix
index 8a59c9b..8a59c9b 100644
--- a/modules/nixos/emacs.nix
+++ b/modules/emacs.nix
diff --git a/modules/nixos/endlessh-go.nix b/modules/endlessh-go.nix
index efaaa8f..efaaa8f 100644
--- a/modules/nixos/endlessh-go.nix
+++ b/modules/endlessh-go.nix
diff --git a/modules/nixos/endlessh.nix b/modules/endlessh.nix
index f1bf0bc..f1bf0bc 100644
--- a/modules/nixos/endlessh.nix
+++ b/modules/endlessh.nix
diff --git a/modules/nixos/fail2ban.nix b/modules/fail2ban.nix
index a0cc2b4..a0cc2b4 100644
--- a/modules/nixos/fail2ban.nix
+++ b/modules/fail2ban.nix
diff --git a/modules/nixos/firefox/addons.json b/modules/firefox/addons.json
index eb26194..c1ea3fa 100644
--- a/modules/nixos/firefox/addons.json
+++ b/modules/firefox/addons.json
@@ -4,10 +4,6 @@
     "slug": "bitwarden-password-manager"
   },
   {
-    "pname": "bypass-paywalls",
-    "slug": "bypass-paywalls-clean-d"
-  },
-  {
     "slug": "consent-o-matic"
   },
   {
diff --git a/modules/nixos/firefox/default.nix b/modules/firefox/default.nix
index 881e9ad..ce2cecc 100644
--- a/modules/nixos/firefox/default.nix
+++ b/modules/firefox/default.nix
@@ -127,7 +127,6 @@ in
               in
               with addons;
               [
-                bypass-paywalls
                 consent-o-matic
                 darkreader
                 furiganaize
diff --git a/modules/nixos/firefox/userChrome.css b/modules/firefox/userChrome.css
index 80d1f7a..80d1f7a 100644
--- a/modules/nixos/firefox/userChrome.css
+++ b/modules/firefox/userChrome.css
diff --git a/modules/nixos/firefox/userContent.css b/modules/firefox/userContent.css
index cf7b659..cf7b659 100644
--- a/modules/nixos/firefox/userContent.css
+++ b/modules/firefox/userContent.css
diff --git a/modules/nixos/foot.nix b/modules/foot.nix
index 502e143..502e143 100644
--- a/modules/nixos/foot.nix
+++ b/modules/foot.nix
diff --git a/modules/nixos/games/default.nix b/modules/games/default.nix
index 585164e..dea9d3c 100644
--- a/modules/nixos/games/default.nix
+++ b/modules/games/default.nix
@@ -4,14 +4,7 @@ let
   cfg = config.nixfiles.modules.games;
 in
 {
-  imports = [
-    ./gamemode.nix
-    ./lutris.nix
-    ./mangohud.nix
-    ./minecraft.nix
-    ./steam-run.nix
-    ./steam.nix
-  ];
+  imports = attrValues (modulesIn ./.);
 
   options.nixfiles.modules.games.enable32BitSupport = mkEnableOption "support for games";
 
diff --git a/modules/nixos/games/gamemode.nix b/modules/games/gamemode.nix
index eb485f8..eb485f8 100644
--- a/modules/nixos/games/gamemode.nix
+++ b/modules/games/gamemode.nix
diff --git a/modules/nixos/games/lutris.nix b/modules/games/lutris.nix
index 62fe521..62fe521 100644
--- a/modules/nixos/games/lutris.nix
+++ b/modules/games/lutris.nix
diff --git a/modules/nixos/games/mangohud.nix b/modules/games/mangohud.nix
index 955f50c..955f50c 100644
--- a/modules/nixos/games/mangohud.nix
+++ b/modules/games/mangohud.nix
diff --git a/modules/nixos/games/minecraft.nix b/modules/games/minecraft.nix
index 6e163dc..6e163dc 100644
--- a/modules/nixos/games/minecraft.nix
+++ b/modules/games/minecraft.nix
diff --git a/modules/nixos/games/steam-run.nix b/modules/games/steam-run.nix
index cfee8ae..cfee8ae 100644
--- a/modules/nixos/games/steam-run.nix
+++ b/modules/games/steam-run.nix
diff --git a/modules/nixos/games/steam.nix b/modules/games/steam.nix
index 5883b0e..5883b0e 100644
--- a/modules/nixos/games/steam.nix
+++ b/modules/games/steam.nix
diff --git a/modules/nixos/git/favicon.ico b/modules/git/favicon.ico
index bb7cc39..bb7cc39 100644
--- a/modules/nixos/git/favicon.ico
+++ b/modules/git/favicon.ico
Binary files differdiff --git a/modules/nixos/git/logo.gif b/modules/git/logo.gif
index 05874f9..05874f9 100644
--- a/modules/nixos/git/logo.gif
+++ b/modules/git/logo.gif
Binary files differdiff --git a/modules/nixos/gotify.nix b/modules/gotify.nix
index ad9b277..ad9b277 100644
--- a/modules/nixos/gotify.nix
+++ b/modules/gotify.nix
diff --git a/modules/nixos/grafana.nix b/modules/grafana.nix
index 233c9e5..233c9e5 100644
--- a/modules/nixos/grafana.nix
+++ b/modules/grafana.nix
diff --git a/modules/nixos/hydra.nix b/modules/hydra.nix
index 85b89ab..85b89ab 100644
--- a/modules/nixos/hydra.nix
+++ b/modules/hydra.nix
diff --git a/modules/nixos/incus.nix b/modules/incus.nix
index 184aa03..184aa03 100644
--- a/modules/nixos/incus.nix
+++ b/modules/incus.nix
diff --git a/modules/nixos/ipfs.nix b/modules/ipfs.nix
index cd28372..cd28372 100644
--- a/modules/nixos/ipfs.nix
+++ b/modules/ipfs.nix
diff --git a/modules/nixos/jackett.nix b/modules/jackett.nix
index 492e77a..492e77a 100644
--- a/modules/nixos/jackett.nix
+++ b/modules/jackett.nix
diff --git a/modules/nixos/k3s.nix b/modules/k3s.nix
index 1ad99c3..1ad99c3 100644
--- a/modules/nixos/k3s.nix
+++ b/modules/k3s.nix
diff --git a/modules/nixos/kde.nix b/modules/kde.nix
index 4f44a5e..4f44a5e 100644
--- a/modules/nixos/kde.nix
+++ b/modules/kde.nix
diff --git a/modules/nixos/libvirtd.nix b/modules/libvirtd.nix
index 009fd24..009fd24 100644
--- a/modules/nixos/libvirtd.nix
+++ b/modules/libvirtd.nix
diff --git a/modules/nixos/lidarr.nix b/modules/lidarr.nix
index 84d363b..84d363b 100644
--- a/modules/nixos/lidarr.nix
+++ b/modules/lidarr.nix
diff --git a/modules/nixos/loki.nix b/modules/loki.nix
index c446848..c446848 100644
--- a/modules/nixos/loki.nix
+++ b/modules/loki.nix
diff --git a/modules/nixos/matrix/dendrite.nix b/modules/matrix/dendrite.nix
index 5e8a7e4..dafef00 100644
--- a/modules/nixos/matrix/dendrite.nix
+++ b/modules/matrix/dendrite.nix
@@ -55,6 +55,7 @@ in
             "= /.well-known/matrix/server" = {
               extraConfig = ''
                 add_header Content-Type application/json;
+                add_header Access-Control-Allow-Origin *;
               '';
               return = "200 '${generators.toJSON { } { "m.server" = "${cfg.domain}:443"; }}'";
             };
@@ -178,7 +179,7 @@ in
                   logging = [
                     {
                       type = "std";
-                      level = "warn";
+                      level = "info";
                     }
                   ];
                 };
diff --git a/modules/nixos/matrix/element.nix b/modules/matrix/element.nix
index 92a2927..01b991e 100644
--- a/modules/nixos/matrix/element.nix
+++ b/modules/matrix/element.nix
@@ -50,7 +50,7 @@ in
           brand = homeserver;
           branding.authFooterLinks = [
             {
-              text = "Hosted on NixOS";
+              text = "NixOS";
               url = "https://nixos.org";
             }
           ];
diff --git a/modules/nixos/monitoring/dashboards/endlessh.json b/modules/monitoring/dashboards/endlessh.json
index 7af5595..7af5595 100644
--- a/modules/nixos/monitoring/dashboards/endlessh.json
+++ b/modules/monitoring/dashboards/endlessh.json
diff --git a/modules/nixos/monitoring/dashboards/nginx.json b/modules/monitoring/dashboards/nginx.json
index cb8f160..cb8f160 100644
--- a/modules/nixos/monitoring/dashboards/nginx.json
+++ b/modules/monitoring/dashboards/nginx.json
diff --git a/modules/nixos/monitoring/dashboards/node.json b/modules/monitoring/dashboards/node.json
index 452e6f9..452e6f9 100644
--- a/modules/nixos/monitoring/dashboards/node.json
+++ b/modules/monitoring/dashboards/node.json
diff --git a/modules/nixos/monitoring/dashboards/ntfy.json b/modules/monitoring/dashboards/ntfy.json
index dadeae7..dadeae7 100644
--- a/modules/nixos/monitoring/dashboards/ntfy.json
+++ b/modules/monitoring/dashboards/ntfy.json
diff --git a/modules/nixos/monitoring/dashboards/postgresql.json b/modules/monitoring/dashboards/postgresql.json
index 9d856e8..9d856e8 100644
--- a/modules/nixos/monitoring/dashboards/postgresql.json
+++ b/modules/monitoring/dashboards/postgresql.json
diff --git a/modules/nixos/monitoring/dashboards/redis.json b/modules/monitoring/dashboards/redis.json
index 014ad3e..014ad3e 100644
--- a/modules/nixos/monitoring/dashboards/redis.json
+++ b/modules/monitoring/dashboards/redis.json
diff --git a/modules/nixos/monitoring/dashboards/unbound.json b/modules/monitoring/dashboards/unbound.json
index b04e9c5..b04e9c5 100644
--- a/modules/nixos/monitoring/dashboards/unbound.json
+++ b/modules/monitoring/dashboards/unbound.json
diff --git a/modules/nixos/monitoring/default.nix b/modules/monitoring/default.nix
index 6e5b782..6e5b782 100644
--- a/modules/nixos/monitoring/default.nix
+++ b/modules/monitoring/default.nix
diff --git a/modules/nixos/monitoring/rules/nginx.yaml b/modules/monitoring/rules/nginx.yaml
index f00d372..f00d372 100644
--- a/modules/nixos/monitoring/rules/nginx.yaml
+++ b/modules/monitoring/rules/nginx.yaml
diff --git a/modules/nixos/monitoring/rules/node.yaml b/modules/monitoring/rules/node.yaml
index a9b6b79..a9b6b79 100644
--- a/modules/nixos/monitoring/rules/node.yaml
+++ b/modules/monitoring/rules/node.yaml
diff --git a/modules/nixos/monitoring/rules/postgres.yaml b/modules/monitoring/rules/postgres.yaml
index 6a98c92..6a98c92 100644
--- a/modules/nixos/monitoring/rules/postgres.yaml
+++ b/modules/monitoring/rules/postgres.yaml
diff --git a/modules/nixos/monitoring/rules/redis.yaml b/modules/monitoring/rules/redis.yaml
index b47c313..b47c313 100644
--- a/modules/nixos/monitoring/rules/redis.yaml
+++ b/modules/monitoring/rules/redis.yaml
diff --git a/modules/nixos/mpd.nix b/modules/mpd.nix
index 7c3c821..7c3c821 100644
--- a/modules/nixos/mpd.nix
+++ b/modules/mpd.nix
diff --git a/modules/nixos/murmur.nix b/modules/murmur.nix
index 7621c9e..7621c9e 100644
--- a/modules/nixos/murmur.nix
+++ b/modules/murmur.nix
diff --git a/modules/nixos/nextcloud.nix b/modules/nextcloud.nix
index 4053c38..4053c38 100644
--- a/modules/nixos/nextcloud.nix
+++ b/modules/nextcloud.nix
diff --git a/modules/nixos/nginx.nix b/modules/nginx.nix
index ed34237..ed34237 100644
--- a/modules/nixos/nginx.nix
+++ b/modules/nginx.nix
diff --git a/modules/nixos/common/default.nix b/modules/nixos/common/default.nix
deleted file mode 100644
index 4c192c9..0000000
--- a/modules/nixos/common/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-_: {
-  imports = [
-    ./ark.nix
-    ./console.nix
-    ./documentation.nix
-    ./home-manager.nix
-    ./kernel.nix
-    ./locale.nix
-    ./networking.nix
-    ./nix.nix
-    ./secrets.nix
-    ./security.nix
-    ./services.nix
-    ./shell.nix
-    ./stylix.nix
-    ./systemd.nix
-    ./tmp.nix
-    ./users.nix
-    ./xdg.nix
-  ];
-}
diff --git a/modules/nixos/common/home-manager.nix b/modules/nixos/common/home-manager.nix
deleted file mode 100644
index c553a65..0000000
--- a/modules/nixos/common/home-manager.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-{ inputs, ... }:
-{
-  imports = [ inputs.home-manager.nixosModule ];
-}
diff --git a/modules/nixos/common/nix.nix b/modules/nixos/common/nix.nix
deleted file mode 100644
index 146575d..0000000
--- a/modules/nixos/common/nix.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  config,
-  inputs,
-  lib,
-  ...
-}:
-with lib;
-let
-  cfg = config.nixfiles.modules.common.nix;
-in
-{
-  options.nixfiles.modules.common.nix.allowedUnfreePackages = mkOption {
-    description = "A list of allowed unfree packages.";
-    type = with types; listOf str;
-    default = [ ];
-  };
-
-  config = {
-    nix = {
-      daemonCPUSchedPolicy = "idle";
-      daemonIOSchedClass = "idle";
-      daemonIOSchedPriority = 7;
-    };
-
-    nixpkgs.config.allowUnfreePredicate = p: elem (getName p) cfg.allowedUnfreePackages;
-
-    system.stateVersion = with builtins; head (split "\n" (readFile "${inputs.nixpkgs}/.version"));
-
-    environment = {
-      sessionVariables.NIX_SHELL_PRESERVE_PROMPT = "1";
-      localBinInPath = true;
-      defaultPackages = [ ];
-    };
-  };
-}
diff --git a/modules/nixos/common/secrets.nix b/modules/nixos/common/secrets.nix
deleted file mode 100644
index 31787ac..0000000
--- a/modules/nixos/common/secrets.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-{ inputs, ... }:
-{
-  imports = [ inputs.agenix.nixosModules.default ];
-}
diff --git a/modules/nixos/common/shell.nix b/modules/nixos/common/shell.nix
deleted file mode 100644
index a1a7f08..0000000
--- a/modules/nixos/common/shell.nix
+++ /dev/null
@@ -1 +0,0 @@
-_: { programs.command-not-found.enable = false; }
diff --git a/modules/nixos/common/stylix.nix b/modules/nixos/common/stylix.nix
deleted file mode 100644
index 58b4f29..0000000
--- a/modules/nixos/common/stylix.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  config,
-  inputs,
-  lib,
-  pkgs,
-  ...
-}:
-with lib;
-{
-  imports = [ inputs.stylix.nixosModules.stylix ];
-
-  stylix.cursor = {
-    name = "phinger-cursors-light";
-    package = pkgs.phinger-cursors;
-    size = 32;
-  };
-
-  fonts = {
-    packages = mkAfter config.nixfiles.modules.common.stylix.fonts.extraPackages;
-
-    fontconfig.defaultFonts = with config.stylix.fonts; {
-      serif = mkForce [
-        serif.name
-        "Sarasa Gothic"
-        "Source Han Serif"
-        "Noto Serif"
-      ];
-      sansSerif = mkForce [
-        sansSerif.name
-        "Sarasa Gothic"
-        "Source Han Sans"
-        "Noto Sans"
-      ];
-      monospace = mkForce [
-        monospace.name
-        "Sarasa Mono"
-        "Source Han Mono"
-        "Noto Sans Mono"
-      ];
-      emoji = mkForce [
-        "Twitter Color Emoji"
-        "Noto Color Emoji"
-      ];
-    };
-  };
-}
diff --git a/modules/nixos/common/xdg.nix b/modules/nixos/common/xdg.nix
deleted file mode 100644
index 1fe167e..0000000
--- a/modules/nixos/common/xdg.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  config,
-  lib,
-  this,
-  ...
-}:
-with lib;
-let
-  cfg = config.nixfiles.modules.common.xdg;
-in
-{
-  options.nixfiles.modules.common.xdg.defaultApplications = mkOption {
-    description = "Default applications.";
-    type = with types; attrsOf (listOf str);
-    default = { };
-  };
-
-  config = {
-    xdg.portal = mkIf this.isHeadful { enable = true; };
-
-    hm.xdg = mkMerge [
-      (with cfg; {
-        enable = true;
-
-        inherit cacheHome;
-        inherit configHome;
-        inherit dataHome;
-        inherit stateHome;
-        inherit userDirs;
-      })
-      (mkIf this.isHeadful {
-        mimeApps = {
-          enable = true;
-          defaultApplications = mkMerge (
-            mapAttrsToList (n: v: genAttrs v (_: [ "${n}.desktop" ])) cfg.defaultApplications
-          );
-        };
-      })
-    ];
-  };
-}
diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix
deleted file mode 100644
index 1d5e905..0000000
--- a/modules/nixos/default.nix
+++ /dev/null
@@ -1,75 +0,0 @@
-_: {
-  imports = [
-    ./acme.nix
-    ./alertmanager.nix
-    ./android.nix
-    ./beets.nix
-    ./bluetooth.nix
-    ./chromium.nix
-    ./clickhouse.nix
-    ./common
-    ./docker.nix
-    ./dwm.nix
-    ./emacs.nix
-    ./endlessh-go.nix
-    ./endlessh.nix
-    ./fail2ban.nix
-    ./firefox
-    ./foot.nix
-    ./games
-    ./git
-    ./gnupg.nix
-    ./gotify.nix
-    ./grafana.nix
-    ./hydra.nix
-    ./incus.nix
-    ./ipfs.nix
-    ./jackett.nix
-    ./k3s.nix
-    ./kde.nix
-    ./libvirtd.nix
-    ./lidarr.nix
-    ./loki.nix
-    ./matrix
-    ./monitoring
-    ./mpd.nix
-    ./mpv.nix
-    ./murmur.nix
-    ./nextcloud.nix
-    ./nginx.nix
-    ./node-exporter.nix
-    ./nsd.nix
-    ./ntfy.nix
-    ./nullmailer.nix
-    ./openssh.nix
-    ./plausible.nix
-    ./podman.nix
-    ./postgresql.nix
-    ./profiles
-    ./prometheus.nix
-    ./promtail.nix
-    ./psd.nix
-    ./radarr.nix
-    ./radicale.nix
-    ./redis.nix
-    ./rss-bridge.nix
-    ./rtorrent.nix
-    ./searx.nix
-    ./shadowsocks.nix
-    ./soju.nix
-    ./solaar.nix
-    ./sonarr.nix
-    ./sound.nix
-    ./syncthing.nix
-    ./throttled.nix
-    ./thunderbird.nix
-    ./unbound.nix
-    ./vaultwarden.nix
-    ./vim
-    ./wayland.nix
-    ./wireguard.nix
-    ./x11.nix
-    ./xmonad.nix
-    ./zathura.nix
-  ];
-}
diff --git a/modules/nixos/firefox/addons.nix b/modules/nixos/firefox/addons.nix
deleted file mode 100644
index 28235d4..0000000
--- a/modules/nixos/firefox/addons.nix
+++ /dev/null
@@ -1,1143 +0,0 @@
-{ buildFirefoxXpiAddon, lib }:
-{
-  "bitwarden" = buildFirefoxXpiAddon {
-    pname = "bitwarden";
-    version = "2024.2.1";
-    addonId = "{446900e4-71c2-419f-a6a7-df9c091e268b}";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4246600/bitwarden_password_manager-2024.2.1.xpi";
-    sha256 = "f2db399e5a0915e4fd7e4906c32c72eac4a2b7bb4b4acacd892fff18e73085d4";
-    meta = with lib; {
-      homepage = "https://bitwarden.com";
-      description = "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.";
-      license = licenses.gpl3;
-      mozPermissions = [
-        "<all_urls>"
-        "tabs"
-        "contextMenus"
-        "storage"
-        "unlimitedStorage"
-        "clipboardRead"
-        "clipboardWrite"
-        "idle"
-        "http://*/*"
-        "https://*/*"
-        "webRequest"
-        "webRequestBlocking"
-        "file:///*"
-        "https://lastpass.com/export.php"
-      ];
-      platforms = platforms.all;
-    };
-  };
-  "bypass-paywalls" = buildFirefoxXpiAddon {
-    pname = "bypass-paywalls";
-    version = "3.6.0.0";
-    addonId = "magnolia_limited_permissions_d@12.34";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4251818/bypass_paywalls_clean_d-3.6.0.0.xpi";
-    sha256 = "30a57df51a241838dca9360a12801ea82f2deaf76a6b63f1279235e2f5f3c939";
-    meta = with lib; {
-      homepage = "https://gitlab.com/magnolia1234/bypass-paywalls-firefox-clean";
-      description = "Bypass Paywalls";
-      license = licenses.mit;
-      mozPermissions = [
-        "cookies"
-        "storage"
-        "activeTab"
-        "webRequest"
-        "webRequestBlocking"
-        "*://*.360dx.com/*"
-        "*://*.60millions-mag.com/*"
-        "*://*.aargauerzeitung.ch/*"
-        "*://*.abc.es/*"
-        "*://*.abendblatt.de/*"
-        "*://*.abqjournal.com/*"
-        "*://*.abril.com.br/*"
-        "*://*.ad.nl/*"
-        "*://*.adage.com/*"
-        "*://*.adelaidenow.com.au/*"
-        "*://*.adweek.com/*"
-        "*://*.aerokurier.de/*"
-        "*://*.aerztezeitung.de/*"
-        "*://*.afr.com/*"
-        "*://*.ajc.com/*"
-        "*://*.al.com/*"
-        "*://*.allgemeine-zeitung.de/*"
-        "*://*.alternatives-economiques.fr/*"
-        "*://*.ambito.com/*"
-        "*://*.americanaffairsjournal.org/*"
-        "*://*.americanbanker.com/*"
-        "*://*.americastestkitchen.com/*"
-        "*://*.apollo-magazine.com/*"
-        "*://*.ara.cat/*"
-        "*://*.arabalears.cat/*"
-        "*://*.architecturaldigest.com/*"
-        "*://*.arcinfo.ch/*"
-        "*://*.artforum.com/*"
-        "*://*.artnet.com/*"
-        "*://*.artsenkrant.com/*"
-        "*://*.atavist.com/*"
-        "*://*.atlantico.fr/*"
-        "*://*.augsburger-allgemeine.de/*"
-        "*://*.auto-motor-und-sport.de/*"
-        "*://*.autocar.co.uk/*"
-        "*://*.automobilwoche.de/*"
-        "*://*.autonews.com/*"
-        "*://*.autoplus.fr/*"
-        "*://*.autosport.com/*"
-        "*://*.axios.com/*"
-        "*://*.azcentral.com/*"
-        "*://*.backpacker.com/*"
-        "*://*.balkaninsight.com/*"
-        "*://*.baltimoresun.com/*"
-        "*://*.barandbench.com/*"
-        "*://*.barrons.com/*"
-        "*://*.bd.nl/*"
-        "*://*.beleggersbelangen.nl/*"
-        "*://*.belfasttelegraph.co.uk/*"
-        "*://*.bendigoadvertiser.com.au/*"
-        "*://*.beobachter.ch/*"
-        "*://*.berliner-zeitung.de/*"
-        "*://*.berlingske.dk/*"
-        "*://*.betamtb.com/*"
-        "*://*.betternutrition.com/*"
-        "*://*.betterprogramming.pub/*"
-        "*://*.bicycling.com/*"
-        "*://*.bild.de/*"
-        "*://*.billboard.com/*"
-        "*://*.bizjournals.com/*"
-        "*://*.bloomberg.com/*"
-        "*://*.bloombergadria.com/*"
-        "*://*.bnd.com/*"
-        "*://*.bndestem.nl/*"
-        "*://*.boersen-zeitung.de/*"
-        "*://*.bonappetit.com/*"
-        "*://*.bordermail.com.au/*"
-        "*://*.bostonglobe.com/*"
-        "*://*.bostonherald.com/*"
-        "*://*.bqprime.com/*"
-        "*://*.braunschweiger-zeitung.de/*"
-        "*://*.brisbanetimes.com.au/*"
-        "*://*.britannica.com/*"
-        "*://*.buffalonews.com/*"
-        "*://*.business-standard.com/*"
-        "*://*.businessam.be/*"
-        "*://*.businessinsider.com.pl/*"
-        "*://*.businessinsider.com/*"
-        "*://*.businessinsider.nl/*"
-        "*://*.businessoffashion.com/*"
-        "*://*.businesspost.ie/*"
-        "*://*.cairnspost.com.au/*"
-        "*://*.calgaryherald.com/*"
-        "*://*.cambiocolombia.com/*"
-        "*://*.canarias7.es/*"
-        "*://*.canberratimes.com.au/*"
-        "*://*.capitalgazette.com/*"
-        "*://*.cartacapital.com.br/*"
-        "*://*.causeur.fr/*"
-        "*://*.cen.acs.org/*"
-        "*://*.centralwesterndaily.com.au/*"
-        "*://*.centrepresseaveyron.fr/*"
-        "*://*.challenges.fr/*"
-        "*://*.charentelibre.fr/*"
-        "*://*.charliehebdo.fr/*"
-        "*://*.charlotteobserver.com/*"
-        "*://*.chicagobusiness.com/*"
-        "*://*.chicagotribune.com/*"
-        "*://*.chronicle.com/*"
-        "*://*.cicero.de/*"
-        "*://*.cieletespace.fr/*"
-        "*://*.cincinnati.com/*"
-        "*://*.citywire.com/*"
-        "*://*.clarin.com/*"
-        "*://*.cleaneatingmag.com/*"
-        "*://*.cleveland.com/*"
-        "*://*.clicrbs.com.br/*"
-        "*://*.climbing.com/*"
-        "*://*.cmjornal.pt/*"
-        "*://*.cnbc.com/*"
-        "*://*.cntraveler.com/*"
-        "*://*.columbian.com/*"
-        "*://*.commentary.org/*"
-        "*://*.commercialappeal.com/*"
-        "*://*.computerweekly.com/*"
-        "*://*.connaissancedesarts.com/*"
-        "*://*.correiodopovo.com.br/*"
-        "*://*.corriere.it/*"
-        "*://*.corriereadriatico.it/*"
-        "*://*.corrieredellosport.it/*"
-        "*://*.cosmopolitan.com/*"
-        "*://*.cosmopolitan.fr/*"
-        "*://*.countryliving.com/*"
-        "*://*.courant.com/*"
-        "*://*.courier-journal.com/*"
-        "*://*.couriermail.com.au/*"
-        "*://*.courrierinternational.com/*"
-        "*://*.crainscleveland.com/*"
-        "*://*.crainsdetroit.com/*"
-        "*://*.crainsnewyork.com/*"
-        "*://*.crikey.com.au/*"
-        "*://*.cronista.com/*"
-        "*://*.crusoe.com.br/*"
-        "*://*.csmonitor.com/*"
-        "*://*.ctpost.com/*"
-        "*://*.curbed.com/*"
-        "*://*.cw.com.tw/*"
-        "*://*.dagsavisen.no/*"
-        "*://*.dailyadvertiser.com.au/*"
-        "*://*.dailyliberal.com.au/*"
-        "*://*.dailymail.co.uk/*"
-        "*://*.dailypress.com/*"
-        "*://*.dailytelegraph.com.au/*"
-        "*://*.dailywire.com/*"
-        "*://*.dallasnews.com/*"
-        "*://*.defector.com/*"
-        "*://*.delish.com/*"
-        "*://*.democratandchronicle.com/*"
-        "*://*.demorgen.be/*"
-        "*://*.denverpost.com/*"
-        "*://*.deraktionaer.de/*"
-        "*://*.desmoinesregister.com/*"
-        "*://*.destentor.nl/*"
-        "*://*.detroitnews.com/*"
-        "*://*.df.cl/*"
-        "*://*.dhnet.be/*"
-        "*://*.di.se/*"
-        "*://*.diariocorreo.pe/*"
-        "*://*.diariodemallorca.es/*"
-        "*://*.diariosur.es/*"
-        "*://*.diariovasco.com/*"
-        "*://*.diepresse.com/*"
-        "*://*.digiday.com/*"
-        "*://*.discovermagazine.com/*"
-        "*://*.dispatch.com/*"
-        "*://*.doorbraak.be/*"
-        "*://*.dvhn.nl/*"
-        "*://*.dwell.com/*"
-        "*://*.eastbaytimes.com/*"
-        "*://*.eastwest.eu/*"
-        "*://*.echo-online.de/*"
-        "*://*.economictimes.com/*"
-        "*://*.economist.com/*"
-        "*://*.ed.nl/*"
-        "*://*.editorialedomani.it/*"
-        "*://*.elcomercio.es/*"
-        "*://*.elcomercio.pe/*"
-        "*://*.elconfidencial.com/*"
-        "*://*.elcorreo.com/*"
-        "*://*.eldia.es/*"
-        "*://*.eldiario.es/*"
-        "*://*.eldiariomontanes.es/*"
-        "*://*.elespanol.com/*"
-        "*://*.elespectador.com/*"
-        "*://*.elle.com/*"
-        "*://*.elle.fr/*"
-        "*://*.elledecor.com/*"
-        "*://*.elmercurio.com/*"
-        "*://*.elmundo.es/*"
-        "*://*.elnortedecastilla.es/*"
-        "*://*.elnuevoherald.com/*"
-        "*://*.elobservador.com.uy/*"
-        "*://*.elpais.com.uy/*"
-        "*://*.elpais.com/*"
-        "*://*.elperiodico.com/*"
-        "*://*.eltiempo.com/*"
-        "*://*.eltribuno.com/*"
-        "*://*.em.com.br/*"
-        "*://*.enotes.com/*"
-        "*://*.epe.es/*"
-        "*://*.epicurious.com/*"
-        "*://*.epoch.org.il/*"
-        "*://*.espn.com/*"
-        "*://*.esprit.presse.fr/*"
-        "*://*.esquire.com/*"
-        "*://*.estadao.com.br/*"
-        "*://*.etc.se/*"
-        "*://*.euobserver.com/*"
-        "*://*.european-rubber-journal.com/*"
-        "*://*.europower.no/*"
-        "*://*.exame.com/*"
-        "*://*.examiner.com.au/*"
-        "*://*.expansion.com/*"
-        "*://*.expressnews.com/*"
-        "*://*.expresso.pt/*"
-        "*://*.farodevigo.es/*"
-        "*://*.fastcompany.com/*"
-        "*://*.faz.net/*"
-        "*://*.fd.nl/*"
-        "*://*.femmesdaujourdhui.be/*"
-        "*://*.fieldandstream.com/*"
-        "*://*.financialexpress.com/*"
-        "*://*.financialpost.com/*"
-        "*://*.firstthings.com/*"
-        "*://*.fiskeribladet.no/*"
-        "*://*.flair.be/*"
-        "*://*.flair.nl/*"
-        "*://*.flugrevue.de/*"
-        "*://*.fnlondon.com/*"
-        "*://*.forbes.com.au/*"
-        "*://*.forbes.com/*"
-        "*://*.foreignaffairs.com/*"
-        "*://*.foreignpolicy.com/*"
-        "*://*.fortune.com/*"
-        "*://*.foxnews.com/*"
-        "*://*.freep.com/*"
-        "*://*.freiepresse.de/*"
-        "*://*.freitag.de/*"
-        "*://*.fresnobee.com/*"
-        "*://*.ft.com/*"
-        "*://*.ftm.eu/*"
-        "*://*.ftm.nl/*"
-        "*://*.gazetadopovo.com.br/*"
-        "*://*.gazzetta.it/*"
-        "*://*.gbnews.com/*"
-        "*://*.geelongadvertiser.com.au/*"
-        "*://*.gelderlander.nl/*"
-        "*://*.genomeweb.com/*"
-        "*://*.gestion.pe/*"
-        "*://*.glassdoor.com/*"
-        "*://*.globes.co.il/*"
-        "*://*.globo.com/*"
-        "*://*.glossy.co/*"
-        "*://*.goldcoastbulletin.com.au/*"
-        "*://*.goodhousekeeping.com/*"
-        "*://*.gq.com/*"
-        "*://*.granta.com/*"
-        "*://*.groene.nl/*"
-        "*://*.grubstreet.com/*"
-        "*://*.haaretz.co.il/*"
-        "*://*.haaretz.com/*"
-        "*://*.handelszeitung.ch/*"
-        "*://*.harpers.org/*"
-        "*://*.harpersbazaar.com/*"
-        "*://*.haz.de/*"
-        "*://*.hbr.org/*"
-        "*://*.hbvl.be/*"
-        "*://*.heraldsun.com.au/*"
-        "*://*.hilltimes.com/*"
-        "*://*.hindustantimes.com/*"
-        "*://*.hindutamil.in/*"
-        "*://*.historyextra.com/*"
-        "*://*.hln.be/*"
-        "*://*.housebeautiful.com/*"
-        "*://*.houstonchronicle.com/*"
-        "*://*.hoy.es/*"
-        "*://*.huffingtonpost.it/*"
-        "*://*.humanite.fr/*"
-        "*://*.humo.be/*"
-        "*://*.ideal.es/*"
-        "*://*.ilfattoquotidiano.it/*"
-        "*://*.ilfoglio.it/*"
-        "*://*.ilgazzettino.it/*"
-        "*://*.ilgiorno.it/*"
-        "*://*.illawarramercury.com.au/*"
-        "*://*.ilmanifesto.it/*"
-        "*://*.ilmattino.it/*"
-        "*://*.ilmessaggero.it/*"
-        "*://*.ilrestodelcarlino.it/*"
-        "*://*.ilsecoloxix.it/*"
-        "*://*.ilsole24ore.com/*"
-        "*://*.iltelegrafolivorno.it/*"
-        "*://*.iltirreno.it/*"
-        "*://*.inc.com/*"
-        "*://*.inc42.com/*"
-        "*://*.independent.co.uk/*"
-        "*://*.independent.ie/*"
-        "*://*.indianexpress.com/*"
-        "*://*.indiatimes.com/*"
-        "*://*.indiatoday.in/*"
-        "*://*.indystar.com/*"
-        "*://*.inews.co.uk/*"
-        "*://*.informacion.es/*"
-        "*://*.infzm.com/*"
-        "*://*.inkl.com/*"
-        "*://*.inquirer.com/*"
-        "*://*.insidehighered.com/*"
-        "*://*.intelligentinvestor.com.au/*"
-        "*://*.interestingengineering.com/*"
-        "*://*.internazionale.it/*"
-        "*://*.intrafish.com/*"
-        "*://*.intrafish.no/*"
-        "*://*.investorschronicle.co.uk/*"
-        "*://*.investsmart.com.au/*"
-        "*://*.ipolitics.ca/*"
-        "*://*.irishexaminer.com/*"
-        "*://*.irishtimes.com/*"
-        "*://*.italian.tech/*"
-        "*://*.italiaoggi.it/*"
-        "*://*.jacksonville.com/*"
-        "*://*.jacobin.de/*"
-        "*://*.janes.com/*"
-        "*://*.japantimes.co.jp/*"
-        "*://*.jazziz.com/*"
-        "*://*.jazzwise.com/*"
-        "*://*.jgnt.co/*"
-        "*://*.journaldemillau.fr/*"
-        "*://*.journaldemontreal.com/*"
-        "*://*.journaldequebec.com/*"
-        "*://*.journaldunet.com/*"
-        "*://*.journalnow.com/*"
-        "*://*.journalstar.com/*"
-        "*://*.jpost.com/*"
-        "*://*.jsonline.com/*"
-        "*://*.kansas.com/*"
-        "*://*.kansascity.com/*"
-        "*://*.kentucky.com/*"
-        "*://*.kn-online.de/*"
-        "*://*.knack.be/*"
-        "*://*.knoxnews.com/*"
-        "*://*.krautreporter.de/*"
-        "*://*.ksta.de/*"
-        "*://*.kurier.at/*"
-        "*://*.kw.be/*"
-        "*://*.la-croix.com/*"
-        "*://*.labusinessjournal.com/*"
-        "*://*.lacote.ch/*"
-        "*://*.ladepeche.fr/*"
-        "*://*.ladiaria.com.uy/*"
-        "*://*.lalibre.be/*"
-        "*://*.lamontagne.fr/*"
-        "*://*.lanacion.com.ar/*"
-        "*://*.lanazione.it/*"
-        "*://*.lanouvellerepublique.fr/*"
-        "*://*.lanuovasardegna.it/*"
-        "*://*.laprovincia.es/*"
-        "*://*.larepubliquedespyrenees.fr/*"
-        "*://*.larioja.com/*"
-        "*://*.lasegunda.com/*"
-        "*://*.lasprovincias.es/*"
-        "*://*.lastampa.it/*"
-        "*://*.latercera.com/*"
-        "*://*.latimes.com/*"
-        "*://*.latribune.fr/*"
-        "*://*.lavanguardia.com/*"
-        "*://*.lavenir.net/*"
-        "*://*.laverdad.es/*"
-        "*://*.lavoz.com.ar/*"
-        "*://*.lavozdigital.es/*"
-        "*://*.law.com/*"
-        "*://*.lc.nl/*"
-        "*://*.lecho.be/*"
-        "*://*.lecourrierdesstrateges.fr/*"
-        "*://*.ledevoir.com/*"
-        "*://*.legrandcontinent.eu/*"
-        "*://*.lehighvalleylive.com/*"
-        "*://*.lejdd.fr/*"
-        "*://*.lemagit.fr/*"
-        "*://*.lemoniteur.fr/*"
-        "*://*.lenouveleconomiste.fr/*"
-        "*://*.lenouvelliste.ch/*"
-        "*://*.leparisien.fr/*"
-        "*://*.lepoint.fr/*"
-        "*://*.lescienze.it/*"
-        "*://*.lesechos.fr/*"
-        "*://*.lesinrocks.com/*"
-        "*://*.lesoleil.com/*"
-        "*://*.letelegramme.fr/*"
-        "*://*.levante-emv.com/*"
-        "*://*.levif.be/*"
-        "*://*.lexpress.fr/*"
-        "*://*.libelle.be/*"
-        "*://*.libelle.nl/*"
-        "*://*.limburger.nl/*"
-        "*://*.lindependant.fr/*"
-        "*://*.linforme.com/*"
-        "*://*.literaryreview.co.uk/*"
-        "*://*.livelaw.in/*"
-        "*://*.livemint.com/*"
-        "*://*.ln-online.de/*"
-        "*://*.lne.es/*"
-        "*://*.loebclassics.com/*"
-        "*://*.loeildelaphotographie.com/*"
-        "*://*.lopinion.fr/*"
-        "*://*.losandes.com.ar/*"
-        "*://*.lrb.co.uk/*"
-        "*://*.luzernerzeitung.ch/*"
-        "*://*.lvz.de/*"
-        "*://*.macrobusiness.com.au/*"
-        "*://*.madison.com/*"
-        "*://*.mainichi.jp/*"
-        "*://*.mallorcazeitung.es/*"
-        "*://*.mannheimer-morgen.de/*"
-        "*://*.marca.com/*"
-        "*://*.margriet.nl/*"
-        "*://*.marianne.net/*"
-        "*://*.marketwatch.com/*"
-        "*://*.masslive.com/*"
-        "*://*.maz-online.de/*"
-        "*://*.mcall.com/*"
-        "*://*.mcclatchydc.com/*"
-        "*://*.medium.com/*"
-        "*://*.medscape.com/*"
-        "*://*.menshealth.com/*"
-        "*://*.mercurynews.com/*"
-        "*://*.mexiconewsdaily.com/*"
-        "*://*.miamiherald.com/*"
-        "*://*.mid-day.com/*"
-        "*://*.midilibre.fr/*"
-        "*://*.mlive.com/*"
-        "*://*.moda.it/*"
-        "*://*.modernhealthcare.com/*"
-        "*://*.modernretail.co/*"
-        "*://*.monacomatin.mc/*"
-        "*://*.monocle.com/*"
-        "*://*.morgenpost.de/*"
-        "*://*.motorradonline.de/*"
-        "*://*.mundodeportivo.com/*"
-        "*://*.mv-voice.com/*"
-        "*://*.mz.de/*"
-        "*://*.nationalgeographic.com/*"
-        "*://*.nationalpost.com/*"
-        "*://*.nationalreview.com/*"
-        "*://*.nautil.us/*"
-        "*://*.neuepresse.de/*"
-        "*://*.newcastleherald.com.au/*"
-        "*://*.newleftreview.org/*"
-        "*://*.newrepublic.com/*"
-        "*://*.news-press.com/*"
-        "*://*.newscientist.com/*"
-        "*://*.newsday.com/*"
-        "*://*.newsobserver.com/*"
-        "*://*.newstatesman.com/*"
-        "*://*.newsweek.com/*"
-        "*://*.newsweek.pl/*"
-        "*://*.newyorker.com/*"
-        "*://*.nhregister.com/*"
-        "*://*.niagarafallsreview.ca/*"
-        "*://*.nicematin.com/*"
-        "*://*.nieuwsblad.be/*"
-        "*://*.nikkei.com/*"
-        "*://*.nj.com/*"
-        "*://*.nola.com/*"
-        "*://*.northerndailyleader.com.au/*"
-        "*://*.northjersey.com/*"
-        "*://*.nouvelobs.com/*"
-        "*://*.noz.de/*"
-        "*://*.nrc.nl/*"
-        "*://*.nrpyrenees.fr/*"
-        "*://*.nrz.de/*"
-        "*://*.ntnews.com.au/*"
-        "*://*.nw.de/*"
-        "*://*.nwitimes.com/*"
-        "*://*.nybooks.com/*"
-        "*://*.nydailynews.com/*"
-        "*://*.nymag.com/*"
-        "*://*.nypost.com/*"
-        "*://*.nysun.com/*"
-        "*://*.nyteknik.se/*"
-        "*://*.nytimes.com/*"
-        "*://*.nzherald.co.nz/*"
-        "*://*.nzz.ch/*"
-        "*://*.observador.pt/*"
-        "*://*.ocbj.com/*"
-        "*://*.ocregister.com/*"
-        "*://*.oklahoman.com/*"
-        "*://*.omaha.com/*"
-        "*://*.oprahdaily.com/*"
-        "*://*.oregonlive.com/*"
-        "*://*.orlandosentinel.com/*"
-        "*://*.ostsee-zeitung.de/*"
-        "*://*.otz.de/*"
-        "*://*.outdoorlife.com/*"
-        "*://*.outlookbusiness.com/*"
-        "*://*.outlookindia.com/*"
-        "*://*.outsideonline.com/*"
-        "*://*.oxygenmag.com/*"
-        "*://*.paloaltoonline.com/*"
-        "*://*.parismatch.com/*"
-        "*://*.parool.nl/*"
-        "*://*.penews.com/*"
-        "*://*.pennlive.com/*"
-        "*://*.petitbleu.fr/*"
-        "*://*.philanthropy.com/*"
-        "*://*.philomag.com/*"
-        "*://*.philomag.de/*"
-        "*://*.philosophynow.org/*"
-        "*://*.pilotonline.com/*"
-        "*://*.pionline.com/*"
-        "*://*.piqd.de/*"
-        "*://*.plasticsnews.com/*"
-        "*://*.politicaexterior.com/*"
-        "*://*.polityka.pl/*"
-        "*://*.popsci.com/*"
-        "*://*.popularmechanics.com/*"
-        "*://*.post-gazette.com/*"
-        "*://*.pourlascience.fr/*"
-        "*://*.pourleco.com/*"
-        "*://*.precisionmedicineonline.com/*"
-        "*://*.pressenterprise.com/*"
-        "*://*.prevention.com/*"
-        "*://*.profi.de/*"
-        "*://*.profil.at/*"
-        "*://*.project-syndicate.org/*"
-        "*://*.prospectmagazine.co.uk/*"
-        "*://*.public.fr/*"
-        "*://*.pzc.nl/*"
-        "*://*.quora.com/*"
-        "*://*.quotidiano.net/*"
-        "*://*.quotidianodipuglia.it/*"
-        "*://*.qz.com/*"
-        "*://*.rechargenews.com/*"
-        "*://*.record.pt/*"
-        "*://*.repubblica.it/*"
-        "*://*.reuters.com/*"
-        "*://*.revistaoeste.com/*"
-        "*://*.revueconflits.com/*"
-        "*://*.rhein-zeitung.de/*"
-        "*://*.richmond.com/*"
-        "*://*.rnd.de/*"
-        "*://*.roadandtrack.com/*"
-        "*://*.rollingstone.com/*"
-        "*://*.rp.pl/*"
-        "*://*.rubbernews.com/*"
-        "*://*.rugbypass.com/*"
-        "*://*.rugbyrama.fr/*"
-        "*://*.ruhrnachrichten.de/*"
-        "*://*.rundschau-online.de/*"
-        "*://*.runnersworld.com/*"
-        "*://*.sabado.pt/*"
-        "*://*.sacbee.com/*"
-        "*://*.saltwire.com/*"
-        "*://*.sandiegouniontribune.com/*"
-        "*://*.schwaebische.de/*"
-        "*://*.schwarzwaelder-bote.de/*"
-        "*://*.schweizermonat.ch/*"
-        "*://*.science-et-vie.com/*"
-        "*://*.science.org/*"
-        "*://*.sciencesetavenir.fr/*"
-        "*://*.scientificamerican.com/*"
-        "*://*.scmp.com/*"
-        "*://*.scotsman.com/*"
-        "*://*.sdbj.com/*"
-        "*://*.seattletimes.com/*"
-        "*://*.seekingalpha.com/*"
-        "*://*.sfchronicle.com/*"
-        "*://*.sfvbj.com/*"
-        "*://*.shz.de/*"
-        "*://*.si.com/*"
-        "*://*.silive.com/*"
-        "*://*.skimag.com/*"
-        "*://*.slate.com/*"
-        "*://*.slideshare.net/*"
-        "*://*.sloanreview.mit.edu/*"
-        "*://*.sltrib.com/*"
-        "*://*.smh.com.au/*"
-        "*://*.sn.at/*"
-        "*://*.sofrep.com/*"
-        "*://*.sourcingjournal.com/*"
-        "*://*.spectator.co.uk/*"
-        "*://*.spectator.com.au/*"
-        "*://*.spglobal.com/*"
-        "*://*.spiegel.de/*"
-        "*://*.sportico.com/*"
-        "*://*.springermedizin.de/*"
-        "*://*.standaard.be/*"
-        "*://*.standard.co.uk/*"
-        "*://*.standard.net.au/*"
-        "*://*.star-telegram.com/*"
-        "*://*.staradvertiser.com/*"
-        "*://*.startribune.com/*"
-        "*://*.statesman.com/*"
-        "*://*.statista.com/*"
-        "*://*.stcatharinesstandard.ca/*"
-        "*://*.stereogum.com/*"
-        "*://*.stltoday.com/*"
-        "*://*.stocknews.com/*"
-        "*://*.straitstimes.com/*"
-        "*://*.stratfor.com/*"
-        "*://*.studocu.com/*"
-        "*://*.study.com/*"
-        "*://*.stuttgarter-nachrichten.de/*"
-        "*://*.stuttgarter-zeitung.de/*"
-        "*://*.stylist.co.uk/*"
-        "*://*.sudouest.fr/*"
-        "*://*.sueddeutsche.de/*"
-        "*://*.suedkurier.de/*"
-        "*://*.sun-sentinel.com/*"
-        "*://*.suomensotilas.fi/*"
-        "*://*.sustainableplastics.com/*"
-        "*://*.svz.de/*"
-        "*://*.swarajyamag.com/*"
-        "*://*.syracuse.com/*"
-        "*://*.tagblatt.ch/*"
-        "*://*.tagesspiegel.de/*"
-        "*://*.tampabay.com/*"
-        "*://*.techinasia.com/*"
-        "*://*.technologyreview.com/*"
-        "*://*.techtarget.com/*"
-        "*://*.telegraaf.nl/*"
-        "*://*.telegraph.co.uk/*"
-        "*://*.telerama.fr/*"
-        "*://*.tennessean.com/*"
-        "*://*.tes.com/*"
-        "*://*.texasmonthly.com/*"
-        "*://*.the-american-interest.com/*"
-        "*://*.the-scientist.com/*"
-        "*://*.the-tls.co.uk/*"
-        "*://*.theadvocate.com.au/*"
-        "*://*.theadvocate.com/*"
-        "*://*.theage.com.au/*"
-        "*://*.theamericanconservative.com/*"
-        "*://*.theartnewspaper.com/*"
-        "*://*.theathletic.com/*"
-        "*://*.theatlantic.com/*"
-        "*://*.theaustralian.com.au/*"
-        "*://*.thebaffler.com/*"
-        "*://*.thebanker.com/*"
-        "*://*.thebookseller.com/*"
-        "*://*.thebulletin.org/*"
-        "*://*.thechronicle.com.au/*"
-        "*://*.thecourier.com.au/*"
-        "*://*.thecritic.co.uk/*"
-        "*://*.thecut.com/*"
-        "*://*.thedailybeast.com/*"
-        "*://*.thediplomat.com/*"
-        "*://*.theepochtimes.com/*"
-        "*://*.theglobeandmail.com/*"
-        "*://*.thehill.com/*"
-        "*://*.thehindu.com/*"
-        "*://*.thehindubusinessline.com/*"
-        "*://*.theimpression.com/*"
-        "*://*.theintercept.com/*"
-        "*://*.thejuggernaut.com/*"
-        "*://*.thelampmagazine.com/*"
-        "*://*.thelawyersdaily.ca/*"
-        "*://*.themarker.com/*"
-        "*://*.themarket.ch/*"
-        "*://*.themercury.com.au/*"
-        "*://*.thenation.com/*"
-        "*://*.thenewatlantis.com/*"
-        "*://*.theneweuropean.co.uk/*"
-        "*://*.thenewsminute.com/*"
-        "*://*.thepeterboroughexaminer.com/*"
-        "*://*.thepointmag.com/*"
-        "*://*.theprovince.com/*"
-        "*://*.thequint.com/*"
-        "*://*.therecord.com/*"
-        "*://*.thesaturdaypaper.com.au/*"
-        "*://*.thespec.com/*"
-        "*://*.thespectator.com/*"
-        "*://*.thestage.co.uk/*"
-        "*://*.thestar.com/*"
-        "*://*.thestate.com/*"
-        "*://*.thetimes.co.uk/*"
-        "*://*.theverge.com/*"
-        "*://*.theweek.com/*"
-        "*://*.thewest.com.au/*"
-        "*://*.thewrap.com/*"
-        "*://*.thueringer-allgemeine.de/*"
-        "*://*.tijd.be/*"
-        "*://*.timeshighereducation.com/*"
-        "*://*.timesofindia.com/*"
-        "*://*.timesunion.com/*"
-        "*://*.tirebusiness.com/*"
-        "*://*.tlz.de/*"
-        "*://*.topagrar.com/*"
-        "*://*.torontosun.com/*"
-        "*://*.towardsdatascience.com/*"
-        "*://*.townandcountrymag.com/*"
-        "*://*.townsvillebulletin.com.au/*"
-        "*://*.tradewindsnews.com/*"
-        "*://*.trailrunnermag.com/*"
-        "*://*.tri-cityherald.com/*"
-        "*://*.triathlete.com/*"
-        "*://*.trouw.nl/*"
-        "*://*.tt.com/*"
-        "*://*.tubantia.nl/*"
-        "*://*.tucson.com/*"
-        "*://*.tulsaworld.com/*"
-        "*://*.tuttosport.com/*"
-        "*://*.twincities.com/*"
-        "*://*.unherd.com/*"
-        "*://*.uol.com.br/*"
-        "*://*.upstreamonline.com/*"
-        "*://*.usatoday.com/*"
-        "*://*.usinenouvelle.com/*"
-        "*://*.utech-polyurethane.com/*"
-        "*://*.valeursactuelles.com/*"
-        "*://*.vancouversun.com/*"
-        "*://*.vanityfair.com/*"
-        "*://*.variety.com/*"
-        "*://*.varmatin.com/*"
-        "*://*.vegetariantimes.com/*"
-        "*://*.vikatan.com/*"
-        "*://*.vn.at/*"
-        "*://*.vn.nl/*"
-        "*://*.vogue.co.uk/*"
-        "*://*.vogue.com/*"
-        "*://*.voguebusiness.com/*"
-        "*://*.vol.at/*"
-        "*://*.volkskrant.nl/*"
-        "*://*.volksstimme.de/*"
-        "*://*.vulture.com/*"
-        "*://*.washingtonexaminer.com/*"
-        "*://*.washingtonpost.com/*"
-        "*://*.watoday.com.au/*"
-        "*://*.waz.de/*"
-        "*://*.weeklytimesnow.com.au/*"
-        "*://*.wellandtribune.ca/*"
-        "*://*.welt.de/*"
-        "*://*.weltkunst.de/*"
-        "*://*.weser-kurier.de/*"
-        "*://*.westernadvocate.com.au/*"
-        "*://*.wiesbadener-kurier.de/*"
-        "*://*.winnipegfreepress.com/*"
-        "*://*.wired.com/*"
-        "*://*.wiwo.de/*"
-        "*://*.wochenblatt.com/*"
-        "*://*.womenshealth.de/*"
-        "*://*.womenshealthmag.com/*"
-        "*://*.womensrunning.com/*"
-        "*://*.wonderzine.com/*"
-        "*://*.wp.de/*"
-        "*://*.wr.de/*"
-        "*://*.wsj.com/*"
-        "*://*.wwd.com/*"
-        "*://*.ynet.co.il/*"
-        "*://*.yogajournal.com/*"
-        "*://*.yorkshirepost.co.uk/*"
-        "*://*.zeit.de/*"
-        "*://*.zerohedge.com/*"
-        "*://*.amplitude.com/*"
-        "*://*.ampproject.org/*"
-        "*://*.axate.io/*"
-        "*://*.blueconic.net/*"
-        "*://*.cxense.com/*"
-        "*://*.ensighten.com/*"
-        "*://*.evolok.net/*"
-        "*://*.fewcents.co/*"
-        "*://*.ippen.space/*"
-        "*://*.loader-cdn.azureedge.net/*"
-        "*://*.matheranalytics.com/*"
-        "*://*.newsmemory.com/*"
-        "*://*.omeda.com/*"
-        "*://*.onecount.net/*"
-        "*://*.pelcro.com/*"
-        "*://*.piano.io/*"
-        "*://*.pico.tools/*"
-        "*://*.poool.fr/*"
-        "*://*.qiota.com/*"
-        "*://*.sophi.io/*"
-        "*://*.steadyhq.com/*"
-        "*://*.tinypass.com/*"
-        "*://*.weborama.fr/*"
-        "*://*.zephr.com/*"
-        "*://*.blink.net/*"
-        "*://*.bwbx.io/*"
-        "*://*.californiatimes.com/*"
-        "*://*.cedscdn.it/*"
-        "*://*.cedsdigital.it/*"
-        "*://*.cloudfront.net/*"
-        "*://*.corriereobjects.it/*"
-        "*://*.emol.cl/*"
-        "*://*.epochbase.com/*"
-        "*://*.epochbase.eu/*"
-        "*://*.flip-pay.com/*"
-        "*://*.gitlab.com/magnolia1234/*"
-        "*://*.go.com/*"
-        "*://*.hadrianpaywall.com/*"
-        "*://*.kinja-static.com/*"
-        "*://*.masthead.me/*"
-        "*://*.medscapestatic.com/*"
-        "*://*.ndcmediagroep.nl/*"
-        "*://*.nhst.tech/*"
-        "*://*.nyt.com/*"
-        "*://*.pasedigital.cl/*"
-        "*://*.wbmdstatic.com/*"
-        "*://*.wgchrrammzv.com/*"
-        "*://*.wyleex.com/*"
-        "*://archive.fo/*"
-        "*://archive.is/*"
-        "*://archive.li/*"
-        "*://archive.md/*"
-        "*://archive.ph/*"
-        "*://archive.vn/*"
-        "*://webcache.googleusercontent.com/*"
-        "*://*.gitlab.com/magnolia1234"
-      ];
-      platforms = platforms.all;
-    };
-  };
-  "consent-o-matic" = buildFirefoxXpiAddon {
-    pname = "consent-o-matic";
-    version = "1.0.13";
-    addonId = "gdpr@cavi.au.dk";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4246350/consent_o_matic-1.0.13.xpi";
-    sha256 = "ee577eaedebd9fef65f77218b86c59972818442c9af551d551a7015a4a246e9a";
-    meta = with lib; {
-      homepage = "https://consentomatic.au.dk/";
-      description = "Automatic handling of GDPR consent forms";
-      license = licenses.mit;
-      mozPermissions = [
-        "activeTab"
-        "tabs"
-        "storage"
-        "<all_urls>"
-      ];
-      platforms = platforms.all;
-    };
-  };
-  "darkreader" = buildFirefoxXpiAddon {
-    pname = "darkreader";
-    version = "4.9.80";
-    addonId = "addon@darkreader.org";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4249607/darkreader-4.9.80.xpi";
-    sha256 = "a93f1250b72cc27fe4a9b02be062c68fb079e45a1233d562852b48e1e9b99307";
-    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"
-        "<all_urls>"
-      ];
-      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://*/*"
-        "<all_urls>"
-        "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.6.0";
-    addonId = "languagetool-webextension@languagetool.org";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4249956/languagetool-8.6.0.xpi";
-    sha256 = "d9db9aac9fdd53eb39179c153161762cd9e9eb1f6d7da8e8b8a32238b4847094";
-    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;
-    };
-  };
-  "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"
-        "<all_urls>"
-      ];
-      platforms = platforms.all;
-    };
-  };
-  "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 = "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;
-    };
-  };
-  "rikaichamp" = buildFirefoxXpiAddon {
-    pname = "rikaichamp";
-    version = "1.18.0";
-    addonId = "{59812185-ea92-4cca-8ab7-cfcacee81281}";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4241410/10ten_ja_reader-1.18.0.xpi";
-    sha256 = "5433bcfec5a327bf1fa198b3f0645a9cdcdc44232465ad940fa8a5858b6996f8";
-    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;
-    };
-  };
-  "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.56.0";
-    addonId = "uBlock0@raymondhill.net";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4237670/ublock_origin-1.56.0.xpi";
-    sha256 = "f5fbeeac511ca4e10a74723413727fda8e6f9236c726d16eb54ade1fbe7be5be";
-    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"
-        "<all_urls>"
-        "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"
-        "<all_urls>"
-        "webNavigation"
-        "webRequest"
-        "webRequestBlocking"
-        "contextMenus"
-        "*://*/*"
-      ];
-      platforms = platforms.all;
-    };
-  };
-  "violentmonkey" = buildFirefoxXpiAddon {
-    pname = "violentmonkey";
-    version = "2.18.0";
-    addonId = "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4220396/violentmonkey-2.18.0.xpi";
-    sha256 = "4abbeea842b82965379c6011dec6a435dfff0f69c20749118a8ba2f7d14cb0f1";
-    meta = with lib; {
-      homepage = "https://violentmonkey.github.io/";
-      description = "Userscript support for browsers, open source.";
-      license = licenses.mit;
-      mozPermissions = [
-        "tabs"
-        "<all_urls>"
-        "webRequest"
-        "webRequestBlocking"
-        "notifications"
-        "storage"
-        "unlimitedStorage"
-        "clipboardWrite"
-        "contextMenus"
-        "cookies"
-      ];
-      platforms = platforms.all;
-    };
-  };
-}
diff --git a/modules/nixos/git/default.nix b/modules/nixos/git/default.nix
deleted file mode 100644
index 34ca200..0000000
--- a/modules/nixos/git/default.nix
+++ /dev/null
@@ -1,136 +0,0 @@
-{
-  config,
-  lib,
-  libNginx,
-  libPlausible,
-  pkgs,
-  ...
-}:
-with lib;
-let
-  cfg = config.nixfiles.modules.git;
-in
-{
-  options.nixfiles.modules.git.server = {
-    enable = mkEnableOption "Git server";
-
-    domain = mkOption {
-      description = "Domain name sans protocol scheme.";
-      type = with types; nullOr str;
-      default = "git.${config.networking.domain}";
-    };
-
-    package = mkOption {
-      description = "Package.";
-      type = types.package;
-      default = pkgs.cgit;
-    };
-  };
-
-  config = mkIf cfg.server.enable {
-    ark.directories = [ config.services.gitolite.dataDir ];
-
-    nixfiles.modules.nginx = {
-      enable = true;
-      virtualHosts.${cfg.server.domain} = {
-        locations = {
-          "/".extraConfig =
-            let
-              cgitrc = pkgs.writeText "cgitrc" ''
-                root-title=github sux (⩺_⩹)
-                root-desc=https://github.com/azahi
-
-                clone-url=https://${cfg.server.domain}/$CGIT_REPO_URL
-
-                logo=/cgit-custom-logo.gif
-                favicon=/cgit-custom-favicon.gif
-                css=/cgit-custom-style.css
-
-                about-filter=${cfg.server.package}/lib/cgit/filters/about-formatting.sh
-                source-filter=${cfg.server.package}/lib/cgit/filters/syntax-highlighting.py
-                commit-filter=${cfg.server.package}/lib/cgit/filters/commit-links.sh
-
-                enable-git-config=1
-                enable-gitweb-owner=1
-                remove-suffix=1
-
-                readme=:README
-                readme=:README.md
-                readme=:README.org
-                readme=:README.txt
-                readme=:readme
-                readme=:readme.md
-                readme=:readme.org
-                readme=:readme.txt
-
-                scan-path=${config.services.gitolite.dataDir}/repositories
-              '';
-            in
-            ''
-              include ${config.services.nginx.package}/conf/fastcgi_params;
-              fastcgi_split_path_info ^(/?)(.+)$;
-              fastcgi_pass unix:${config.services.fcgiwrap.socketAddress};
-              fastcgi_param SCRIPT_FILENAME ${cfg.server.package}/cgit/cgit.cgi;
-              fastcgi_param CGIT_CONFIG ${cgitrc};
-              fastcgi_param PATH_INFO $uri;
-              fastcgi_param QUERY_STRING $args;
-              fastcgi_param HTTP_HOST $server_name;
-
-              ${libNginx.config.appendHead [
-                ''<meta name="go-import" content="$host$uri git https://$host$uri">''
-                (libPlausible.htmlPlausibleScript { inherit (cfg.server) domain; })
-              ]}
-            '';
-          "~* ^.+(cgit.css|robots.txt)$".extraConfig = ''
-            root ${cfg.server.package}/cgit;
-          '';
-          "~* ^.+cgit-custom-logo.gif$".extraConfig = ''
-            alias ${./logo.gif};
-          '';
-          "~* ^.+cgit-custom-favicon.gif$".extraConfig = ''
-            alias ${./favicon.ico};
-          '';
-          "~* ^.+cgit-custom-style.css$".extraConfig =
-            let
-              css = pkgs.writeText "custom.css" ''
-                @import url("cgit.css");
-
-                div#cgit {
-                  font-family: monospace;
-                  -moz-tab-size: 4;
-                  tab-size: 4;
-                }
-              '';
-            in
-            ''
-              alias ${css};
-            '';
-        };
-      };
-    };
-
-    services =
-      let
-        user = "git";
-        group = "git";
-      in
-      {
-        gitolite = {
-          enable = true;
-          inherit user group;
-          adminPubkey = my.ssh.key;
-          extraGitoliteRc = ''
-            # This allows hiding repositories via "cgit.ignore"[1].
-            #
-            # [1]: https://www.omarpolo.com/post/cgit-gitolite.html
-            $RC{GIT_CONFIG_KEYS} = '.*';
-          '';
-        };
-
-        fcgiwrap = {
-          enable = true;
-          inherit user group;
-        };
-      };
-  };
-}
diff --git a/modules/nixos/gnupg.nix b/modules/nixos/gnupg.nix
deleted file mode 100644
index ad2c939..0000000
--- a/modules/nixos/gnupg.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-with lib;
-let
-  cfg = config.nixfiles.modules.gnupg;
-in
-{
-  options.nixfiles.modules.gnupg.pinentry = mkOption {
-    description = "Name of a pinentry implementation.";
-    type = types.package;
-    default = pkgs.pinentry-curses;
-  };
-
-  config = mkIf cfg.enable {
-    hm = {
-      programs.gpg.homedir = "${config.dirs.data}/gnupg";
-
-      services.gpg-agent = {
-        enable = true;
-
-        enableSshSupport = true;
-        enableScDaemon = false;
-
-        defaultCacheTtl = 999999;
-        defaultCacheTtlSsh = 999999;
-        maxCacheTtl = 999999;
-        maxCacheTtlSsh = 999999;
-
-        grabKeyboardAndMouse = true;
-
-        sshKeys = [ my.pgp.grip ];
-
-        pinentryPackage = cfg.pinentry;
-      };
-    };
-  };
-}
diff --git a/modules/nixos/matrix/default.nix b/modules/nixos/matrix/default.nix
deleted file mode 100644
index e7d5a02..0000000
--- a/modules/nixos/matrix/default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-_: {
-  imports = [
-    ./dendrite.nix
-    ./element.nix
-  ];
-}
diff --git a/modules/nixos/mpv.nix b/modules/nixos/mpv.nix
deleted file mode 100644
index 8042c1a..0000000
--- a/modules/nixos/mpv.nix
+++ /dev/null
@@ -1,92 +0,0 @@
-{ config, lib, ... }:
-with lib;
-let
-  cfg = config.nixfiles.modules.mpv;
-in
-{
-  config = mkIf cfg.enable {
-    nixfiles.modules.common = {
-      shell.aliases.cam = "mpv av://v4l2:/dev/video0";
-
-      xdg.defaultApplications.mpv =
-        let
-          audio = [
-            "audio/aac"
-            "audio/ac3"
-            "audio/basic"
-            "audio/flac"
-            "audio/midi"
-            "audio/mp4"
-            "audio/mpeg"
-            "audio/ogg"
-            "audio/opus"
-            "audio/vnd.dts"
-            "audio/vnd.dts.hd"
-            "audio/webm"
-            "audio/x-adpcm"
-            "audio/x-aifc"
-            "audio/x-aiff"
-            "audio/x-ape"
-            "audio/x-flac+ogg"
-            "audio/x-m4b"
-            "audio/x-m4r"
-            "audio/x-matroska"
-            "audio/x-mpegurl"
-            "audio/x-musepack"
-            "audio/x-opus+ogg"
-            "audio/x-speex"
-            "audio/x-speex+ogg"
-            "audio/x-vorbis+ogg"
-            "audio/x-wav"
-            "audio/x-wavpack"
-            "x-content/audio-cdda"
-            "x-content/audio-dvd"
-          ];
-          video = [
-            "video/3gpp"
-            "video/3gpp2"
-            "video/mkv"
-            "video/mp2t"
-            "video/mp4"
-            "video/mpeg"
-            "video/ogg"
-            "video/quicktime"
-            "video/vnd.mpegurl"
-            "video/vnd.radgamettools.bink"
-            "video/vnd.radgamettools.smacker"
-            "video/wavelet"
-            "video/webm"
-            "video/x-matroska"
-            "video/x-matroska-3d"
-            "video/x-mjpeg"
-            "video/x-msvideo"
-            "video/x-ogm+ogg"
-            "video/x-theora+ogg"
-            "x-content/video-bluray"
-            "x-content/video-dvd"
-            "x-content/video-hddvd"
-            "x-content/video-svcd"
-            "x-content/video-vcd"
-          ];
-          image = [
-            "image/avif"
-            "image/bmp"
-            "image/gif"
-            "image/jp2"
-            "image/jpeg"
-            "image/jpg"
-            "image/jpm"
-            "image/jpx"
-            "image/jxl"
-            "image/png"
-            "image/tiff"
-            "image/vnd.microsoft.icon"
-            "image/webp"
-            "image/webp"
-            "image/x-tga"
-          ];
-        in
-        audio ++ video ++ image;
-    };
-  };
-}
diff --git a/modules/nixos/openssh.nix b/modules/nixos/openssh.nix
deleted file mode 100644
index 9b82757..0000000
--- a/modules/nixos/openssh.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ config, lib, ... }:
-with lib;
-let
-  cfg = config.nixfiles.modules.openssh;
-in
-{
-  options.nixfiles.modules.openssh.server = {
-    enable = mkEnableOption "OpenSSH server";
-
-    port = mkOption {
-      description = "OpenSSH server port.";
-      type = types.port;
-      default = 22022; # Port 22 should be occupied by a tarpit.
-    };
-  };
-
-  config = mkIf cfg.server.enable {
-    ark.files = [
-      "/etc/ssh/ssh_host_ed25519_key"
-      "/etc/ssh/ssh_host_ed25519_key.pub"
-      "/etc/ssh/ssh_host_rsa_key"
-      "/etc/ssh/ssh_host_rsa_key.pub"
-    ];
-
-    programs.mosh.enable = true;
-
-    services = {
-      openssh = {
-        enable = true;
-        ports = [ cfg.server.port ];
-        settings = {
-          ClientAliveCountMax = 3;
-          ClientAliveInterval = 60;
-          KbdInteractiveAuthentication = false;
-          LogLevel = if config.nixfiles.modules.fail2ban.enable then "VERBOSE" else "ERROR";
-          MaxAuthTries = 3;
-          PasswordAuthentication = false;
-          PermitRootLogin = mkForce "no";
-        };
-      };
-
-      fail2ban.jails.sshd = {
-        enabled = true;
-        settings = {
-          mode = "aggressive";
-          inherit (cfg.server) port;
-        };
-      };
-    };
-  };
-}
diff --git a/modules/nixos/profiles/default.nix b/modules/nixos/profiles/default.nix
deleted file mode 100644
index 93c46e3..0000000
--- a/modules/nixos/profiles/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-with lib;
-let
-  cfg = config.nixfiles.modules.profiles.default;
-in
-{
-  imports = [
-    ./dev
-    ./headful.nix
-    ./headless.nix
-  ];
-
-  config = mkIf cfg.enable {
-    ark.directories = [ "/var/log" ];
-
-    programs.less = {
-      enable = true;
-      envVariables.LESSHISTFILE = "-";
-    };
-
-    environment.systemPackages = with pkgs; [
-      cryptsetup
-      lshw
-      lsof
-      pciutils
-      psmisc
-      sysstat
-      usbutils
-      util-linux
-    ];
-  };
-}
diff --git a/modules/nixos/profiles/dev/containers.nix b/modules/nixos/profiles/dev/containers.nix
deleted file mode 100644
index d2a7d62..0000000
--- a/modules/nixos/profiles/dev/containers.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-with lib;
-let
-  cfg = config.nixfiles.modules.profiles.dev.containers;
-in
-{
-  config = mkIf cfg.enable {
-    nixfiles.modules = {
-      common.shell.aliases.b = "buildah";
-      podman.enable = true;
-    };
-
-    hm = {
-      home = {
-        sessionVariables.MINIKUBE_HOME = "${config.dirs.config}/minikube";
-
-        packages = with pkgs; [ buildah ];
-      };
-
-      xdg.dataFile."minikube/config/config.json".text = generators.toJSON { } {
-        config.Rootless = true;
-        driver = "podman";
-        container-runtime = "cri-o";
-      };
-    };
-  };
-}
diff --git a/modules/nixos/profiles/dev/default.nix b/modules/nixos/profiles/dev/default.nix
deleted file mode 100644
index d2411ea..0000000
--- a/modules/nixos/profiles/dev/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-with lib;
-let
-  cfg = config.nixfiles.modules.profiles.dev;
-in
-{
-  imports = [ ./containers.nix ];
-
-  config = mkIf cfg.enable {
-    hm.home.language = {
-      collate = "C";
-      messages = "C";
-    };
-
-    programs.wireshark = {
-      enable = true;
-      package = pkgs.wireshark;
-    };
-
-    my.extraGroups = [
-      "kvm"
-      "wireshark"
-    ];
-  };
-}
diff --git a/modules/nixos/zathura.nix b/modules/nixos/zathura.nix
deleted file mode 100644
index 95039a5..0000000
--- a/modules/nixos/zathura.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ config, lib, ... }:
-with lib;
-let
-  cfg = config.nixfiles.modules.zathura;
-in
-{
-  config = mkIf cfg.enable {
-    nixfiles.modules.common.xdg.defaultApplications."org.pwmt.zathura" = [
-      "application/pdf"
-      "application/epub+zip"
-    ];
-  };
-}
diff --git a/modules/nixos/node-exporter.nix b/modules/node-exporter.nix
index 8e76903..8e76903 100644
--- a/modules/nixos/node-exporter.nix
+++ b/modules/node-exporter.nix
diff --git a/modules/nixos/nsd.nix b/modules/nsd.nix
index f44a2a0..f44a2a0 100644
--- a/modules/nixos/nsd.nix
+++ b/modules/nsd.nix
diff --git a/modules/nixos/ntfy.nix b/modules/ntfy.nix
index 5739855..5739855 100644
--- a/modules/nixos/ntfy.nix
+++ b/modules/ntfy.nix
diff --git a/modules/nixos/nullmailer.nix b/modules/nullmailer.nix
index 9f7b4ac..9f7b4ac 100644
--- a/modules/nixos/nullmailer.nix
+++ b/modules/nullmailer.nix
diff --git a/modules/nixos/plausible.nix b/modules/plausible.nix
index d63e3ab..d63e3ab 100644
--- a/modules/nixos/plausible.nix
+++ b/modules/plausible.nix
diff --git a/modules/nixos/podman.nix b/modules/podman.nix
index bb4fda5..bb4fda5 100644
--- a/modules/nixos/podman.nix
+++ b/modules/podman.nix
diff --git a/modules/nixos/postgresql.nix b/modules/postgresql.nix
index 5081340..5081340 100644
--- a/modules/nixos/postgresql.nix
+++ b/modules/postgresql.nix
diff --git a/modules/nixos/profiles/headful.nix b/modules/profiles/headful.nix
index 8206aa8..20363bc 100644
--- a/modules/nixos/profiles/headful.nix
+++ b/modules/profiles/headful.nix
@@ -2,6 +2,7 @@
   config,
   lib,
   pkgs,
+  this,
   ...
 }:
 with lib;
@@ -9,33 +10,57 @@ let
   cfg = config.nixfiles.modules.profiles.headful;
 in
 {
+  options.nixfiles.modules.profiles.headful.enable = mkEnableOption "headful profile" // {
+    default = this.isHeadful;
+  };
+
   config = mkIf cfg.enable {
     nixfiles.modules = {
+      profiles.dev.enable = true;
+
+      alacritty.enable = mkDefault true;
+      aria2.enable = true;
       chromium.enable = true;
+      dwm.enable = mkDefault false;
+      emacs.enable = true;
       firefox.enable = true;
+      foot.enable = mkDefault true;
+      kde.enable = mkDefault true;
+      mpv.enable = true;
+      nullmailer.enable = true;
+      openssh.client.enable = true;
+      password-store.enable = true;
       sound.enable = true;
       thunderbird.enable = true;
-
-      nullmailer.enable = true;
-
-      dwm.enable = mkDefault false;
-      kde.enable = mkDefault true;
-      xmonad.enable = mkDefault false;
-
+      vscode.enable = true;
       wayland.enable = mkDefault true;
       x11.enable = mkDefault true;
+      xmonad.enable = mkDefault false;
+      zathura.enable = true;
     };
 
     hm = {
-      home.packages = with pkgs; [
-        calibre
-        element-desktop
-        imv
-        libreoffice-fresh
-        mumble
-        telegram-desktop
-        tor-browser-bundle-bin
-      ];
+      home = {
+        file.".digrc".text = ''
+          +answer
+          +multiline
+          +recurse
+        '';
+
+        packages = with pkgs; [
+          calibre
+          element-desktop
+          fd
+          imv
+          libreoffice-fresh
+          mumble
+          ripgrep
+          sd
+          telegram-desktop
+          tldr
+          tor-browser-bundle-bin
+        ];
+      };
 
       programs.bash.shellAliases.open = "xdg-open";
     };
@@ -79,7 +104,15 @@ in
       psd.enable = true;
     };
 
-    environment.systemPackages = with pkgs; [ lm_sensors ];
+    environment.systemPackages = with pkgs; [
+      arping
+      dnsutils
+      inetutils
+      ldns
+      lm_sensors
+      socat
+      tcpdump
+    ];
 
     my.extraGroups = [
       "audio"
diff --git a/modules/nixos/profiles/headless.nix b/modules/profiles/headless.nix
index f3f3572..7733f3e 100644
--- a/modules/nixos/profiles/headless.nix
+++ b/modules/profiles/headless.nix
@@ -2,6 +2,7 @@
   config,
   lib,
   pkgs,
+  this,
   ...
 }:
 with lib;
@@ -9,6 +10,10 @@ let
   cfg = config.nixfiles.modules.profiles.headless;
 in
 {
+  options.nixfiles.modules.profiles.headless.enable = mkEnableOption "headless profile" // {
+    default = this.isHeadless;
+  };
+
   config = mkIf cfg.enable {
     nixfiles.modules = {
       openssh.server.enable = true;
@@ -20,6 +25,11 @@ in
       promtail.enable = false; # FIXME High RAM usage.
     };
 
+    hm.home.file = {
+      ".hushlogin".text = "";
+      ".bash_history".source = config.hm.lib.file.mkOutOfStoreSymlink "/dev/null";
+    };
+
     # Pin version to prevent any surprises. Try keeping this up-to-date[1] with
     # the latest LTS release + hardened patches (just in case).
     #
@@ -39,6 +49,11 @@ in
       };
     };
 
+    environment.systemPackages = with pkgs; [
+      alacritty.terminfo
+      foot.terminfo
+    ];
+
     services.udisks2.enable = false;
 
     xdg.sounds.enable = false;
diff --git a/modules/nixos/prometheus.nix b/modules/prometheus.nix
index 9f28cd5..9f28cd5 100644
--- a/modules/nixos/prometheus.nix
+++ b/modules/prometheus.nix
diff --git a/modules/nixos/promtail.nix b/modules/promtail.nix
index 65d88d4..65d88d4 100644
--- a/modules/nixos/promtail.nix
+++ b/modules/promtail.nix
diff --git a/modules/nixos/psd.nix b/modules/psd.nix
index f974af2..f974af2 100644
--- a/modules/nixos/psd.nix
+++ b/modules/psd.nix
diff --git a/modules/nixos/radarr.nix b/modules/radarr.nix
index 9e4e13f..9e4e13f 100644
--- a/modules/nixos/radarr.nix
+++ b/modules/radarr.nix
diff --git a/modules/nixos/radicale.nix b/modules/radicale.nix
index 59fb4a2..59fb4a2 100644
--- a/modules/nixos/radicale.nix
+++ b/modules/radicale.nix
diff --git a/modules/nixos/redis.nix b/modules/redis.nix
index e2151c7..e2151c7 100644
--- a/modules/nixos/redis.nix
+++ b/modules/redis.nix
diff --git a/modules/nixos/rss-bridge.nix b/modules/rss-bridge.nix
index de1d6b6..c890872 100644
--- a/modules/nixos/rss-bridge.nix
+++ b/modules/rss-bridge.nix
@@ -20,7 +20,7 @@ in
   };
 
   config = mkIf cfg.enable {
-    ark.directories = [ "/var/lib/rss-bridge" ];
+    ark.directories = [ config.services.rss-bridge.dataDir ];
 
     nixfiles.modules.nginx = {
       enable = true;
@@ -30,7 +30,13 @@ in
     services.rss-bridge = {
       enable = true;
       virtualHost = cfg.domain;
-      whitelist = [ "*" ];
+      config = {
+        system.enabled_bridges = [ "*" ];
+        FileCache = {
+          path = "${config.services.rss-bridge.dataDir}/cache";
+          enable_purge = true;
+        };
+      };
     };
   };
 }
diff --git a/modules/nixos/rtorrent.nix b/modules/rtorrent.nix
index 82ef1b2..82ef1b2 100644
--- a/modules/nixos/rtorrent.nix
+++ b/modules/rtorrent.nix
diff --git a/modules/nixos/searx.nix b/modules/searx.nix
index de51a20..de51a20 100644
--- a/modules/nixos/searx.nix
+++ b/modules/searx.nix
diff --git a/modules/nixos/shadowsocks.nix b/modules/shadowsocks.nix
index 670faec..670faec 100644
--- a/modules/nixos/shadowsocks.nix
+++ b/modules/shadowsocks.nix
diff --git a/modules/nixos/soju.nix b/modules/soju.nix
index f8212b5..f8212b5 100644
--- a/modules/nixos/soju.nix
+++ b/modules/soju.nix
diff --git a/modules/nixos/solaar.nix b/modules/solaar.nix
index 17a04de..17a04de 100644
--- a/modules/nixos/solaar.nix
+++ b/modules/solaar.nix
diff --git a/modules/nixos/sonarr.nix b/modules/sonarr.nix
index b11dda0..b11dda0 100644
--- a/modules/nixos/sonarr.nix
+++ b/modules/sonarr.nix
diff --git a/modules/nixos/sound.nix b/modules/sound.nix
index ff90dfc..ff90dfc 100644
--- a/modules/nixos/sound.nix
+++ b/modules/sound.nix
diff --git a/modules/nixos/syncthing.nix b/modules/syncthing.nix
index 74d4afe..74d4afe 100644
--- a/modules/nixos/syncthing.nix
+++ b/modules/syncthing.nix
diff --git a/modules/nixos/throttled.nix b/modules/throttled.nix
index 7d37cd4..7d37cd4 100644
--- a/modules/nixos/throttled.nix
+++ b/modules/throttled.nix
diff --git a/modules/nixos/thunderbird.nix b/modules/thunderbird.nix
index 74af3b5..74af3b5 100644
--- a/modules/nixos/thunderbird.nix
+++ b/modules/thunderbird.nix
diff --git a/modules/nixos/unbound.nix b/modules/unbound.nix
index e71d48c..e71d48c 100644
--- a/modules/nixos/unbound.nix
+++ b/modules/unbound.nix
diff --git a/modules/nixos/vaultwarden.nix b/modules/vaultwarden.nix
index 2cacb6c..2cacb6c 100644
--- a/modules/nixos/vaultwarden.nix
+++ b/modules/vaultwarden.nix
diff --git a/modules/nixos/victoriametrics.nix b/modules/victoriametrics.nix
index 88dff1b..ac4ac58 100644
--- a/modules/nixos/victoriametrics.nix
+++ b/modules/victoriametrics.nix
@@ -6,10 +6,10 @@
 }:
 with lib;
 let
-  cfg = config.nixfiles.modules.prometheus;
+  cfg = config.nixfiles.modules.victoriametrics;
 in
 {
-  options.nixfiles.modules.prometheus = {
+  options.nixfiles.modules.victoriametrics = {
     enable = mkEnableOption "VictoriaMetrics";
 
     port = mkOption {
diff --git a/modules/nixos/vim/default.nix b/modules/vim/default.nix
index 5d62e35..94cc7af 100644
--- a/modules/nixos/vim/default.nix
+++ b/modules/vim/default.nix
@@ -9,7 +9,33 @@ let
   cfg = config.nixfiles.modules.vim;
 in
 {
+  options.nixfiles.modules.vim = {
+    enable = mkEnableOption "Vim";
+
+    rc = mkOption {
+      type = types.str;
+      default = readFile ./rc.vim;
+      description = "Configuration file.";
+    };
+
+    plugins = mkOption {
+      type = with types; listOf package;
+      default = with pkgs.vimPlugins; [
+        editorconfig-vim
+        vim-eunuch
+        vim-nix
+        vim-sensible
+        vim-sleuth
+        vim-surround
+        vim-unimpaired
+      ];
+      description = "Plugins.";
+    };
+  };
+
   config = mkIf cfg.enable {
+    hm.stylix.targets.vim.enable = false;
+
     programs.vim.package =
       (pkgs.vim-full.override {
         cscopeSupport = false;
@@ -33,5 +59,13 @@ in
             packages.myVimPackage.start = plugins;
           };
         };
+
+    environment = {
+      systemPackages = [ config.programs.vim.package ];
+      variables = rec {
+        EDITOR = "vim";
+        VISUAL = EDITOR;
+      };
+    };
   };
 }
diff --git a/modules/nixos/wayland.nix b/modules/wayland.nix
index e3dba79..e3dba79 100644
--- a/modules/nixos/wayland.nix
+++ b/modules/wayland.nix
diff --git a/modules/nixos/wireguard.nix b/modules/wireguard.nix
index f645a90..f645a90 100644
--- a/modules/nixos/wireguard.nix
+++ b/modules/wireguard.nix
diff --git a/modules/nixos/x11.nix b/modules/x11.nix
index 55ba0b5..55ba0b5 100644
--- a/modules/nixos/x11.nix
+++ b/modules/x11.nix
diff --git a/modules/nixos/xmonad.nix b/modules/xmonad.nix
index 7b49f52..7b49f52 100644
--- a/modules/nixos/xmonad.nix
+++ b/modules/xmonad.nix

Consider giving Nix/NixOS a try! <3