Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
24 KiB
Release 25.05 (“Warbler”, 2025.05/??)
Highlights
-
This release of Nixpkgs requires macOS Big Sur 11.3 or newer, as announced in the 24.11 release notes. We cannot guarantee that packages will continue to work on older versions of macOS. Future Nixpkgs releases will only support macOS versions supported by Apple; this means that Nixpkgs 25.11 will require macOS Sonoma 14 or newer. Users on old macOS versions should consider upgrading to a supported version (potentially using OpenCore Legacy Patcher for old hardware) or installing NixOS. If neither of those options are viable and you require new versions of software, MacPorts supports versions back to Mac OS X Snow Leopard 10.6.
-
GCC has been updated from GCC 13 to GCC 14. This introduces some backwards‐incompatible changes; see the upstream porting guide for details.
-
LLVM has been updated from LLVM 16 (on Darwin) and LLVM 18 (on other platforms) to LLVM 19. This introduces some backwards‐incompatible changes; see the upstream release notes for details.
-
The default PHP version has been updated to 8.3.
-
nixos-rebuild-ng
, a full rewrite ofnixos-rebuild
in Python, is available for testing. You can enable it by setting system.rebuild.enableNg in your configuration (this will replace the oldnixos-rebuild
), or by addingnixos-rebuild-ng
to yourenvironment.systemPackages
(in this case, it will live side-by-side withnixos-rebuild
asnixos-rebuild-ng
). It is expected that the next major version of NixOS (25.11) will enablesystem.rebuild.enableNg
by default. -
A
nixos-rebuild build-image
sub-command has been added.It allows users to build platform-specific (disk) images from their NixOS configurations.
nixos-rebuild build-image
works similar to the popular nix-community/nixos-generators project. See new section on image building in the nixpkgs manual.
New Modules
-
Bazecor, the graphical configurator for Dygma Products.
-
Bonsai, a general-purpose event mapper/state machine primarily used to create complex key shortcuts, and as part of the SXMO desktop environment. Available as services.bonsaid.
-
scanservjs, a web UI for SANE scanners. Available at services.scanservjs.
-
Kimai, a web-based multi-user time-tracking application. Available as services.kimai.
-
Omnom, a webpage bookmarking and snapshotting service. Available as services.omnom.
-
MaryTTS, an open-source, multilingual text-to-speech synthesis system written in pure Java. Available as services.marytts.
-
networking.modemmanager has been split out of networking.networkmanager. NetworkManager still enables ModemManager by default, but options exist now to run NetworkManager without ModemManager.
-
Conduwuit, a federated chat server implementing the Matrix protocol, forked from Conduit. Available as services.conduwuit.
-
Traccar, a modern GPS Tracking Platform. Available as services.traccar.
-
Schroot, a lightweight virtualisation tool. Securely enter a chroot and run a command or login shell. Available as programs.schroot.
-
crab-hole, a cross platform Pi-hole clone written in Rust using hickory-dns/trust-dns. Available as services.crab-hole.
-
Amazon CloudWatch Agent, the official telemetry collector for AWS CloudWatch and AWS X-Ray. Available as services.amazon-cloudwatch-agent.
-
Bat, a {manpage}
cat(1)
clone with wings. Available as programs.bat. -
µStreamer, a lightweight MJPEG-HTTP streamer. Available as services.ustreamer.
-
Whoogle Search, a self-hosted, ad-free, privacy-respecting metasearch engine. Available as services.whoogle-search.
-
agorakit, an organization tool for citizens' collectives. Available with services.agorakit.
-
waagent, the Microsoft Azure Linux Agent (waagent) manages Linux provisioning and VM interaction with the Azure Fabric Controller. Available with services.waagent.
-
nostr-rs-relay, This is a nostr relay, written in Rust. Available as services.nostr-rs-relay.
-
Actual Budget, a local-first personal finance app. Available as services.actual.
-
mqtt-exporter, a Prometheus exporter for exposing messages from MQTT. Available as services.prometheus.exporters.mqtt.
-
nvidia-gpu, a Prometheus exporter that scrapes
nvidia-smi
for GPU metrics. Available as services.prometheus.exporters.nvidia-gpu. -
InputPlumber, an open source input router and remapper daemon for Linux. Available as services.inputplumber.
-
Buffyboard, a framebuffer on-screen keyboard. Available as services.buffyboard.
-
KanBoard, a project management tool that focuses on the Kanban methodology. Available as services.kanboard.
-
git-worktree-switcher, switch between git worktrees with speed. Available as programs.git-worktree-switcher
Backward Incompatibilities
-
binwalk
was updated to 3.1.0, which has been rewritten in rust. The python module is no longer available. See the release notes of 3.1.0 for more information. -
buildGoModule
now passes environment variables via theenv
attribute.CGO_ENABLED
should now be specified withenv.CGO_ENABLED
when passing to buildGoModule. Direct specification ofCGO_ENABLED
is now redirected by a compatibility layer with a warning, but will become an error in future releases.Go-related environment variables previously shadowed by
buildGoModule
now results in errors when specified directly. Such variables includeGOOS
andGOARCH
.Third-party projects supporting both stable and unstable channels could detect this change through the absence of the
CGO_ENABLED
function argument inbuildGoModule
(!((lib.functionArgs buildGoModule) ? CGO_ENABLED)
). -
buildGoPackage
has been removed. UsebuildGoModule
instead. See the Go section in the nixpkgs manual for details. -
strawberry
has been updated to 1.2, which drops support for the VLC backend and Qt 5. Thestrawberry-qt5
package andwithGstreamer
/withVlc
override options have been removed due to this. -
ps3-disc-dumper
was updated to 4.2.5, which removed the CLI project and now exclusively offers the GUI -
timescaledb
requires manual upgrade steps. After you run ALTER EXTENSION, you must run this SQL script. For more details, see the following pull requests #6797. PostgreSQL 13 is no longer supported in TimescaleDB v2.16. -
Support for CUDA 10 has been dropped, as announced in the 24.11 release notes.
-
zammad
has had its support for MySQL removed, since it was never working correctly and is now deprecated upstream. Check the migration guide for how to convert your database to PostgreSQL. -
nodePackages.vls
has been deprecated, as the upstream consumer of it, vetur, has been deprecated by upstream. Upstream suggests migrating to Volar for Vue LSP tooling instead. -
nodePackages.create-react-native-app
has been removed, as it is deprecated. Upstream suggests using a framework for React Native apps instead. -
nodePackages.insect
has been removed, as it's deprecated by upstream. The suggested replacement isnumbat
. -
nodePackages.webpack-dev-server
has been removed, as it should be installed in projects that use it instead. -
nodePackages.copy-webpack-plugin
has been removed, as it should be installed in projects that use it instead. -
linuxPackages.nvidiaPackages.dc_520
has been removed since it is marked broken and there are better newer alternatives. -
programs.less.lessopen
is now null by default. To restore the previous behaviour, set it to''|${lib.getExe' pkgs.lesspipe "lesspipe.sh"} %s''
. -
minetest
has been renamed toluanti
to match the upstream name change but aliases have been added. The new name hasn't resulted in many changes as of yet but older references to minetest should be sunset. See the new name announcement for more details. -
racket_7_9
has been removed, as it is insecure. It is recommended to use Racket 8 instead. -
ente-auth
now uses the nameenteauth
for its binary. The previous name wasente_auth
. -
fluxus
has been removed, as it depends onracket_7_9
and had no updates in 9 years. -
renovate
was updated to v39. See the upstream release notes for breaking changes. Like upstream's docker images, renovate now runs on NodeJS 22. -
The behavior of the
networking.nat.externalIP
andnetworking.nat.externalIPv6
options has been changed.networking.nat.forwardPorts
now only forwards packets destined for the specified IP addresses. -
python3Packages.jaeger-client
was removed because it was deprecated upstream. OpenTelemetry is the recommended replacement. -
nodePackages.meshcommander
has been removed, as the package was deprecated by Intel. -
kanata
was updated to v1.7.0, which introduces several breaking changes. See the release notes of v1.7.0 for more information. -
nodePackages.expo-cli
has been removed, as it was deprecated by upstream. The suggested replacement is thenpx expo
command. -
DokuWiki with the Caddy webserver (
services.dokuwiki.webserver = "caddy"
) now sets up sites with Caddy's automatic HTTPS instead of HTTP-only. To keep the old behavior for a siteexample.com
, setservices.caddy.virtualHosts."example.com".hostName = "http://example.com"
. If you set custom Caddy options for a DokuWiki site, migrate these options by removinghttp://
fromservices.caddy.virtualHosts."http://example.com"
. -
vscode-utils.buildVscodeExtension
now requires pname as an argument -
nerdfonts
has been separated into individual font packages under the namespacenerd-fonts
. The directories for font files have changed from$out/share/fonts/{opentype,truetype}/NerdFonts
to$out/share/fonts/{opentype,truetype}/NerdFonts/<fontDirName>
, where<fontDirName>
can be found in the official website as the titles in preview images, with the "Nerd Font" suffix and any whitespaces trimmed. Configuration changes are required, see build output. -
retroarch
has been refactored and the olderretroarch.override { cores = [ ... ]; }
to create a RetroArch derivation with custom cores doesn't work anymore, useretroarch.withCores (cores: [ ... ])
instead. If you need more customization (e.g.: custom settings), usewrapRetroArch
instead. -
gkraken
software andhardware.gkraken.enable
option have been removed, usecoolercontrol
viaprograms.coolercontrol.enable
option instead. -
To avoid delaying user logins unnecessarily the
multi-user.target
is no longer ordered afternetwork-online.target
. System services requiring a connection to start correctly must explicitly state so, i.e.systemd.services.<name> = { wants = [ "network-online.target" ]; after = [ "network-online.target" ]; };
This changed follows a deprecation period of one year started in NixOS 24.05 (see PR #283818).
-
The values of
services.borgbackup.jobs.*.extraArgs
and otherextra*Args
options are now represented as Bash arrays. If these arguments were modified usingservices.borgbackup.jobs.*.preHook
, they will need to be adjusted to append to these arrays, i.e.-extraCreateArgs="$extraCreateArgs --exclude /some/path" +extraCreateArgs+=("--exclude" "/some/path")
-
nodePackages.ganache
has been removed, as the package has been deprecated by upstream. -
virtualisation.azure.agent
option provided byazure-agent.nix
is replaced byservices.waagent
, and will be removed in a future release. -
matomo
now defaults to version 5 (previously available asmatomo_5
). Version 4 has been removed as it reached EOL on December 19, 2024. -
containerd
has been updated to v2, which contains breaking changes. See the containerd 2.0 documentation for more details. -
The ZFS import service now respects
fileSystems.*.options = [ "noauto" ];
and does not add that pool's import service tozfs-import.target
, meaning it will not be automatically imported at boot. -
nodePackages.stackdriver-statsd-backend
has been removed, as the StackDriver service has been discontinued by Google, and therefore the package no longer works. -
python3Packages.opentracing
has been removed due to being unmaintained upstream. OpenTelemetry is the recommended replacement. -
Default file names of images generated by several builders in
system.build
have been changed as outlined in the table below.Names are now known at evaluation time and customizable via the new options
image.baseName
,image.extension
,image.fileName
andimage.filePath
with the latter returning a path relative to the derivations out path (e.g.iso/${image.fileName
for iso images).|
system.build
Option | Old Filename | New Filename | |--------------------------+------------------------------------------------------------+-----------------------------------------------------------------| | amazonImage | nixos-amazon-image-25.05pre-git-x86_64-linux.vhd | nixos-image-amazon-25.05pre-git-x86_64-linux.vhd | | azureImage | disk.vhd | nixos-image-azure-25.05pre-git-x86_64-linux.vhd | | digitalOceanImage | nixos.qcow2.gz | nixos-image-digital-ocean-25.05pre-git-x86_64-linux.qcow2.gz | | googleComputeImage | nixos-image-25.05pre-git-x86_64-linux.raw.tar.gz | nixos-image-google-compute-25.05pre-git-x86_64-linux.raw.tar.gz | | hypervImage | nixos-25.05pre-git-x86_64-linux.vhdx | nixos-image-hyperv-25.05pre-git-x86_64-linux.vhdx | | isoImage (installer) | nixos-25.05pre-git-x86_64-linux.iso | nixos-image-25.05pre-git-x86_64-linux.iso | | isoImage | nixos.iso | nixos-image-25.05pre-git-x86_64-linux.iso | | kubevirtImage | nixos.qcow2 | nixos-image-kubevirt-25.05pre-git-x86_64-linux.qcow2 | | linodeImage | nixos-image-25.05pre-git-x86_64-linux.img.gz | nixos-image-linode-25.05pre-git-x86_64-linux.img.gz | | metadata (lxc-container) | nixos-system-x86_64-linux.tar.xz | nixos-image-lxc-metadata-25.05pre-git-x86_64-linux.tar.xz | | OCIImage | nixos.qcow2 | nixos-image-oci-25.05pre-git-x86_64-linux.qcow2 | | openstackImage (zfs) | nixos-openstack-image-25.05pre-git-x86_64-linux.root.qcow2 | nixos-image-openstack-zfs-25.05pre-git-x86_64-linux.root.qcow2 | | openstackImage | nixos.qcow2 | nixos-image-openstack-25.05pre-git-x86_64-linux.qcow2 | | sdImage | nixos-sd-image-25.05pre-git-x86_64-linux.img.zst | nixos-image-sd-card-25.05pre-git-x86_64-linux.img.zst | | tarball (lxc-container) | nixos-system-x86_64-linux.tar.xz | nixos-image-lxc-25.05pre-git-x86_64-linux.tar.xz | | tarball (proxmox-lxc) | nixos-system-x86_64-linux.tar.xz | nixos-image-lxc-proxmox-25.05pre-git-x86_64-linux.tar.xz | | vagrantVirtualbox | nixos-25.05pre-git-x86_64-linux.ova | nixos-image-virtualbox-25.05pre-git-x86_64-linux.ova | | virtualBoxOVA | virtualbox-vagrant.box | nixos-image-vagrant-virtualbox-25.05pre-git-x86_64-linux.ova | | vmwareImage | nixos-25.05pre-git-x86_64-linux.vmdk | nixos-image-vmware-25.05pre-git-x86_64-linux.vmdk | -
security.apparmor.policies.<name>.enforce
andsecurity.apparmor.policies.<name>.enable
were removed. Configuring the state of apparmor policies must now be done usingsecurity.apparmor.policies.<name>.state
tristate option. -
the notmuch vim plugin now lives in a separate output of the
notmuch
package. Installingnotmuch
will not bring the notmuch vim package anymore, addvimPlugins.notmuch-vim
to your (Neo)vim configuration if you want the vim plugin. -
prisma
andprisma-engines
have been updated to version 6.0.1, which introduces several breaking changes. See the Prisma ORM upgrade guide for more information. -
zf
was updated to 0.10.2, which includes breaking changes from the 0.10.0 release.zf
no longer does Unicode normalization of the input and no longer supports terminal escape sequences in theZF_PROMPT
environment variable. -
programs.clash-verge.tunMode
was deprecated and removed because now service mode is neccessary to start program. Withoutprograms.clash-verge.enable
, clash-verge-rev will refuse to start.
Other Notable Changes
-
Cinnamon has been updated to 6.4, please check the upstream announcement for more details.
- Following changes in Mint 22 we are no longer overriding Qt application styles. You can still restore the previous default with
qt.style = "gtk2"
andqt.platformTheme = "gtk2"
. - Following changes in Mint 20 we are replacing xplayer with celluloid since xplayer is no longer maintained.
- Following changes in Mint 22 we are no longer overriding Qt application styles. You can still restore the previous default with
-
Xfce has been updated to 4.20, please check the upstream feature tour for more details.
- Wayland session is still experimental and requires opt-in using
enableWaylandSession
option. - Overriding Wayland compositor is possible using
enableWaylandSession
option, but you might need to take carexfce4-session
,dbus-update-activation-environment
andsystemctl --user import-environment
on startup. - For new Xfce installations, default panel layout has changed to not include external panel plugins by default. You can still add them yourself using the "Panel Preferences" dialog.
- Wayland session is still experimental and requires opt-in using
-
networking.wireguard
now has an optional networkd backend. It is enabled by default whennetworking.useNetworkd
is enabled, and it can be enabled alongside scripted networking withnetworking.wireguard.useNetworkd
. Somenetworking.wireguard
options have slightly different behavior with the networkd and script-based backends, documented in each option. -
services.avahi.ipv6
now defaults to true. -
bind.cacheNetworks
now only controls access for recursive queries, where it previously controlled access for all queries. -
programs.fzf.keybindings
now supports the fish shell.
Nixpkgs Library
Breaking changes
- Structure of the
functor
of some types has changed.functor
is an implementation detail and should not be relied upon. If you did rely on it let us know in this PR.lib.types.enum
: Previously thefunctor.payload
was the list of enum values directly. Now it is an attribute set containing the values in thevalues
attribute.lib.types.separatedString
: Previously thefunctor.payload
was the seperator directly. Now it is an attribute set containing the seperator in thesep
attribute.