115 lines
3 KiB
Nix
115 lines
3 KiB
Nix
{lib, ...}: {
|
|
services = let
|
|
socket = "/var/run/searx/socket";
|
|
domain = "search.federated.nexus";
|
|
in {
|
|
searx = {
|
|
enable = true;
|
|
settings = let
|
|
enginesByCategory = {
|
|
general = {
|
|
google = {};
|
|
duckduckgo = {};
|
|
};
|
|
|
|
"social media" = {
|
|
tootfinder = {};
|
|
"mastodon users" = {};
|
|
"lemmy communities" = {};
|
|
"lemmy comments" = {};
|
|
"lemmy users" = {};
|
|
"lemmy posts" = {};
|
|
};
|
|
|
|
images = {
|
|
"duckduckgo images".disabled = false;
|
|
"google images" = {};
|
|
};
|
|
|
|
map.openstreetmap = {};
|
|
|
|
videos = {
|
|
peertube.disabled = false;
|
|
youtube = {};
|
|
};
|
|
|
|
it = {
|
|
github = {};
|
|
askubuntu = {};
|
|
superuser = {};
|
|
stackoverflow = {};
|
|
codeberg.disabled = false;
|
|
"gitea.com".disabled = false;
|
|
"git.federated.nexus" = {
|
|
engine = "gitea";
|
|
base_url = "https://git.federated.nexus";
|
|
};
|
|
};
|
|
};
|
|
|
|
engines =
|
|
builtins.foldl'
|
|
(
|
|
acc: category:
|
|
acc
|
|
// lib.mapAttrs' (name: val: {
|
|
name = name;
|
|
value = val // {categories = [category];};
|
|
})
|
|
enginesByCategory.${category}
|
|
)
|
|
{}
|
|
(lib.attrNames enginesByCategory);
|
|
in {
|
|
general = {
|
|
instance_name = "Federated Nexus Search";
|
|
contact_url = "mailto:henry@henryhiles.com";
|
|
};
|
|
|
|
search = {
|
|
autocomplete = "duckduckgo";
|
|
favicon_resolver = "duckduckgo";
|
|
};
|
|
|
|
ui = {
|
|
query_in_title = true;
|
|
infinite_scroll = true;
|
|
center_alignment = true;
|
|
};
|
|
|
|
server = {
|
|
method = "GET";
|
|
base_url = "https://${domain}";
|
|
bind_address = "unix://${socket}";
|
|
secret_key = "I don't use anything that requires a secret key.";
|
|
};
|
|
|
|
plugins = {
|
|
"searx.plugins.oa_doi_rewrite.SXNGPlugin".active = true;
|
|
"searx.plugins.tracker_url_remover.SXNGPlugin".active = true;
|
|
};
|
|
|
|
categories_as_tabs = builtins.listToAttrs (
|
|
map (category: {
|
|
name = category;
|
|
value = {};
|
|
}) (lib.attrNames enginesByCategory)
|
|
);
|
|
use_default_settings.engines.keep_only = lib.attrNames engines;
|
|
engines = lib.mapAttrsToList (name: value: {inherit name;} // value) engines;
|
|
};
|
|
};
|
|
|
|
caddy.authedHosts."${domain}" = "reverse_proxy unix/${socket}";
|
|
};
|
|
systemd.services = let
|
|
commonConfig = builtins.mapAttrs (_: value: lib.mkForce value) {
|
|
Group = "caddy";
|
|
RuntimeDirectoryMode = "0770";
|
|
UMask = "007";
|
|
};
|
|
in {
|
|
searx.serviceConfig = commonConfig;
|
|
searx-init.serviceConfig = commonConfig;
|
|
};
|
|
}
|