python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / networking / r53-ddns.nix
blob277b65dcecd4756f9e0738facde0d40d1d3305a1
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.services.r53-ddns;
7   pkg = pkgs.r53-ddns;
8 in
10   options = {
11     services.r53-ddns = {
13       enable = mkEnableOption (lib.mdDoc "r53-ddyns");
15       interval = mkOption {
16         type = types.str;
17         default = "15min";
18         description = lib.mdDoc "How often to update the entry";
19       };
21       zoneID = mkOption {
22         type = types.str;
23         description = lib.mdDoc "The ID of your zone in Route53";
24       };
26       domain = mkOption {
27         type = types.str;
28         description = lib.mdDoc "The name of your domain in Route53";
29       };
31       hostname = mkOption {
32         type = types.str;
33         description = lib.mdDoc ''
34           Manually specify the hostname. Otherwise the tool will try to use the name
35           returned by the OS (Call to gethostname)
36         '';
37       };
39       environmentFile = mkOption {
40         type = types.str;
41         description = lib.mdDoc ''
42           File containing the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
43           in the format of an EnvironmentFile as described by systemd.exec(5)
44         '';
45       };
47     };
48   };
50   config = mkIf cfg.enable {
52     systemd.timers.r53-ddns = {
53       description = "r53-ddns timer";
54       wantedBy = [ "timers.target" ];
55       timerConfig = {
56         OnBootSec = cfg.interval;
57         OnUnitActiveSec = cfg.interval;
58       };
59     };
61     systemd.services.r53-ddns = {
62       description = "r53-ddns service";
63       serviceConfig = {
64         ExecStart = "${pkg}/bin/r53-ddns -zone-id ${cfg.zoneID} -domain ${cfg.domain}"
65           + lib.optionalString (cfg.hostname != null) " -hostname ${cfg.hostname}";
66         EnvironmentFile = "${cfg.environmentFile}";
67         DynamicUser = true;
68       };
69     };
71   };