环境services.localtime.enable = true;
应该启动一个“简单的守护进程,用于根据当前位置保持系统时区最新。”,但是事实并非如此:
无法获取 /etc/localtime 的目标:没有这样的文件或目录
touch /etc/localtime
可能会在短期内修复它,但我不认为这是一个合理的解决方法——毕竟 NixOS 的 /etc 不应该以这种方式被黑客攻击。我想还需要一些其他设置才能完成这项工作,但文档没有提及任何内容。不幸的是,上面链接的错误报告没有受到任何关注,所以我希望这个社区中的人知道该怎么做。
设置time.timeZone = "UTC";
也一样结果服务启动。但是,该服务(和 geoclue 服务)不会产生任何有用的输出:
$ journalctl --boot --output=cat --unit geoclue.service
Starting Location Lookup Service...
Started Location Lookup Service.
$ journalctl --boot --output=cat --unit systemd-timedated.service
Starting Time & Date Service...
Started Time & Date Service.
Failed to set timezone: Europe/Zurich
和/etc/localtime 符号链接始终指向 /etc/zoneinfo/UTC即使在线一个小时左右后。
答案1
services.localtimed.enable = true;
NixOS 23.05 中的设置做似乎按预期工作:
❯ journalctl --boot --output=cat --unit=localtimed
Starting localtimed.service...
Started localtimed.service.
2023/10/09 08:59:12 Updated timezone to: Pacific/Auckland