We’ve never deprecated a platform in widespread use before, and it seems prudent to warn users about the upcoming end of support so they can plan appropriately. I tried to make this relatively unobtrusive by taking advantage of the import cache and offering a way to turn it off, but I anticipate there might still be issues with e.g. `nix shell nixpkgs#…` and spammy warnings from multiple instantiations of Nixpkgs. I’m not sure there’s much we can do about that unless we take a different strategy entirely; `nix shell --impure nixpkgs#…` with a `~/.config/nixpkgs/config.nix` is about the best UX we can hope to offer with the restrictions of flakes.
18 KiB
Nixpkgs 26.05 ("Yarara", 2026.05/??)
Highlights
-
GCC has been updated from GCC 14 to GCC 15. This introduces some backwards incompatible changes; Refer to the upstream porting guide for details.
-
Node.js default version has been updated from 22 LTS to 24 LTS. This introduces some breaking changes; Refer to the upstream migration article for details.
-
Ruby default version has been updated from 3.3 to 3.4. Refer to the upstream release announcement 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 forx86_64-darwinor support building them from source.By the time of 26.11’s 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.
A warning will be displayed for
x86_64-darwinusers; you can set in the Nixpkgs configuration to silence it. The {file}~/.config/nixpkgs/config.nixfile will not work for users of flakes, who can instead replacenixpkgs.legacyPackages.x86_64-darwinwithimport nixpkgs { system = "x86_64-darwin"; config.allowDeprecatedx86_64Darwin = true; }nix-darwin users can set
nixpkgs.config.allowDeprecatedx86_64Darwinin 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. Additionally, the FUEL Emacs module is no longer part of the
factor-langpackage. It is part of the MELPA package set for a while already and must be taken from there. This does not affectfactor-langpackages Version 0.99 and 0.100. Using the official MELPA package now puts the burden of providing the path to/lib/factorinfactor-root-diron the user. Make sure to use theextraVocabspackage attribute to compose a special vocabulary tree if necessary. You can refer to the generated tree of vocabulary roots via the newly exposedvocabTreeattribute, as described in the documentation. -
Nixpkgs configuration, specified for NixOS using
nixpkgs.config, or using theconfigargument when importing nixpkgs, has learned to accept alibargument as well aspkgs, which allows the configuration to be computed without depending on thepkgsfixed point. If you are referencing licenses inlib.licensesby having this configuration be a function taking apkgsarg, you may wish to change to usinglibfor 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
-
xfce.mkXfceDerivationhas been deprecated (i.e. conditioned behindnixpkgs.config.allowAliases) and will be removed in NixOS 26.11, please usestdenv.mkDerivationdirectly. You can migrate by addingpkg-config,xfce4-dev-tools, andwrapGAppsHook3to yournativeBuildInputsand--enable-maintainer-modeto yourconfigureFlags. -
alberthas been updated to the 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, thePATHplugin has been renamed toCommandline, and the QStylesheets-based widgets box model frontend has been removed. For more information read the changelog for 34.0.0. -
cargo-codspeedhas been updated from3.0.5to4.2.0. Version4.0.0includes breaking changes. For more information read the changelog for 4.0.0. -
corepack_latesthas been removed, as Corepack is no longer distributed with Node.js. -
nodePackages.browser-synchas been removed, as it was unmaintained within nixpkgs. -
spoofhas been removed, as there are many issues upstream with it working on modern OS versions, and it appears to be unmaintained. -
nodePackages.coc-goandnodePackages.coc-tsserver, along with their vim plugins, have been removed from nixpkgs due to being unmaintained. -
nodePackages.wavedrom-clihas been removed, as it was unmaintained within nixpkgs. -
All
@tailwindcsspackages in thenodePackagesset have been removed, as they are libraries that should instead be locked by JS projects that utilize them. -
artihas been updated to major version 2, which removed the long-deprecatedproxy.socks_portandproxy.dns_portand the legacy syntax for specifying directory authorities. For more information, see the changelog for 2.0.0. -
kanatanow requireskarabiner-dkversion 6.0+ or later. The package has been updated to use the newkarabiner-dkpackage and thedarwinDriveroutput stays at the version defined in the package. -
Reloading or restarting systemd units from the NixOS activation script is deprecated, and will be removed in NixOS 26.11. This deprecation is part of a bigger effort to deprecate activation scripts altogether, which will take place over several releases. There are no in-tree usages of the now-deprecated reload/restart functionality.
-
elegant-sddmhas been updated to be Qt6 compatible. Themes for SDDM are slightly different so read the wiki for more. -
forgejohas been updated to major version 14. For more information, see the release blog post and full release notes -
bartenderhas been updated to major version 6. This removes support for MacOS Sonoma (and adds support for Tahoe). For more information, see the release notes or the Bartender 6 support page. -
limahas been updated from1.xto2.x. This major update includes several breaking changes, such as/tmp/limano longer being mounted by default. -
minio_legacy_fshas been removed. If you used that package, migrate your data to be compatible with the newest minio and use the packageminio. -
mercurehas been update to0.21.4(or later). Version 0.21.0 and 0.21.2 introduce breaking changes to the package. -
n8nhas been updated to version 2. You can find the breaking changes here: https://docs.n8n.io/2-0-breaking-changes/. -
gurk-rshas been updated from0.6.4to0.8.0. Version0.8.0includes breaking changes. For more information read the release notes for 0.8.0. -
irohhas been removed and split up intoiroh-dns-serverandiroh-relay. -
the
xorgpackage set has been deprecated, packages have moved to the top level. -
python3Packages.pygamehas been been renamed topython3Packages.pygame-original, the attributepython3Packages.pygamewill from python 3.14 default to the more actively maintainedpython3Packages.pygame-ce -
peertubehas been updated from7.3.0to8.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 theIMPORTANT NOTESsection of the v8.0.0 CHANGELOG entry. -
python3Packages.gradiohas been updated to version 6. See upstream's migration guide at https://www.gradio.app/main/guides/gradio-6-migration-guide. -
vicinaehas been updated to v0.17. Version 0.17 contains a complete overhaul of the configuration system. For update instructions, see the release notes for v0.17.0 and the upstream configuration documentation. -
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.
-
jetbrains.plugins.addPluginsno longer supports plugin names or ID strings. You can still useaddPluginswith plugin derivations, such as plugins packaged outside of Nixpkgs. -
The
programs.captive-browsermodule no longer falls back on a setcap wrapper around udhcpc to discover your network's DNS server due to GHSA-wc3r-c66x-8xmc (CVE-2026-25740). If you're using this module, you must either configureprograms.captive-browser.dhcp-dnsmanually or enable one of NetworkManager, dhcpcd, or systemd-networkd. -
The
services.yggdrasilmodule has been refactored with the following breaking changes:- The
services.yggdrasil.configFileoption has been removed. Configuration should now be specified directly viaservices.yggdrasil.settings. - The
services.yggdrasil.persistentKeysoption has been removed. To maintain persistent keys and IPv6 addresses across reboots, useservices.yggdrasil.settings.PrivateKeyPathto securely load your private key from a file via systemd credentials. The private key must be in PEM format (PKCS #8). - Storing
PrivateKeydirectly insettingsis now explicitly forbidden to prevent keys from being stored world-readable in the Nix store. - If you previously used
configFile, migrate your configuration to thesettingsoption and extract the private key to a separate file referenced byPrivateKeyPath. - If you previously used
persistentKeys, convert your keys to PEM format and store them in a secure location accessible only to root, then reference them viaPrivateKeyPath.
- The
-
pocket-idhas been updated to version 2 that contains breaking changes. -
services.xserverwill now throw an error if an X11 driver specified invideoDriver(s)cannot be found. Previously, unknown drivers would be silently ignored. -
asio(standalone version ofboost::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 ofasio::io_servicein favor ofasio::io_contextin 1.33.0.asio_1_32_0is retained for packages that have not completed migration.asio_1_10has been removed as no packages depend on it anymore.asioalso no longer propagatesboostas it is used independent fromboostin most cases. -
stalwart-mailhas been renamed tostalwart -
Ethercalc and its associated module have been removed, as the package is unmaintained and cannot be installed from source with npm now.
-
corethhas been removed, as upstream has moved it intoavalanchego. -
nodePackages.prebuild-installwas removed because it appeared to be unmaintained upstream. See upstream's recommendations for alternatives. -
davismade changes to theIMAP_AUTH_URLoption. The flags are now standalone parameters that you need to fill:- Before:
IMAP_AUTH_URL={imap.gmail.com:993/imap/ssl/novalidate-cert} - After:
IMAP_AUTH_URL=imap.mydomain.com:993 IMAP_ENCRYPTION_METHOD=ssl IMAP_CERTIFICATE_VALIDATION=false
- Before:
-
python3packages.pillow-avif-pluginhas been removed as the functionality is included inpython3packages.pillowdirectly since version 11.3. -
services.openssh.settings.AcceptEnvnow explicitly defined as an option that takes a list of strings, to facilitate option merging. Setting it to a string value is no longer supported. -
nodejs-slimhas anpmand acorepackoutputs, andnodejsno longer has alibv8output. -
All Xfce packages have been moved to top level (e.g. if you previously added
pkgs.xfce.xfce4-whiskermenu-plugintoenvironment.systemPackages, you will need to change it topkgs.xfce4-whiskermenu-plugin). Thexfcescope will be removed in NixOS 26.11. -
spacefmwas removed because it appeared to be unmaintained upstream. -
vimPlugins.nvim-treesitterhas been updated tomainbranch, which is a full and incompatible rewrite. If you can't or don't want to update, you should usevimPlugins.nvim-treesitter-legacy.
Other Notable Changes
-
balatronow supports the Google Play and Xbox PC versions of the game. Pass theapkorAssets.zipasbalatro.override { src = "…" }. -
uptime-kumahas 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. See the migration guide for more information. -
Switch inhibitors were introduced, which add a pre-switch check that compares a list of strings between the previous and the new generation, and refuses to switch into the new generation when there is a difference between the two lists. This allows to avoid switching into a system when for instance the systemd version changed by adding
config.systemd.package.versionto the switch inhibitors for your system. You can still forcefully switch into any generation by settingNIXOS_NO_CHECK=1. -
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.
-
The
services.nextcloud-spreed-signalingNixOS module has been added to facilitate declarative management of a standalone Spreed signaling server ("High Performance Backend" for Nextcloud Talk). -
fetchPnpmDepsandpnpmConfigHookwere added as top-level attributes, replacing the now deprecatedpnpm.fetchDepsandpnpm.configHookattributes. -
buildNpmPackagenow supportsnpmDepsCacheVersion. Set to2to enable packument caching, which fixes builds for projects using npm workspaces. -
Added
dell-bios-fan-controlpackage and service. -
openrgbwas updated to 1.0rc2, which now uses Plugin API version 4. Some existing OpenRGB plugins may be incompatible or require updates. -
We now use the upstream wrapper script for Gradle, supporting both the
JAVA_HOMEandGRADLE_OPTSenvironment variables.
Nixpkgs Library
Breaking changes
-
The
nodejs_latestalias now points tonodejs_25instead ofnodejs_24. -
moldis now wrapped by default. -
neovimnow disables by default thepython3andrubyproviders, unused by most users and reducing closure size from 365MiB to 240MiB.
Deprecations
-
mpv-unwrapped.scriptsandmpv-unwrapped.wrapperhave been removed. Please usempvScriptsandmpv.overrideaccordingly. -
fetchFromSavannahis now deprecated and is expected to be fully removed in a future release. From now on, usefetchgitor a Savannah releases mirror when applicable.
Additions and Improvements
- The builder
php.buildComposerProject2for PHP applications has been improved for better reliability and stability.