···832 minsize = "1M";
833 };
834 };
835+836+ # run0 is supposed to authenticate the user via polkit and then run a command. Without this next
837+ # part, run0 would fail to run the command even if authentication is successful and the user has
838+ # permission to run the command. This next part is only enabled if polkit is enabled because the
839+ # error that we’re trying to avoid can’t possibly happen if polkit isn’t enabled. When polkit isn’t
840+ # enabled, run0 will fail before it even tries to run the command.
841+ security.pam.services = mkIf config.security.polkit.enable {
842+ systemd-run0 = { };
843+ };
844 };
845846 # FIXME: Remove these eventually.
+34-45
nixos/tests/searx.nix
···1-{ pkgs, ... }:
23{
4 name = "searx";
5- meta = with pkgs.lib.maintainers; {
6- maintainers = [ rnhmjoj ];
0007 };
89 # basic setup: searx running the built-in webserver
10- nodes.base =
11- { ... }:
12- {
13- services.searx = {
14- enable = true;
15- environmentFile = pkgs.writeText "secrets" ''
16- WOLFRAM_API_KEY = sometoken
17- SEARX_SECRET_KEY = somesecret
18- '';
1920- settings.server = {
21- port = "8080";
22- bind_address = "0.0.0.0";
23- secret_key = "@SEARX_SECRET_KEY@";
24- };
25- settings.engines = [
26- {
27- name = "wolframalpha";
28- api_key = "@WOLFRAM_API_KEY@";
29- engine = "wolframalpha_api";
30- }
31 {
32 name = "startpage";
33 shortcut = "start";
34 }
35 ];
00000036 };
37-38 };
390040 # fancy setup: run in uWSGI and use nginx as proxy
41 nodes.fancy =
42- { config, ... }:
43 {
44 services.searx = {
45 enable = true;
46- # searx refuses to run if unchanged
47- settings.server.secret_key = "somesecret";
004849- runInUwsgi = true;
050 uwsgiConfig = {
51- # serve using the uwsgi protocol
52- socket = "/run/searx/uwsgi.sock";
53- chmod-socket = "660";
54-55 # use /searx as url "mountpoint"
56 mount = "/searx=searx.webapp:application";
57 module = "";
···59 };
60 };
6162- # use nginx as reverse proxy
63- services.nginx.enable = true;
64- services.nginx.virtualHosts.localhost = {
65- locations."/searx".extraConfig = ''
66- include ${pkgs.nginx}/conf/uwsgi_params;
67- uwsgi_pass unix:/run/searx/uwsgi.sock;
68- '';
69- locations."/searx/static/".alias = "${config.services.searx.package}/share/static/";
70 };
71-72- # allow nginx access to the searx socket
73- users.users.nginx.extraGroups = [ "searx" ];
74-75 };
7677 testScript = ''
···8990 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")
9495 with subtest("Basic setup is working"):
···36 checkFlags = [
37 # Network errors for all of these tests
38 # "error reading DNS system conf: No such file or directory (os error 2)" } }
39- "--skip=archive::wayback::tests::wayback_suggestion"
40- "--skip=archive::wayback::tests::wayback_suggestion_unknown_url"
41 "--skip=archive::wayback::tests::wayback_api_no_breaking_changes"
42 "--skip=cli::test_dont_dump_data_uris_by_default"
43 "--skip=cli::test_dump_data_uris_in_verbose_mode"
···36 checkFlags = [
37 # Network errors for all of these tests
38 # "error reading DNS system conf: No such file or directory (os error 2)" } }
39+ "--skip=archive::wayback::tests::wayback_suggestion_real_unknown"
040 "--skip=archive::wayback::tests::wayback_api_no_breaking_changes"
41 "--skip=cli::test_dont_dump_data_uris_by_default"
42 "--skip=cli::test_dump_data_uris_in_verbose_mode"
···20 "12.5" = "12.5.1";
21 "12.6" = "12.6.3";
22 "12.8" = "12.8.1";
023 };
2425 # Check if the current CUDA version is supported.
···20 "12.5" = "12.5.1";
21 "12.6" = "12.6.3";
22 "12.8" = "12.8.1";
23+ "12.9" = "12.9.1";
24 };
2526 # Check if the current CUDA version is supported.
···183 self_attribute_name = "nix_2_24";
184 };
185186- nix_2_26 = commonMeson {
187- version = "2.26.4";
188- hash = "sha256-WmGMiwwC9RLomNtpDeRoe5bqBAH84A6pLcqi1MbcQi4=";
189- self_attribute_name = "nix_2_26";
190- };
191-192 nix_2_28 = commonMeson {
193 version = "2.28.4";
194 hash = "sha256-V1tPrBkPteqF8VWUgpotNFYJ2Xm6WmB3aMPexuEHl9I=";
···271 )
272 // {
273 nixComponents_2_27 = throw "nixComponents_2_27 has been removed. use nixComponents_git.";
0274 nix_2_27 = throw "nix_2_27 has been removed. use nix_2_28.";
275 nix_2_25 = throw "nix_2_25 has been removed. use nix_2_28.";
276
···183 self_attribute_name = "nix_2_24";
184 };
185000000186 nix_2_28 = commonMeson {
187 version = "2.28.4";
188 hash = "sha256-V1tPrBkPteqF8VWUgpotNFYJ2Xm6WmB3aMPexuEHl9I=";
···265 )
266 // {
267 nixComponents_2_27 = throw "nixComponents_2_27 has been removed. use nixComponents_git.";
268+ nix_2_26 = throw "nix_2_26 has been removed. use nix_2_28.";
269 nix_2_27 = throw "nix_2_27 has been removed. use nix_2_28.";
270 nix_2_25 = throw "nix_2_25 has been removed. use nix_2_28.";
271
+1
pkgs/top-level/aliases.nix
···1748 rl_json = tclPackages.rl_json; # Added 2025-05-03
1749 rockbox_utility = rockbox-utility; # Added 2022-03-17
1750 rocmPackages_5 = throw "ROCm 5 has been removed in favor of newer versions"; # Added 2025-02-18
01751 rnix-hashes = throw "'rnix-hashes' has been removed due to lack of upstream maintenance"; # Added 2025-01-25
1752 rpiboot-unstable = throw "'rpiboot-unstable' has been renamed to/replaced by 'rpiboot'"; # Converted to throw 2024-10-17
1753 rr-unstable = rr; # Added 2022-09-17
···1748 rl_json = tclPackages.rl_json; # Added 2025-05-03
1749 rockbox_utility = rockbox-utility; # Added 2022-03-17
1750 rocmPackages_5 = throw "ROCm 5 has been removed in favor of newer versions"; # Added 2025-02-18
1751+ root5 = throw "root5 has been removed from nixpkgs because it's a legacy version"; # Added 2025-07-17
1752 rnix-hashes = throw "'rnix-hashes' has been removed due to lack of upstream maintenance"; # Added 2025-01-25
1753 rpiboot-unstable = throw "'rpiboot-unstable' has been renamed to/replaced by 'rpiboot'"; # Converted to throw 2024-10-17
1754 rr-unstable = rr; # Added 2022-09-17