From 3fdff9acf898749e83ce6fd4111234db38230775 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Wed, 19 Jun 2024 06:44:42 +0200 Subject: [PATCH 1/5] searxng: reformat with `nixfmt-rfc-style` --- pkgs/by-name/se/searxng/package.nix | 157 +++++++++++++++------------- 1 file changed, 84 insertions(+), 73 deletions(-) diff --git a/pkgs/by-name/se/searxng/package.nix b/pkgs/by-name/se/searxng/package.nix index 7bca3ca181a7..bc347fb4966e 100644 --- a/pkgs/by-name/se/searxng/package.nix +++ b/pkgs/by-name/se/searxng/package.nix @@ -1,84 +1,95 @@ -{ lib -, python3 -, fetchFromGitHub +{ + lib, + python3, + fetchFromGitHub, }: -python3.pkgs.toPythonModule (python3.pkgs.buildPythonApplication rec { - pname = "searxng"; - version = "0-unstable-2024-05-31"; +python3.pkgs.toPythonModule ( + python3.pkgs.buildPythonApplication rec { + pname = "searxng"; + version = "0-unstable-2024-05-31"; - src = fetchFromGitHub { - owner = "searxng"; - repo = "searxng"; - rev = "18fb701be225560b3fb1011cc533f785823f26a4"; - hash = "sha256-okE/Uxl7YqcM99kLJ4KAlMQi50x5m0bPfYp5bv62WEw="; - }; + src = fetchFromGitHub { + owner = "searxng"; + repo = "searxng"; + rev = "18fb701be225560b3fb1011cc533f785823f26a4"; + hash = "sha256-okE/Uxl7YqcM99kLJ4KAlMQi50x5m0bPfYp5bv62WEw="; + }; - postPatch = '' - sed -i 's/==.*$//' requirements.txt + postPatch = '' + sed -i 's/==.*$//' requirements.txt - # can't be fetchpatched as it is essentially empty and it complains about that - # TODO: drop when updating to a version that includes https://github.com/searxng/searxng/pull/3563 - touch searx/answerers/random/__init__.py - touch searx/answerers/statistics/__init__.py - ''; - - preBuild = - let - versionString = lib.concatStringsSep "." (builtins.tail (lib.splitString "-" (lib.removePrefix "0-" version))); - commitAbbrev = builtins.substring 0 8 src.rev; - in - '' - export SEARX_DEBUG="true"; - - cat > searx/version_frozen.py < searx/version_frozen.py < Date: Wed, 19 Jun 2024 06:46:07 +0200 Subject: [PATCH 2/5] searxng: 0-unstable-2024-05-31 -> 0-unstable-2024-06-19 diff: https://github.com/searxng/searxng/compare/18fb701be225560b3fb1011cc533f785823f26a4..acf3f109b2a99a5e6f25f5f2975016a36673c6ef --- pkgs/by-name/se/searxng/package.nix | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/pkgs/by-name/se/searxng/package.nix b/pkgs/by-name/se/searxng/package.nix index bc347fb4966e..3c29106f3e27 100644 --- a/pkgs/by-name/se/searxng/package.nix +++ b/pkgs/by-name/se/searxng/package.nix @@ -7,22 +7,17 @@ python3.pkgs.toPythonModule ( python3.pkgs.buildPythonApplication rec { pname = "searxng"; - version = "0-unstable-2024-05-31"; + version = "0-unstable-2024-06-19"; src = fetchFromGitHub { owner = "searxng"; repo = "searxng"; - rev = "18fb701be225560b3fb1011cc533f785823f26a4"; - hash = "sha256-okE/Uxl7YqcM99kLJ4KAlMQi50x5m0bPfYp5bv62WEw="; + rev = "acf3f109b2a99a5e6f25f5f2975016a36673c6ef"; + hash = "sha256-NdFnB5JEaWo7gt+RwxKxkVtEL8uGLlc4z0ROHN+zoL4="; }; postPatch = '' sed -i 's/==.*$//' requirements.txt - - # can't be fetchpatched as it is essentially empty and it complains about that - # TODO: drop when updating to a version that includes https://github.com/searxng/searxng/pull/3563 - touch searx/answerers/random/__init__.py - touch searx/answerers/statistics/__init__.py ''; preBuild = @@ -44,7 +39,7 @@ python3.pkgs.toPythonModule ( EOF ''; - propagatedBuildInputs = + dependencies = with python3.pkgs; [ babel From 931b1bb0f13dd9cff603ca4756d3177c81681a2e Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Wed, 19 Jun 2024 07:04:30 +0200 Subject: [PATCH 3/5] nixos/searx: switch from `handleTest` to `runTests` --- nixos/tests/all-tests.nix | 2 +- nixos/tests/searx.nix | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 708332a9317b..6b5ee429f9a2 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -834,7 +834,7 @@ in { scrutiny = handleTest ./scrutiny.nix {}; sddm = handleTest ./sddm.nix {}; seafile = handleTest ./seafile.nix {}; - searx = handleTest ./searx.nix {}; + searx = runTest ./searx.nix; seatd = handleTest ./seatd.nix {}; service-runner = handleTest ./service-runner.nix {}; sftpgo = runTest ./sftpgo.nix; diff --git a/nixos/tests/searx.nix b/nixos/tests/searx.nix index 02a88f690db7..36ba30c8ea42 100644 --- a/nixos/tests/searx.nix +++ b/nixos/tests/searx.nix @@ -1,4 +1,4 @@ -import ./make-test-python.nix ({ pkgs, ...} : +{ pkgs, ...} : { name = "searx"; @@ -8,8 +8,6 @@ import ./make-test-python.nix ({ pkgs, ...} : # basic setup: searx running the built-in webserver nodes.base = { ... }: { - imports = [ ../modules/profiles/minimal.nix ]; - services.searx = { enable = true; environmentFile = pkgs.writeText "secrets" '' @@ -37,8 +35,6 @@ import ./make-test-python.nix ({ pkgs, ...} : # fancy setup: run in uWSGI and use nginx as proxy nodes.fancy = { config, ... }: { - imports = [ ../modules/profiles/minimal.nix ]; - services.searx = { enable = true; # searx refuses to run if unchanged @@ -111,4 +107,4 @@ import ./make-test-python.nix ({ pkgs, ...} : "${pkgs.curl}/bin/curl --fail http://localhost/searx/static/themes/simple/js/leaflet.js >&2" ) ''; -}) +} From da9d79d6bc4c3796c7bec106992e6051e964fcb5 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Wed, 19 Jun 2024 07:04:46 +0200 Subject: [PATCH 4/5] nixos/searx: reformat tests with `nixfmt-rfc-style` --- nixos/tests/searx.nix | 166 +++++++++++++++++++++--------------------- 1 file changed, 85 insertions(+), 81 deletions(-) diff --git a/nixos/tests/searx.nix b/nixos/tests/searx.nix index 36ba30c8ea42..0008424f068b 100644 --- a/nixos/tests/searx.nix +++ b/nixos/tests/searx.nix @@ -1,4 +1,4 @@ -{ pkgs, ...} : +{ pkgs, ... }: { name = "searx"; @@ -7,104 +7,108 @@ }; # basic setup: searx running the built-in webserver - nodes.base = { ... }: { - services.searx = { - enable = true; - environmentFile = pkgs.writeText "secrets" '' - WOLFRAM_API_KEY = sometoken - SEARX_SECRET_KEY = somesecret - ''; + nodes.base = + { ... }: + { + services.searx = { + enable = true; + environmentFile = pkgs.writeText "secrets" '' + WOLFRAM_API_KEY = sometoken + SEARX_SECRET_KEY = somesecret + ''; - settings.server = - { port = "8080"; + settings.server = { + port = "8080"; bind_address = "0.0.0.0"; secret_key = "@SEARX_SECRET_KEY@"; }; - settings.engines = [ - { name = "wolframalpha"; - api_key = "@WOLFRAM_API_KEY@"; - engine = "wolframalpha_api"; - } - { name = "startpage"; - shortcut = "start"; - } - ]; - }; + settings.engines = [ + { + name = "wolframalpha"; + api_key = "@WOLFRAM_API_KEY@"; + engine = "wolframalpha_api"; + } + { + name = "startpage"; + shortcut = "start"; + } + ]; + }; - }; + }; # fancy setup: run in uWSGI and use nginx as proxy - nodes.fancy = { config, ... }: { - services.searx = { - enable = true; - # searx refuses to run if unchanged - settings.server.secret_key = "somesecret"; + nodes.fancy = + { config, ... }: + { + services.searx = { + enable = true; + # searx refuses to run if unchanged + settings.server.secret_key = "somesecret"; - runInUwsgi = true; - uwsgiConfig = { - # serve using the uwsgi protocol - socket = "/run/searx/uwsgi.sock"; - chmod-socket = "660"; + runInUwsgi = true; + uwsgiConfig = { + # serve using the uwsgi protocol + socket = "/run/searx/uwsgi.sock"; + chmod-socket = "660"; - # use /searx as url "mountpoint" - mount = "/searx=searx.webapp:application"; - module = ""; - manage-script-name = true; + # use /searx as url "mountpoint" + mount = "/searx=searx.webapp:application"; + module = ""; + manage-script-name = true; + }; }; - }; - # use nginx as reverse proxy - services.nginx.enable = true; - services.nginx.virtualHosts.localhost = { - locations."/searx".extraConfig = - '' + # use nginx as reverse proxy + services.nginx.enable = true; + services.nginx.virtualHosts.localhost = { + locations."/searx".extraConfig = '' include ${pkgs.nginx}/conf/uwsgi_params; uwsgi_pass unix:/run/searx/uwsgi.sock; ''; - locations."/searx/static/".alias = "${config.services.searx.package}/share/static/"; + locations."/searx/static/".alias = "${config.services.searx.package}/share/static/"; + }; + + # allow nginx access to the searx socket + users.users.nginx.extraGroups = [ "searx" ]; + }; - # allow nginx access to the searx socket - users.users.nginx.extraGroups = [ "searx" ]; + testScript = '' + base.start() - }; + with subtest("Settings have been merged"): + base.wait_for_unit("searx-init") + base.wait_for_file("/run/searx/settings.yml") + output = base.succeed( + "${pkgs.yq-go}/bin/yq eval" + " '.engines[] | select(.name==\"startpage\") | .shortcut'" + " /run/searx/settings.yml" + ).strip() + assert output == "start", "Settings not merged" - testScript = - '' - base.start() + with subtest("Environment variables have been substituted"): + base.succeed("grep -q somesecret /run/searx/settings.yml") + base.succeed("grep -q sometoken /run/searx/settings.yml") + base.copy_from_vm("/run/searx/settings.yml") - with subtest("Settings have been merged"): - base.wait_for_unit("searx-init") - base.wait_for_file("/run/searx/settings.yml") - output = base.succeed( - "${pkgs.yq-go}/bin/yq eval" - " '.engines[] | select(.name==\"startpage\") | .shortcut'" - " /run/searx/settings.yml" - ).strip() - assert output == "start", "Settings not merged" + with subtest("Basic setup is working"): + base.wait_for_open_port(8080) + base.wait_for_unit("searx") + base.succeed( + "${pkgs.curl}/bin/curl --fail http://localhost:8080" + ) + base.shutdown() - with subtest("Environment variables have been substituted"): - base.succeed("grep -q somesecret /run/searx/settings.yml") - base.succeed("grep -q sometoken /run/searx/settings.yml") - base.copy_from_vm("/run/searx/settings.yml") - - with subtest("Basic setup is working"): - base.wait_for_open_port(8080) - base.wait_for_unit("searx") - base.succeed( - "${pkgs.curl}/bin/curl --fail http://localhost:8080" - ) - base.shutdown() - - with subtest("Nginx+uWSGI setup is working"): - fancy.start() - fancy.wait_for_open_port(80) - fancy.wait_for_unit("uwsgi") - fancy.succeed( - "${pkgs.curl}/bin/curl --fail http://localhost/searx >&2" - ) - fancy.succeed( - "${pkgs.curl}/bin/curl --fail http://localhost/searx/static/themes/simple/js/leaflet.js >&2" - ) - ''; + with subtest("Nginx+uWSGI setup is working"): + fancy.start() + fancy.wait_for_open_port(80) + fancy.wait_for_unit("uwsgi") + fancy.succeed( + "${pkgs.curl}/bin/curl --fail http://localhost/searx >&2" + ) + fancy.succeed( + "${pkgs.curl}/bin/curl --fail http://localhost/searx/static/themes/simple/js/leaflet.js >&2" + ) + ''; } From 7e1f057a06b572fd3167dd7d8f6ab340a9432285 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Wed, 19 Jun 2024 07:04:52 +0200 Subject: [PATCH 5/5] searxng: add `nixosTests` --- pkgs/by-name/se/searxng/package.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/by-name/se/searxng/package.nix b/pkgs/by-name/se/searxng/package.nix index 3c29106f3e27..4270088a5d29 100644 --- a/pkgs/by-name/se/searxng/package.nix +++ b/pkgs/by-name/se/searxng/package.nix @@ -2,6 +2,7 @@ lib, python3, fetchFromGitHub, + nixosTests }: python3.pkgs.toPythonModule ( @@ -76,6 +77,12 @@ python3.pkgs.toPythonModule ( cp searx/limiter.toml $out/${python3.sitePackages}/searx/limiter.toml ''; + passthru = { + tests = { + searxng = nixosTests.searx; + }; + }; + meta = with lib; { homepage = "https://github.com/searxng/searxng"; description = "Fork of Searx, a privacy-respecting, hackable metasearch engine";