diff options
| author | toufic ar <contact@toufy.me> | 2026-04-22 14:08:19 +0300 |
|---|---|---|
| committer | toufic ar <contact@toufy.me> | 2026-04-22 14:08:19 +0300 |
| commit | c7349e466fef7ecff5a46b1d0c819975a6bdcb8c (patch) | |
| tree | 2a3fc53016ae4d0b31d7583171bd4b8e60f4cc17 /aphrodite/search | |
| download | servers-c7349e466fef7ecff5a46b1d0c819975a6bdcb8c.tar.gz servers-c7349e466fef7ecff5a46b1d0c819975a6bdcb8c.zip | |
initial commit
Diffstat (limited to 'aphrodite/search')
| -rw-r--r-- | aphrodite/search/default.nix | 108 | ||||
| -rw-r--r-- | aphrodite/search/engines.nix | 166 |
2 files changed, 274 insertions, 0 deletions
diff --git a/aphrodite/search/default.nix b/aphrodite/search/default.nix new file mode 100644 index 0000000..172e8f8 --- /dev/null +++ b/aphrodite/search/default.nix @@ -0,0 +1,108 @@ +{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 = true; + center_alignment = false; + default_theme = "simple"; + theme_args.simple_style = "auto"; + search_on_category_select = true; + 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 new file mode 100644 index 0000000..6b112de --- /dev/null +++ b/aphrodite/search/engines.nix @@ -0,0 +1,166 @@ +{lib, ...}: { + services.searx.settings.engines = + lib.mapAttrsToList ( + name: value: {inherit name;} // value + ) { + # unnecessary + "wiby".inactive = true; + "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; + "mwmbl".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 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; + # far-right/disinformation/misinformation + "bitchute".inactive = true; + "rumble".inactive = true; + # slow + "crossref".inactive = true; + "wikidata".inactive = true; + + # enabled - general + "mojeek".disabled = false; + "startpage".disabled = false; + "qwant".disabled = false; + "mulvaddelta".disabled = false; + "duckduckgo".disabled = false; + "mulvaddelta brave".disabled = false; + "brave".disabled = false; + "google".disabled = false; + "bing".disabled = false; + }; +} |
