{ config, lib, pkgs, ... }: with lib; let cfg = config.time; timeZone = optionalString (cfg.timeZone != null) '' if ! systemsetup -listtimezones | grep -q "^ ${cfg.timeZone}$"; then echo "${cfg.timeZone} is not a valid timezone. The command 'listtimezones' will show a list of valid time zones." >&2 false fi systemsetup -settimezone "${cfg.timeZone}" 2>/dev/null 1>&2 ''; in { options = { time.timeZone = mkOption { type = types.nullOr types.str; default = null; example = "America/New_York"; description = '' The time zone used when displaying times and dates. See or run {command}`sudo systemsetup -listtimezones` for a comprehensive list of possible values for this setting. ''; }; }; config = { system.activationScripts.time.text = mkIf (cfg.timeZone != null) '' # Set defaults echo "configuring time..." >&2 ${timeZone} ''; }; }