python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / misc / confd.nix
blob17c1be57ccbcd25decf920ee0cd0b33e7e98f076
1 { config, pkgs, lib, ... }:
3 with lib;
5 let
6   cfg = config.services.confd;
8   confdConfig = ''
9     backend = "${cfg.backend}"
10     confdir = "${cfg.confDir}"
11     interval = ${toString cfg.interval}
12     nodes = [ ${concatMapStringsSep "," (s: ''"${s}"'') cfg.nodes}, ]
13     prefix = "${cfg.prefix}"
14     log-level = "${cfg.logLevel}"
15     watch = ${boolToString cfg.watch}
16   '';
18 in {
19   options.services.confd = {
20     enable = mkEnableOption (lib.mdDoc "confd service");
22     backend = mkOption {
23       description = lib.mdDoc "Confd config storage backend to use.";
24       default = "etcd";
25       type = types.enum ["etcd" "consul" "redis" "zookeeper"];
26     };
28     interval = mkOption {
29       description = lib.mdDoc "Confd check interval.";
30       default = 10;
31       type = types.int;
32     };
34     nodes = mkOption {
35       description = lib.mdDoc "Confd list of nodes to connect to.";
36       default = [ "http://127.0.0.1:2379" ];
37       type = types.listOf types.str;
38     };
40     watch = mkOption {
41       description = lib.mdDoc "Confd, whether to watch etcd config for changes.";
42       default = true;
43       type = types.bool;
44     };
46     prefix = mkOption {
47       description = lib.mdDoc "The string to prefix to keys.";
48       default = "/";
49       type = types.path;
50     };
52     logLevel = mkOption {
53       description = lib.mdDoc "Confd log level.";
54       default = "info";
55       type = types.enum ["info" "debug"];
56     };
58     confDir = mkOption {
59       description = lib.mdDoc "The path to the confd configs.";
60       default = "/etc/confd";
61       type = types.path;
62     };
64     package = mkOption {
65       description = lib.mdDoc "Confd package to use.";
66       default = pkgs.confd;
67       defaultText = literalExpression "pkgs.confd";
68       type = types.package;
69     };
70   };
72   config = mkIf cfg.enable {
73     systemd.services.confd = {
74       description = "Confd Service.";
75       wantedBy = [ "multi-user.target" ];
76       after = [ "network.target" ];
77       serviceConfig = {
78         ExecStart = "${cfg.package}/bin/confd";
79       };
80     };
82     environment.etc = {
83       "confd/confd.toml".text = confdConfig;
84     };
86     environment.systemPackages = [ cfg.package ];
88     services.etcd.enable = mkIf (cfg.backend == "etcd") (mkDefault true);
89   };