Some implementation details of the NixOS network-interfaces module have been changed:
In the “scripted” backend (networking.useNetworkd = false, the default), network-setup.service has been removed and the network configuration services are now part of network.target, which is now directly pulled into multi-user.target. Consequently, interface addresses, routes and default gateways are configured asynchronously as soon as the underlying network devices become available (fixes issue #154737).
In both “networkd” and “scripted” backends, the configuration of name servers is now part of network-local-commands.service (fixes issue #445496).
The issue that resulted in a completely unconfigured network if both resolvconf was disabled and no default gateway configured, has also been fixed.
These shouldn’t be breaking changes, but if you relied on some of the internal details (like for custom netdevs, or ordered services after network-setup.service) then you may have to update your configuration.
promtail reached its end of life and will be dropped soon, as it is currently blocking the grafana-loki bump to 3.7.x:
Just like with the removal of grafana-agent a year prior, you can either migrate to grafana-alloy (which is what Grafana recommends), or, if you are looking for something more light-weight, fluent-bit.
post-resume.target has been removed. See {manpage}systemd.special(7) about sleep.target for instructions on ordering a process after resume with ExecStop=.
As part of the by-name migration for darwin, darwin.mkAppleDerivation has been removed from the darwin package set.
Since it only works for building the source releases packaged in Nixpkgs, it’s unlikely there are any external users, but the change is technically breaking.
Stage 1 (a.k.a. initrd) is now based on systemd by default, and the old scripted implementation is deprecated and scheduled for removal in 26.11. If you run into issues migrating, you can get help from the community or report an issue on GitHub.
You can temporarily revert to the scripted stage 1 implementation by disabling boot.initrd.systemd.enable, but this is discouraged.
Most incompatibilities will be explained with assertions during configuration evaluation, but be aware of the following that can’t be automatically detected:
If you use LUKS disk encryption, ensure that fileSystems."/".device is set to "/dev/mapper/<name>", where <name> matches the name in your boot.initrd.luks.devices.<name> definition, to avoid systemd timing out while prompting for a passphrase. If you have a more complex setup, e.g. with LVM on top of LUKS, you may need to add "x-systemd.device-timeout=infinity" to fileSystems."/".options instead. If you need to disable the timeout before you can boot into the system, pass systemd.default_device_timeout_sec=infinity on the kernel command line.
The cryptsetup-askpass program is not available; use systemctl default instead, which will prompt for passphrases as necessary. If you pipe password responses into SSH over stdin, use ssh -o RequestTTY=force to ensure systemctl default gets a TTY to prompt on.
Many kernel parameters have been replaced with native systemd versions; see the “Boot Problems” section in the manual when it updates.
Many third-party modules and tools have already been adapted for systemd stage 1, but some like nixos-infect will still require adjustment to be compatible
Whether you want to upgrade Dovecot to 2.4 or not, a lot of module options got renamed / removed because of this change so manual intervention may be required.
The source release sources are no longer tied to the SDK. They have been moved into the darwin package set. The apple-sdk.sourceRelease function is now an alias for darwin.sourceRelease and will be removed in a later release. Separating the source releases will allow the SDK to be updated more quickly (hopefully as soon as it is released).
Note: Different versions of the source releases are no longer available via the SDK. The only versions are those packaged in the darwin package set. They are currently a mix of 14.4, 15.4, and 15.6 source releases. I will be updating them shortly to 26.3.