nixpkgs/doc/release-notes/rl-2511.section.md
Florian Klink 36d43f3924 nixos/yggdrasil: put release notes in the right place
This will become part of the 26.05 release notes, not the already
released 25.11.
2026-01-03 20:04:51 +02:00

40 KiB
Raw Permalink Blame History

Nixpkgs 25.11 ("Xantusia", 2025.11/30)

Highlights

  • The initial work to support native compilation on LoongArch64 has completed, with further changes currently in preparation. In accordance with the Software Development and Build Convention for LoongArch Architectures, this release sets the default march level to la64v1.0, covering the desktop and server processors of 3X5000 and newer series. However, embedded chips without LSX (Loongson SIMD eXtension), such as 2K0300 SoC, are not supported. pkgsCross.loongarch64-linux-embedded can be used to build software and systems for these platforms.

  • The official Nix formatter nixfmt is now stable and available as pkgs.nixfmt, deprecating the temporary pkgs.nixfmt-rfc-style attribute. The classic nixfmt will stay available for some more time as pkgs.nixfmt-classic.

  • The default GHC version has been updated from 9.8 to 9.10. haskellPackages correspondingly uses Stackage LTS 24 (instead of LTS 23) as a baseline.

  • This release of Nixpkgs requires macOS Sonoma 14.0 or newer, as announced in the 25.05 release notes. The default SDK is now 14.4, but the minimum version is 14.0. cc-wrapper will enforce that availability annotations are used or an appropriate deployment target is set. See the Darwin platform notes for details.

  • We expect to drop support for x86_64-darwin by Nixpkgs 26.11, in light of Apples announcement that macOS 26 will be the final version to support Intel Macs. When support is fully removed, we will no longer build packages for the platform or guarantee that it can build at all. This may happen in stages, depending on our available build and maintenance resources and decisions made by projects we rely on.

    By the time of 26.11s release, Homebrew will offer only limited Tier 3 support for the platform, but MacPorts will likely continue to support it for a long time. We also recommend users consider installing NixOS, which should continue to run on essentially all Intel Macs, especially after Apple stops security support for macOS 26 in 2028.

  • Darwin has switched to using the system libc++. This was done for improved compatibility and to avoid ODR violations. If a newer C++ library feature is not available on the default deployment target, you will need to increase the deployment target. See the Darwin platform documentation for more details.

  • LLVM has been updated from 19 to 21.

