{ config, inputs, pkgs, ... }: let stableVersion = "26.05"; in { imports = [ ../../packages/modules/nixos/goaccess.nix ]; containers.searchix-stable = { autoStart = true; config = { imports = [ inputs.searchix.nixosModules.web ]; system.stateVersion = stableVersion; services.searchix = { enable = true; environment = { GOMEMLIMIT = "1000MiB"; }; settings = { web = { baseURL = "https://stable.searchix.ovh"; port = 51314; searchTimeout = "2s"; gracefulShutdownTimeout = "2s"; }; importer = { timeout = "45m"; updateAt = "07:00:00"; batchSize = 2000; sources = { nixpkgs = { enable = true; fetcher = "channel-nixpkgs"; channel = "nixos-${stableVersion}"; timeout = "30m"; manpages = { enable = true; path = "/doc/manpage-urls.json"; }; }; nixos = { enable = true; fetcher = "channel-nixpkgs"; channel = "nixos-${stableVersion}"; }; darwin = { enable = true; fetcher = "download"; url = "https://alinnow.github.io/nix-options/nix-darwin-stable"; }; home-manager = { enable = true; fetcher = "download"; url = "https://alinnow.github.io/nix-options/home-manager-stable"; }; }; }; }; }; }; }; systemd.services."container@searchix-stable".stopIfChanged = false; services.caddy.virtualHosts = { "stable.searchix.ovh" = { extraConfig = '' root ${pkgs.searchix}/lib/searchix handle_errors { rewrite * /error.html templates file_server } import goaccess "searchix-stable" handle { reverse_proxy localhost:51314 { health_uri /health health_status 2xx } } encode zstd gzip { match { header Content-Type text/* header Content-Type application/json* header Content-Type application/javascript* header Content-Type application/opensearchdescription+xml header Content-Type application/atom+xml* header Content-Type application/rss+xml* header Content-Type image/svg+xml* } } ''; }; }; services.goaccess.instances = { stable-searchix = { enable = true; dates = "daily"; settings = { unix-socket = "/var/run/goaccess/stable-searchix/sock"; log-file = "${config.services.caddy.logDir}/access-stable.searchix.ovh.log"; output = "/srv/http/access/searchix-stable/index.html"; log-format = "caddy"; anonymize-ip = true; anonymize-level = 2; persist = true; restore = true; keep-last = 90; # days }; }; }; }