python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / misc / osrm.nix
blobbcfb868422cc797575e6504170a9bb2855357fa3
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.services.osrm;
7 in
10   options.services.osrm = {
11     enable = mkOption {
12       type = types.bool;
13       default = false;
14       description = lib.mdDoc "Enable the OSRM service.";
15     };
17     address = mkOption {
18       type = types.str;
19       default = "0.0.0.0";
20       description = lib.mdDoc "IP address on which the web server will listen.";
21     };
23     port = mkOption {
24       type = types.int;
25       default = 5000;
26       description = lib.mdDoc "Port on which the web server will run.";
27     };
29     threads = mkOption {
30       type = types.int;
31       default = 4;
32       description = lib.mdDoc "Number of threads to use.";
33     };
35     algorithm = mkOption {
36       type = types.enum [ "CH" "CoreCH" "MLD" ];
37       default = "MLD";
38       description = lib.mdDoc "Algorithm to use for the data. Must be one of CH, CoreCH, MLD";
39     };
41     extraFlags = mkOption {
42       type = types.listOf types.str;
43       default = [];
44       example = [ "--max-table-size 1000" "--max-matching-size 1000" ];
45       description = lib.mdDoc "Extra command line arguments passed to osrm-routed";
46     };
48     dataFile = mkOption {
49       type = types.path;
50       example = "/var/lib/osrm/berlin-latest.osrm";
51       description = lib.mdDoc "Data file location";
52     };
54   };
56   config = mkIf cfg.enable {
58     users.users.osrm = {
59       group = config.users.users.osrm.name;
60       description = "OSRM user";
61       createHome = false;
62       isSystemUser = true;
63     };
65     users.groups.osrm = { };
67     systemd.services.osrm = {
68       description = "OSRM service";
69       after = [ "network.target" ];
70       wantedBy = [ "multi-user.target" ];
72       serviceConfig = {
73         User = config.users.users.osrm.name;
74         ExecStart = ''
75           ${pkgs.osrm-backend}/bin/osrm-routed \
76             --ip ${cfg.address} \
77             --port ${toString cfg.port} \
78             --threads ${toString cfg.threads} \
79             --algorithm ${cfg.algorithm} \
80             ${toString cfg.extraFlags} \
81             ${cfg.dataFile}
82         '';
83       };
84     };
85   };