Backward Incompatibilities

  • adminneo has been updated to version 5.1.1. Version 5 breaks compatibility with adminer and changes how plugins and configuration work. See the Upgrade Guide for details. Those changes also led to changes in the arguments of the package.

  • android-udev-rules has been removed, as it is effectively superseded by built-in uaccess rules in systemd.

  • ansible-later has been removed because it was discontinued by the author.

  • asciidoctor-with-extension had its asciidoctor-mathematical extension removed, because it fails to build, and it is not maintained properly.

  • base16-builder node package has been removed due to lack of upstream maintenance.

  • budgie-desktop has been updated 10.9.4. This changes XDG_CURRENT_DESKTOP from Budgie:GNOME to Budgie and contains ABI bumps for libpeas2 migration.

  • buildGoModule removes the compatibility layer of CGO_ENABLED not specified via env. Specifying CGO_ENABLED directly now results in an error.

  • buildGoModule now warns if <pkg>.passthru.overrideModAttrs is lost during the overriding of its result packages.

  • cardboard has been removed due to the package having been broken since at least November 2024.

  • carla no longer support gtk2 override.

  • chatgpt-retrieval-plugin has been removed due to the package having been broken since at least November 2024.

  • conduwuit was removed due to upstream ceasing development and deleting their repository. For existing data, a migration to matrix-conduit, matrix-continuwuity or matrix-tuwunel may be possible.

  • conftest since 0.60.0 has moved to use rego v1 as default. To continue using v0 use --rego-version v0. For more information about upgrading to Rego v1 syntax, see the upstream docs.

  • CUDA versions below 12.6 have been removed, as they are unmaintained upstream and depend on endoflife compilers.

  • cudaPackages.cudatoolkit-legacy-runfile has been removed.

  • ddccontrol service now enables hardware.i2c by default, and adds ddcci_backlight to the kernel modules, based on experiences reported on discourse.

  • deadbeef no longer supports gtk2.

  • Derivations setting both separateDebugInfo and one of allowedReferences, allowedRequisites, disallowedReferences or disallowedRequisites must now set __structuredAttrs to true. The effect of reference whitelisting or blacklisting will be disabled on the debug output created by separateDebugInfo.

  • emacs-macport has been moved to a fork of Mitsuharu Yamamoto's patched source code starting with Emacs v30 as the original project seems to be currently dormant. All older versions of this package have been dropped. This introduces some backwardsincompatible changes; see the NEWS for details. NEWS can be viewed from Emacs by typing C-h n, or by clicking Help->Emacs News from the menu bar. It can also be browsed online.

  • Everything related to bower was removed, as it is deprecated and not used by anything in nixpkgs.

  • fetchFromBitBucket has gained a fetchgit backend when passing in git-related arguments similar to fetchFromGitHub.

  • fetchtorrent, when using the "rqbit" backend, erroneously started fetching files into a subdirectory in Nixpkgs 24.11. The original behaviour which matches the behaviour using the "transmission" backend has now been restored. Users reliant on the erroneous behaviour can temporarily maintain it by adding flatten = false to the fetchtorrent arguments; Nix will produce an evaluation warning for anyone using backend = "rqbit" without flatten = true.

  • floorp has been replaced with a binary build, available as floorp-bin. Due to major changes in the upstream project structure and build system, building Floorp from source has become unfeasible. No configuration or state migration is necessary.

  • forgejo main program has been renamed to bin/forgejo from the previous bin/gitea.

  • GCC 9, 10, 11, and 12 have been removed, as they have reached endoflife upstream and are no longer supported.

  • gentium package now provides Gentium-*.ttf files, and not GentiumPlus-*.ttf files like before. The font identifiers Gentium Plus* are available in the gentium-plus package. If you want to use the more recently updated package gentium by SIL, you should update your configuration files to use the Gentium font identifier.

  • GHCJS 8.10, exposed via haskell.compiler.ghcjs and haskell.compiler.ghcjs810, has been removed. Downstream users should migrate their projects to the new JavaScript backend of GHC proper which can be used via pkgsCross.ghcjs from Nixpkgs. Haskell packaging code, like haskellPackages.mkDerivation, ghcWithPackages and hoogleWithPackages, also no longer supports GHCJS.

  • GHC 8.6, 8.10, 9.0, 9.2, and their package sets have been removed.

  • gnome-keyring no longer ships with an SSH agent anymore because it has been deprecated upstream. You should use gcr_4 instead, which provides the same features. More information on why this was done can be found on the relevant GCR upstream PR.

  • go-mockery has been updated to v3. For migration instructions see the upstream documentation. If v2 is still required go-mockery_v2 has been added but will be removed on or before 2029-12-31 in-line with its upstream support lifecycle.

  • gradience has been removed because it was archived upstream.

  • Greetd and its original greeters (tuigreet, gtkgreet, qtgreet, regreet, wlgreet) were moved from greetd namespace to top level (greetd.tuigreet -> tuigreet, greetd.greetd -> greetd, etc). The original attrs are available for compatibility as passthrus of greetd, but will emit a warning. They will be removed in future releases.

  • haskellPackages and the package sets under haskell.packages no longer expose an llvmPackages attribute, though it can still be accessed via ghc.llvmPackages (from the same package set). Haskell packages usually only need to depend on an LLVM version matching GHC if they force the use the LLVM backend even if NCG is available. In this case, it is best to use the forceLlvmCodegenBackend helper. In all other cases, like linking against libLLVM, Haskell packages should use the appropriate version of llvmPackages from pkgs.

  • hiawata has been removed, due to lack of active development upstream, lack of maintainership downstream and upcoming security issues.

  • hsd has been upgraded to version 8. See their changelog for important instructions before upgrading.

  • inspircd has been updated to the v4 release series. Please refer to the upstream documentation for general information and a list of breaking changes.

  • installShellFiles now allows installManPage to take a piped input, add the --name flag for renaming the file when installed. You can also append -- to opt-out of all subsequent parsing.

  • kbd package's outputs now include a man and scripts outputs. The unicode_start and unicode_stop Bash scripts are now part of the scripts output, allowing most usages of the kbd package to not pull in bash.

  • k2pdfopt has been removed, as it's broken.

  • k3s airgap images passthru attributes have changed:

    • imagesList was removed
    • airgapImages was renamed to airgap-images
    • airgapImagesAmd64 was renamed to airgap-images-amd64-tar-zst
    • airgapImagesArm64 was renamed to airgap-images-arm64-tar-zst
    • airgapImagesArm was renamed to airgap-images-arm-tar-zst
  • LLVM 12, 13, 14, 15, 16, and 17 have been removed, as they have reached endoflife upstream and are no longer supported.

  • lima package now only includes the guest agent for the host's architecture by default. If your guest VM's architecture differs from your Lima host's, you'll need to enable the lima-additional-guestagents package by setting withAdditionalGuestAgents = true when overriding lima with this input.

  • libpinyin, which is used for Chinese character input, has migrated 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.

  • linux and all other Linux kernel packages have moved all in-tree kernel modules into a new modules output.

  • lxde scope has been removed, and its packages have been moved the top-level.

  • mariadb now defaults to mariadb_114 instead of mariadb_1011, meaning the default version was upgraded from 10.11.x to 11.4.x. See the upgrade notes for potential issues.

  • mealie has been updated to 3.0.2: This update introduces breaking changes in some API endpoints (see the release changelog).

  • meilisearch_1_11 has been removed, as it is no longer supported.

  • moar has been updated from 1.33.0 to 2.0.0, and renamed to moor following an upstream decision. See the release notes for more.

  • mongodb-6_0 was removed as it is end of life as of 2025-07-31.

  • mono4 and mono5 have been removed. Use mono6 or mono instead.

  • mx-puppet-discord was removed from Nixpkgs along with its NixOS module as it was unmaintained and was the only user of sha1 hashes in tree.

  • navidrome 0.58.0 introduces multi-library support and backwards incompatible database migrations. Ensure backups are valid and run a Full Scan after starting the new version.

  • NetBox was updated to >= 4.4.0. You should review the breaking changes of the 4.3 release the 4.4 release, make the required changes to your database (if needed), and then upgrade by setting services.netbox.package = pkgs.netbox_4_4; in your configuration.

  • neovimUtils.makeNeovimConfig now uses customLuaRC parameter instead of accepting luaRcContent. The old usage is deprecated but still works with a warning.

  • nixVersions.nix_2_3 has been dropped because it was insecure and unmaintained.

  • nodePackages.rimraf has been removed, as it is a Javascript library, and packages that want to use it should depend directly on it instead.

  • notary has been removed because it was archived upstream. Upstream recommends notation instead.

  • nuget-to-nix has been removed as it was deprecated in favor of nuget-to-json. Out-of-tree packages that were using nuget-to-nix should migrate to use nuget-to-json instead for generating .NET dependency lock files.

  • odoo16 has been dropped due to end of support by upstream, consider upgrading supported version.

  • oink service no longer accepts settings.apiKey and settings.secretApiKey options as these have been replaced by apiKeyFile and secretApiKeyFile.

  • opensoldat binaries and user configuration directory names have been prefixed by 'open', becoming opensoldat and opensoldatserver. Configuration will be moved automatically before launch when possible.

  • orjail package has been removed as it is broken by the latest firejail release and seems unmaintained.

  • python3Packages.bugwarrior has been updated to major version 2.0.0 which will likely require manual intervention. See release notes.

  • pcp has been removed because the upstream repo was archived and it hasn't been updated since 2021.

  • podofo has been updated from 0.9.8 to 1.0.0. These releases are by nature very incompatible due to major API changes. The legacy versions can be found under podofo_0_10 and podofo_0_9. Changelog: https://github.com/podofo/podofo/blob/1.0.0/CHANGELOG.md, API-Migration-Guide: https://github.com/podofo/podofo/blob/1.0.0/API-MIGRATION.md.

  • privatebin has been updated to 2.0.0. This release changes configuration defaults including switching the template and removing legacy features. See the v2.0.0 changelog entry for details on how to upgrade.

  • private-gpt service has been removed by lack of maintenance upstream.

  • proton-caller has been removed due to lack of upstream maintenance.

  • prometheus-script-exporter has been updated to use a new maintained alternative. This release updates from 1.2.0 -> 3.0.1 and largely changes configuration options formats from json to yaml, among other changes.

  • pulsemeeter has been updated to 2.0.0. The configuration file from older versions has to be deleted. For more information and instructions see the v2.0.0 changelog entry.

  • purple-matrix has been removed, since it has been unmaintained since April 2022 and upstream does not recommend using it anymore.

  • python3Full and its versioned attributes (python3xxFull) have been removed. Bluetooth support is now enabled in the default python3 attributes. The X11 support built the tkinter module, which is available as a dedicated attribute on the package set.

  • python3Packages.bjoern has been removed, as the upstream is unmaintained and it depends on a 14-year-old version of http-parser with numerous vulnerabilities.

  • python3Packages.duckduckgo-search has been updated to v9+ and renamed to python3Packages.ddgs. See release note for v9.0.0.

  • python3Packages.heif-image-plugin has been dropped due to lack of upstream maintenance and breakage. Use python3Packages.pillow-heif instead.

  • python3Packages.triton no longer takes an enableRocm argument and supports ROCm in all build configurations via runtime binding. In most cases no action will be needed. If triton is unable to find the HIP SDK add rocmPackages.clr as a build input or set the environment variable HIP_PATH="${rocmPackages.clr}".

  • python3Packages.pyheif has been dropped due to lack of upstream maintenance and breakage. Use python3Packages.pillow-heif instead.

  • python3Packages.pyocr no longer supports cuneiform on Linux by default. It is still possible to enable it using withCuneiformSupport override.

  • qt5.full and qt6.full aliases have been removed. Their use has always been discouraged, and downstream projects should use qtN.env with the right set of packages.

  • rabbitmq-server has been updated from 4.0.9 to 4.1.4. The 4.1.0 release includes breaking changes. For more information read the changelog of 4.1.0.

  • reaction has been updated to version 2, which includes some breaking changes. For more information, check the release article.

  • renovate was updated to v41. See the upstream release notes for v40 and v41 for breaking changes.

  • river 0.3.x has been renamed to river-classic following an upstream decision.

  • rocmPackages.triton has been removed in favor of python3Packages.triton.

  • rofi has been updated to 2.0.0. rofi-wayland and rofi-wayland-unwrapped have been merged into rofi and rofi-unwrapped respectively. For more information and instructions see the v2.0.0 changelog entry.

  • rofi-emoji-wayland has been merged into rofi-emoji as rofi has been updated to 2.0.0 and supports both X11 & Wayland.

  • sail-riscv 0.8 follows upstream and provides only a single binary, sail_riscv_sim.

  • sing-box has been updated to 1.12.3, which includes a number of breaking changes, old configurations may need updating or they will cause the tool to fail to run. See the change log for details and migration for how to update old configurations.

  • space-orbit package has been removed due to lack of upstream maintenance. Debian upstream stopped tracking it in 2011.

  • spidermonkey_91 has been removed, as it has been EOL since September 2022.

  • stalwart-mail since 0.13.0 "introduces a significant redesign of the MTAs delivery and queueing subsystem". See the upgrading announcement for the 0.13.0 release.

  • stdenv.mkDerivation and other derivation builders that use it no longer allow the value of env to be anything but an attribute set, for the purpose of setting environment variables that are available to the builder process. An environment variable called env can still be provided by means of mkDerivation { env.env = ...; }, though we recommend to use a more specific name than "env".

  • steamcontroller has been removed due to lack of upstream maintenance. Consider using sc-controller instead.

  • sublime-music has been removed because upstream has announced it is no longer maintained. Upstream suggests using supersonic instead.

  • Support for bootstrapping native GHC compilers on 32bit ARM and littleendian 64bit PowerPC has been dropped. The latter was probably broken anyway. If there is interest in restoring support for these architectures, it should be possible to crosscompile a bootstrap GHC binary.

  • telegram-desktop packages now uses Telegram for its binary. The previous name was telegram-desktop. This is due to an upstream decision to make the name consistent with other platforms.

  • teleport has been upgraded from major version 17 to major version 18. Refer to upstream upgrade instructions and release notes for v18.

  • The asterisk-lts package was changed to v22 from v18. The default asterisk package was changed to v22 from v20. Asterisk version 18 has been dropped due to being EOL. The asterisk-stable (v20) package was unchanged. You may need to update /var/lib/asterisk to match the template files in ${asterisk-...}/var/lib/asterisk.

  • The archipelago-minecraft package was removed, as upstream no longer provides support for the Minecraft APWorld.

  • The default Android NDK version has been raised to 27, and the default SDK version to 35. NDK 2126 have been removed, as they are endoflife.

  • The default glibc ELF ABI for the powerpc64-linux platform has been changed from ELFv2 back to ELFv1, due to the latter having less remaining issues when bootstrapping & building Nixpkgs packages on hardware. If glibc ELFv2 is desired, use a fuller target triplet like powerpc64-unknown-linux-gnuabielfv2 or the provided ppc64-elfv2 platform example.

  • The ghcInfo and controlPhases functions have been removed from haskell.lib.compose and haskell.lib. They were unused and would return incorrect results.

    • Instead of using controlPhases, the doCheck attribute of derivations can be accessed which is more accurate. doBenchmark can't be introspected at the moment.
    • To detect cross compilation, the relevant platforms exposed by stdenv should be compared instead of using ghcInfo.
    • Nixpkgs no longer packages any ghcjs compiler.
    • To find a suitable nativeGhc, buildHaskellPackages should be used. ghcInfo would use ghc.bootPkgs.ghc if cross compiling, and the given ghc otherwise. This approach is not recommended since it results in mismatched GHC versions.
  • The haskellPackages.mkDerivation builder now converts packages' cabal files to Unix line endings before patchPhase. This behavior can be disabled using dontConvertCabalFileToUnix.

  • The default kops version is now 1.33.0 and versions 1.30 and older have been dropped. See Upgrading Kubernetes for instructions on how to update kOps.

  • The license of duckstation has changed from gpl3Only to cc-by-nc-nd-40 making it unfree in newer releases. The duckstation package has been overhauled to support the new releases and duckstation-bin has been aliased to duckstation to support darwin binary builds.

  • The main binary of tomlq has been renamed from tomlq to tq.

  • The minimum version of Nix required to evaluate Nixpkgs has been raised from 2.3 to 2.18.

  • The no-broken-symlink build hook now also fails builds whose output derivation contains links to $TMPDIR (typically /build, which contains the build directory).

  • The non-LTS Forgejo package (forgejo) has been updated to 12.0.0. This release contains breaking changes, see the release blog post for all the details and how to ensure smooth upgrades.

  • The offrss package was removed due to lack of upstream maintenance since 2012. It's recommended for users to migrate to another RSS reader.

  • The pie hardening flag has been removed. Compilers are expected to enable PIE by default, as has been common practice since 2016 outside of Nixpkgs. If a package needs pie disabled pass -no-pie in CFLAGS. It is unlikely this will be necessary in many cases; due to the prevalence of default PIE toolchains, most packages incompatible with PIE already pass -no-pie.

  • The vlock output from kbd has been removed. Instead a new package kbdVlock has been introduced. Use this package now instead of the output.

  • tooling-language-server has been renamed to deputy (both the package and binary), following the rename of the upstream project.

  • victoriametrics no longer contains VictoriaLogs components. These have been separated into the new package victorialogs.

  • vmware-horizon-client was renamed to omnissa-horizon-client, following VMware's sale of their end-user business to Omnissa. The binary has been renamed from vmware-view to horizon-client.

  • uw-ttyp0 has been updated to version 2.1. The filenames of the OTB and PSF fonts have been changed to match the upstream naming convention. If you were loading a font by path, for example in the console.font NixOS option, remember to update the filename accordingly.

  • wayclip now uses the ext-data-control-v1 Wayland protocol instead of wlr-data-control-unstable-v1.

  • webfontkitgenerator has been renamed to webfont-bundler, following the rename of the upstream project. The binary name remains webfontkitgenerator. The webfontkitgenerator package is an alias to webfont-bundler.

  • webkitgtk_4_0 has been removed because it depends on an unmaintained version of security-critical libsoup library (libsoup_2) and the support will be dropped upstream soon.

  • yehawn was removed due to the package being broken and unmaintained upstream.

  • yggdrasil-jumper has been updated to v0.4, changing traversal protocol. See release notes.

  • zig_0_12 has been removed.

  • zigbee2mqtt was updated to version 2.x, which contains breaking changes. See the discussion for further information.

