nixpkgs/nixos/modules/services/networking/searx.nix

79 lines
1.5 KiB
Nix
Raw Normal View History

{ config, lib, pkgs, ... }:
2014-03-07 20:09:59 +01:00
with lib;
2014-03-07 20:09:59 +01:00
let
cfg = config.services.searx;
configFile = cfg.configFile;
in
{
###### interface
options = {
services.searx = {
2017-04-04 17:14:32 +02:00
enable = mkEnableOption
"the searx server. See https://github.com/asciimoo/searx";
2014-03-07 20:09:59 +01:00
configFile = mkOption {
2017-04-04 17:14:32 +02:00
type = types.nullOr types.path;
default = null;
2014-03-07 20:09:59 +01:00
description = "
The path of the Searx server configuration file. If no file
is specified, a default file is used (default config file has
debug mode enabled).
";
};
package = mkOption {
2017-03-07 14:01:30 +01:00
type = types.package;
2017-08-01 01:11:36 +02:00
default = pkgs.searx;
defaultText = "pkgs.searx";
description = "searx package to use.";
};
2014-03-07 20:09:59 +01:00
};
};
###### implementation
config = mkIf config.services.searx.enable {
users.users.searx =
2014-03-07 20:09:59 +01:00
{ uid = config.ids.uids.searx;
description = "Searx user";
createHome = true;
home = "/var/lib/searx";
};
users.groups.searx =
2014-03-07 20:09:59 +01:00
{ gid = config.ids.gids.searx;
};
systemd.services.searx =
{
description = "Searx server, the meta search engine.";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
2014-03-09 18:57:17 +01:00
serviceConfig = {
User = "searx";
ExecStart = "${cfg.package}/bin/searx-run";
2014-03-09 18:57:17 +01:00
};
2017-04-04 17:14:32 +02:00
} // (optionalAttrs (configFile != null) {
2014-03-09 18:57:17 +01:00
environment.SEARX_SETTINGS_PATH = configFile;
});
2014-03-07 20:09:59 +01:00
environment.systemPackages = [ cfg.package ];
2014-03-07 20:09:59 +01:00
};
}