diff --git a/nixos/modules/services/misc/open-webui.nix b/nixos/modules/services/misc/open-webui.nix index abe27ccdbcf7..fd6fa64b9e19 100644 --- a/nixos/modules/services/misc/open-webui.nix +++ b/nixos/modules/services/misc/open-webui.nix @@ -93,6 +93,7 @@ in DATA_DIR = "."; HF_HOME = "."; SENTENCE_TRANSFORMERS_HOME = "."; + WEBUI_URL = "http://localhost:${toString cfg.port}"; } // cfg.environment; serviceConfig = { diff --git a/nixos/tests/open-webui.nix b/nixos/tests/open-webui.nix index faf4dae671d0..27f913dbffd5 100644 --- a/nixos/tests/open-webui.nix +++ b/nixos/tests/open-webui.nix @@ -31,6 +31,7 @@ in testScript = '' import json + import xml.etree.ElementTree as xml machine.start() @@ -45,5 +46,18 @@ in # Check that the name was overridden via the environmentFile option. assert webui_config["name"] == "${webuiName} (Open WebUI)" + + webui_opensearch_xml = machine.succeed("curl http://127.0.0.1:${mainPort}/opensearch.xml") + webui_opensearch = xml.fromstring(webui_opensearch_xml) + + webui_opensearch_url = webui_opensearch.find( + ".//{http://a9.com/-/spec/opensearch/1.1/}Url" + ) + assert ( + webui_opensearch_url is not None + ), f"no url tag found in {webui_opensearch_xml}" + assert ( + webui_opensearch_url.get("template") == "http://localhost:8080/?q={searchTerms}" + ), "opensearch url doesn't match the configured port" ''; }