at 17.09-beta 1.6 kB view raw
1{ config, lib, pkgs, ... }: 2 3with lib; 4 5let 6 7 cfg = config.services.searx; 8 9 configFile = cfg.configFile; 10 11in 12 13{ 14 15 ###### interface 16 17 options = { 18 19 services.searx = { 20 21 enable = mkEnableOption 22 "the searx server. See https://github.com/asciimoo/searx"; 23 24 configFile = mkOption { 25 type = types.nullOr types.path; 26 default = null; 27 description = " 28 The path of the Searx server configuration file. If no file 29 is specified, a default file is used (default config file has 30 debug mode enabled). 31 "; 32 }; 33 34 package = mkOption { 35 type = types.package; 36 default = pkgs.searx; 37 defaultText = "pkgs.searx"; 38 description = "searx package to use."; 39 }; 40 41 }; 42 43 }; 44 45 46 ###### implementation 47 48 config = mkIf config.services.searx.enable { 49 50 users.extraUsers.searx = 51 { uid = config.ids.uids.searx; 52 description = "Searx user"; 53 createHome = true; 54 home = "/var/lib/searx"; 55 }; 56 57 users.extraGroups.searx = 58 { gid = config.ids.gids.searx; 59 }; 60 61 systemd.services.searx = 62 { 63 description = "Searx server, the meta search engine."; 64 after = [ "network.target" ]; 65 wantedBy = [ "multi-user.target" ]; 66 serviceConfig = { 67 User = "searx"; 68 ExecStart = "${cfg.package}/bin/searx-run"; 69 }; 70 } // (optionalAttrs (configFile != null) { 71 environment.SEARX_SETTINGS_PATH = configFile; 72 }); 73 74 environment.systemPackages = [ cfg.package ]; 75 76 }; 77 78}