Other Notable Changes

  • Added rewriteURL attribute to the nixpkgs config, to allow for rewriting the URLs downloaded by fetchurl.

  • Added hashedMirrors attribute to the nixpkgs config, to allow for customization of the hashed mirrors used by fetchurl.

  • Added gitConfig and gitConfigFile option to the nixpkgs config, to allow for setting a default gitConfigFile for all fetchgit invocations.

  • Added npmRegistryOverrides and npmRegistryOverridesString option to the nixpkgs config, to allow for setting a default npmRegistryOverridesString for all fetchNpmDeps invocations.

  • buildPythonPackage and buildPythonApplication now default to nix-update-script as their default updateScript. This should improve automated updates, since nix-update is better maintained than the in-tree update script and has more robust fetcher support.

  • cloudflare-ddns has been added.

  • Direct use of pkgs.formats.systemd has been deprecated, and should now be instantiated with pkgs.formats.systemd { } similarly to other items in pkgs.formats.

  • dragonflydb has been updated from version 0.1.0 to version 1.34.2.

  • emacs now disables the GC mark trace buffer by default. This improves GC performance by 5%, but can make GC issues harder to debug. This is configurable with withGcMarkTrace.

  • etcd package was upgraded to 3.6, see migration notes for incompatibilities and upgrade procedure.

  • fetchgit now accepts a gitConfigFile argument to set a git config (via $GIT_CONFIG_GLOBAL) for the fetcher.

  • fetchgit now accepts a rootDir argument to limit the resulting source to one subdirectory of the whole Git repository. Corresponding --root-dir option added to nix-prefetch-git.

  • fetchNpmDeps now accepts a npmRegistryOverridesString argument to pass NPM registry overrides to the fetcher.

  • ffmpeg_8, ffmpeg_8-headless, and ffmpeg_8-full have been added. The default version of FFmpeg is now ffmpeg_8. You can install previous versions from package attributes such as ffmpeg_7.

  • forgejo-runner upgrading to version 11 brings a license change from MIT to GPLv3-or-later.

  • GIMP now defaults to version 3. Use gimp2 for the old version.

  • gitversion was updated to 6.3.0, which includes a number of breaking changes, old configurations may need updating or they will cause the tool to fail to run. See the 6.0.0 release notes for GitVersion for details on the breaking changes, the documentation on the configuration format for the new configuration specification, and the documentation on version variables for what is now supported.

  • gramps has been updated to 6.0.0 Upstream recommends backing up your Family Trees before upgrading.

  • homebox 0.20.0 changed how assets are stored and hashed. It is recommended to back up your database before this update. In particular, --storage-data was replaced with --storage-conn-string and --storage-prefix-path. If your configuration set HBOX_STORAGE_DATA manually, you must migrate it to HBOX_STORAGE_CONN_STRING and HBOX_STORAGE_PREFIX_PATH.

  • HTTP3 support has been enabled in in nginx, openresty, angie and tengine. The nginxQuic and angieQuic package flavors have been removed.

  • idris2 supports being instantiated with a package environment with idris.withPackages (p: [ ]).

  • installShellCompletion now supports Nushell completion files.

  • jellyfin was updated to 10.11.x, which includes heavy backend changes. Make sure to backup your data and configuration directories and read the Jellyfin 10.11.0 release announcement. Important: make sure you're running Jellyfin version 10.10.7 before upgrading, and beware that the migration may take several hours depending on your library size and state. The process must not be interrupted.

  • lisp-modules were brought in sync with the June 2025 Quicklisp release.

  • meta.mainProgram is now used to determine the NIX_MAIN_PROGRAM environment variable. This means that changing it can now lead to a package rebuild.

  • neovim now has support for the vim.o.exrc option, the VIMINIT environment variable, and sourcing of sysinit.vim. See the neovim help page :help startup for more information, as well as the nixpkgs neovim wrapper documentation.

  • New hardening flags strictflexarrays1, strictflexarrays3, glibcxxassertions, libcxxhardeningfast and libcxxhardeningextensive were made available.

  • nix-prefetch-git now has a --no-add-path argument to disable adding the path to the store. This is useful when working with a read-only store.

  • Passing stdenv to buildPythonPackage or buildPythonApplication has been deprecated and will trigger an error in a future release. Instead, you should override the python build helper, e.g., (buildPythonPackage.override { stdenv = customStdenv; }). See .

  • php81 was removed.

  • plasma6: Fixed the ksycoca cache not being re-built when $XDG_CACHE_HOME is set to something that isn't $HOME/.cache.

  • prl-tools has been moved out of linuxPackages because Parallels Guest Tools become driverless since 26.1.0.

  • searx was updated to use envsubst instead of sed for parsing secrets from environment variables.

  • sftpman has been updated to version 2, a rewrite in Rust which is mostly backward compatible but does include some changes to the CLI. For more information, check the project's README.

  • slurm no longer supports gtk2.

  • sparkleshare has been removed as it no longer builds and has been abandoned upstream.

  • strongSwan has been updated to 6.0. See strongSwan 6.0.0 release notes for a complete list of changes.

  • simplesamlphp has been removed since the package was severely outdated, unmaintained in Nixpkgs and having known vulnerabilities.

  • The clickhouse package now track the stable upstream version per upstream's recommendation. Users can continue to use the clickhouse-lts package if desired.

  • The debug outputs produced by separateDebugInfo = true; now contain symlinks mapping build-ids to the original source and ELF file. Specifically, if $out/bin/ninja has build-id 483bd7f7229bdb06462222e1e353e4f37e15c293, then

    • $debug/lib/debug/.build-id/48/3bd7f7229bdb06462222e1e353e4f37e15c293.executable is a symlink to $out/bin/ninja
    • $debug/lib/debug/.build-id/48/3bd7f7229bdb06462222e1e353e4f37e15c293.source is a symlink to the value of $src during build
    • $debug/lib/debug/.build-id/48/3bd7f7229bdb06462222e1e353e4f37e15c293.sourceoverlay is a symlink to a directory with the same structure as the expanded $sourceRoot but containing only a copy of files which were patched during the build
    • $debug/lib/debug/.build-id/48/3bd7f7229bdb06462222e1e353e4f37e15c293.debug is the file containing debug symbols (like before).
  • The dockerTools.streamLayeredImage builder now uses a better algorithm for generating layered docker images, such that much more sharing is possible when the number of store paths exceeds the layer limit. It gives each of the largest store paths its own layer and adds dependencies to those layers when they aren't used elsewhere.

  • The open-webui package's postgres support have been moved to optional dependencies to comply with upstream changes in 0.6.26.

  • The systemd initrd will now respect x-systemd.wants and x-systemd.requires for reliably unlocking multi-disk bcachefs volumes.

  • The third-party ant-contrib is no longer included in the ant package.

  • Packages using versionCheckHook that previously relied solely on pname to locate the program used to version check, but have a differing meta.mainProgram entry, might now fail.

  • waydroid-nftables is a new variant of waydroid that supports nftables instead of iptables. If your previous configuration included a secret reference like server.secret_key = "@SEARX_SECRET_KEY@", you must migrate to the new envsubst syntax: server.secret_key = "$SEARX_SECRET_KEY".

