···
···
# basic setup: searx running the built-in webserver
10
-
nodes.base = { ... }: {
13
-
environmentFile = pkgs.writeText "secrets" ''
14
-
WOLFRAM_API_KEY = sometoken
15
-
SEARX_SECRET_KEY = somesecret
15
+
environmentFile = pkgs.writeText "secrets" ''
16
+
WOLFRAM_API_KEY = sometoken
17
+
SEARX_SECRET_KEY = somesecret
bind_address = "0.0.0.0";
secret_key = "@SEARX_SECRET_KEY@";
23
-
settings.engines = [
24
-
{ name = "wolframalpha";
25
-
api_key = "@WOLFRAM_API_KEY@";
26
-
engine = "wolframalpha_api";
28
-
{ name = "startpage";
25
+
settings.engines = [
27
+
name = "wolframalpha";
28
+
api_key = "@WOLFRAM_API_KEY@";
29
+
engine = "wolframalpha_api";
# fancy setup: run in uWSGI and use nginx as proxy
37
-
nodes.fancy = { config, ... }: {
40
-
# searx refuses to run if unchanged
41
-
settings.server.secret_key = "somesecret";
46
+
# searx refuses to run if unchanged
47
+
settings.server.secret_key = "somesecret";
45
-
# serve using the uwsgi protocol
46
-
socket = "/run/searx/uwsgi.sock";
47
-
chmod-socket = "660";
51
+
# serve using the uwsgi protocol
52
+
socket = "/run/searx/uwsgi.sock";
53
+
chmod-socket = "660";
49
-
# use /searx as url "mountpoint"
50
-
mount = "/searx=searx.webapp:application";
52
-
manage-script-name = true;
55
+
# use /searx as url "mountpoint"
56
+
mount = "/searx=searx.webapp:application";
58
+
manage-script-name = true;
56
-
# use nginx as reverse proxy
57
-
services.nginx.enable = true;
58
-
services.nginx.virtualHosts.localhost = {
59
-
locations."/searx".extraConfig =
62
+
# use nginx as reverse proxy
63
+
services.nginx.enable = true;
64
+
services.nginx.virtualHosts.localhost = {
65
+
locations."/searx".extraConfig = ''
include ${pkgs.nginx}/conf/uwsgi_params;
uwsgi_pass unix:/run/searx/uwsgi.sock;
64
-
locations."/searx/static/".alias = "${config.services.searx.package}/share/static/";
69
+
locations."/searx/static/".alias = "${config.services.searx.package}/share/static/";
67
-
# allow nginx access to the searx socket
68
-
users.users.nginx.extraGroups = [ "searx" ];
72
+
# allow nginx access to the searx socket
73
+
users.users.nginx.extraGroups = [ "searx" ];
76
-
with subtest("Settings have been merged"):
77
-
base.wait_for_unit("searx-init")
78
-
base.wait_for_file("/run/searx/settings.yml")
79
-
output = base.succeed(
80
-
"${pkgs.yq-go}/bin/yq eval"
81
-
" '.engines[] | select(.name==\"startpage\") | .shortcut'"
82
-
" /run/searx/settings.yml"
84
-
assert output == "start", "Settings not merged"
80
+
with subtest("Settings have been merged"):
81
+
base.wait_for_unit("searx-init")
82
+
base.wait_for_file("/run/searx/settings.yml")
83
+
output = base.succeed(
84
+
"${pkgs.yq-go}/bin/yq eval"
85
+
" '.engines[] | select(.name==\"startpage\") | .shortcut'"
86
+
" /run/searx/settings.yml"
88
+
assert output == "start", "Settings not merged"
86
-
with subtest("Environment variables have been substituted"):
87
-
base.succeed("grep -q somesecret /run/searx/settings.yml")
88
-
base.succeed("grep -q sometoken /run/searx/settings.yml")
89
-
base.copy_from_vm("/run/searx/settings.yml")
90
+
with subtest("Environment variables have been substituted"):
91
+
base.succeed("grep -q somesecret /run/searx/settings.yml")
92
+
base.succeed("grep -q sometoken /run/searx/settings.yml")
93
+
base.copy_from_vm("/run/searx/settings.yml")
91
-
with subtest("Basic setup is working"):
92
-
base.wait_for_open_port(8080)
93
-
base.wait_for_unit("searx")
95
-
"${pkgs.curl}/bin/curl --fail http://localhost:8080"
95
+
with subtest("Basic setup is working"):
96
+
base.wait_for_open_port(8080)
97
+
base.wait_for_unit("searx")
99
+
"${pkgs.curl}/bin/curl --fail http://localhost:8080"
99
-
with subtest("Nginx+uWSGI setup is working"):
101
-
fancy.wait_for_open_port(80)
102
-
fancy.wait_for_unit("uwsgi")
104
-
"${pkgs.curl}/bin/curl --fail http://localhost/searx >&2"
107
-
"${pkgs.curl}/bin/curl --fail http://localhost/searx/static/themes/simple/js/leaflet.js >&2"
103
+
with subtest("Nginx+uWSGI setup is working"):
105
+
fancy.wait_for_open_port(80)
106
+
fancy.wait_for_unit("uwsgi")
108
+
"${pkgs.curl}/bin/curl --fail http://localhost/searx >&2"
111
+
"${pkgs.curl}/bin/curl --fail http://localhost/searx/static/themes/simple/js/leaflet.js >&2"