grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / misc / osrm.nix
blob8feccbbfa72614a8dd634098f8d9ab5bca79bb7c
1 { config, lib, pkgs, ... }:
2 let
3   cfg = config.services.osrm;
4 in
7   options.services.osrm = {
8     enable = lib.mkOption {
9       type = lib.types.bool;
10       default = false;
11       description = "Enable the OSRM service.";
12     };
14     address = lib.mkOption {
15       type = lib.types.str;
16       default = "0.0.0.0";
17       description = "IP address on which the web server will listen.";
18     };
20     port = lib.mkOption {
21       type = lib.types.port;
22       default = 5000;
23       description = "Port on which the web server will run.";
24     };
26     threads = lib.mkOption {
27       type = lib.types.int;
28       default = 4;
29       description = "Number of threads to use.";
30     };
32     algorithm = lib.mkOption {
33       type = lib.types.enum [ "CH" "CoreCH" "MLD" ];
34       default = "MLD";
35       description = "Algorithm to use for the data. Must be one of CH, CoreCH, MLD";
36     };
38     extraFlags = lib.mkOption {
39       type = lib.types.listOf lib.types.str;
40       default = [];
41       example = [ "--max-table-size 1000" "--max-matching-size 1000" ];
42       description = "Extra command line arguments passed to osrm-routed";
43     };
45     dataFile = lib.mkOption {
46       type = lib.types.path;
47       example = "/var/lib/osrm/berlin-latest.osrm";
48       description = "Data file location";
49     };
51   };
53   config = lib.mkIf cfg.enable {
55     users.users.osrm = {
56       group = config.users.users.osrm.name;
57       description = "OSRM user";
58       createHome = false;
59       isSystemUser = true;
60     };
62     users.groups.osrm = { };
64     systemd.services.osrm = {
65       description = "OSRM service";
66       after = [ "network.target" ];
67       wantedBy = [ "multi-user.target" ];
69       serviceConfig = {
70         User = config.users.users.osrm.name;
71         ExecStart = ''
72           ${pkgs.osrm-backend}/bin/osrm-routed \
73             --ip ${cfg.address} \
74             --port ${toString cfg.port} \
75             --threads ${toString cfg.threads} \
76             --algorithm ${cfg.algorithm} \
77             ${toString cfg.extraFlags} \
78             ${cfg.dataFile}
79         '';
80       };
81     };
82   };