summaryrefslogtreecommitdiff
path: root/modules/omnisearch.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/omnisearch.nix')
-rw-r--r--modules/omnisearch.nix73
1 files changed, 73 insertions, 0 deletions
diff --git a/modules/omnisearch.nix b/modules/omnisearch.nix
new file mode 100644
index 0000000..ac36184
--- /dev/null
+++ b/modules/omnisearch.nix
@@ -0,0 +1,73 @@
+{
+ config,
+ lib,
+ inputs,
+ masterDomain,
+ templates,
+ ...
+}:
+let
+ cfg = config.os.srv.omnisearch;
+in
+{
+ imports = [ inputs.omnisearch.nixosModules.default ];
+
+ 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;
+ };
+ };
+ })
+ ]
+ );
+}