nixos/systemd: Temporarily bring back multi-user -> network-online
There were several modules, critically including NetworkManager, which were not prepared for this change. Most of the change was good, however. Let's bring back the dependency and change the assertion to a warning for now.
This commit is contained in:
parent
e041a4bbea
commit
0d85bf0efe
2 changed files with 35 additions and 39 deletions
|
@ -138,12 +138,10 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
- `services.avahi.nssmdns` got split into `services.avahi.nssmdns4` and `services.avahi.nssmdns6` which enable the mDNS NSS switch for IPv4 and IPv6 respectively.
|
- `services.avahi.nssmdns` got split into `services.avahi.nssmdns4` and `services.avahi.nssmdns6` which enable the mDNS NSS switch for IPv4 and IPv6 respectively.
|
||||||
Since most mDNS responders only register IPv4 addresses, most users want to keep the IPv6 support disabled to avoid long timeouts.
|
Since most mDNS responders only register IPv4 addresses, most users want to keep the IPv6 support disabled to avoid long timeouts.
|
||||||
|
|
||||||
- `multi-user.target` no longer depends on `network-online.target`.
|
- A warning has been added for services that are
|
||||||
This will potentially break services that assumed this was the case in the past.
|
`after = [ "network-online.target" ]` but do not depend on it (e.g. using
|
||||||
This was changed for consistency with other distributions as well as improved boot times.
|
`wants`), because the dependency that `multi-user.target` has on
|
||||||
|
`network-online.target` is planned for removal.
|
||||||
We have added a warning for services that are
|
|
||||||
`after = [ "network-online.target" ]` but do not depend on it (e.g. using `wants`).
|
|
||||||
|
|
||||||
- `services.archisteamfarm` no longer uses the abbreviation `asf` for its state directory (`/var/lib/asf`), user and group (both `asf`). Instead the long name `archisteamfarm` is used.
|
- `services.archisteamfarm` no longer uses the abbreviation `asf` for its state directory (`/var/lib/asf`), user and group (both `asf`). Instead the long name `archisteamfarm` is used.
|
||||||
Configurations with `system.stateVersion` 23.11 or earlier, default to the old stateDirectory until the 24.11 release and must either set the option explicitly or move the data to the new directory.
|
Configurations with `system.stateVersion` 23.11 or earlier, default to the old stateDirectory until the 24.11 release and must either set the option explicitly or move the data to the new directory.
|
||||||
|
|
|
@ -428,7 +428,13 @@ in
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
|
||||||
warnings = concatLists (
|
warnings = let
|
||||||
|
mkOneNetOnlineWarn = typeStr: name: def: lib.optional
|
||||||
|
(lib.elem "network-online.target" def.after && !(lib.elem "network-online.target" (def.wants ++ def.requires ++ def.bindsTo)))
|
||||||
|
"${name}.${typeStr} is ordered after 'network-online.target' but doesn't depend on it";
|
||||||
|
mkNetOnlineWarns = typeStr: defs: lib.concatLists (lib.mapAttrsToList (mkOneNetOnlineWarn typeStr) defs);
|
||||||
|
mkMountNetOnlineWarns = typeStr: defs: lib.concatLists (map (m: mkOneNetOnlineWarn typeStr m.what m) defs);
|
||||||
|
in concatLists (
|
||||||
mapAttrsToList
|
mapAttrsToList
|
||||||
(name: service:
|
(name: service:
|
||||||
let
|
let
|
||||||
|
@ -449,39 +455,30 @@ in
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
cfg.services
|
cfg.services
|
||||||
);
|
)
|
||||||
|
++ (mkNetOnlineWarns "target" cfg.targets)
|
||||||
|
++ (mkNetOnlineWarns "service" cfg.services)
|
||||||
|
++ (mkNetOnlineWarns "socket" cfg.sockets)
|
||||||
|
++ (mkNetOnlineWarns "timer" cfg.timers)
|
||||||
|
++ (mkNetOnlineWarns "path" cfg.paths)
|
||||||
|
++ (mkMountNetOnlineWarns "mount" cfg.mounts)
|
||||||
|
++ (mkMountNetOnlineWarns "automount" cfg.automounts)
|
||||||
|
++ (mkNetOnlineWarns "slice" cfg.slices);
|
||||||
|
|
||||||
assertions = let
|
assertions = concatLists (
|
||||||
mkOneAssert = typeStr: name: def: {
|
mapAttrsToList
|
||||||
assertion = lib.elem "network-online.target" def.after -> lib.elem "network-online.target" (def.wants ++ def.requires ++ def.bindsTo);
|
(name: service:
|
||||||
message = "${name}.${typeStr} is ordered after 'network-online.target' but doesn't depend on it";
|
map (message: {
|
||||||
};
|
assertion = false;
|
||||||
mkAsserts = typeStr: lib.mapAttrsToList (mkOneAssert typeStr);
|
inherit message;
|
||||||
mkMountAsserts = typeStr: map (m: mkOneAssert typeStr m.what m);
|
}) (concatLists [
|
||||||
in mkMerge [
|
(optional ((builtins.elem "network-interfaces.target" service.after) || (builtins.elem "network-interfaces.target" service.wants))
|
||||||
(concatLists (
|
"Service '${name}.service' is using the deprecated target network-interfaces.target, which no longer exists. Using network.target is recommended instead."
|
||||||
mapAttrsToList
|
)
|
||||||
(name: service:
|
])
|
||||||
map (message: {
|
)
|
||||||
assertion = false;
|
cfg.services
|
||||||
inherit message;
|
);
|
||||||
}) (concatLists [
|
|
||||||
(optional ((builtins.elem "network-interfaces.target" service.after) || (builtins.elem "network-interfaces.target" service.wants))
|
|
||||||
"Service '${name}.service' is using the deprecated target network-interfaces.target, which no longer exists. Using network.target is recommended instead."
|
|
||||||
)
|
|
||||||
])
|
|
||||||
)
|
|
||||||
cfg.services
|
|
||||||
))
|
|
||||||
(mkAsserts "target" cfg.targets)
|
|
||||||
(mkAsserts "service" cfg.services)
|
|
||||||
(mkAsserts "socket" cfg.sockets)
|
|
||||||
(mkAsserts "timer" cfg.timers)
|
|
||||||
(mkAsserts "path" cfg.paths)
|
|
||||||
(mkMountAsserts "mount" cfg.mounts)
|
|
||||||
(mkMountAsserts "automount" cfg.automounts)
|
|
||||||
(mkAsserts "slice" cfg.slices)
|
|
||||||
];
|
|
||||||
|
|
||||||
system.build.units = cfg.units;
|
system.build.units = cfg.units;
|
||||||
|
|
||||||
|
@ -658,6 +655,7 @@ in
|
||||||
systemd.services.systemd-udev-settle.restartIfChanged = false; # Causes long delays in nixos-rebuild
|
systemd.services.systemd-udev-settle.restartIfChanged = false; # Causes long delays in nixos-rebuild
|
||||||
systemd.targets.local-fs.unitConfig.X-StopOnReconfiguration = true;
|
systemd.targets.local-fs.unitConfig.X-StopOnReconfiguration = true;
|
||||||
systemd.targets.remote-fs.unitConfig.X-StopOnReconfiguration = true;
|
systemd.targets.remote-fs.unitConfig.X-StopOnReconfiguration = true;
|
||||||
|
systemd.targets.network-online.wantedBy = [ "multi-user.target" ];
|
||||||
systemd.services.systemd-importd.environment = proxy_env;
|
systemd.services.systemd-importd.environment = proxy_env;
|
||||||
systemd.services.systemd-pstore.wantedBy = [ "sysinit.target" ]; # see #81138
|
systemd.services.systemd-pstore.wantedBy = [ "sysinit.target" ]; # see #81138
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue