環境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時間ほどオンラインに接続した後も同様です。
答え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