vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / networking / scion / scion-router.nix
blob7587a06ed9dbe852d570932dda73504dc328a0e6
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   globalCfg = config.services.scion;
7   cfg = config.services.scion.scion-router;
8   toml = pkgs.formats.toml { };
9   defaultConfig = {
10     general = {
11       id = "br";
12       config_dir = "/etc/scion";
13     };
14   };
15   configFile = toml.generate "scion-router.toml" (recursiveUpdate defaultConfig cfg.settings);
18   options.services.scion.scion-router = {
19     enable = mkEnableOption "the scion-router service";
20     settings = mkOption {
21       default = { };
22       type = toml.type;
23       example = literalExpression ''
24         {
25           general.id = "br";
26         }
27       '';
28       description = ''
29         scion-router configuration. Refer to
30         <https://docs.scion.org/en/latest/manuals/common.html>
31         for details on supported values.
32       '';
33     };
34   };
35   config = mkIf cfg.enable {
36     systemd.services.scion-router = {
37       description = "SCION Router";
38       after = [ "network-online.target" ];
39       wants = [ "network-online.target" ];
40       wantedBy = [ "multi-user.target" ];
41       serviceConfig = {
42         Type = "simple";
43         ExecStart = "${globalCfg.package}/bin/scion-router --config ${configFile}";
44         Restart = "on-failure";
45         DynamicUser = true;
46         ${if globalCfg.stateless then "RuntimeDirectory" else "StateDirectory"} = "scion-router";
47       };
48     };
49   };