1# Nixpkgs 25.11 ("Xantusia", 2025.11/??) {#sec-nixpkgs-release-25.11}
2
3## Highlights {#sec-nixpkgs-release-25.11-highlights}
4<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
5
6- The initial work to support native compilation on LoongArch64 has completed, with further changes currently
7 in preparation. In accordance with the [Software Development and Build Convention for LoongArch Architectures](https://github.com/loongson/la-softdev-convention),
8 this release sets the default march level to `la64v1.0`, covering the desktop and server processors of 3X5000
9 and newer series. However, embedded chips without LSX (Loongson SIMD eXtension), such as 2K0300 SoC, are not
10 supported. `pkgsCross.loongarch64-linux-embedded` can be used to build software and systems for these platforms.
11- 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`.
12
13## Backward Incompatibilities {#sec-nixpkgs-release-25.11-incompatibilities}
14
15<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
16
17- `nixVersions.nix_2_3` has been dropped because it was insecure and unmaintained.
18
19- The minimum version of Nix required to evaluate Nixpkgs has been raised from 2.3 to 2.18.
20
21- `mono4` and `mono5` have been removed. Use `mono6` or `mono` instead.
22
23- Everything related to `bower` was removed, as it is deprecated and not used by anything in nixpkgs.
24
25- The `offrss` package was removed due to lack of upstream maintenance since 2012. It's recommended for users to migrate to another RSS reader
26
27- `installShellFiles`: Allow installManPage to take a piped input, add the `--name` flag for renaming the file when installed. Can also append `--` to opt-out of all subsequent parsing.
28
29- GCC 9, 10, 11, and 12 have been removed, as they have reached end‐of‐life upstream and are no longer supported.
30
31- LLVM 12, 13, 14, 15, 16, and 17 have been removed, as they have reached end‐of‐life upstream and are no longer supported.
32
33- 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.
34
35- GHC 8.6, 8.10, 9.0, 9.2, and their package sets have been removed.
36
37- Support for bootstrapping native GHC compilers on 32‐bit ARM and little‐endian 64‐bit PowerPC has been dropped.
38 The latter was probably broken anyway.
39 If there is interest in restoring support for these architectures, it should be possible to cross‐compile a bootstrap GHC binary.
40
41- `haskellPackages` and the package sets under `haskell.packages` no longer expose an `llvmPackages` attribute,
42 though it can still be accessed via `ghc.llvmPackages` (from the same package set).
43 Haskell packages usually only need to depend on an LLVM version matching GHC if they force the use the LLVM
44 backend even if NCG is available. In this case, it is best to use the `forceLlvmCodegenBackend` helper.
45 In all other cases, like linking against `libLLVM`, Haskell packages should use the appropriate version of `llvmPackages` from `pkgs`.
46
47- `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.
48 If you were loading a font by path, for example in the `console.font` NixOS option, remember to update the filename accordingly.
49
50- `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](https://www.adminneo.org/upgrade#v5.0.0) for details. Those changes also led to changes in the arguments of the package.
51
52- `base16-builder` node package has been removed due to lack of upstream maintenance.
53
54- `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.
55
56- `buildGoModule` removes the compatibility layer of `CGO_ENABLED` not specified via `env`.
57 Specifying `CGO_ENABLED` directly now results in an error.
58
59- `buildGoModule` now warns if `<pkg>.passthru.overrideModAttrs` is lost during the overriding of its result packages.
60
61- `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, and if you want to use the more recently updated package `gentium` [by sil](https://software.sil.org/gentium/), you should update your configuration files to use the `Gentium` font identifier.
62
63- `space-orbit` package has been removed due to lack of upstream maintenance. Debian upstream stopped tracking it in 2011.
64
65- 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`.
66
67- `k2pdfopt` has been removed, as it's broken.
68
69- `victoriametrics` no longer contains VictoriaLogs components. These have been separated into the new package `victorialogs`.
70
71- `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.
72
73- `gradience` has been removed because it was archived upstream.
74
75- `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`.
76
77- `spidermonkey_91` has been removed, as it has been EOL since September 2022.
78
79- `hiawata` has been removed, due to lack of active development upstream, lack of maintainership downstream and upcoming security issues.
80
81- `forgejo` main program has been renamed to `bin/forgejo` from the previous `bin/gitea`.
82
83- `cudaPackages.cudatoolkit-legacy-runfile` has been removed.
84
85- `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.
86
87- The `ghcInfo` and `controlPhases` functions have been removed from `haskell.lib.compose` and `haskell.lib`. They were unused and would return incorrect results.
88
89 - Instead of using `controlPhases`, the `doCheck` attribute of derivations can be accessed which is more accurate. `doBenchmark` can't be introspected at the moment.
90 - To detect cross compilation, the relevant platforms exposed by `stdenv` should be compared instead of using `ghcInfo`.
91 - Nixpkgs no longer packages any `ghcjs` compiler.
92 - To find a suitable `nativeGhc`, `buildHaskellPackages` should be used. `ghcInfo` would use `ghc.bootPkgs.ghc` if cross compiling,
93 and the given `ghc` otherwise. This approach is not recommended since it results in mismatched GHC versions.
94
95- `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](https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/67).
96
97- `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.
98
99- `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](https://nix.dev/manual/nix/latest/store/derivation/#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".
100
101- `purple-matrix` has been removed, since it has been unmaintained since April 2022 and upstream does not recommend using it anymore.
102
103- `sublime-music` has been removed because upstream has announced it is no longer maintained. Upstream suggests using `supersonic` instead.
104
105- The default Android NDK version has been raised to 27, and the default SDK version to 35.
106 NDK 21–26 have been removed, as they are end‐of‐life.
107
108- `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.
109
110- `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](https://www.openpolicyagent.org/docs/latest/v0-upgrade/).
111
112- Zig 0.12 has been removed.
113
114- `ansible-later` has been removed because it was discontinued by the author.
115
116- `k3s` airgap images passthru attributes have changed:
117 - `imagesList` was removed
118 - `airgapImages` was renamed to `airgap-images`
119 - `airgapImagesAmd64` was renamed to `airgap-images-amd64-tar-zst`
120 - `airgapImagesArm64` was renamed to `airgap-images-arm64-tar-zst`
121 - `airgapImagesArm` was renamed to `airgap-images-arm-tar-zst`
122
123- `stalwart-mail` since `0.13.0` "introduces a significant redesign of the MTA’s delivery and queueing subsystem". See [the upgrading announcement for the `0.13.0` release](https://github.com/stalwartlabs/stalwart/blob/89b561b5ca1c5a11f2a768b4a2cfef0f473b7a01/UPGRADING.md#upgrading-from-v012x-and-v011x-to-v013x).
124
125- 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.
126
127- The `archipelago-minecraft` package was removed, as upstream no longer provides support for the Minecraft APWorld.
128
129- `pcp` has been removed because the upstream repo was archived and it hasn't been updated since 2021.
130
131- `navidrome` 0.58.0 introduces [multi-library support](https://www.navidrome.org/docs/usage/multi-library/)
132 and backwards incompatible database migrations. Ensure backups are valid and run a Full Scan after
133 starting the new version.
134
135- `tooling-language-server` has been renamed to `deputy` (both the package and binary), following the rename of the upstream project.
136
137- `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`.
138
139- `steamcontroller` has been removed due to lack of upstream maintenance. Consider using `sc-controller` instead.
140
141- `linux` and all other Linux kernel packages have moved all in-tree kernel modules into a new `modules` output.
142
143- `webfontkitgenerator` has been renamed to `webfont-bundler`, following the rename of the upstream project.
144 The binary name remains `webfontkitgenerator`.
145 The `webfontkitgenerator` package is an alias to `webfont-bundler`.
146
147- `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}"`.
148
149- `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.
150
151- `inspircd` has been updated to the v4 release series. Please refer to the upstream documentation for [general information](https://docs.inspircd.org/4/overview/#v4-overview) and a list of [breaking changes](https://docs.inspircd.org/4/breaking-changes/).
152
153- `proton-caller` has been removed due to lack of upstream maintenance.
154
155- `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.
156
157- `mongodb-6_0` was removed as it is end of life as of 2025-07-31.
158
159- CUDA versions below 12.6 have been removed, as they are unmaintained upstream and depend on end‐of‐life compilers.
160
161- `vmware-horizon-client` was renamed to `omnissa-horizon-client`, following [VMware's sale of their end-user business to Omnissa](https://www.omnissa.com/insights/introducing-omnissa-the-former-vmware-end-user-computing-business/). The binary has been renamed from `vmware-view` to `horizon-client`.
162
163- `neovimUtils.makeNeovimConfig` now uses `customLuaRC` parameter instead of accepting `luaRcContent`. The old usage is deprecated but still works with a warning.
164
165- `telegram-desktop` packages now uses `Telegram` for its binary. The previous name was `telegram-desktop`. This is due to [an upstream decision](https://github.com/telegramdesktop/tdesktop/commit/56ff5808a3d766f892bc3c3305afb106b629ef6f) to make the name consistent with other platforms.
166
167- `hsd` has been upgraded to version 8. See [their changelog](https://github.com/handshake-org/hsd/blob/v8.0.0/docs/release-notes/release-notes-8.x.md) for important instructions before upgrading.
168
169- `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`.
170 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.
171
172- NetBox was updated to `>= 4.3.0`. Have a look at the breaking changes
173 of the [4.3 release](https://github.com/netbox-community/netbox/releases/tag/v4.2.0),
174 make the required changes to your database, if needed, then upgrade by setting `services.netbox.package = pkgs.netbox_4_3;` in your configuration.
175
176- `pkgs.nextcloud30` has been removed since it's out of support upstream.
177
178- `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](https://github.com/PrivateBin/PrivateBin/releases/tag/2.0.0) for details on how to upgrade.
179
180- `rocmPackages.triton` has been removed in favor of `python3Packages.triton`.
181
182- `linpinyin`, 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](https://codeberg.org/raboof/bdbtokyotodb).
183
184- `go-mockery` has been updated to v3. For migration instructions see the [upstream documentation](https://vektra.github.io/mockery/latest/v3/). 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](https://vektra.github.io/mockery/)
185
186- `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.
187
188- [private-gpt](https://github.com/zylon-ai/private-gpt) service has been removed by lack of maintenance upstream.
189
190- `lxde` scope has been removed, and its packages have been moved the top-level.
191
192- `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](https://github.com/theRealCarneiro/pulsemeeter/releases/tag/v2.0.0).
193
194- `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](https://github.com/davatorium/rofi/releases/tag/2.0.0).
195
196- `rofi-emoji-wayland` has been merged into `rofi-emoji` as `rofi` has been updated to `2.0.0` and supports both X11 & Wayland.
197
198- The main binary of `tomlq` has been renamed from `tomlq` to `tq`.
199
200- `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.
201 This introduces some backwards‐incompatible changes; see the NEWS for details.
202 NEWS can be viewed from Emacs by typing `C-h n`, or by clicking `Help->Emacs News` from the menu bar.
203 It can also be browsed [online](https://git.savannah.gnu.org/cgit/emacs.git/tree/etc/NEWS?h=emacs-30).
204
205- `python3Packages.heif-image-plugin` has been dropped due to lack of upstream maintenance and breakage. Use `python3Packages.pillow-heif` instead.
206
207- `python3Packages.pyheif` has been dropped due to lack of upstream maintenance and breakage. Use `python3Packages.pillow-heif` instead.
208
209- `nodePackages.rimraf` has been removed, as it is a Javascript library, and packages that want to use it should depend directly on it instead.
210
211## Other Notable Changes {#sec-nixpkgs-release-25.11-notable-changes}
212
213<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
214
215- Added `rewriteURL` attribute to the nixpkgs `config`, to allow for rewriting the URLs downloaded by `fetchurl`.
216
217- Added `gitConfig` and `gitConfigFile` option to the nixpkgs `config`, to allow for setting a default `gitConfigFile` for all `fetchgit` invocations.
218
219- 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.
220
221- The systemd initrd will now respect `x-systemd.wants` and `x-systemd.requires` for reliably unlocking multi-disk bcachefs volumes.
222
223- [`homebox` 0.20.0](https://github.com/sysadminsmedia/homebox/releases/tag/v0.20.0) changed how assets are stored and hashed. It is recommended to back up your database before this update.
224
225- `installShellCompletion`: now supports Nushell completion files
226
227- New hardening flags, `strictflexarrays1` and `strictflexarrays3` were made available, corresponding to the gcc/clang options `-fstrict-flex-arrays=1` and `-fstrict-flex-arrays=3` respectively.
228
229- `gramps` has been updated to 6.0.0
230 Upstream recommends [backing up your Family Trees](https://gramps-project.org/wiki/index.php/Gramps_6.0_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree) before upgrading.
231
232- `meta.mainProgram`: Changing this `meta` entry can lead to a package rebuild due to being used to determine the `NIX_MAIN_PROGRAM` environment variable.
233
234- `forgejo-runner`: The upgrade to version 11 brings a license change from MIT to GPLv3-or-later.
235
236- `lisp-modules` were brought in sync with the [June 2025 Quicklisp release](http://blog.quicklisp.org/2025/07/june-2025-quicklisp-dist-now-available.html).
237
238- `ffmpeg_8`, `ffmpeg_8-headless`, and `ffmpeg_8-full` have been added. The default version of FFmpeg remains ffmpeg_7 for now, though this may change before release.
239
240- `searx` was updated to use `envsubst` instead of `sed` for parsing secrets from environment variables.
241 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"`.
242
243- A new hardening flag, `glibcxxassertions` was made available, corresponding to the glibc `_GLIBCXX_ASSERTIONS` option.
244
245- `versionCheckHook`: Packages that previously relied solely on `pname` to locate the program used to version check, but have a differing `meta.mainProgram` entry, might now fail.
246
247
248- The debug outputs produced by `separateDebugInfo = true;` now contain symlinks mapping build-ids to the original source and ELF file.
249 Specifically, if `$out/bin/ninja` has build-id `483bd7f7229bdb06462222e1e353e4f37e15c293`, then
250 * `$debug/lib/debug/.build-id/48/3bd7f7229bdb06462222e1e353e4f37e15c293.executable` is a symlink to `$out/bin/ninja`
251 * `$debug/lib/debug/.build-id/48/3bd7f7229bdb06462222e1e353e4f37e15c293.source` is a symlink to the value of `$src` during build
252 * `$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
253 * `$debug/lib/debug/.build-id/48/3bd7f7229bdb06462222e1e353e4f37e15c293.debug` is the file containing debug symbols (like before).
254
255- `fetchgit`: Add `gitConfigFile` argument to set a git config (via `$GIT_CONFIG_GLOBAL`) for the fetcher.
256
257- `fetchgit`: Add `rootDir` argument to limit the resulting source to one subdirectory of the whole Git repository. Corresponding `--root-dir` option added to `nix-prefetch-git`.
258
259- `nix-prefetch-git`: Added a `--no-add-path` argument to disable adding the path to the store; this is useful when working with a [read-only store](https://nix.dev/manual/nix/2.28/command-ref/new-cli/nix3-help-stores#store-experimental-local-overlay-store-read-only).
260
261- `sftpman` has been updated to version 2, a rewrite in Rust which is mostly backward compatible but does include some changes to the CLI.
262 For more information, [check the project's README](https://github.com/spantaleev/sftpman-rs#is-sftpman-v2-compatible-with-sftpman-v1).
263
264- The `clickhouse` package now track the stable upstream version per [upstream's
265 recommendation](https://clickhouse.com/docs/faq/operations/production). Users
266 can continue to use the `clickhouse-lts` package if desired.
267
268- `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.
269
270## Nixpkgs Library {#sec-nixpkgs-release-25.11-lib}
271
272<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
273
274- `mealie` has been updated to 3.0.2: This update introduces breaking changes in some API endpoints (see the [release changelog](https://github.com/mealie-recipes/mealie/releases/tag/v3.0.0)).
275
276### Breaking changes {#sec-nixpkgs-release-25.11-lib-breaking}
277
278- `reaction` has been updated to version 2, which includes some breaking changes.
279 For more information, [check the release article](https://blog.ppom.me/en-reaction-v2).
280
281- The `buildPythonPackage` and `buildPythonApplication` functions now require
282 an explicit `format` attribute. Previously the default format used setuptools
283 and called `setup.py` from the source tree, which is deprecated.
284 The modern alternative is to configure `pyproject = true` with `build-system = [ setuptools ]`.
285
286- `boot.enableContainers` is only turned on when a declarative NixOS container is defined in `containers`.
287 If you use the `nixos-container` tool for imperative container management, set `boot.enableContainers = true;` explicitly.
288
289### Deprecations {#sec-nixpkgs-release-25.11-lib-deprecations}
290
291- `types.either` silently accepted mismatching types when used in `freeformType`. Module maintainers should fix the used type
292 In most cases wrapping `either` with `attrsOf` should be sufficient.
293
294 Since types.either was used to bootstrap other types. This also affects the following types:
295 - `oneOf`
296 - `number`
297 - `numbers.*`
298
299### Additions and Improvements {#sec-nixpkgs-release-25.11-lib-additions-improvements}
300
301- `neovim`: Added support for the `vim.o.exrc` option, the `VIMINIT` environment variable, and sourcing of `sysinit.vim`.
302
303 See the neovim help page [`:help startup`](https://neovim.io/doc/user/starting.html#startup) for more information, as well as [the nixpkgs neovim wrapper documentation](#neovim-custom-configuration).
304
305- `cloudflare-ddns`: Added package cloudflare-ddns.