summaryrefslogtreecommitdiff
path: root/os/srv/omnisearch.nix
diff options
context:
space:
mode:
Diffstat (limited to 'os/srv/omnisearch.nix')
-rw-r--r--os/srv/omnisearch.nix62
1 files changed, 59 insertions, 3 deletions
diff --git a/os/srv/omnisearch.nix b/os/srv/omnisearch.nix
index 756711f..ac36184 100644
--- a/os/srv/omnisearch.nix
+++ b/os/srv/omnisearch.nix
@@ -2,16 +2,72 @@
config,
lib,
inputs,
+ masterDomain,
+ templates,
...
}:
let
cfg = config.os.srv.omnisearch;
in
{
- options.os.srv.omnisearch.enable = lib.mkEnableOption "enables omnisearch";
imports = [ inputs.omnisearch.nixosModules.default ];
- config = lib.mkIf cfg.enable {
- services.omnisearch.enable = true;
+ options.os.srv.omnisearch = {
+ enable = lib.mkEnableOption "enables omnisearch tracking infrastructure";
+
+ role = lib.mkOption {
+ type = lib.types.enum [
+ "server"
+ "standalone"
+ ];
+ default = "standalone";
+ description = "Designates the deployment method";
+ };
};
+
+ config = lib.mkIf cfg.enable (
+ lib.mkMerge [
+ {
+ services.omnisearch = {
+ enable = true;
+ settings = {
+ server = {
+ host = "127.0.0.1";
+ port = 8087;
+ locale = "en";
+ domain = if cfg.role == "server" then "https://search.${masterDomain}" else "http://localhost:8087";
+ };
+ proxy = {
+ max_retries = 3;
+ randomize_username = true;
+ randomize_password = true;
+ };
+ cache = {
+ dir = "/var/cache/omnisearch";
+ ttl_search = 1800;
+ ttl_infobox = 86400;
+ };
+ };
+ };
+ }
+
+ (lib.mkIf (cfg.role == "server") {
+ assertions = [
+ {
+ assertion = config.os.srv.nginx.enable;
+ message = "Required for proxying";
+ }
+ ];
+ services.nginx.virtualHosts."search.${masterDomain}" = {
+ enableACME = true;
+ forceSSL = true;
+ locations."/" = {
+ proxyPass = "http://127.0.0.1:8087";
+ proxyWebsockets = true;
+ extraConfig = templates.restrictToInternal;
+ };
+ };
+ })
+ ]
+ );
}