6.4 KiB
Release 24.05 (“Uakari”, 2024.05/??)
Support is planned until the end of December 2024, handing over to 24.11.
Highlights
In addition to numerous new and upgraded packages, this release has the following highlights:
-
screen's module has been cleaned, and will now require you to setprograms.screen.enablein order to populatescreenrcand add the program to the environment. -
NixOS now installs a stub ELF loader that prints an informative error message when users attempt to run binaries not made for NixOS.
- This can be disabled through the
environment.stub-ld.enableoption. - If you use
programs.nix-ld.enable, no changes are needed. The stub will be disabled automatically.
- This can be disabled through the
New Services
-
Guix, a functional package manager inspired by Nix. Available as services.guix.
-
maubot, a plugin-based Matrix bot framework. Available as services.maubot.
-
Anki Sync Server, the official sync server built into recent versions of Anki. Available as services.anki-sync-server. The pre-existing services.ankisyncd has been marked deprecated and will be dropped after 24.05 due to lack of maintenance of the anki-sync-server softwares.
-
Clevis, a pluggable framework for automated decryption, used to unlock encrypted devices in initrd. Available as boot.initrd.clevis.enable.
Backward Incompatibilities
-
The
power.upsmodule now generatesupsd.conf,upsd.usersandupsmon.confautomatically from a set of new configuration options. This breaks compatibility with existingpower.upssetups where these files were created manually. Back up these files before upgrading NixOS. -
mkosiwas updated to v19. Parts of the user interface have changed. Consult the release notes for a list of changes. -
services.avahi.nssmdnsgot split intoservices.avahi.nssmdns4andservices.avahi.nssmdns6which 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. -
networking.iproute2.enablenow does not setenvironment.etc."iproute2/rt_tables".text.Setting
environment.etc."iproute2/{CONFIG_FILE_NAME}".textwill override the whole configuration file instead of appending it to the upstream configuration file.CONFIG_FILE_NAMEincludesbpf_pinning,ematch_map,group,nl_protos,rt_dsfield,rt_protos,rt_realms,rt_scopes, andrt_tables.
Other Notable Changes
-
addDriverRunpathhas been added to facilitate the deprecation of the oldaddOpenGLRunpathsetuphook. This change is motivated by the evolution of the setuphook to include all hardware acceleration. -
Cinnamon has been updated to 6.0. Please beware that the Wayland session is still experimental in this release.
-
services.postgresql.extraPluginschanged its type from just a list of packages to also a function that returns such a list. For example a config line likeservices.postgresql.extraPlugins = with pkgs.postgresql_11.pkgs; [ postgis ];is recommended to be changed toservices.postgresql.extraPlugins = ps: with ps; [ postgis ];; -
Programs written in Nim are built with libraries selected by lockfiles. The
nimPackagesandnim2Packagessets have been removed. See https://nixos.org/manual/nixpkgs/unstable#nim for more information. -
libassnow uses the native CoreText backend on Darwin, which may fix subtitle rendering issues withmpv,ffmpeg, etc. -
The Yama LSM is now enabled by default in the kernel, which prevents ptracing non-child processes. This means you will not be able to attach gdb to an existing process, but will need to start that process from gdb (so it is a child). Or you can set
boot.kernel.sysctl."kernel.yama.ptrace_scope"to 0. -
Nginx virtual hosts using
forceSSLorglobalRedirectcan now have redirect codes other than 301 throughredirectCode. -
changed from a string to an integer because of the addition of a custom merge option (taking the highest value defined to avoid conflicts between 2 services trying to set that value), just as since 22.11.
-
Gitea 1.21 upgrade has several breaking changes, including:
- Custom themes and other assets that were previously stored in
custom/public/*now belong incustom/public/assets/* - New instances of Gitea using MySQL now ignore the
[database].CHARSETconfig option and always use theutf8mb4charset, existing instances should migrate via thegitea doctor convertCLI command.
- Custom themes and other assets that were previously stored in
-
The
hardware.pulseaudiomodule now sets permission of pulse user home directory to 755 when running in "systemWide" mode. It fixes issue 114399. -
The
btrbkmodule now automatically selects and provides required compression program depending on the configuredstream_compressoption. Since this replaces the need for theextraPackagesoption, this option will be deprecated in future releases. -
QtMultimedia has changed its default backend to
QT_MEDIA_BACKEND=ffmpeg(previouslygstreameron Linux ordarwinon MacOS). The previous native backends remain available but are now minimally maintained. Refer to upstream documentation for further details about each platform.