From a6c31c856b44058079de808793f762aca38dadca Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Mon, 16 Dec 2024 11:22:00 +0000 Subject: [PATCH] nixos/tzupdate: add timer and package options --- nixos/modules/services/misc/tzupdate.nix | 32 +++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/misc/tzupdate.nix b/nixos/modules/services/misc/tzupdate.nix index 65a6f7d72098..454b47620e11 100644 --- a/nixos/modules/services/misc/tzupdate.nix +++ b/nixos/modules/services/misc/tzupdate.nix @@ -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 { @@ -35,7 +54,7 @@ in 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" @@ -46,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 ];