summaryrefslogtreecommitdiff
path: root/aphrodite
diff options
context:
space:
mode:
Diffstat (limited to 'aphrodite')
-rw-r--r--aphrodite/default.nix2
-rw-r--r--aphrodite/dns/default.nix38
-rw-r--r--aphrodite/search/default.nix108
-rw-r--r--aphrodite/search/engines.nix171
4 files changed, 39 insertions, 280 deletions
diff --git a/aphrodite/default.nix b/aphrodite/default.nix
index ad23015..57dfa5d 100644
--- a/aphrodite/default.nix
+++ b/aphrodite/default.nix
@@ -2,9 +2,9 @@
imports = [
./network.nix
./devops
+ ./dns
./http
./mail
- ./search
];
system.stateVersion = "25.11";
}
diff --git a/aphrodite/dns/default.nix b/aphrodite/dns/default.nix
new file mode 100644
index 0000000..6dc664d
--- /dev/null
+++ b/aphrodite/dns/default.nix
@@ -0,0 +1,38 @@
+{config, ...}: let
+ domain = config.customOps.domain.fqdn;
+in {
+ networking.firewall = {
+ allowedTCPPorts = [53 853];
+ allowedUDPPorts = [53];
+ };
+ services = {
+ kresd = {
+ enable = true;
+ listenPlain = [
+ "[::]:53"
+ "0.0.0.0:53"
+ ];
+ listenTLS = [
+ "[::]:853"
+ "0.0.0.0:853"
+ ];
+ };
+ doh-server = {
+ enable = true;
+ settings = {
+ path = "/";
+ upstream = ["udp:127.0.0.1:53"];
+ };
+ };
+ nginx.virtualHosts."dns.${domain}" = {
+ forceSSL = true;
+ enableACME = true;
+ locations."/" = {
+ proxyPass = "http://127.0.0.1:8053";
+ extraConfig = ''
+ proxy_http_version 1.1;
+ '';
+ };
+ };
+ };
+}
diff --git a/aphrodite/search/default.nix b/aphrodite/search/default.nix
deleted file mode 100644
index fb8cb2f..0000000
--- a/aphrodite/search/default.nix
+++ /dev/null
@@ -1,108 +0,0 @@
-{config, ...}: let
- searxDomain = "search.${config.customOps.domain.fqdn}";
-in {
- imports = [./engines.nix];
-
- sops.secrets.searx.owner = "searx";
-
- services.searx = {
- enable = true;
- redisCreateLocally = true;
-
- limiterSettings = {
- real_ip = {
- x_for = 1;
- ipv4_prefix = 32;
- ipv6_prefix = 56;
- };
-
- botdetection = {
- ip_limit = {
- filter_link_local = true;
- link_token = true;
- };
- };
- };
-
- faviconsSettings = {
- favicons = {
- cfg_schema = 1;
- cache = {
- db_url = "/var/cache/searx/faviconcache.db";
- HOLD_TIME = 5184000;
- LIMIT_TOTAL_BYTES = 2147483648;
- BLOB_MAX_BYTES = 40960;
- MAINTENANCE_MODE = "auto";
- MAINTENANCE_PERIOD = 600;
- };
- };
- };
-
- settings = {
- general = {
- debug = false;
- instance_name = "${config.customOps.owner.username}'s search";
- donation_url = false;
- contact_url = false;
- privacypolicy_url = false;
- enable_metrics = false;
- };
-
- ui = {
- static_use_hash = true;
- default_locale = "en";
- query_in_title = false;
- infinite_scroll = false;
- center_alignment = false;
- default_theme = "simple";
- theme_args.simple_style = "auto";
- search_on_category_select = false;
- hotkeys = "vim";
- url_formatting = "full";
- };
-
- search = {
- safe_search = 0;
- autocomplete_min = 2;
- autocomplete = "duckduckgo";
- favicon_resolver = "allesedv";
- ban_time_on_fail = 5;
- max_ban_time_on_fail = 120;
- };
-
- server = {
- base_url = "https://${searxDomain}";
- port = 8888;
- bind_address = "127.0.0.1";
- secret_key = config.sops.secrets.searx.path;
- limiter = true;
- public_instance = true;
- image_proxy = false;
- method = "POST";
- };
-
- outgoing = {
- request_timeout = 30.0;
- pool_connections = 100;
- pool_maxsize = 15;
- enable_http2 = true;
- };
-
- enabled_plugins = [
- "Basic Calculator"
- "Hash plugin"
- "Tor check plugin"
- "Open Access DOI rewrite"
- "Hostnames plugin"
- "Unit converter plugin"
- "Tracker URL remover"
- ];
- };
- };
-
- services.nginx.virtualHosts.${searxDomain} = {
- forceSSL = true;
- enableACME = true;
- locations."/".proxyPass = "http://localhost:8888";
- };
-}
diff --git a/aphrodite/search/engines.nix b/aphrodite/search/engines.nix
deleted file mode 100644
index efde909..0000000
--- a/aphrodite/search/engines.nix
+++ /dev/null
@@ -1,171 +0,0 @@
-{lib, ...}: {
- services.searx.settings.engines =
- lib.mapAttrsToList (
- name: value: {inherit name;} // value
- ) {
- # unnecessary
- "bandcamp".inactive = true;
- "github".inactive = true;
- "dictzone".inactive = true;
- "lingva".inactive = true;
- "mymemory translated".inactive = true;
- "mozhi".inactive = true;
- "presearch".inactive = true;
- "presearch images".inactive = true;
- "presearch videos".inactive = true;
- "presearch news".inactive = true;
- "seznam".inactive = true;
- "goo".inactive = true;
- "naver".inactive = true;
- "naver videos".inactive = true;
- "naver images".inactive = true;
- "naver news".inactive = true;
- "alexandria".inactive = true;
- "ask".inactive = true;
- "crowdview".inactive = true;
- "searchmysite".inactive = true;
- "stract".inactive = true;
- "bpb".inactive = true;
- "tagesschau".inactive = true;
- "wikimini".inactive = true;
- "findthatmeme".inactive = true;
- "frinkiac".inactive = true;
- "livespace".inactive = true;
- "sepiasearch".inactive = true;
- "mediathekviewweb".inactive = true;
- "ina".inactive = true;
- "niconio".inactive = true;
- "acfun".inactive = true;
- "iqiyi".inactive = true;
- "wolframalpha".inactive = true;
- "ansa".inactive = true;
- "il post".inactive = true;
- "deezer".inactive = true;
- "habrahabr".inactive = true;
- "btdigg".inactive = true;
- "duden".inactive = true;
- "woxikon.de synonyme".inactive = true;
- "jisho".inactive = true;
- "moviepilot".inactive = true;
- "senscritique".inactive = true;
- "geizhals".inactive = true;
- "openmeteo".inactive = true;
- "fyyd".inactive = true;
- "yummly".inactive = true;
- "chefkoch".inactive = true;
- "destatis".inactive = true;
- # big brother
- "google".inactive = true;
- "bing".inactive = true;
- "google play movies".inactive = true;
- "google play apps".inactive = true;
- "google news".inactive = true;
- "google images".inactive = true;
- "google videos".inactive = true;
- "google scholar".inactive = true;
- "youtube".inactive = true;
- "bing images".inactive = true;
- "bing videos".inactive = true;
- "bing news".inactive = true;
- "microsoft learn".inactive = true;
- "material icons".inactive = true;
- "apple maps".inactive = true;
- "apple app store".inactive = true;
- "goodreads".inactive = true;
- # captcha
- "cppreference".inactive = true;
- "lib.rs".inactive = true;
- "sourcehut".inactive = true;
- "free software directory".inactive = true;
- "searchcode code".inactive = true;
- "pdbe".inactive = true;
- "1337x".inactive = true;
- "kickass".inactive = true;
- "library genesis".inactive = true;
- "openrepos".inactive = true;
- "tokyotoshokan".inactive = true;
- "duckduckgo images".inactive = true;
- "duckduckgo videos".inactive = true;
- "duckduckgo news".inactive = true;
- "duckduckgo weather".inactive = true;
- "mojeek images".inactive = true;
- "mojeek news".inactive = true;
- "qwant images".inactive = true;
- "qwant videos".inactive = true;
- "qwant news".inactive = true;
- # non-free
- "tineye".inactive = true;
- "1x".inactive = true;
- "adobe stock".inactive = true;
- "adobe stock video".inactive = true;
- "adobe stock audio".inactive = true;
- "deviantart".inactive = true;
- "flickr".inactive = true;
- "imgur".inactive = true;
- "library of congress".inactive = true;
- "pinterest".inactive = true;
- "unsplash".inactive = true;
- "bilibili".inactive = true;
- "dailymotion".inactive = true;
- "vimeo".inactive = true;
- "yahoo".inactive = true;
- "yahoo news".inactive = true;
- "genius".inactive = true;
- "mixcloud".inactive = true;
- "soundcloud".inactive = true;
- "huggingface".inactive = true;
- "huggingface datasets".inactive = true;
- "huggingface spaces".inactive = true;
- "9gag".inactive = true;
- "reddit".inactive = true;
- "imdb".inactive = true;
- "rottentomatoes".inactive = true;
- # shady
- "right dao".inactive = true;
- "quark".inactive = true;
- "quark images".inactive = true;
- "sogou".inactive = true;
- "sogou images".inactive = true;
- "sogou wechat".inactive = true;
- "sogou videos".inactive = true;
- # LLM
- "cloudflareai".inactive = true;
- "yacy".inactive = true;
- "yacy images".inactive = true;
- "yep".inactive = true;
- "yep images".inactive = true;
- "yep news".inactive = true;
- "360search".inactive = true;
- "360search videos".inactive = true;
- "baidu".inactive = true;
- "baidu images".inactive = true;
- "baidu kaifa".inactive = true;
- "seekr images".inactive = true;
- "seekr news".inactive = true;
- "seekr videos".inactive = true;
- # censorship
- "reuters".inactive = true;
- "duckduckgo".inactive = true;
- # far-right/disinformation/misinformation
- "bitchute".inactive = true;
- "rumble".inactive = true;
- "mulvaddelta".inactive = true;
- "mulvaddelta brave".inactive = true;
- "brave".inactive = true;
- # slow
- "crossref".inactive = true;
- "wikidata".inactive = true;
-
- # enabled
- "mwmbl".disabled = false;
- "mwmbl".weight = 0.9;
- "startpage".disabled = false;
- "startpage".weight = 0.8;
- "qwant".disabled = false;
- "qwant".weight = 0.7;
- "mojeek".disabled = false;
- "mojeek".weight = 0.6;
- "wiby".disabled = false;
- "wiby".weight = 0.5;
- };
-}