1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-28 08:31:59 +00:00

nixos/meilisearch: init

Reviewed-by: Aaron Andersen <aanderse@users.noreply.github.com>
(cherry picked from commit 5844ea85c3)
This commit is contained in:
Oleksii Filonenko 2020-04-07 11:43:33 +03:00 committed by Raphael Megzari
parent 0a44482ab5
commit 811fe35a66
2 changed files with 84 additions and 0 deletions

View file

@ -899,6 +899,7 @@
./services/search/elasticsearch-curator.nix
./services/search/hound.nix
./services/search/kibana.nix
./services/search/meilisearch.nix
./services/search/solr.nix
./services/security/certmgr.nix
./services/security/cfssl.nix

View file

@ -0,0 +1,83 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.meilisearch;
in {
meta.maintainers = with maintainers; [ filalex77 ];
###### interface
options.services.meilisearch = {
enable = mkEnableOption "MeiliSearch - a RESTful search API";
listenAddress = mkOption {
description = "MeiliSearch listen address.";
default = "127.0.0.1";
type = types.str;
};
listenPort = mkOption {
description = "MeiliSearch port to listen on.";
default = 7700;
type = types.port;
};
environment = mkOption {
description = "Defines the running environment of MeiliSearch.";
default = "development";
type = types.enum [ "development" "production" ];
};
masterKeyFile = mkOption {
description = ''
Path to file which contains the master key.
By doing so, all routes will be protected and will require a key to be accessed.
If no master key is provided, all routes can be accessed without requiring any key.
'';
default = null;
type = with types; nullOr path;
};
noAnalytics = mkOption {
description = ''
Deactivates analytics.
Analytics allow MeiliSearch to know how many users are using MeiliSearch,
which versions and which platforms are used.
This process is entirely anonymous.
'';
default = false;
type = types.bool;
};
};
###### implementation
config = mkIf cfg.enable {
systemd.services.meilisearch = {
description = "MeiliSearch daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
environment = let
masterKey = mkIf (cfg.masterKeyFile != null) (builtins.readFile cfg.masterKeyFile);
in {
MEILI_DB_PATH = "/var/lib/meilisearch";
MEILI_HTTP_ADDR = "${cfg.listenAddress}:${toString cfg.listenPort}";
MEILI_MASTER_KEY = masterKey;
MEILI_NO_ANALYTICS = toString cfg.noAnalytics;
MEILI_ENV = cfg.environment;
};
serviceConfig = {
ExecStart = "${pkgs.meilisearch}/bin/meilisearch";
DynamicUser = true;
StateDirectory = "meilisearch";
};
};
environment.systemPackages = [ pkgs.meilisearch ];
};
}