# Nixpkgs 26.05 ("Yarara", 2026.05/30) {#sec-nixpkgs-release-26.05}

## Highlights {#sec-nixpkgs-release-26.05-highlights}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

- GCC has been updated from GCC 14 to GCC 15.
  This introduces some backwards incompatible changes; Refer to the [upstream porting guide](https://gcc.gnu.org/gcc-15/porting_to.html) for details.

- `glibc` has been updated to version 2.42.

  This version no longer makes the stack executable when a shared library requires this. A symptom
  is an error like

  > cannot enable executable stack as shared object requires: Invalid argument

  This is usually a bug. Please consider reporting it to the software maintainers.

  In a lot of cases, the library requires the execstack by mistake only. The following workarounds exist:

  * When building the shared library in question from source, use the following linker flags to force turning off the
    executable flag:

    ```nix
    mkDerivation {
      # …

      env.NIX_LDFLAGS = "-z,noexecstack";
    }
    ```

  * If the sources are not available, the execstack-flag can be cleared with `patchelf`:

    ```
    patchelf --clear-execstack binary-only.so
    ```

  * If the shared library to be loaded actually requires an executable stack and it isn't turned
    on by the application loading it, you may force allowing that behavior by setting the
    following environment variable:

    ```
    GLIBC_TUNABLES=glibc.rtld.execstack=2
    ```

    **Do not set this globally!** This makes your setup inherently less secure.

- Node.js default version has been updated from 22 LTS to 24 LTS.
  This introduces some breaking changes; Refer to the [upstream migration article](https://nodejs.org/en/blog/migrations/v22-to-v24) for details.

- Ruby default version has been updated from 3.3 to 3.4.
  Refer to the [upstream release announcement](https://www.ruby-lang.org/en/news/2024/12/25/ruby-3-4-0-released/) for details.

- []{#x86_64-darwin-26.05}

  **This will be the last release of Nixpkgs to support `x86_64-darwin`.**
  Platform support will be maintained and binaries built until Nixpkgs 26.05 goes out of support at the end of 2026.
  For 26.11, due to Apple’s deprecation of the platform and limited build infrastructure and developer time, we will no longer build packages for `x86_64-darwin` or support building them from source.

  By the time of 26.11’s release, Homebrew will offer only limited [Tier 3](https://docs.brew.sh/Support-Tiers#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.

  A warning will be displayed for `x86_64-darwin` users; you can set [](#opt-allowDeprecatedx86_64Darwin) in the [Nixpkgs configuration](https://nixos.org/manual/nixpkgs/stable/#chap-packageconfig) to silence it.
  The {file}`~/.config/nixpkgs/config.nix` file will not work for users of flakes, who can instead replace `nixpkgs.legacyPackages.x86_64-darwin` with

  ```nix
  import nixpkgs {
    system = "x86_64-darwin";
    config.allowDeprecatedx86_64Darwin = true;
  }
  ```

  nix-darwin users can set [`nixpkgs.config.allowDeprecatedx86_64Darwin`](https://nix-darwin.github.io/nix-darwin/manual/index.html#opt-nixpkgs.config) in their system configurations.

- The Factor programming language has been updated to Version 0.101 bringing various improvements to UI rendering and HiDPI support as well as support for Unicode 17.0.0.
  Starting from Version 0.100, the Factor VM is compiled with Clang.

  This brings along some backwards compatibility issues in the language further detailed [here](https://re.factorcode.org/2025/12/factor-0-101-now-available.html).
  Additionally, the FUEL Emacs module is no longer part of the `factor-lang` package.
  It is part of the MELPA package set for a while already and must be taken from there.
  This *does not affect* `factor-lang` packages Version 0.99 and 0.100.
  Using the official MELPA package now puts the burden of providing the path to `/lib/factor` in `factor-root-dir` on the user.
  Make sure to use the `extraVocabs` package attribute to compose a special vocabulary tree if necessary.
  You can refer to the generated tree of vocabulary roots via the newly exposed `vocabTree` attribute, as described in the [documentation](#ssec-factor-dev-env).

- Nixpkgs configuration, specified for NixOS using `nixpkgs.config`, or using the `config` argument when importing nixpkgs, has learned to accept a `lib` argument as well as `pkgs`, which allows the configuration to be computed without depending on the `pkgs` fixed point.  If you are referencing licenses in `lib.licenses` by having this configuration be a function taking a `pkgs` arg, you may wish to change to using `lib` for faster computation and to avoid infinite recursion errors if pkgs depends on parts of the computed configuration in future.

    For example, if you currently have configuration that looks like this:

        { pkgs, ... }:
        {
          allowlistedLicenses = [ pkgs.lib.licenses.nasa13 ];
          blocklistedLicenses = with pkgs.lib.licenses; [ gpl3Only gpl3Plus ];
        }

    You may wish to update it to something like this:

        { lib, ... }:
        {
          allowlistedLicenses = [ lib.licenses.nasa13 ];
          blocklistedLicenses = with lib.licenses; [ gpl3Only gpl3Plus ];
        }

    Or, if you need configuration that works with both 26.05 and 25.11:

        { pkgs, lib ? pkgs.lib, ... }:
        {
          allowlistedLicenses = [ lib.licenses.nasa13 ];
          blocklistedLicenses = with lib.licenses; [ gpl3Only gpl3Plus ];
        }

## Backward Incompatibilities {#sec-nixpkgs-release-26.05-incompatibilities}

<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

- `mdbook-linkcheck` has been removed as it is unmaintained and incompatible with the latest version of `mdbook`. Users can instead migrate to `mdbook-linkcheck2`.

- The `nodePackages` package set has been removed entirely from nixpkgs. This package set was created to ease the maintenance burden of maintaining lots of
  NodeJS-based packages within nixpkgs, but became a burden itself. Over the past several releases, there has been a focus on removing it in favor of the more modern nixpkgs packaging strategies.
  After a long time, this package set has been deprecated and removed. If you are using its package set in your own config, please use the top-level packages instead.(i.e `pkgs.package-name` instead of `pkgs.nodePackages.package-name`).

- Note that the above `nodePackages` removal also coincides with the removal of `node2nix` and its tooling, which have been deprecated for a long time.

- `buildEnv`-constructed packages now take only [structured attributes (`{ __structuredAttrs = true; }`)](https://nix.dev/manual/nix/2.18/language/advanced-attributes.html#adv-attr-structuredAttrs).

- `xfce.mkXfceDerivation` has been deprecated (i.e. conditioned behind `nixpkgs.config.allowAliases`)
  and will be removed in NixOS 26.11, please use `stdenv.mkDerivation` directly. You can migrate by
  adding `pkg-config`, `xfce4-dev-tools`, and `wrapGAppsHook3` to your `nativeBuildInputs` and
  `--enable-maintainer-mode` to your `configureFlags`.

- `yarn2nix`/`yarn2nix-moretea` and its tooling(`mkYarnPackage`, `mkYarnModules`, and `fixup_yarn_lock`) have been removed as they were unmaintainable in nixpkgs. If you want to build with Yarn V1 going forward, use the hooks instead(`yarnBuildHook`, `yarnConfigHook`, and `yarnInstallHook`). See the yarn v1 documentation in the nixpkgs manual for more details.

- `albert` has been updated to version 34.0.5. This release redesigns the query system to support stateful asynchronous handlers and infinite scrolling, and adds internationalized tokenization.
  This update introduces several breaking changes: the Python plugin interface is now v5.0, the `PATH` plugin has been renamed to `Commandline`, and the QStylesheets-based widgets box model frontend has been removed.
  For more information read the [changelog for 34.0.0](https://albertlauncher.github.io/2026/01/19/albert-v34.0.0-released/).

- `asciinema_3` is now renamed to `asciinema` and the old `asciinema` version 2.x.x written in python was removed.

- `sing-box` has been updated to 1.13.0, which has removed some deprecated options.  See [upstream documentation](https://sing-box.sagernet.org/configuration/) for details and migration options.

- `cargo-codspeed` has been updated from `3.0.5` to `4.2.0`. Version `4.0.0` includes breaking changes. For more information read the [changelog for 4.0.0](https://github.com/CodSpeedHQ/codspeed-rust/releases/tag/v4.0.0).

- `commafeed` has been updated to version 7.0.0, which includes changes impacting its security. Please see [upstream's release notes](https://github.com/Athou/commafeed/releases/tag/7.0.0) for details.

- `corepack_latest` has been removed, as Corepack is no longer distributed with Node.js.

- `spoof` has been removed, as there are many issues upstream with it working on modern OS versions, and it appears to be unmaintained.

- `duckstation` package has been removed, as it was requested by upstream and build sources were changed to be incompatible with NixOS.

- `nodePackages.coc-go` and `nodePackages.coc-tsserver`, along with their vim plugins, have been removed from nixpkgs due to being unmaintained.

- `nodePackages.wavedrom-cli` has been removed, as it was unmaintained within nixpkgs.

- MATE packages have been moved to top level (e.g. if you previously added `pkgs.mate.caja` to `environment.systemPackages`, you will need to change it to `pkgs.caja`).

- `kratos` has been updated from 1.3.1 to [25.4.0](https://github.com/ory/kratos/releases/tag/v25.4.0). Upstream switched to a new versioning scheme (year.major.minor). Notable breaking changes:

  - The `migrate sql` CLI command is now `migrate sql up`
  - OIDC registration validation errors are now placed in the `default` node group instead of `oidc`
  - Failed OIDC account linking returns HTTP 400 instead of 200

- `pdns` has been updated to version [v5.0.x](https://doc.powerdns.com/authoritative/changelog/5.0.html), which introduces breaking changes. Check out the [Upgrade Notes](https://doc.powerdns.com/authoritative/upgrading.html#to-5-0-0) for details.

- `geph` package's built-in GUI `geph5-client-gui` has been [removed](https://github.com/geph-official/geph5/commit/f2221fb8386312daf2cef05483ebb353ff48bdb4) by the upstream. All users who wish to continue using the GUI should install the `gephgui-wry`, which is consistent with the official release version.

- `xfsprogs` was updated to version 6.18.0, which enables parent pointers and exchange-range by default. Upstream recommends not to use these features with kernels older than 6.18.
   GRUB2 is likely unable to boot from filesystems with these features enabled.

- `lunarvim` package has been removed, as it was abandoned upstream and relied on an old version of `neovim` to work properly.

- `requireFile` now treats any `message` or `url` argument as a literal string, rather than subjecting it to Bash here-doc expansion.  This allows including strings like `$PWD` in the message without needing to know about and handle the undocumented Bash expansion.

- `nodePackages.browserify` has been removed, as it was unmaintained within nixpkgs.

- `command-not-found` package will be enabled by default if the source of nixpkgs contains the file `programs.sqlite`. This is the case if a nixpkgs tarball from <https://channels.nixos.org> is used. This usage will also make the database of `command-not-found` stateless.

- `nodePackages.sass` has been removed, as it was unmaintained within nixpkgs.

- All `@tailwindcss` packages in the `nodePackages` set have been removed, as they are libraries that should instead be locked by JS projects that utilize them.

- `arti` has been updated to major version 2, which removed the long-deprecated `proxy.socks_port` and `proxy.dns_port` and the legacy syntax for specifying directory authorities. For more information, see the [changelog for 2.0.0](https://gitlab.torproject.org/tpo/core/arti/-/blob/arti-v2.0.0/CHANGELOG.md).

- `kanata` now requires `karabiner-dk` version 6.0+ or later.
  The package has been updated to use the new `karabiner-dk` package and the `darwinDriver` output stays at the version defined in the package.

- Keycloak has been updated to 26.6.X, bringing a lot of new features like federated client authentication, JWT authorization grants, workflows and the ability to do
  zero-downtime patch releases. Read more about [all the exciting new capabilities in keycloak 26.6 here](https://github.com/keycloak/keycloak/releases/tag/26.6.0)
  and [consult the migration guide to 26.6](https://www.keycloak.org/docs/latest/upgrading/index.html#migrating-to-26-6-0) to find out whether this is a breaking
  change for your keycloak instance.

- `elegant-sddm` has been updated to be Qt6 compatible. Themes for SDDM are slightly different so read the [wiki](https://wiki.nixos.org/wiki/SDDM_Themes) for more.

- `forgejo-lts` has been updated to major version 15. For more information, see the [release blog post](https://forgejo.org/2026-04-release-v15-0/) and [full release notes](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/release-notes-published/15.0.0.md)

- `pulsar` has finally migrated from electron v12 to v30, backup `~/.pulsar` before upgrading. See [Pulsar on Electron 30: what it means for you](https://blog.pulsar-edit.dev/posts/20251202-savetheclocktower-pulsar-on-electron-30/).

- `mactracker` has been updated to major version 8, which now [requires macOS 11 Big Sur or later](https://mactracker.ca/releasenotes-mac.html#:~:text=System%20requirements%20updated%20to%20macOS%2011%20Big%20Sur%20and%20later). The previous version supported Mac OS X 10.6.8 or later.

- `net-news-wire` has been updated from 6.x to 7.x, which now requires macOS 15 (Sequoia) or newer. The previous version supported macOS 13 and newer.

- `bartender` has been updated to major version 6. This removes support for MacOS Sonoma (and adds support for Tahoe). For more information, see [the release notes](https://www.macbartender.com/Bartender6/release_notes/) or [the Bartender 6 support page](https://www.macbartender.com/Bartender6/support/).

- `lima` has been updated from `1.x` to `2.x`. This major update includes several breaking changes, such as `/tmp/lima` no longer being mounted by default.

- Varnish Cache has been updated to major version 8, `varnish` now refers to `varnish80`. That release contains breaking changes, see [Upgrading to Varnish-Cache 8.0](https://vinyl-cache.org/docs/8.0/whats-new/upgrading-8.0.html).
  Note that the Varnish 6 LTS release remains available as `varnish60`.
  The Varnish Cache open-source project renamed itself to Vinyl Cache. Please migrate to `vinyl-cache`. See the `vinyl-cache` release notes entry for more information.
  Varnish 8 is not supported for the entire NixOS 26.05 release cycle.

- Vinyl Cache has been introduced with the major version 9 as the Varnish Cache open source project renamed itself to Vinyl Cache. Please migrate to Vinyl Cache 9 when you still use Varnish Cache.
  A new module has also been introduced for this migration: `services.vinyl-cache`.
  This release contains breaking changes, see [Upgrading to Vinyl Cache 9.0](https://vinyl-cache.org/docs/9.0/whats-new/upgrading-9.0.html).
  The `varnish-modules` project is currently not packaged for Vinyl Cache, as it is incompatible.

- `eslint` has been updated from version 9 to version 10. Please see <https://eslint.org/blog/2026/02/eslint-v10.0.0-released/> for details about the breaking changes included in the update.

- `minio` has been abandoned by upstream and security issues won't be fixed. `minio_legacy_fs` has also been removed. Both are scheduled for full removal in 26.11. Users should migrate to alternatives such as Garage, SeaweedFS, or Ceph. S3-compatible clients such as rclone can be used to move data.

- `mercure` has been updated to `0.21.4` (or later). Version [0.21.0](https://github.com/dunglas/mercure/releases/v0.21.0) and [0.21.2](https://github.com/dunglas/mercure/releases/tag/v0.21.2) introduce breaking changes to the package.

- `mozc` and `mozc-ut` no longer contain the IBus front-end, which is now provided by `ibus-engines.mozc` and `ibus-engines.mozc-ut`.

- `nemorosa` has been updated from `0.4.3` to `0.5.0`. Version [0.5.0](https://github.com/KyokoMiki/nemorosa/releases/tag/0.5.0) introduced breaking changes to the package configuration.

- `n8n` has been updated to version 2. You can find the breaking changes here: <https://docs.n8n.io/2-0-breaking-changes/>.

- `nomad` has been updated to v1.11. Refer to the [release note](https://developer.hashicorp.com/nomad/docs/release-notes/nomad/v1-11-x) for more details. Once a new Nomad version has started and upgraded its data directory, it generally cannot be downgraded to the previous version.

- The default NVIDIA drivers no longer support Maxwell (GTX 1xxx) or older GPUs. Pin the nvidia package to ` config.boot.kernelPackages.nvidiaPackages.legacy_580` for continued support.

- `gurk-rs` has been updated from `0.6.4` to `0.8.0`. Version `0.8.0` includes breaking changes. For more information read the [release notes for 0.8.0](https://github.com/boxdot/gurk-rs/releases/tag/v0.8.0).

- `iroh` has been removed and split up into `iroh-dns-server` and `iroh-relay`.

- The `xorg` package set has been deprecated, packages have moved to the top level.

- `python3Packages.buildPythonPackage` and `python3Packages.buildPythonApplication` now throw errors in the presence of `pytestFlagsArray`.
  Please use [`pytestFlags` and `(enabled|disabled)(TestPaths|Tests|TestMarks)`](#using-pytestcheckhook) instead.
  If modifying the Nix expression is not feasible, users can remediate the error by overriding `pytestFlagsArray` with `null` or `[ ]`.

- `python3Packages.pygame` has been renamed to `python3Packages.pygame-original`, the attribute `python3Packages.pygame` will from python 3.14 default to the more actively maintained `python3Packages.pygame-ce`.

- `fastly` has been updated to major version 14. For more information, you can check the [release notes](https://github.com/fastly/cli/releases/tag/v14.0.0).

- `peertube` has been updated from `7.3.0` to `8.0.2`, introducing several breaking changes.
  Some notable new features include channel collaboration and video player redesign with a new theme.
  For details on how to upgrade, see the `IMPORTANT NOTES` section of the [v8.0.0 CHANGELOG entry](https://docs.joinpeertube.org/CHANGELOG#v8-0-0).

- `python3Packages.gradio` has been updated to version 6. See upstream's migration guide at <https://www.gradio.app/main/guides/gradio-6-migration-guide>.

- `python3Packages.pikepdf` no longer builds with mupdf support by default, which may be nice in Jupyter and iPython. Build with `withMupdf = true` if this is required.

- `olive-editor` has been dropped as upstream development ceased and no longer builds.

- `python3Packages.django-mdeditor` has been removed, as it was unmaintained upstream and the latest release was vulnerable to a [critical security vulnerability](https://github.com/NixOS/nixpkgs/issues/515462).

- `vicinae` has been updated to v0.20. This includes, among several other breaking changes, a complete overhaul of the configuration system. For update instructions, see the [upstream configuration documentation](https://docs.vicinae.com/config#migration-from-v0-16-x-to-v0-17-x).

- `percona-server_8_4` has been removed. Please update to `percona-server_8_0`, `mysql84` or `mariadb`.

- The `man-pages` package's outputs have been split. The manual pages are installed into the `man` output, which is installed by default. Binaries (including `diffman-git`, `mansect`, `pdfman`, and `sortman`) are installed into the `out` output, which is not installed by default.

- All Log4Shell vulnerability scanners were removed, as they were all unmaintained upstream and are no longer relevant given that the vulnerability has been fixed upstream for several years.

- Plugins for the JetBrains IDEs have been removed from Nixpkgs.

- `spacetimedb` has been updated from 1.12.0 to [2.0.3](https://github.com/clockworklabs/SpacetimeDB/releases/tag/v2.0.3). Breaking changes and migration notes from 1.0 to 2.0 can be found [here](https://spacetimedb.com/docs/upgrade/).

- `jetbrains.plugins.addPlugins` no longer supports plugin names or ID strings.
  You can still use `addPlugins` with plugin derivations, such as plugins packaged outside of Nixpkgs.

- NetBox was updated to `>= 4.5.5`. Have a look at the breaking changes
  of the [4.5 release](https://github.com/netbox-community/netbox/releases/tag/v4.5.0),
  make the required changes to your database, if needed, then upgrade by setting `services.netbox.package = pkgs.netbox_4_5;` in your configuration.

- `pocket-id` has been updated to version 2 that contains [breaking changes](https://pocket-id.org/docs/setup/major-releases/migrate-v2).

- `asio` (standalone version of `boost::asio`) has been updated from 1.24.0 to 1.36.0. Some breaking changes were introduced between these
  two versions, and the one affected most was the removal of `asio::io_service` in favor of `asio::io_context` in 1.33.0. `asio_1_32_0` is
  retained for packages that have not completed migration. `asio_1_10` has been removed as no packages depend on it anymore.
  `asio` also no longer propagates `boost` as it is used independent from `boost` in most cases.

- `docker-color-output` has been updated from major version 2 to 3. One breaking change is, that they switched to [YAML-based configuration files](https://github.com/devemio/docker-color-output?tab=readme-ov-file#configuration).

- `dasel` has been updated from v2.8.1 to v3. There were significant breaking changes:

  - The `put` and `delete` commands have been removed. Use the new query syntax with expressions to modify data in-place.
  - The `--version` flag is now a subcommand: `dasel version`
  - CLI framework migrated from Cobra to Kong, changing flag parsing behavior
  - Selector syntax has been revamped, see [dasel v3 documentation](https://daseldocs.tomwright.me/v3) for migration guide.

  Example migration:
  - Old: `echo '{"my":{"favourites":{"colour":"blue"}}}' | dasel put -t json -r json -t string -v "red" "my.favourites.colour"`
  - New: `echo '{"my":{"favourites":{"colour":"blue"}}}' | dasel query -i json -o json --root 'my.favourites.colour = "red"'`

- `stalwart-mail` has been renamed to `stalwart`

- Ethercalc and its associated module have been removed, as the package is unmaintained and cannot be installed from source with npm now.

- `coreth` has been removed, as upstream has moved it into `avalanchego`.

- `nodePackages.prebuild-install` was removed because it appeared to be unmaintained upstream.
  See [upstream's recommendations for alternatives](https://github.com/prebuild/prebuild-install#note).

- `davis` made changes to the `IMAP_AUTH_URL` option. The flags are now standalone parameters that you need to fill:
  - Before:
    ```env
    IMAP_AUTH_URL={imap.gmail.com:993/imap/ssl/novalidate-cert}
    ```
  - After:
    ```env
    IMAP_AUTH_URL=imap.mydomain.com:993
    IMAP_ENCRYPTION_METHOD=ssl
    IMAP_CERTIFICATE_VALIDATION=false
    ```

- `python3Packages.pillow-avif-plugin` has been removed as the functionality is included in `python3Packages.pillow` directly since version 11.3.

- `wasistlos` (previously known as `whatsapp-for-linux`) has been removed because it was unmaintained and archived upstream.
  Multiple alternatives exist: `karere`, `whatsie` and `zapzap` among others.

- `light` has been removed because it was unmaintained.
  `brightnessctl` and `acpilight` provide similar functionality.

- `opensmtpd-filter-dkimsign` is now installed into `libexec/smtpd` instead of `libexec/opensmtpd` so that now it is properly linked into the environment built by `services.opensmtpd.procPackages`. If you hardcoded path to `filter-dkimsign` please consider using this option.

- `shisho` has been removed because it's archived. `semgrep`, `opengrep`, and `ast-grep` provide similar functionality.

- All Xfce packages have been moved to top level (e.g. if you previously added `pkgs.xfce.xfce4-whiskermenu-plugin` to `environment.systemPackages`, you will need to change it to `pkgs.xfce4-whiskermenu-plugin`). The `xfce` scope will be removed in NixOS 26.11.

- The Dovecot IMAP server has been updated to version 2.4, with the `dovecot` attribute now referring to this backwards-incompatible version. The attribute `dovecot_2_3` refers to the previous version. The Pigeonhole plugin has been similarly updated to 2.4, with the version compatible with Dovecot 2.3 being at `dovecot_pigeonhole_0_5`. See <https://doc.dovecot.org/latest/installation/upgrade/2.3-to-2.4.html> for more information on how to upgrade.

- `spacefm` was removed because it appeared to be unmaintained upstream.

- `neofetch` has been removed because it was unmaintained upstream. Consider using the updated fork `neowofetch` provided by the `hyfetch` package or the alternative `fastfetch` instead.

- `vimPlugins.nvim-treesitter` has been updated to `main` branch, which is a full and incompatible rewrite. If you can't or don't want to update, you should use `vimPlugins.nvim-treesitter-legacy`.

- Package `jellyseerr` has been renamed to `seerr` following the upstream rename.

- The `pie` hardening flag has been removed and will now error, after being deprecated in 25.11. 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`.

- `pqos-wrapper` was removed as it has been unmaintained since 2022 and not widely used.

## Other Notable Changes {#sec-nixpkgs-release-26.05-notable-changes}

<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

- `nvidia-x11` proprietary kernel modules are now provided separately as `nvidia_x11.mod`, while `nvidia_x11.open` remains the open-source kernel module package.

- `linuxPackages.nvidiaPackages` now follows NVIDIA's official release branches by exposing `production`, `new_feature`, and `beta`. The convenience aliases `latest` (newer of `production` and `new_feature`) and `bleeding_edge` (newer of `latest` and `beta`) are provided; note that `beta` now refers strictly to the beta branch.

- `stestrCheckHook` was added: This test hook runs `stestr run`. You can disable tests with `disabledTests` and `disabledTestsRegex`.

- `balatro` now supports the Google Play and Xbox PC versions of the game.  Pass the `apk` or `Assets.zip` as `balatro.override { src = "…" }`.

- `uptime-kuma` has been updated to v2, which requires an automated migration that can take a few hours. **A backup is highly recommended.**
  If your SQLite database is corrupted, the migration might fail and require [manual intervention](https://github.com/louislam/uptime-kuma/issues/5281).
  See the [migration guide](https://github.com/louislam/uptime-kuma/wiki/Migration-From-v1-To-v2) for more information.

- `incus-lts` has been updated from v6 to v7

- The `libcxxhardeningextensive` hardening flag has been **disabled** by default. Enabling it by default in 25.11 was unintentional and may have had a negative effect on performance in some cases. `libcxxhardeningfast` remains enabled by default.

- Wine has been updated to the 11.0 branch. Please check the [upstream announcement](https://gitlab.winehq.org/wine/wine/-/releases/wine-11.0) for more details.

- Cinnamon has been updated to 6.6, please check the [upstream announcement](https://www.linuxmint.com/rel_zena_whatsnew.php) for more details.

- `rspamd` has been updated to 4.0. Please check the upstream [migration](https://docs.rspamd.com/tutorials/migration/#migration-to-rspamd-400) documentation, especially if you run a sharded Redis deployment.

- `hyphen` now supports over 40 language variants through `hyphenDicts` and now allows to enable all supported languages through `hyphenDicts.all`.

- `budgie` has been updated to 10.10, please check the [upstream announcement](https://buddiesofbudgie.org/blog/budgie-10-10-released) for more details.

- The packages `ibtool`, `actool` and `re-plistbuddy` have been added, providing reimplementations of the corresponding proprietary Apple tools. They are more compatible with the originals than the previously existing `xcbuild` package, and should enable more darwin software to be built from source.

- GNU Taler has been updated to version 1.3.
  This release focuses on getting everything ready for a deployment of GNU Taler by Magnet bank.
  For more details, see the [upstream release notes](https://www.taler.net/en/news/2025-13.html).

- `collabora-desktop` The desktop version of Collabora Office is now available, package version `25.05.9.2-2`.

- The `services.geoserver` NixOS module has been added to allow running [Geoserver](https://geoserver.org/) as a service.

- `fetchPnpmDeps` and `pnpmConfigHook` were added as top-level attributes, replacing the now deprecated `pnpm.fetchDeps` and `pnpm.configHook` attributes.

- `fetchPnpmDeps`' `fetcherVersion = 1` and `fetcherVersion = 2` are deprecated
  and scheduled for removal in the 26.11 release. A deprecation warning has
  been added. Packages still on `fetcherVersion = 1` or `fetcherVersion = 2`
  should migrate to `fetcherVersion = 3` and regenerate their hashes. See the
  [pnpm `fetcherVersion` section](#javascript-pnpm-fetcherVersion) of the
  manual for details.

- `buildNpmPackage` now supports `npmDepsFetcherVersion` (and `fetchNpmDeps` now supports `fetcherVersion`). Set to `2` to enable packument caching, which fixes builds for projects using npm workspaces.

- Added `dell-bios-fan-control` package and service.

- Added `lovr` package, a Lua-based game engine for VR and XR applications.

- Updated `wsjtx` from 2.7.0 to 3.0.0 for amateur radio hobbyists who use FT8 and other related digital modes.
  See the [release notes](https://wsjt.sourceforge.io/Release_Notes.txt) for the changelog.

- `openrgb` was updated to 1.0rc2, which now uses Plugin API version 4.
  Some existing OpenRGB plugins may be incompatible or require updates.

- `wrapNeovimUnstable` now sets provider-related configuration in its generated config rather than as wrapper arguments. It should not affect configuration unless you set `wrapRc` to false or are using the `legacyWrapper`.

- Neovim Lua dependencies are now set in the generated init.lua instead of
  modifying LUA_PATH in the wrapper. Commands run pre-vimrc via `nvim --cmd
  "require'LUA_MODULE'"` may
  not find their lua dependencies anymore. Use `nvim -c "lua require'LUA_MODULE'"` instead to run these commands after loading `init.lua`. If you use `wrapNeovim` with `wrapRc` set to `false`, you may lose the lua dependencies if you are not loading the generated `init.lua`.

- We now use the upstream wrapper script for Gradle, supporting both the `JAVA_HOME` and `GRADLE_OPTS` environment variables.

- Updated `gonic` to 0.21.0. A full ("slow") scan is recommended after upgrading to v0.21.0 to pick up the newly scanned fields (contributors, ISRCs, record labels, per-track years, ARTIST_CREDIT).

- Added `haskell.packages.microhs`, a set of Haskell packages built with MicroHs.

- `gnuradio`: Overriding the `.pkgs` package set is now possible with a `packageOverrides` function, like with `python.pkgs` and other language-specific package sets.
Example:

```nix
gnuradioMinimal.override {
  packageOverrides = grSelf: grSuper: {
    osmosdr = grSuper.osmosdr.override {
      airspy = null;
      hackrf = null;
      libbladeRF = null;
      soapysdr-with-plugins = null;
    };
  };
}
```

## Nixpkgs Library {#sec-nixpkgs-release-26.05-lib}

<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

### Breaking changes {#sec-nixpkgs-release-26.05-lib-breaking}

- The `nodejs_latest` alias now points to `nodejs_26` instead of `nodejs_24`.

- `nodejs-slim` no longer exposes a `corepack` executable, it has been moved to an ad-hoc output; to restore the previous behavior, `nodejs-slim.corepack` must be explicitly included.

- `nodejs` is now a simple wrapper for `nodejs-slim`+`nodejs-slim.npm`+`nodejs-slim.corepack`, meaning it is no longer possible to reference or override its attributes or outputs (e.g. `nodejs.libv8` must be replaced with `nodejs-slim.libv8`, `nodejs.nativeBuildInputs` with `nodejs-slim.nativeBuildInputs`, etc.).

- `navidrome` has removed the built-in Spotify integration. See [v0.61.0](https://github.com/navidrome/navidrome/releases/tag/v0.61.0) for details on optional replacements.

- `mold` is now wrapped by default.

- The `neovim` package and module now disable by default the `python3` and `ruby` providers, unused by most users and reducing closure size from 365MiB to 240MiB. Host provider executables are not exposed anymore along with the neovim wrapper. You can still refer to those using the neovim provider variables (e.g., `python3_host_prog`).

- `canokey-qemu` support for `qemu` was restored (although disabled by default), after being marked as broken since nixpkgs 25.11. Please note that the format of canokey files has changed, and that some data created with older canokey-qemu release cannot be read by the current version. See the [documentation](https://github.com/canokeys/canokey-qemu/tree/v1?tab=readme-ov-file#compatibility-warning) for details.

### Deprecations {#sec-nixpkgs-release-26.05-lib-deprecations}

- `mpv-unwrapped.scripts` and `mpv-unwrapped.wrapper` have been removed. Please use `mpvScripts` and `mpv.override` accordingly.

- `fetchFromSavannah` is now deprecated and is expected to be fully removed in a future release. From now on, use `fetchgit` or a Savannah releases mirror when applicable.

- Using nested lists in build/runtime inputs in `mkDerivation` is now deprecated.

### Additions and Improvements {#sec-nixpkgs-release-26.05-lib-additions-improvements}

- The builder `php.buildComposerProject2` for PHP applications has been improved for better reliability and stability.

