Breaking changes announcement for unstable

Per our Python update schedule, we will bump the primary python3 attribute from 3.12 to 3.13 in the next staging cycle. We will keep recursing into python312Packages and python313Packages for NixOS 25.11.

The PR for python-updates will be up shortly, and we’ll be resolving the gravest issues there and in the upcoming staging-next branch.

Feel free to join #python:nixos.org if you have questions.

5 Likes

With the GNOME 48 update, gnomeExtensions attrset will have extensions that support GNOME 46, 47, and 48, instead of 45-47.

You can still find the old extensions in gnomeXYExtensions set. e.g., gnome45Extensions."UUID"

1 Like

When using postgresql on unstable, please read the newly added sections of the 25.11 release notes. Tl;dr the code for ensureUsers et al. is now executed in its own unit, postgresql-setup.service.

10 Likes

We are preparing the migration of the minimal ISO installer to NetworkManager and in that process we found opportunities to meaningfully reduce its closure size.

The cliff notes are this:

  • NetworkManager will not ship with VPN plugins by default any more
  • All required VPN plugins need to be specified in networking.networkmanager.plugins

How to find the plugins you need?

  • Search on search.nixos.org
  • Check the list of plugins and builtins maintained by the upstream project. We should have support for most of them, so it can be a start to look up what’s required.
  • Finally, the list of plugins in nixpkgs
    # via removed enableDefaultPlugins option
    networkmanager-fortisslvpn
    networkmanager-iodine
    networkmanager-l2tp
    networkmanager-openconnect
    networkmanager-openvpn
    networkmanager-sstp
    networkmanager-vpnc
    # via removed enableStrongSwan option
    networkmanager-strongswan
    

The worst thing that can happen is that you update and NetworkManager will not be able to start or edit the VPN configuration. The configuration will not be lost and installing the relevant plugin will make it work again.

42 Likes

Downstream users of the pnpm tooling in nixpkgs (as well as authors of open PRs to nixpkgs) have to define fetcherVersion when calling pnpm.fetchDeps now.

See pnpm.fetchDeps: ensure consistent permissions, add versioning by gepbird · Pull Request #422975 · NixOS/nixpkgs · GitHub

8 Likes

NixOS display manager modules now strictly use tty1, where many of them previously used tty7. Options to configure display managers’ VT have been dropped. A configuration with a display manager enabled will not start getty@tty1.service, even if the system is forced to boot into multi-user.target instead of graphical.target.

14 Likes

well… nixosTests.ly: use TTY1 by wamserma · Pull Request #429957 · NixOS/nixpkgs · GitHub

3 Likes

systemd.extraConfig has been converted to systemd.settings.Manager, and boot.initrd.systemd.extraConfig to boot.initrd.systemd.settings.Manager, along with other minor changes. For example, if previously your config contained:

boot.initrd.systemd.extraConfig = ''
  StatusUnitFormat=combined
'';

then you should update it to:

boot.initrd.systemd.settings.Manager = {
  StatusUnitFormat = "combined";
};
16 Likes

reaction v2.2 brings a small breaking change, that should be welcome for most users.
Old behavior is still possible but is not the default: v2.2.0 · ppom / reaction · GitLab

1 Like

The systemd target kbrequest.target is now unset by default, instead of being forcibly symlinked to rescue.target. In case you were relying on the behavior of Alt + ArrowUp on the tty causing the your system to go into the emergency shell, you can restore it by setting

systemd.targets.rescue.aliases = [ "kbrequest.target" ];

in your configuration.

6 Likes

Plasma 5, along with Qt5 based KDE Gear, is gone. Dead. Deleted in its entirety. Following it to its much too late demise are Maui and Deepin, two desktop shells that are still to be ported to Qt6, and were generally not well maintained in nixpkgs to begin with. If you are, somehow, despite all the warnings, still running Plasma 5, please switch to Plasma 6. I promise it doesn’t bite.

35 Likes

The default value of boot.enableContainers has been changed, so that its true once containers have been defined. If you use the nixos-container tool for imperative container management, set boot.enableContainers = true; explicitly.

