Breaking changes announcement for unstable

Let’s try this out for a while and see how it goes. I am starting this as a response to Should we consider a deprecation/removal policy for Nixpkgs?, go there if you want to discuss things.

  • If you have (or see) a PR that removes package or has otherwise backwards incompatible changes, link it in here (together with a short sentence about what exactly is affected).
  • If you run on unstable and want to know in advance when something is about to break, subscribe to this thread.
  • If you have a breaking PR, give people enough time to react to it before merging.
  • I think we can also include module changes as well. Shouldn’t be too noisy.
  • To keep the noise low, please don’t discuss on this thread. Use the one liked above instead.

2 posts were merged into an existing topic: Should we consider a deprecation/removal policy for Nixpkgs?

Heads up!

The Matrix-Synapse module is going to use RFC42 soon. That means many top-level options (services.matrix-synapse) will need to be moved below services.matrix-synapse.settings).

The use of mkRenamedOptionModule is unfortunately broken with types.submodule, so the migration consists of lots of mkRemovedOptionModules instead


The Home Assistant package is also going to use a RFC42 style configuration.

Due to the way that default values are now reflected as options below services.home-assistant.config, the declarative configuration by default is not null anymore.

That means that config needs to be explicitly set to null, if the config is not supposed to be managed declaratively. Otherwise the module will take full control of your configuration.yaml, and potentially delete your imperatively managed configuration.

Also two module options are going away:

  • autoExtraComponents is now enabled unconditionally
  • The settings applied through applyDefaultConfig are now explicit options with the same default values on the services.home-assistant.config option.

The taskserver module will no longer automatically open ports in the firewall
configuration. This is to allow end users to freely choose on which network
interface(s) they want to expose the service. The previous behaviour can be
restored by explicitly adding to the
list networking.firewall.allowedTCPPorts.


I’m refactoring pkgs.makeDesktopEntry to use proper Nix types where possible. I’ve updated all the consumers in Nixpkgs itself, but user configs may need slight changes.


This may not affect a wide range of users, but it is a breaking change for everyone running a scientific compute cluster on NIxOS:


With the following change loading the dummy and bonding kernel driver stopped creating the dummy0 or bond0 interface automatically. Relying on this behaviour is problematic, because the first interface being created automatically creates an outlier. All following interfaces would need to be created manually anyway.

On top of that, since systemd-networkd does not currently recreate netdevs, precreating them like that will set default netdev options that may be undesirable, like the wrong bonding mode (balance-rr vs 802.3ad), which can’t be changed once the link exists.

These are systemd’s default modprobe.d rules, which exist since 2017. They also ship their own explanation for these rules, that everyone can browse here:

Thanks to @grahamc, who made me aware of this bug and the misconceptions I had about this behaviour.

Will follow up with release notes shortly, this had been forgotten.

2 Likes disables polkit by default, which then needs to be re-enabled by the modules that require it. The big ones have been tested, but this might break some of the more obscure setups.

This is more a potentially breaking change than a backwards incompatibility, therefore no action should be required outside of nixpkgs.

1 Like

Note, certain aliases now throw instead of being a warning. Especially look out for “manpages”.

1 Like

I’m a bit late, but the GNOME 42 update was merged two days ago and finally hit unstable today. As usual, there are some backwards incompatible changes that require manual intervention. Also, some breakage has already been caught.

1 Like

OpenLDAP was updated from the 2.4 series to 2.6.2 today. With it comes the removal of a few storage backends, like hdb, bdb and ndb. Before upgrading everyone should dump their database (slapcat -n 1) and make sure they have a working backup. If you’re looking for a new sane default, use mdb.

1 Like

checkMeta is being enabled by default. Meta attributes have occasionally been checked for long enough so that this should not break much, but it still is a breaking change. This might slightly affect evaluation performance, but there is always the option to explicitly turn the check off.

1 Like
Hosted by Flying Circus.