nixos/automatic-timezoned: Fix boot delays and systemd unit ordering
Since the service sets `WantedBy=default.target`, `graphical.target` ends up waiting for it to complete. Since `geoclue.service`, which *this* service depends on, in turn depends on `network-online.target`, this ends up making full boot wait for network availability. This is obviously unintended; The unit should have always had an `After=default.target`. Furthermore, the systemd docs recommend depending on specifically `multi-user.target` *or* `graphical.target`, rather than `default.target`. In practice, on a default NixOS system, using `default.target` delays starting this service until a graphical session starts - this is obviously not ideal, since it makes sense to update the timezone on a non-graphical system as well, so we fix that while we're at it.
This commit is contained in:
@@ -57,13 +57,16 @@ in
|
||||
automatic-timezoned = {
|
||||
description = "Automatically update system timezone based on location";
|
||||
requires = [ "automatic-timezoned-geoclue-agent.service" ];
|
||||
after = [ "automatic-timezoned-geoclue-agent.service" ];
|
||||
after = [
|
||||
"automatic-timezoned-geoclue-agent.service"
|
||||
"multi-user.target"
|
||||
];
|
||||
serviceConfig = {
|
||||
Type = "exec";
|
||||
User = "automatic-timezoned";
|
||||
ExecStart = "${cfg.package}/bin/automatic-timezoned";
|
||||
};
|
||||
wantedBy = [ "default.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
|
||||
automatic-timezoned-geoclue-agent = {
|
||||
@@ -77,7 +80,6 @@ in
|
||||
Restart = "on-failure";
|
||||
PrivateTmp = true;
|
||||
};
|
||||
wantedBy = [ "default.target" ];
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user