8 Likes

The full flavor of the Python 3 interpreter is going away.

The two features it provided were support for Bluetooth sockets and X11.

Bluetooth sockets (socket.AF_BLUETOOTH) will be supported in the default python3 package.

The X11 support was used to build tkinter. For nixpkgs this module is not built-in, but instead available from the package set (python3Packages.tkinter). This is a meaningful reduction in the closure size for python3, which is why it was only available in python3Full and is not being added to the default python3 build.

20 Likes

This seems to be a breaking change to me as well:
services.zigbee2mqtt.settings.homeassistant = true must be converted to services.zigbee2mqtt.settings.homeassistant.enabled = true.

Especially as the error message is not helping either:

error: evaluation aborted with the following error message: '(t.merge.v2 defs).value must only be accessed when .headError == null. This is a bug in code that consumes a module system type.

As the default is set correctly this only happens when manually setting in the configuration (e.g. when home assistant is not running on the same server).

5 Likes

This error will be improved in lib/types: fix either lazy value regression in case of non-matching v… by hsjobeki · Pull Request #438558 · NixOS/nixpkgs · GitHub

4 Likes

2 posts were split to a new topic: Fixing the error message for either in freeformType values

libpinyin, which is used for Chinese character input, is migrating from the unmaintained BDB database format to the newer KyotoCabinet database format. If you want to migrate your user input statistics you can consider using bdbtokyotodb.

6 Likes

prometheus-script-exporter has been switched to a fork which has been more recently maintained. see prometheus-script-exporter: switch to maintained fork by c4patino · Pull Request #435767 · NixOS/nixpkgs · GitHub. users of this package will have to rewrite their configurations to fit the new schemas put in by the fork. this will not be backported and the old version is still available on 25.11

5 Likes

virtualisation.libvirtd changes in #421549 removes submodule virtualisation.libvirtd.qemu.ovmf in favor of stably linking to OVMF image and variable templates that get distributed with QEMU.

From nixos/doc/manual/release-notes/rl-2511.section.md changes:

  • Domains that rely on automatic firmware and feature handling, i.e. <os firmware='efi'> need to trigger an update to <loader> and <nvram> entries.
    Using virsh edit <domain> and deleting aforementioned tags will cause libvirt to replace them with the new paths.
  • Configurations that relied on virtualisation.libvirtd.qemu.ovmf and had domains that did not use automatic firmware and feature handling, require a manual change to their domain configuration, updating <loader> and <nvram> entries from old path to the new path.
    Old Path New Path
    /run/libvirt/nix-ovmf/OVMF_CODE.fd /run/libvirt/nix-ovmf/edk2-x86_64-code.fd
    /run/libvirt/nix-ovmf/OVMF_VARS.fd /run/libvirt/nix-ovmf/edk2-i386-vars.fd
    /run/libvirt/nix-ovmf/OVMF_CODE.ms.fd /run/libvirt/nix-ovmf/edk2-x86_64-secure-code.fd
    /run/libvirt/nix-ovmf/OVMF_VARS.ms.fd /run/libvirt/nix-ovmf/edk2-i386-vars.fd
    /run/libvirt/nix-ovmf/AAVMF_CODE.fd /run/libvirt/nix-ovmf/edk2-aarch64-code.fd
    /run/libvirt/nix-ovmf/AAVMF_VARS.fd /run/libvirt/nix-ovmf/edk2-arm-vars.fd
    /run/libvirt/nix-ovmf/AAVMF_CODE.ms.fd /run/libvirt/nix-ovmf/edk2-aarch64-code.fd
    /run/libvirt/nix-ovmf/AAVMF_VARS.ms.fd /run/libvirt/nix-ovmf/edk2-arm-vars.fd
9 Likes

services.tt-rss has been removed, as the upstream software has been discontinued and the source will no longer be available after Nov 1st, which is before the release of 25.11 and thus it was removed for maintainability.

Upstream announcement: The end of tt-rss.org - Announcements - Tiny Tiny RSS: Community

4 Likes