parent
922bd8182e
commit
281bf1dded
@ -0,0 +1,45 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
cfg = config.services.tzupdate; |
||||
in { |
||||
options.services.tzupdate = { |
||||
enable = mkOption { |
||||
type = types.bool; |
||||
default = false; |
||||
description = '' |
||||
Enable the tzupdate timezone updating service. This provides |
||||
a one-shot service which can be activated with systemctl to |
||||
update the timezone. |
||||
''; |
||||
}; |
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
# We need to have imperative time zone management for this to work. |
||||
# This will give users an error if they have set an explicit time |
||||
# 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. |
||||
systemd.services.tzupdate = { |
||||
description = "tzupdate timezone update service"; |
||||
wants = [ "network-online.target" ]; |
||||
after = [ "network-online.target" ]; |
||||
|
||||
serviceConfig = { |
||||
Type = "oneshot"; |
||||
# We could link directly into pkgs.tzdata, but at least timedatectl seems |
||||
# to expect the symlink to point directly to a file in etc. |
||||
# Setting the "debian timezone file" to point at /dev/null stops it doing anything. |
||||
ExecStart = "${pkgs.tzupdate}/bin/tzupdate -z /etc/zoneinfo -d /dev/null"; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
meta.maintainers = [ maintainers.michaelpj ]; |
||||
} |
Loading…
Reference in new issue