Unverified Commit aca27064 authored by xanderio's avatar xanderio Committed by GitHub
Browse files

nixos/tzupdate: make enabled module actually be enabled (#361373)

parents a8004f9f a6c31c85
Loading
Loading
Loading
Loading
+35 −4
Original line number Diff line number Diff line
@@ -18,6 +18,25 @@ in
        update the timezone.
      '';
    };

    package = lib.mkPackageOption pkgs "tzupdate" { };

    timer.enable = lib.mkOption {
      type = lib.types.bool;
      default = true;
      description = ''
        Enable the tzupdate timer to update the timezone automatically.
      '';
    };

    timer.interval = lib.mkOption {
      type = lib.types.str;
      default = "hourly";
      description = ''
        The interval at which the tzupdate timer should run. See
        {manpage}`systemd.time(7)` to understand the format.
      '';
    };
  };

  config = lib.mkIf cfg.enable {
@@ -26,15 +45,16 @@ in
    # zone, which is better than silently overriding it.
    time.timeZone = null;

    # We provide a one-shot service which can be manually run. We could
    # provide a service that runs on startup, but it's tricky to get
    # a service to run after you have *internet* access.
    # We provide a one-shot service that runs at startup once network
    # interfaces are up, but we can’t ensure we actually have Internet access
    # at that point. It can also be run manually with `systemctl start tzupdate`.
    systemd.services.tzupdate = {
      description = "tzupdate timezone update service";
      wantedBy = [ "multi-user.target" ];
      wants = [ "network-online.target" ];
      after = [ "network-online.target" ];
      script = ''
        timezone="$(${lib.getExe pkgs.tzupdate} --print-only)"
        timezone="$(${lib.getExe cfg.package} --print-only)"
        if [[ -n "$timezone" ]]; then
          echo "Setting timezone to '$timezone'"
          timedatectl set-timezone "$timezone"
@@ -45,6 +65,17 @@ in
        Type = "oneshot";
      };
    };

    systemd.timers.tzupdate = {
      enable = cfg.timer.enable;
      interval = cfg.timer.interval;
      timerConfig = {
        OnStartupSec = "30s";
        OnCalendar = cfg.timer.interval;
        Persistent = true;
      };
      wantedBy = [ "timers.target" ];
    };
  };

  meta.maintainers = with lib.maintainers; [ doronbehar ];