aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/services/misc/osrm.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/services/misc/osrm.nix')
-rw-r--r--nixpkgs/nixos/modules/services/misc/osrm.nix85
1 files changed, 85 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/services/misc/osrm.nix b/nixpkgs/nixos/modules/services/misc/osrm.nix
new file mode 100644
index 00000000000..f89f37ccd9d
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/misc/osrm.nix
@@ -0,0 +1,85 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.services.osrm;
+in
+
+{
+ options.services.osrm = {
+ enable = mkOption {
+ type = types.bool;
+ default = false;
+ description = "Enable the OSRM service.";
+ };
+
+ address = mkOption {
+ type = types.str;
+ default = "0.0.0.0";
+ description = "IP address on which the web server will listen.";
+ };
+
+ port = mkOption {
+ type = types.int;
+ default = 5000;
+ description = "Port on which the web server will run.";
+ };
+
+ threads = mkOption {
+ type = types.int;
+ default = 4;
+ description = "Number of threads to use.";
+ };
+
+ algorithm = mkOption {
+ type = types.enum [ "CH" "CoreCH" "MLD" ];
+ default = "MLD";
+ description = "Algorithm to use for the data. Must be one of CH, CoreCH, MLD";
+ };
+
+ extraFlags = mkOption {
+ type = types.listOf types.str;
+ default = [];
+ example = [ "--max-table-size 1000" "--max-matching-size 1000" ];
+ description = "Extra command line arguments passed to osrm-routed";
+ };
+
+ dataFile = mkOption {
+ type = types.path;
+ example = "/var/lib/osrm/berlin-latest.osrm";
+ description = "Data file location";
+ };
+
+ };
+
+ config = mkIf cfg.enable {
+
+ users.users.osrm = {
+ group = config.users.users.osrm.name;
+ description = "OSRM user";
+ createHome = false;
+ };
+
+ users.groups.osrm = { };
+
+ systemd.services.osrm = {
+ description = "OSRM service";
+ after = [ "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+
+ serviceConfig = {
+ User = config.users.users.osrm.name;
+ ExecStart = ''
+ ${pkgs.osrm-backend}/bin/osrm-routed \
+ --ip ${cfg.address} \
+ --port ${toString cfg.port} \
+ --threads ${toString cfg.threads} \
+ --algorithm ${cfg.algorithm} \
+ ${toString cfg.extraFlags} \
+ ${cfg.dataFile}
+ '';
+ };
+ };
+ };
+}