45 KiB
Release 25.11 ("Xantusia", 2025.11/30)
Highlights
-
Added
nixos-init, a Rust-based bashless initialization system for systemd initrd. This allows to build NixOS systems without any interpreter. Enable viasystem.nixos-init.enable = true;. -
COSMIC DE has been updated to the beta version, bringing it closer to its first stable release. This includes updates to its core components, applications, and overall stability.
-
FirewallD support has been added. It can be configured both as a standalone service (through
services.firewalld), and as a backend to the existingnetworking.firewalloptions. -
GNOME has been updated to version 49.
- Removes X11 session support. Though you can still run X11 apps using XWayland.
- gnome-session’s custom service manager was removed in favour of using systemd.
- GDM now allows multiple seats, which is useful for e.g. remote logins. Though we currently limit this to five greeter instances.
papersdocument viewer is now installed by default, replacingevince. Though we still includeevincetransitively bysushi(quick previewer used by Files/Nautilus) You can disable either using and restoreevincewith .showtimevideo player is now installed by default, replacingtotem. You can disable it using and restoretotemwith .- The
ibusinput method is now enabled by default, to ensure that dead keys continue to work like in GNOME <= 48. To change it, see and .
Refer to the GNOME release notes for more details.
-
networking.firewallnow has abackendoption for choosing which backend to use. -
nixos-rebuild-ng, a full rewrite ofnixos-rebuildin Python, is enabled by default from this release. You can disable it by setting {option}system.rebuild.enableNgtofalsein your configuration if you need, but please report any issues. It is expected that the next major version of NixOS (26.05) will remove the {option}system.rebuild.enableNgoption. -
rEFInd, a graphical boot manager for UEFI systems, can now be used through . -
Secure boot support can now be enabled for the Limine bootloader through {option}
boot.loader.limine.secureBoot.enable. Bootloader install script signs the bootloader, then kernels are hashed during system rebuild and written to a config. This allows Limine to boot only the kernels installed through NixOS system. -
Syncthing has been updated to version 2.0.0.
-
The default PostgreSQL version for new NixOS installations (i.e. with
system.stateVersion >= 25.11) is v17. -
The NetworkManager module does not ship with a default set of VPN plugins anymore. All required VPN plugins must now be explicitly configured in
networking.networkmanager.plugins. -
The Qt 5-based versions of KDE Gear, Plasma, Maui and Deepin have been removed. Users are advised to migrate to Plasma 6 and Gear 25.08, available under
kdePackages.
New Modules
-
Added
nixos-init, a Rust-based bashless initialization system for systemd initrd. This allows to build NixOS systems without any interpreter. Enable viasystem.nixos-init.enable = true;. -
angrr, a service that automatically cleans up old auto GC roots. Available as services.angrr.
-
Auto-scrub support for Bcachefs filesystems can now be enabled through services.bcachefs.autoScrub.enable to periodically check for data corruption. If there's a correct copy available, it will automatically repair corrupted blocks.
-
Beszel, a lightweight server monitoring hub with historical data, docker stats, and alerts. Available as
services.beszel.agentandservices.beszel.hub. -
boot.kernel.sysfs, a new way to set of sysfs attributes.
-
Broadcast Box, a WebRTC broadcast server. Available as services.broadcast-box.
-
byedpi, a DPI bypass service. Available as services.byedpi.
-
Chrysalis, a graphical configurator for Kaleidoscope-powered keyboards. Available as programs.chrysalis.
-
Chhoto URL, a simple, blazingly fast, selfhosted URL shortener with no unnecessary features, written in Rust. Available as services.chhoto-url.
-
conman, a serial console management program. Available as services.conman.
-
Corteza, a low-code platform. Available as services.corteza.
-
crowdsec, a free, open-source and collaborative IPS. Available as services.crowdsec.
-
crowdsec-firewall-bouncer, the CrowdSec Remediation Component for fetching new and old decisions from a CrowdSec API and adding them to a blocklist used by supported firewalls. Available as services.crowdsec-firewall-bouncer.
-
Docker now defaults to 28.x, because version 27.x stopped receiving security updates and bug fixes after May 2, 2025.
-
docuseal, a DocuSign alternative. Create, fill, and sign digital documents. Available at services.docuseal.
-
Draupnir, a Matrix moderation bot. Available as services.draupnir.
-
dwl, a compact, hackable compositor for Wayland based on wlroots. Available as programs.dwl.
-
ente, a service that provides a fully open source, end-to-end encrypted platform for photos and videos. Available as services.ente.api and services.ente.web.
-
ErsatzTV, a personal IPTV server. Available as services.ersatztv.
-
Fediwall, a web application for live displaying toots from mastodon, inspired by mastowall. Available as services.fediwall.
-
FileBrowser, a web application for managing and sharing files. Available as services.filebrowser.
-
FirewallD, a firewall daemon with D-Bus interface providing a dynamic firewall. Available as services.firewalld and a networking.firewall.backend.
-
fw-fanctrl, a simple systemd service to better control Framework Laptop's fan(s). Available as hardware.fw-fanctrl.
-
go-httpbin, a reasonably complete and well-tested golang port of httpbin, with zero dependencies outside the go stdlib. Available as services.go-httpbin.
-
gtklock, a GTK-based lockscreen for Wayland. Available as programs.gtklock.
-
Homebridge, a lightweight Node.js server you can run on your home network that emulates the iOS HomeKit API. Available as services.homebridge.
-
IfState, manage host interface settings in a declarative manner. Available as networking.ifstate and boot.initrd.network.ifstate.
-
KMinion, feature-rich Prometheus exporter for Apache Kafka. Available as services.prometheus.exporters.kafka.
-
LACT, a GPU monitoring and configuration tool, can now be enabled through services.lact.enable. Note that for LACT to work properly on AMD GPU systems, you need to enable hardware.amdgpu.overdrive.enable.
-
lemurs, a customizable TUI display/login manager. Available at services.displayManager.lemurs.
-
LibreTranslate, a free and open source machine translation API. Available as services.libretranslate.
-
Linkwarden a self-hosted collaborative bookmark manager to collect, read, annotate, and fully preserve what matters, all in one place. Available as services.linkwarden.
-
Linyaps, a cross-distribution package manager with sandboxed apps and shared runtime. Available as services.linyaps.
-
llama-swap, a light weight transparent proxy server that provides automatic model swapping to llama.cpp's server (or any server with an OpenAI compatible endpoint). Available as .
-
local-content-share, a simple web-app for storing/sharing text snippets and files in your local network. Available as services.local-content-share.
-
LubeLogger, a vehicle maintenance and fuel mileage tracker. Available as services.lubelogger.
-
mautrix-discord, a Matrix-Discord puppeting/relay bridge. Available as services.mautrix-discord.
-
Neat IP Address Planner (NIPAP), a sleek, intuitive and powerful IP address management system. Available as services.nipap.enable.
-
nebula-lighthouse-service, a public Nebula VPN lighthouse service. Available as services.nebula-lighthouse-service.
-
Newt, a fully user space WireGuard tunnel client and TCP/UDP proxy, designed to securely expose private resources controlled by Pangolin. Available as services.newt.
-
nixbit, a GUI application for updating your NixOS system from a Nix Flakes Git repository. Available as programs.nixbit.
-
nix-store-veritysetup, a systemd generator to unlock the Nix Store as a dm-verity protected block device. Available as boot.initrd.nix-store-veritysetup.
-
nvme-rs, NVMe monitoring services.nvme-rs.
-
Overseerr, a request management and media discovery tool for the Plex ecosystem. Available as services.overseerr.
-
PairDrop, a peer-to-peer file transfer web app. Available as services.pairdrop.
-
paisa, a personal finance tracker and dashboard. Available as services.paisa.
-
Pangolin, a tunneled reverse proxy server with access control. Available as services.pangolin.
-
Pi-hole, a DNS sinkhole for advertisements based on Dnsmasq. Available as services.pihole-ftl, and services.pihole-web for the web GUI and API.
-
pmount, a tool that allows normal users to mount removable devices without requiring root privileges Available at programs.pmount.
-
postfix-tlspol, a MTA-STS and DANE resolver and TLS policy server for Postfix. Available as services.postfix-tlspol.
-
Prometheus Tailscale Exporter, a Prometheus exporter for Tailscale Tailnet metrics.
-
Prometheus Storagebox Exporter, a Prometheus exporter for Hetzner storage boxes.
-
qBittorrent, a bittorrent client programmed in C++ / Qt that uses libtorrent by Arvid Norberg. Available as services.qbittorrent.
-
radicle-ci-broker, a tool for running CI for repositories in the local Radicle node. Available as services.radicle.ci.broker.enable.
-
radicle-native-ci, an adapter for the Radicle CI broker, for performing CI runs locally. Available as services.radicle.ci.adapters.native.
-
rauc (the Robust Auto-Update Controller), a daemon that allows reliable and secure software updates in embedded Linux systems. Available at services.rauc.
-
ringboard, a fast, efficient, and composable clipboard manager for Linux. Available for x11 as services.ringboard and for Wayland as services.ringboard.
-
rsync, an open source utility that provides fast incremental file transfer. Available as services.rsync.
-
Sharkey, a Sharkish microblogging platform. Available as services.sharkey.
-
SillyTavern, an LLM Frontend for Power Users. Available as services.sillytavern.
-
SuiteNumérique Docs, a collaborative note taking, wiki and documentation web platform and alternative to Notion or Outline. Available as services.lasuite-docs.
-
SuiteNumérique Meet, an open source alternative to Google Meet and Zoom powered by LiveKit. It features HD video calls, screen sharing, and chat features. Available as services.lasuite-meet.
-
Speedify, a proprietary VPN which allows combining multiple internet connections (Wi-Fi, 4G, 5G, Ethernet, Starlink, Satellite, and more) to improve the stability, speed, and security of online experiences. Available as services.speedify.
-
Spoolman, a inventory management system for Filament spools. Available as services.spoolman.
-
Sshwifty, a Telnet and SSH client for your browser. Available as services.sshwifty.
-
Szurubooru, an image board engine inspired by services such as Danbooru, dedicated for small and medium communities. Available as services.szurubooru.
-
Temporal, a durable execution platform that enables developers to build scalable applications without sacrificing productivity or reliability. Available as services.temporal.
-
Timekpr-nExT, a time managing application that helps optimizing time spent at computer for your subordinates, children or even for yourself. Available as .
-
tlsrpt-reporter, an application suite to generate and deliver TLSRPT reports. Available as services.tlsrpt.
-
tsidp, a simple OIDC / OAuth Identity Provider (IdP) server for your tailnet. Available as services.tsidp.
-
TuneD, a system tuning service for Linux. Available as services.tuned.
-
tuwunel, a federated chat server implementing the Matrix protocol, forked from Conduwuit. Available as services.matrix-tuwunel.
-
umami, a simple, fast, privacy-focused alternative to Google Analytics. Available with services.umami.
-
wayvnc, a VNC server for wlroots based Wayland compositors. Available as programs.wayvnc.
-
XPPen, an official closed-source driver for XP Pen tablets. Available as programs.xppen.
-
Warpgate, an SSH, HTTPS, MySQL and Postgres bastion. Available as services.warpgate. Note that you need to run
warpgate recover-accessto recover builtin admin account, as the initialisation script uses a throwaway value to initialise its database. -
yubikey-manager, a tool for configuring YubiKey devices. Available as programs.yubikey-manager.
-
rumno, a visual pop-up notification manager. Available as services.rumno.
Backward Incompatibilities
-
boot.enableContainersis only turned on when a declarative NixOS container is defined incontainers. If you use thenixos-containertool for imperative container management, setboot.enableContainers = true;explicitly. -
Configurations with
boot.initrd.systemd.enable && !boot.initrd.enablewill have theirinitscript at$toplevel/initinstead of$toplevel/prepare-root. This is because it does not make sense for systemd stage 1 to affect theinitscript when stage 1 is entirely disabled (e.g. containers). -
command-not-foundpackage is now disabled by default; it works only for nix-channels based systems, and requires setup for it to work. -
hardware.amdgpu.amdvlkand theamdvlkpackage have been removed, as they have been deprecated by AMD. These have been replaced with the RADV driver from Mesa, which is enabled by default. -
firezonehas changed how theEveryonegroup behaves. Service Accounts are no longer considered part ofEveryone. -
i18n.inputMethod.fcitx5.plasma6Supporthas been removed because qt6 is the only one used for fcitx5-configtool now. -
Linux 5.4 and all its variants have been removed since mainline will reach its end of life within the support-span of 25.11.
-
minifluxno longer uses the hstore PostgreSQL extension. Having the extension would prevent Miniflux from starting. In case you are managing yourminifluxPostgreSQL database externally, disable the extension withDROP EXTENSION IF EXISTS hstore;. -
netbox-managescript created by thenetboxmodule no longer usessudo -u netboxinternally. It can be run as root and will change it's user tonetboxusingrunuser. -
NixOS display manager modules now strictly use tty1, where many of them previously used tty7. Options to configure display managers' VT have been dropped. A configuration with a display manager enabled will not start
getty@tty1.service, even if the system is forced to boot intomulti-user.targetinstead ofgraphical.target. -
programs.cardboardwas removed due to the package having been broken since at least November 2024. -
programs.goldwardenhas been removed, due to the software not working with newer versions of the Bitwarden and Vaultwarden servers, as well as it being abandoned upstream. -
programs.skim.fuzzyCompletionshas been removed in favor of adding the completions to the package itself. -
Prosodyhas been updated to major release 13 which removed some obsoleted modules and brought a couple of major and breaking changes:- The
http_filesmodule is now disabled by default because it now requireshttp_files_dirto be configured. - The
vcard_mucmodule has been removed and got replaced by the inbuiltmuc_vcardmodule. - The
http_uploadmodule has been removed and you must migrate to thehttp_file_sharemodule to stay XEP-0423 compliant. ThehttpFileShareoptions got expanded to better facility that. - The
admin_shellmodule is now always being loaded to makeprosodyctlfunctional. - The
mime_types_filesetting is now set to"${pkgs.mailcap}/etc/mime.types"to prevent errors. For a complete list of changes, please see their announcement.
- The
-
programs.riverhas been renamed toprograms.river-classicfollowing an upstream decision. -
services.chatgpt-retrieval-pluginwas removed due to the package having been broken since at least November 2024. -
services.dwm-status.extraConfigwas replaced by RFC0042-compliant , which is used to generate the config file.services.dwm-status.orderis now moved to , as it's a part of the config file. -
services.forgejo.dump.agenow defaults to4w, which deletes dumps older than 4 weeks. This new behaviour could result in older backups being deleted. -
services.gateonehas been removed as the package was removed such that it does not work. -
services.journald.gateway.userandservices.journald.gateway.systemnow defaults tofalse. This new behaviour matches the default behaviour of thesystemd-journal-gatewaydservice itself. -
services.nextcloud.notify_push.enablenow installs the notify_push app. Therefore the appstore is now disabled when usingnotify_push. Seeservices.nextcloud.appstoreEnable. -
services.nixseparatedebuginfod.enable = true;has been replaced byservices.nixseparatedebuginfod2.enable = true. If you only use the official binary cachehttps://cache.nixos.orgthen no further configuration should be needed. If you have other https substituters, you can add them toservices.nixseparatedebuginfod2.subsituters. SSH substituters are not supported by nixseparatedebuginfod2. Consider running nixseparatedebuginfod2 on the substituter instead, and pointing to it with the new optionenvironment.debuginfodServers. -
services.parsoidand thenodePackages.parsoidpackage have been removed, as the JavaScript-based version this module uses is not compatible with modern MediaWiki versions. -
services.private-gpthas been removed by lack of maintenance upstream. -
services.quorumhas been removed as thequorumpackage was broken and abandoned upstream. -
services.seafilehas been removed, as it is unmaintained and outdated. See the manual for details and next steps. -
services.tor.torsocks.enableno longer defaults to true if Tor and Tor client functionality is enabled. -
The
boot.readOnlyNixStorehas been removed. Control over bind mount options on/nix/storeis now offered by theboot.nixStoreMountOptsoption. -
The
dovecotsystemd service was renamed fromdovecot2todovecot. The former is now just an alias. Update any overrides on the systemd unit to the new name. -
The
NIXOS_EXTRA_MODULE_PATHvariable from configuration evaluation has been deprecated. We recommend a workflow where you update the expression files instead, but if you wish to continue to use this variable, you may do so with a module like:{ imports = [ (builtins.getEnv "NIXOS_EXTRA_MODULE_PATH") ]; }This has the benefit that your configuration hints at the non-standard workflow.
-
The
file-rollermodule has been removed due to not being required for function, file roller itself has also been removed from theservices.desktopManager.gnomemodule as it's not part of GNOME core applications. -
The Perl implementation of the
switch-to-configurationprogram is removed. All switchable systems now use the Rust rewrite. Any prior usage ofsystem.switch.enableNgmust now be removed. If you have any outstanding issues with the new implementation, please open an issue on GitHub. -
The Pocket ID module (
services.pocket-id) and package (pocket-id) has been updated to 1.0.0. Some environment variables have been changed or removed, see the migration guide. -
The Postfix module has been updated and likely requires configuration changes:
- The
services.postfix.sslCertandsslKeyoptions were removed and you now need to configure- services.postfix.settings.main.smtpd_tls_chain_files for server certificates,
- services.postfix.settings.main.smtp_tls_chain_files for client certificates.
- The
-
The
services.meilisearchmodule now always defaults to the latest version of meilisearch, as the previousmeilisearch_1_11package was removed. This is only an issue if you were using the old version. -
The
services.mysqlmodule now restarts the databaseon-abnormal, which means that it now will be restarted in certain situations, it wasn't before. For example an OOM-kill. -
The
services.nginx.ssomodule has switched to generating its configuration file in/run. You should manually delete/var/lib/nginx-sso/config.yamlto avoid storing secret values to disk. -
The
services.postgresqlmodule now sets up a systemd unitpostgresql.target. Depending onpostgresql.targetguarantees that postgres is in read-write mode and initial/ensure scripts were executed. Depending onpostgresql.serviceonly guarantees a read-only connection. -
The
services.polipomodule has been removed aspolipois unmaintained and archived upstream. -
The
services.postfixadminmodule has been removed due to a lack of active maintainers. -
The
services.siproxdmodule has been removed assiproxdis unmaintained and broken with libosip 5.x. -
The
services.snapservermodule has been migrated to use the settings option and render a configuration file instead of passing every option over the command line. -
[]{#sec-release-25.11-incompatibilities-sourcehut-removed} The
services.sourcehutmodule and correspondingsourcehutpackages were removed due to being broken and unmaintained. -
The
services.traccar.settingsattribute has been reworked. Instead of the previous flat attribute set the new implementation uses nested attribute sets. You need to update you configuration manually. For instance,services.traccar.settings.loggerConsolebecomesservices.traccar.settings.logger.console. -
The
services.tt-rssmodule and package have been removed as upstream development ceased on 2025-11-01, and the source is no longer available officially. -
The systemd target
kbrequest.targetis now unset by default, instead of being forcibly symlinked torescue.target. In case you were relying on this behavior (Alt + ArrowUp on the tty causing the current target to be changed torescue.target), you can restore it by settingsystemd.targets.rescue.aliases = [ "kbrequest.target" ];in your configuration. -
The
wstunnelmodule was converted to RFC42-style settings, you will need to update your NixOS config if you make use of this module. -
services.xserver.windowManager.yeahwmwas removed due to the package being broken and unmaintained upstream. -
The zookeeper project changed their logging tool to logback, therefore
services.zookeeper.loggingoption has been updated to expect a logback compatible string. -
virtualisation.lxdhas been removed due to lack of Nixpkgs maintenance. Users can migrate tovirtualisation.incus, a fork of LXD, as a replacement. See Incus migration documentation for migration information. -
virtualisation.libvirtdnow uses OVMF images shipped with QEMU for UEFI machines.virtualisation.libvirtd.qemu.ovmfhas been removed.- OVMF images from underlying QEMU package are now made available under '/run/libvirt/nix-ovmf', fixing prior issues when using QEMU's automatic EFI firmware and feature handling, relied upon by GNOME Boxes, virsh, virt-manager, etc.
- Domains that rely on automatic firmware and feature handling, i.e.
<os firmware='efi'>need to trigger an update to<loader>and<nvram>entries. Usingvirsh edit <domain>and deleting aforementioned tags will cause libvirt to replace them with the new paths. - Configurations that relied on
virtualisation.libvirtd.qemu.ovmfand had domains that did not use automatic firmware and feature handling, require a manual change to their domain configuration, updating<loader>and<nvram>entries from old path to the new path.Old Path New Path /run/libvirt/nix-ovmf/OVMF_CODE.fd /run/libvirt/nix-ovmf/edk2-x86_64-code.fd /run/libvirt/nix-ovmf/OVMF_VARS.fd /run/libvirt/nix-ovmf/edk2-i386-vars.fd /run/libvirt/nix-ovmf/OVMF_CODE.ms.fd /run/libvirt/nix-ovmf/edk2-x86_64-secure-code.fd /run/libvirt/nix-ovmf/OVMF_VARS.ms.fd /run/libvirt/nix-ovmf/edk2-i386-vars.fd /run/libvirt/nix-ovmf/AAVMF_CODE.fd /run/libvirt/nix-ovmf/edk2-aarch64-code.fd /run/libvirt/nix-ovmf/AAVMF_VARS.fd /run/libvirt/nix-ovmf/edk2-arm-vars.fd /run/libvirt/nix-ovmf/AAVMF_CODE.ms.fd /run/libvirt/nix-ovmf/edk2-aarch64-code.fd /run/libvirt/nix-ovmf/AAVMF_VARS.ms.fd /run/libvirt/nix-ovmf/edk2-arm-vars.fd
-
vmalertnow supports multiple instances with the optionservices.vmalert.instances."".enable -
virtualisation.waydroid.packagenow defaults towaydroid-nftableson systems with nftables enabled. -
services.victorialogs.packagenow defaults tovictorialogs, asvictoriametricsno longer contains the VictoriaLogs binaries.
Other Notable Changes
-
A new option has been added. This option will be used to guard nspawn-specific configuration in NixOS since is also used for different container-runtimes such as LXC.
- The new option is automatically set to
trueby the declarative container module andnixos-containerwhen not using flakes.- Existing setups can be migrated by running either
nixos-container update <container-name> --config-file /path/to/the/config-file-in-use.nixnixos-container update <container-name> --config '/* config code */'- Setting the option by hand in your configuration when using flakes.
- Existing setups can be migrated by running either
- In all other cases, you'll need to set this option to
trueyourself. boot.isNspawnContainerbeingtrueimplies beingtrue.
- The new option is automatically set to
-
amdgpukernel driver overdrive mode can now be enabled by setting hardware.amdgpu.overdrive.enable and customized through hardware.amdgpu.overdrive.ppfeaturemask. This allows for fine-grained control over the GPU's performance and maybe required by overclocking software like Corectrl and Lact. These new options replace old options such as {option}programs.corectrl.gpuOverclock.enableand {option}programs.tuxclocker.enableAMD. -
bcachefsfile systems will now use the out-of-tree module for supported kernels. The in-tree module has been removed, and users will need to switch to kernels that support the out-of-tree module. -
boot.plymouthnow has apackageoption to specify the package used in the module. -
Drivers and utilities for Tenstorrent have been added. Available as hardware.tenstorrent.
-
Due to deprecation of gnome-session X11 support,
services.desktopManager.pantheonnow defaults to pantheon-wayland session. The X11 session has been removed, see this issue for details. -
libvirtnow supports usingnftablesbackend.- The
virtualisation.libvirtd.firewallBackendoption can be used to configure the firewall backend used by libvirtd.
- The
-
linux_libre&linux_latest_librehave been removed due to a lack of maintenance. -
Immich now has support for VectorChord when using the PostgreSQL configuration provided by
services.immich.database.enable, which replacespgvecto-rs. VectorChord support can be toggled with the optionservices.immich.database.enableVectorChord. Additionally,pgvecto-rssupport is now disabled from NixOS 25.11 onwards using the optionservices.immich.database.enableVectors. This option will be removed fully in the future once Immich drops support forpgvecto-rsfully. See Immich migration instructions. -
It is now possible to configure the default source address using the new options networking.defaultGateway.source, networking.defaultGateway6.source.
-
mate-wayland-session 1.28.4 is now using the default wayfire decorator instead of firedecor, thus
services.xserver.desktopManager.mate.enableWaylandSessionis no longer shipping firedecor. If you are experiencing broken window decorations after upgrade, backup and remove~/.config/mate/wayfire.iniand re-login. -
networking.wireless.networks.<name>now has an option to specify SSID, hence allowing duplicated SSID setup. The BSSID option is added alongside with this. -
Options under networking.getaddrinfo are now allowed to declaratively configure address selection and sorting behavior of
getaddrinfoin dual-stack networks. -
Potential race conditions in the network setup when using
networking.interfaceshave been fixed by disabling duplicate address detection (DAD) for statically configured IPv6 addresses. -
prosodygained a config check option namedservices.prosody.checkConfigwhich runsprosodyctl check configand is turned on by default. -
Revamp of the ACME certificate acquisition and renewal process to help scale systems with lots (100+) of certificates.
Units and targets have been reshaped to better support more specific dependency propagation and avoid superfluously triggering unchanged units:
If a service requires a syntactically valid certificate to start it should now depend on the
acme-{certname}.serviceunit.We now always generate initial self-signed certificates as this drastically simplifies the dependency structure. As a result, the option
security.acme.preliminarySelfsignedhas been removed.Instead of the previous
acme-finished-{certname}.targets there are nowacme-order-renew-{certname}.services that will be activated in a delayed fashion to ensure that bootstrapping with servers like nginx that take part in the acquisition/renewal process works smoothly. Dependencies onacme-finishedunits should move toacme-order-renew.Note that system activation will complete before all certificates may have been renewed or acquired.
-
services.clamsmtpis unmaintained and was removed from Nixpkgs. -
services.clickhousehas added theserverConfiganduserConfigoptions. You may also useextraServerConfigandextraUserConfigto pass plain text XML. -
services.dependency-trackremoved its configuration of the JVM heap size. This lets the JVM choose its maximum heap size automatically, which should work much better in practice for most users. For deployments on systems with little RAM, it may now be necessary to manually configure a maximum heap size using {option}services.dependency-track.javaArgs. -
services.dnscrypt-proxy2was renamed toservices.dnscrypt-proxyto match the package name. The systemd service is now alsodnscrypt-proxy, but the old name is still provided as an alias for backwards compatibility. -
services.dnscrypt-proxygains apackageoption to specify dnscrypt-proxy package to use. -
services.eris-serverwas removed from Nixpkgs due to a hostile upstream. -
services.filesenderand the packagefilesenderhave been removed because they depend onsimplesamlphp. -
services.giteasupports sending notifications with sendmail again. To do this, activate the parameterservices.gitea.mailerUseSendmailand configure SMTP server. -
services.gnome.gnome-keyring does not ship with an SSH agent anymore, as this is now handled by the
gcr_4package instead ofgnome-keyring. A new module has been added to support this, under (its default value has been set to to ensure a smooth transition). See the relevant upstream PR for more details. -
services.grafanadoes no longer send usage statistics by default. -
services.k3snow shares most of its code withservices.rke2. The merge resulted in both modules providing more options, withservices.rke2receiving the most improvements. Existing configurations for either module should not be affected. -
services.libvirtd.autoSnapshot has been added as a backup service for libvirt managed VMs.
-
services.limesurveynow supports nginx as reverse-proxy. Available through services.limesurvey.webserver. -
services.mattermosthas been updated to use the 10.11 ESR instead of 10.5. While this shouldn't break anyone, we also now package Mattermost 11 as mattermostLatest. Note that Mattermost 11 drops support for MySQL. The Mattermost module will assertion fail if you try to use MySQL with Mattermost 11; support for using MySQL with Mattermost will fully be removed in NixOS 26. -
services.matter-servernow hosts a debug dashboard on the configured port. Open the port on the firewall withservices.matter-server.openFirewall. -
services.moneronow includes theenvironmentFileoption for adding secrets to the Monero daemon config. -
services.nebula.networks.<name>will now store configuration files in/etc/nebula/<name>.ymland supports config reloading. -
services.logind.extraConfigwas converted to RFC42-styleservices.logind.settings.Login. -
services.nginx.recommendedProxySettingsnow setsX-Forwarded-Serverto the hostname of nginx instead of the original host. -
services.netbird.servernow uses dedicated packages split out due to relicensing of server components to AGPLv3 with version0.53.0, -
services.nextcloud.configureRedisnow defaults totruein accordance with upstream recommendations to have caching for file locking. See the upstream doc for further details. -
services.ntpd-rsnow performs configuration validation. -
services.opentelemetry-collectorhas a new optionvalidateConfigFileoption that checks the configuration file during build. It is enabled by default if the configuration file is in the Nix store. -
services.restic.backupsnow includes acommandoption for passing a command to the --stdin-from-command flag. -
services.pdshas been renamed toservices.bluesky-pds. -
services.pfix-srsdnow automatically integrates with the local Postfix instance, when enabled. This behavior can disabled using the services.pfix-srsd.configurePostfix option. -
services.postsrsdnow automatically integrates with the local Postfix instance, when enabled. This behavior can disabled using the services.postsrsd.configurePostfix option. -
services.varnish.http_addresshas been superseded byservices.varnish.listenwhich is now structured config for all of varnish's-avariations. -
services.xserver.desktopManager.deepinand associated packages have been removed due to being unmaintained. See issue #422090 for more details. -
systemd.extraConfigandboot.initrd.systemd.extraConfigwas converted to RFC42-stylesystemd.settings.Managerandboot.initrd.systemd.settings.Managerrespectively.systemd.watchdog.runtimeTimewas renamed tosystemd.settings.Manager.RuntimeWatchdogSecsystemd.watchdog.devicewas renamed tosystemd.settings.Manager.WatchdogDevicesystemd.watchdog.rebootTimewas renamed tosystemd.settings.Manager.RebootWatchdogSecsystemd.watchdog.kexecTimewas renamed tosystemd.settings.Manager.KExecWatchdogSecsystemd.enableCgroupAccountingwas removed. Cgroup accounting now needs to be disabled directly usingsystemd.settings.Manager.*Accounting.
-
The
ksycocacache in Plasma 6 will no longer be re-built when$XDG_CACHE_HOMEis not set to$HOME/.cache. -
The latest available version of Nextcloud is v32 (available as
pkgs.nextcloud32). The installation logic is as follows:- If
services.nextcloud.packageis specified explicitly, this package will be installed (recommended) - If
system.stateVersionis >=25.05,pkgs.nextcloud32will be installed by default. - If
system.stateVersionis >=24.11,pkgs.nextcloud31will be installed by default. nextcloud30is EOL and was thus removed.- Please note that an upgrade from v30 (or older) to v32 directly is not possible. Please upgrade to
nextcloud31(or earlier) first. Nextcloud prohibits skipping major versions while upgrading. You can upgrade by declaringservices.nextcloud.package = pkgs.nextcloud30;.
- If
-
The
nettoolspackage (ifconfig, arp, mii-tool, netstat, route) is not installed by default anymore. The suite is unmaintained and users should migrate toiproute2andethtoolinstead. -
The new option networking.ipips has been added to create IP within IP kind of tunnels (including 4in6, ip6ip6 and ipip). With the existing networking.sits option (6in4), it is now possible to create all combinations of IPv4 and IPv6 encapsulation.
-
tpm2-totp can now be used to show a TOTP during boot using Plymouth. Available as boot.plymouth.tpm2-totp.
-
users.users.*.lingernow defaults tonullrather thanfalse, meaning NixOS will not attempt to enable or disable lingering for that user account, instead allowing for imperative control over lingering using theloginctlcommands. In practice, this is unlikely to make a difference for most people, as new users are created without lingering configured. There is a new, related option,users.manageLingering, which can be used to prevent NixOS attempting to manage lingering entirely.