Nixpkgs Library

Breaking changes

  • haskell.lib.addOptparseApplicativeCompletionScripts has been removed, use haskellPackages.generateOptparseApplicativeCompletions instead.

  • lib.attrsets.cartesianProductOfSets has been removed, following its deprecation in NixOS 24.11. Use lib.attrsets.cartesianProduct instead.

  • lib.attrsets.zipWithNames has been removed, following its deprecation in 2009. Use lib.attrsets.zipAttrsWithNames instead.

  • lib.attrsets.zip has been removed, following its deprecation in 2013. Use lib.attrsets.zipAttrsWith instead.

  • lib.literalExample has been removed, use lib.literalExpression instead, or use lib.literalMD for a non-Nix description.

  • lib.mapAttrsFlatten has been removed, following its deprecation in NixOS 24.11. Use lib.attrsets.mapAttrsToList instead.

  • lib.modules.defaultPriority has been removed, please use lib.modules.defaultOverridePriority instead.

  • lib.options.mkPackageOptionMD has been removed, following its deprecation in NixOS 24.11. Use lib.options.mkPackageOption instead.

  • lib.readPathsFromFile has been removed, use a list instead.

  • lib.replaceChars has been removed, it was a deprecated alias of lib.replaceStrings.

  • lib.sources.pathType, lib.sources.pathIsDirectory and lib.sources.pathIsRegularFile have been replaced by lib.filesystem.pathType, lib.filesystem.pathIsDirectory and lib.filesystem.pathIsRegularFile respectively.

  • lib.strings.isCoercibleToString has been in favor of either lib.strings.isStringLike or lib.strings.isConvertibleWithToString. Only use the latter if it needs to return true for null, numbers, booleans, or a list of those.

  • lib.types.string has been removed. See this pull request for better alternative types like lib.types.str.

  • The buildPythonPackage and buildPythonApplication functions now require an explicit format attribute. Previously the default format used setuptools and called setup.py from the source tree, which is deprecated. The modern alternative is to configure pyproject = true with build-system = [ setuptools ].

Deprecations

  • lib.cli.toGNUCommandLine and lib.cli.toGNUCommandLineShell have been deprecated in favor of lib.cli.toCommandLine, lib.cli.toCommandLineShell, lib.cli.toCommandLineGNU and lib.cli.toCommandLineShellGNU.

  • lib.options.mkAliasOptionModuleMD is now obsolete; use the identical [lib.options.mkAliasOptionModule] instead.

  • types.either silently accepted mismatching types when used in freeformType. Module maintainers should fix the used type In most cases wrapping either with attrsOf should be sufficient.

    Since types.either was used to bootstrap other types. This also affects the following types:

    • oneOf
    • number
    • numbers.*

Additions and Improvements

  • lib.cli.toCommandLine, lib.cli.toCommandLineShell, lib.cli.toCommandLineGNU and lib.cli.toCommandLineShellGNU have been added to address multiple issues in lib.cli.toGNUCommandLine and lib.cli.toGNUCommandLineShell.

  • ugrep now has two new override options:

    • wrapWithFilterUtils for optionally wrapping ugrep+ and ug+ with filter utilities for grepping other file types.
    • createGrepReplacementLinks for optionally creating drop-in replacement symlinks for gnugrep.