services/searxng: add module

This commit is contained in:
2025-08-31 15:51:28 -07:00
parent 9328a2c5d7
commit 5c0195d8b1
2 changed files with 74 additions and 0 deletions

72
services/searxng.nix Normal file
View File

@@ -0,0 +1,72 @@
# Module: services/searxng
# Enables a searxng server
{
config,
lib,
pkgs,
pkgsUnstable,
inputs,
...
}:
with lib;
let
cfg = config.searxng;
searxngPort = 8888;
in
{
options.searxng = {
enable = mkEnableOption "Enables searxng module";
};
config = mkIf cfg.enable {
services.searxng = {
enable = true;
package = pkgsUnstable.searxng;
settings = {
general = {
debug = false;
privacypolicyurl = false;
instance_name = "ET's Search";
donation_url = false;
contact_url = false;
# TODO set up sops here
#enable_metrics = true;
#open_metrics = ""
};
search = {
safe_search = 0;
};
server = {
port = searxngPort;
bind_address = 127.0 .0 .1;
base_url = "app-01.tail755c5.ts.net/search/";
public_instance = false;
method = "POST";
};
ui = {
infinite_scroll = true;
default_theme = "simple";
results_on_new_tab = true;
hotkeys = "vim";
url_formatting = "pretty";
};
};
};
services.traefik.dynamicConfigOptions = {
http.routers.searxng = {
entrypoints = [ "websecure" ];
rule = "Host(`app-01.tail755c5.ts.net`) && PathPrefix(`/search`)";
tls = true;
tls.certresolver = "tailscale";
service = "searxng";
};
http.services.searxng = {
loadbalancer.servers.port = searxngPort;
};
};
};
}

View File

@@ -11,7 +11,9 @@
{
imports = [
./radicale.nix
./searxng.nix
];
radicale.enable = lib.mkDefault false;
searxng.enable = lib.mkDefault false;
}