vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / networking / scion / scion-daemon.nix
blob09416178d35abd140596de71f9863b87605dcde6
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   globalCfg = config.services.scion;
7   cfg = config.services.scion.scion-daemon;
8   toml = pkgs.formats.toml { };
9   connectionDir = if globalCfg.stateless then "/run" else "/var/lib";
10   defaultConfig = {
11     general = {
12       id = "sd";
13       config_dir = "/etc/scion";
14       reconnect_to_dispatcher = true;
15     };
16     path_db = {
17       connection = "${connectionDir}/scion-daemon/sd.path.db";
18     };
19     trust_db = {
20       connection = "${connectionDir}/scion-daemon/sd.trust.db";
21     };
22     log.console = {
23       level = "info";
24     };
25   };
26   configFile = toml.generate "scion-daemon.toml" (recursiveUpdate defaultConfig cfg.settings);
29   options.services.scion.scion-daemon = {
30     enable = mkEnableOption "the scion-daemon service";
31     settings = mkOption {
32       default = { };
33       type = toml.type;
34       example = literalExpression ''
35         {
36           path_db = {
37             connection = "/run/scion-daemon/sd.path.db";
38           };
39           log.console = {
40             level = "info";
41           };
42         }
43       '';
44       description = ''
45         scion-daemon configuration. Refer to
46         <https://docs.scion.org/en/latest/manuals/common.html>
47         for details on supported values.
48       '';
49     };
50   };
51   config = mkIf cfg.enable {
52     systemd.services.scion-daemon = {
53       description = "SCION Daemon";
54       after = [ "network-online.target" "scion-dispatcher.service" ];
55       wants = [ "network-online.target" "scion-dispatcher.service" ];
56       wantedBy = [ "multi-user.target" ];
57       serviceConfig = {
58         Type = "simple";
59         ExecStart = "${globalCfg.package}/bin/scion-daemon --config ${configFile}";
60         Restart = "on-failure";
61         DynamicUser = true;
62         ${if globalCfg.stateless then "RuntimeDirectory" else "StateDirectory"} = "scion-daemon";
63       };
64     };
65   };