39 KiB
Release 24.11 (“Vicuña”, 2024.11/??)
Highlights
-
This will be the last release of Nixpkgs to support macOS Sierra 10.12 to macOS Catalina 10.15. Starting with release 25.05, the minimum supported version will be macOS Big Sur 11, and we cannot guarantee that packages will continue to work on older versions of macOS. Users on old macOS versions should consider upgrading to a supported version (potentially using OpenCore Legacy Patcher for old hardware) or installing NixOS. If neither of those options are viable and you require new versions of software, MacPorts supports back to Mac OS X Snow Leopard 10.6.
-
Convenience options for
amdgpu, open source driver for Radeon cards, is now available underhardware.amdgpu. -
AMDVLK, AMD's open source Vulkan driver, is now available to be configured as
hardware.amdgpu.amdvlkoption. This also allows configuring runtime settings of AMDVLK and enabling experimental features. -
The
moonlight-qtpackage (Moonlight game streaming) now has HDR support on Linux systems. -
PostgreSQL now defaults to major version 16.
-
autheliahas been upgraded to version 4.38. This version brings several features and improvements which are detailed in the release blog post. This release also deprecates some configuration keys, which are likely to be removed in future version 5.0, but they are still supported and expected to be working in the current version. -
compressDrvcan compress selected files in a derivation.compressDrvWebcompresses files for common web server usage (.gzwithzopfli,.brwithbrotli). -
hardware.displayis a new module implementing workarounds for misbehaving monitors through setting up custom EDID files and forcing kernel/framebuffer modes. -
A new display-manager
services.displayManager.lywas added. It is a tui based replacement of sddm and lightdm for window manager users. Users can use it byservices.displayManager.ly.enableand config it byservices.displayManager.ly.settingsto generate/etc/ly/config.ini -
The default sound server for most graphical sessions has been switched from PulseAudio to PipeWire. Users that want to keep PulseAudio will want to set
services.pipewire.enable = false;andhardware.pulseaudio.enable = true;. There is currently no plan to fully deprecate and remove PulseAudio, however, PipeWire should generally be preferred for new installs. -
The Rust rewrite of the
switch-to-configurationprogram is now used for system activation by default. If you experience any issues, please report them. The original Perl script can still be used for now by settingsystem.switch.enableNgtofalse.
New Modules
-
TaskChampion Sync-Server, a Taskwariror 3 sync server, replacing Taskwarrior 2's sync server named
taskserver. -
FlareSolverr, proxy server to bypass Cloudflare protection. Available as services.flaresolverr service.
-
Gancio, a shared agenda for local communities. Available as services.gancio.
-
Goatcounter, Easy web analytics. No tracking of personal data. Available as services.goatcounter.
-
UWSM, a wayland session manager to wrap Wayland Compositors into useful systemd units such as
graphical-session.target. Available as programs.uwsm. -
Open-WebUI, a user-friendly WebUI for LLMs. Available as services.open-webui service.
-
Quickwit, sub-second search & analytics engine on cloud storage. Available as services.quickwit.
-
Userborn, a service for declarative user management. This can be used instead of the
update-users-groups.plPerl script and instead of systemd-sysusers. To achieve a system without Perl, this is the now recommended tool over systemd-sysusers because it can alos create normal users and change passwords. Available as services.userborn -
Flood, a beautiful WebUI for various torrent clients. Available as services.flood.
-
Firefly-iii Data Importer, a data importer for Firefly-III. Available as services.firefly-iii-data-importer
-
[QGroundControl], a ground station support and configuration manager for the PX4 and APM Flight Stacks. Available as programs.qgroundcontrol.
-
Eintopf, community event and calendar web application. Available as services.eintopf.
-
Radicle, an open source, peer-to-peer code collaboration stack built on Git. Available as services.radicle.
-
ddns-updater, a service to update DNS records periodically with WebUI for many DNS providers. Available as services.ddns-updater.
-
Immersed VR, a closed-source coworking platform. Available as programs.immersed-vr.
-
HomeBox: the inventory and organization system built for the Home User. Available as services.homebox.
-
Renovate, a dependency updating tool for various git forges and language ecosystems. Available as services.renovate.
-
Music Assistant, a music library manager for your offline and online music sources which can easily stream your favourite music to a wide range of supported players. Available as services.music-assistant.
-
zeronsd, a DNS server for ZeroTier users. Available with services.zeronsd.servedNetworks.
-
wg-access-server, an all-in-one WireGuard VPN solution with a web ui for connecting devices. Available at services.wg-access-server.
-
Pingvin Share, a self-hosted file sharing platform and an alternative for WeTransfer. Available as services.pingvin-share.
-
Envision, a UI for building, configuring and running Monado, the open source OpenXR runtime. Available as programs.envision.
-
Localsend, an open source cross-platform alternative to AirDrop. Available as programs.localsend.
-
cryptpad, a privacy-oriented collaborative platform (docs/drive/etc), has been added back. Available as services.cryptpad.
-
realm, a simple, high performance relay server written in rust. Available as services.realm.enable.
-
Gotenberg, an API server for converting files to PDFs that can be used alongside Paperless-ngx. Available as services.gotenberg.
-
Playerctld, a daemon to track media player activity. Available as services.playerctld.
-
MenhirLib A support library for verified Coq parsers produced by Menhir.
-
Glance, a self-hosted dashboard that puts all your feeds in one place. Available as services.glance.
-
Apache Tika, a toolkit that detects and extracts metadata and text from over a thousand different file types. Available as services.tika.
-
Misskey, an interplanetary microblogging platform. Available as services.misskey.
-
Improved File Manager, or IFM, a single-file web-based file manager. Available as services.ifm
-
OpenGFW, an implementation of the Great Firewall on Linux. Available as services.opengfw.
-
Rathole, a lightweight and high-performance reverse proxy for NAT traversal. Available as services.rathole.
-
Proton Mail bridge, a desktop application that runs in the background, encrypting and decrypting messages as they enter and leave your computer. It lets you add your Proton Mail account to your favorite email client via IMAP/SMTP by creating a local email server on your computer.
-
chromadb, an open-source AI application database. Batteries included. Available as services.chromadb.
-
Wakapi, a time tracking software for programmers. Available as services.wakapi.
-
foot, a fast, lightweight and minimalistic Wayland terminal emulator. Available as programs.foot.
Backward Incompatibilities
-
transmissionpackage has been aliased with atracewarning totransmission_3. Since Transmission 4 has been released last year, and Transmission 3 will eventually go away, it was decided perform this warning alias to make people aware of the new version. Theservices.transmission.packagedefaults totransmission_3as well because the upgrade can cause data loss in certain specific usage patterns (examples: #5153, #6796). Please make sure to back up to your data directory per your usage:transmission-gtk:~/.config/transmissiontransmission-daemonusing NixOS module:${config.services.transmission.home}/.config/transmission-daemon(defaults to/var/lib/transmission/.config/transmission-daemon)
-
androidenv.androidPkgs_9_0has been removed, and replaced withandroidenv.androidPkgsfor a more complete Android SDK including support for Android 9 and later. -
grafanahas been updated to version 11.1. This version doesn't support settinghttp_addrto a hostname anymore, an IP address is expected. -
knot-dnshas been updated to version 3.4.x. Check the migration guide for breaking changes. -
services.kubernetes.kubelet.clusterDnsnow accepts a list of DNS resolvers rather than a single string, bringing the module more in line with the upstream Kubelet configuration schema. -
wstunnelhas had a major version upgrade that entailed rewriting the program in Rust. The module was updated to accommodate for breaking changes. Breaking changes to the module API were minimised as much as possible, but some were nonetheless inevitable due to changes in the upstream CLI. Certain options were moved from separate CLI arguments into the forward specifications, and those options were also removed from the module's API, please consult the wstunnel man page for more detail. Also be aware that if you have set additional options inservices.wstunnel.{clients,servers}.<name>.extraArgs, that those might have been removed or modified upstream. -
clang-tools_<version>packages have been moved intollvmPackages_<version>(i.e.clang-tools_18is nowllvmPackages_18.clang-tools).- For convenience, the top-level
clang-toolsattribute remains and is now bound tollvmPackages.clang-tools. - Top-level
clang_tools_<version>attributes are now aliases; these will be removed in a future release.
- For convenience, the top-level
-
buildbotwas updated to 4.0, the AngularJS frontend has been replaced by a React frontend, see the upstream release notes. -
nginxpackage no longer includesgdandgeoipdependencies. For enabling it, overridenginxpackage with the optionalswithImageFilterandwithGeoIP. -
systemd.enableUnifiedCgroupHierarchyoption has been removed. In systemd 256 support for cgroup v1 ('legacy' and 'hybrid' hierarchies) is now considered obsolete and systemd by default will refuse to boot under it. To forcibly reenable cgroup v1 support, you canset boot.kernelParams = [ "systemd.unified_cgroup_hierachy=0" "SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1" ]. NixOS does not officially support this configuration and might cause your system to be unbootable in future versions. You are on your own. -
opensshandopenssh_hpnare now compiled without Kerberos 5 / GSSAPI support in an effort to reduce the attack surface of the components for the majority of users. Users needing this support can use the newopensshWithKerberosandopenssh_hpnWithKerberosflavors (e.g.programs.ssh.package = pkgs.openssh_gssapi). -
security.ipa.ipaHostnamenow defaults to the value ofnetworking.fqdnif it is set, instead of the previous hardcoded default of${networking.hostName}.${security.ipa.domain}. -
The
MSMTP_QUEUEandMSMTP_LOGenvironment variables accepted bymsmtpqhave now been renamed toMSMTPQ_QandMSMTPQ_LOGrespectively. -
The fcgiwrap module now allows multiple instances running as distinct users. The option
services.fgciwrapnow takes an attribute set of the configuration of each individual instance. This requires migrating any previous configuration keys fromservices.fcgiwrap.*toservices.fcgiwrap.instances.some-instance.*. The ownership and mode of the UNIX sockets created by this service are now configurable and private by default. Processes also now run as a dynamically allocated user by default instead of root. -
The
mautrix-signalmodule was adapted to incorporate the configuration rearrangement that resulted from the update to the mautrix bridgev2 architecture. Pre-0.7.0 configurations should continue to work. In case you want to update your configuration make sure to check the NixOS manual. -
The nvidia driver no longer defaults to the proprietary driver starting with version 560. You will need to manually set
hardware.nvidia.opento select the proprietary or open driver. -
singularity-toolshave thestoreDirargument removed from its override interface and usebuiltins.storeDirinstead. -
Two build helpers in
singularity-tools, i.e.,mkLayerandshellScript, are deprecated, as they are no longer involved in image-building. Maintainers will remove them in future releases. -
The
rust.toTargetArch,rust.toTargetOs,rust.toTargetFamily,rust.toTargetVendor,rust.toRustTarget,rust.toRustTargetSpec,rust.toRustTargetSpecShort, andrust.IsNoStdTargetfunctions are deprecated in favour of therust.platform.arch,rust.platform.os,rust.platform.target-family,rust.platform.vendor,rust.rustcTarget,rust.rustcTargetSpec,rust.cargoShortTarget,rust.cargoEnvVarTarget, andrust.isNoStdTargetplatform attributes respectively. -
The
budgieandbudgiePluginsscope have been removed and their packages moved into the top level scope (i.e.,budgie.budgie-desktopis nowbudgie-desktop) -
All Cinnamon and XApp packages have been moved to top-level (i.e.,
cinnamon.nemois nownemo). -
All GNOME packages have been moved to top-level (i.e.,
gnome.nautilusis nownautilus). -
services.cgitnow runs as the cgit user by default instead of root. This change requires granting access to the repositories to this user or setting the appropriate one throughservices.cgit.some-instance.user. -
nvimpagerwas updated to version 0.13.0, which changes the order of user and nvimpager settings: user commands in-cand--cmdnow override the respective default settings because they are executed later. -
Kubernetes
featureGateshave changed from alistOf strtoattrsOf bool. This refactor makes it possible to also disable feature gates, without having to useextraOptsflags.A previous configuration may have looked like this:
featureGates = [ "EphemeralContainers" ]; extraOpts = pkgs.lib.concatStringsSep " " ( [ ''--feature-gates="CSIMigration=false"'' });Using an AttrSet instead, the new configuration would be:
featureGates = {EphemeralContainers = true; CSIMigration=false;}; -
pkgs.nextcloud27has been removed since it's EOL. -
frigatewas updated past 0.14.0. This release includes various breaking changes, so please go read the release notes. Most prominently access to the webinterface and API are now protected by authentication. Retrieve the auto-created admin account from thefrigate.servicejournal after upgrading. -
services.forgejo.mailerPasswordFilehas been deprecated by the drop-in replacementservices.forgejo.secrets.mailer.PASSWD, which is part of the new free-formservices.forgejo.secretsoption.services.forgejo.secretsis a small wrapper over systemd'sLoadCredential=. It has the same structure (sections/keys) asservices.forgejo.settingsbut takes file paths that will be read before service startup instead of some plaintext value. -
forgejoandforgejo-ltsno longer support the opt-in feature PAM (Pluggable Authentication Module). -
giteano longer supports the opt-in feature [PAM (Pluggable Authentication Module)][https://docs.gitea.com/usage/authentication#pam-pluggable-authentication-module]. -
services.ddclient.usehas been deprecated:ddclientnow supports separate IPv4 and IPv6 configuration. Useservices.ddclient.usev4andservices.ddclient.usev6instead. -
services.pgbouncersystemd service is configured withType=notify-reloadand allows reloading configuration without process restart. PgBouncer configuration options were moved to the free-form type option namedservices.pgbouncer.settingsaccording to the NixOS RFC 0042. -
teleporthas been upgraded from major version 15 to major version 16. Refer to upstream upgrade instructions and release notes for v16. -
tests.overridinghas itspassthru.testsrestructured as an attribute set instead of a list, making individual tests accessible by their names. -
vaultwardenlost the capability to bind to privileged ports. If you rely on this behavior, override the systemd unit to allowCAP_NET_BIND_SERVICEin your local configuration. -
The Invoiceplane module now only accepts the structured
settingsoption.extraConfigis now removed. -
The
ollamaservices replaces itssandboxtoggle with options to configure a staticuserandgroup. ThewritablePathsoption has been removed and the models directory is now always exempt from sandboxing. -
Legacy package
stalwart-mail_0_6was dropped, please note the manual upgrade process before changing the package topkgs.stalwart-mailinservices.stalwart-mail.package. -
The
nomad_1_5package was dropped, as it has reached end-of-life upstream. Evaluating it will throw an error. -
androidndkPkgshas been updated toandroidndkPkgs_26. -
Android NDK version 26 and SDK version 33 are now the default versions used for cross compilation to android.
-
nodePackages.vscode-css-languageserver-bin,nodePackages.vscode-html-languageserver-bin, andnodePackages.vscode-json-languageserver-binwere dropped due to an unmaintained upstream. Thevscode-langservers-extractedpackage is a maintained drop-in replacement. -
nodePackages.prismahas been replaced byprisma. -
fetchNextcloudApphas been rewritten to usefetchurlrather thanfetchzip. This invalidates all existing hashes but you can restore the old behavior by passing itunpack = true. -
haskell.lib.compose.justStaticExecutablesnow disallows references to GHC in the output by default, to alert users to closure size issues caused by #164630. See "Packaging Helpers" in the Haskell section of the Nixpkgs manual for information on working aroundoutput '...' is not allowed to refer to the following pathserrors caused by this change. -
The
stalwart-mailservice now runs under thestalwart-mailsystem user instead of a dynamically created one viaDynamicUser, to avoid automatic ownership changes on its large file store each time the service was started. This change requires to manually move the state directory from/var/lib/private/stalwart-mailto/var/lib/stalwart-mailand to change the ownership of the directory and its content tostalwart-mail. -
The
stalwart-mailmodule now uses RocksDB as the default storage backend forstateVersion≥ 24.11. (It was previously using SQLite for structured data and the filesystem for blobs). -
The
stargazerservice has been hardened to improve security, but these changes make break certain setups, particularly around traditional CGI.- The
stargazer.allowCgiUseroption has been added, enabling Stargazer'scgi-useroption to work, which was previously broken.
- The
-
The
shioriservice now requires an HTTP secret valueSHIORI_HTTP_SECRET_KEYto be provided via environment variable. The nixos module therefore, now provides an environmentFile option:# This is how a environment file can be generated: # $ printf "SHIORI_HTTP_SECRET_KEY=%s\n" "$(openssl rand -hex 16)" > /path/to/env-file services.shiori.environmentFile = "/path/to/env-file"; -
/share/nanois now only linked whenprograms.nano.enableis enabled. -
PPD files for Utax printers got renamed (spaces replaced by underscores) in newest
foomatic-dbpackage; users of Utax printers might need to adapt theirhardware.printers.ensurePrinters.*.modelvalue. -
The
kvdokernel module package was removed, because it was upstreamed in kernel version 6.9, where it is calleddm-vdo. -
libe57formathas been updated to>= 3.0.0, which contains some backward-incompatible API changes. See the release note for more details. -
gitlabdeprecated support for runner registration tokens in GitLab 16.0, disabled their support in GitLab 17.0 and will ultimately remove it in GitLab 18.0, as outlined in the documentation. After upgrading to GitLab >= 17.0, it is possible to re-enable support for registration tokens in the UI until GitLab 18.0. Refer to the manual on using registration tokens after GitLab 17.0. GitLab administrators should migrate to the new runner registration workflow with runner authentication tokens until the release of GitLab 18.0. -
gitlabhas been updated from 16.x to 17.x and requires at leastpostgresql14.9, as stated in the documentation. Check the upgrade guide in the NixOS manual on how to upgrade your PostgreSQL installation. -
gitaly(part ofgitlab) is now using the bundledgitpackage instead ofpkgs.gitto maintain compatibility with GitLab. -
nixos/gitlabno longer addspkgs.gittoenvironment.systemPackagesby default. -
The
replay-sorcerypackage and module was removed as it unmaintained upstream. Consider usinggpu-screen-recorderorobs-studioinstead. -
To follow RFC 0042 a few options of
sambahave been moved fromextraConfigandconfigTextto the new freeform optionsettingsand renamed, e.g.:services.samba.invalidUserstoservices.samba.settings.global."invalid users"services.samba.securityTypetoservices.samba.settings.global."security type"services.samba.sharestoservices.samba.settingsservices.samba.enableWinbinddtoservices.samba.winbindd.enableservices.samba.enableNmbdtoservices.samba.nmbd.enable
-
zxwas updated to v8, which introduces several breaking changes. See the v8 changelog for more information. -
The
portunuspackage and service do not support weak password hashes anymore. If you installed Portunus on NixOS 23.11 or earlier, upgrade to NixOS 24.05 first to get support for strong password hashing. Then, follow the instructions on the upstream release notes to upgrade all existing user accounts to strong password hashes. If you need to upgrade to 24.11 without having completed the migration, consider the security implications of weak password hashes on your user accounts, and add the following to your configuration:services.portunus.package = pkgs.portunus.override { libxcrypt = pkgs.libxcrypt-legacy; }; services.portunus.ldap.package = pkgs.openldap.override { libxcrypt = pkgs.libxcrypt-legacy; }; -
The default value of
services.kubernetes.kubelet.hostnameis now lowercased. Explicitly setkubelet.hostnametonetworking.fqdnOrHostNameto get back the old default behavior. -
Docker now defaults to 27.x, because version 24.x stopped receiving security updates and bug fixes after February 1, 2024.
-
postgresqlwas split into default and -dev outputs. To make this work without circular dependencies, the output of thepg_configsystem view has been removed. Thepg_configbinary is provided in the -dev output and still works as expected. -
keycloakwas updated to version 25, which introduces new hostname related options. See Upgrading Guide for instructions. -
programs.vim.defaultEditornow only works ifprograms.vim.enableis enabled. -
The
indi-fullpackage no longer contains non-free drivers. To get the old collection of drivers useindi-full-nonfreeor create your own collection of drivers by overriding indi-with-drivers. E.g.:pkgs.indi-with-drivers.override {extraDrivers = with pkgs.indi-3rdparty; [indi-gphoto];} -
/share/vim-pluginsnow only gets linked ifprograms.vim.enableis enabled -
The
tracypackage no longer works on X11, since it's moved to Wayland support, which is the intended default behavior by Tracy maintainers. X11 users have to switch to the new packagetracy-x11. -
The
services.prometheus.exporters.miniooption has been removed, as it's upstream implementation was broken and unmaintained. Minio now has built-in Prometheus metrics exposure, which can be used instead. -
The
services.patroni.raftoption has been removed, as Raft has been deprecated by upstream since 3.0.0 -
services.roundcube.maxAttachmentSizewill multiply the value set with1.37to offset overhead introduced by the base64 encoding applied to attachments. -
The
soundoptions have been removed or renamed, as they had a lot of unintended side effects. See below for details. -
The
services.mxisdmodule has been removed as both mxisd and ma1sd are not maintained any longer. Consequently the packagepkgs.ma1sdhas also been removed. -
ffmpeg_5has been removed. Please use the unversionedffmpeg, pin a newer version, or if necessary pinffmpeg_4for compatibility. -
The
xdg.portal.gtkUsePortaloption has been removed, as it had been deprecated for over 2 years. Using theGTK_USE_PORTALenvironment variable in this manner is not intended nor encouraged by the GTK developers, but can still be done manually viaenvironment.sessionVariables. -
The
services.trust-dnsmodule has been renamed toservices.hickory-dns. -
The option
services.prometheus.exporters.pgbouncer.connectionStringFilehas been removed since it leaked the connection string (and thus potentially the DB password) into the cmdline of process making it effectively world-readable.Use
services.prometheus.exporters.pgbouncer.connectionEnvFileinstead. -
The
lshpackage and theservices.lshdmodule have been removed as they had no maintainer in Nixpkgs and hadn’t seen an upstream release in over a decade. It is recommended to migrate toopensshandservices.openssh. -
opencv2andopencv3have been removed, as they are obsolete and were not used by any other package. External users are encouraged to migrate to OpenCV 4. -
The
tvheadendpackage and theservices.tvheadendmodule have been removed as nobody was willing to maintain them and they were stuck on an unmaintained version that required FFmpeg 4; please see pull request #332259 if you are interested in maintaining a newer version. -
The
antennaspackage and theservices.antennasmodule have been removed as they only work withtvheadend(see above). -
The
system.build.brightboxImageimage has been removed as It did not build anymore and has not seen any maintenance in over 7 years (excluding tree-wide changes). -
The
services.syncplaymodule now exposes all currently available command-line arguments forsyncplay-serveras options, as well as auseACMEHostoption for easy TLS setup. The systemd service now usesDynamicUser/StateDirectoryand theuserandgroupoptions have been deprecated. -
The
openlenspackage got removed, suggested replacmentlens-desktop -
The NixOS installation media no longer support the ReiserFS or JFS file systems by default.
-
Minimal installer ISOs are no longer built on the small channel. Please obtain installer images from the full release channels.
Other Notable Changes
-
The
zerocallusedregshardening flag is enabled by default on compilers that support it. -
The
stackclashprotectionhardening flag has been added, though disabled by default. -
The
pacrethardening flag has been added, though disabled by default. -
cargoSha256inrustPlatform.buildRustPackagehas been deprecated in favor ofcargoHashwhich supports SRI hashes. See buildRustPackage: Compiling Rust applications with Cargo for more information. -
The
vendorHashof Go packages built withbuildGoModulecan now be overridden withoverrideAttrs.goModules,modRoot,vendorHash,deleteVendor, andproxyVendorare now passed as derivation attributes.goModulesandvendorHashare no longer placed underpassthru. -
hareHookhas been added as the language framework for Hare. From now on, it, not theharepackage, should be added tonativeBuildInputswhen building Hare programs. -
lib.options.mkPackageOptionMDis now obsolete; use the identicallib.options.mkPackageOptioninstead. -
lib.misc.mapAttrsFlattenis now formally deprecated and will be removed in future releases; use the identicallib.attrsets.mapAttrsToListinstead. -
nixosTestsnow provide a working IPv6 setup for VLAN 1 by default. -
Kanidm can now be provisioned using the new [
services.kanidm.provision] option, but requires using a patched version available viapkgs.kanidm.withSecretProvisioning. -
Kanidm previously had an incorrect systemd service type, causing dependent units with an
afterandrequiresdirective to start beforekanidm*finished startup. The module has now been updated in line with upstream recommendations. -
The kubelet configuration file can now be amended with arbitrary additional content using the
services.kubernetes.kubelet.extraConfigoption. -
To facilitate dependency injection, the
imguipackage now builds a static archive using vcpkg' CMake rules. The derivation now installs "impl" headers selectively instead of by a wildcard. Useimgui.srcif you just want to access the unpacked sources. -
Unprivileged access to the kernel syslog via
dmesgis now restricted by default. Users wanting to keep an unrestricted access to it can setboot.kernel.sysctl."kernel.dmesg_restrict" = false. -
The
i18n.inputMethodmodule introduces two new properties:enableandtype, for declaring whether to enable an alternative input method and defining which input method respectfully. The options available intypeare the same as the existingenabledoption.enabledis now deprecated, and will be removed in a future release. -
security.pam.u2fnow follows RFC42. All module options are now settable through the freeform.settings. -
Gollum was upgraded to major version 6. Read their migration notes.
-
The hooks
yarnConfigHookandyarnBuildHookwere added. These should replaceyarn2nix.mkYarnPackageand otheryarn2nixrelated tools. The motivation to get rid ofyarn2nixtools is the fact that they are too complex and hard to maintain, and they rely upon too much Nix evaluation which is problematic if import-from-derivation is not allowed (see more details at #296856. The transition frommkYarnPackagetoyarn{Config,Build}Hookis tracked at #324246. -
services.timesyncd.serversnow defaults tonull, allowing systemd-timesyncd to use NTP servers advertised by DHCP. -
services.timesyncd.fallbackServerswas added and defaults tonetworking.timeServers. -
Cinnamon has been updated to 6.2, please check upstream announcement for more details. Following Mint 22 defaults, the Cinnamon module no longer ships geary and hexchat by default.
-
The
shadowstackhardening flag has been added, though disabled by default. -
xxdis now provided by thetinyxxdpackage, rather thanvim.xxd, to reduce closure size and vulnerability impact. Since it has the same options and semantics as Vim'sxxdutility, there is no user impact. Vim'sxxdremains available as thevim.xxdpackage. -
prometheus-openldap-exporterwas removed since it was unmaintained upstream and had no nixpkgs maintainers. -
resticmodule now has an option for inhibiting system sleep while backups are running, defaulting to off (not inhibiting sleep), available asservices.restic.backups.<name>.inhibitsSleep. -
Support for runner registration tokens has been deprecated in
gitlab-runner15.6 and is expected to be removed ingitlab-runner18.0. Configuration of existing runners should be changed to using runner authentication tokens by configuring {option}services.gitlab-runner.services.<name>.authenticationTokenConfigFileinstead of the former {option}services.gitlab-runner.services.<name>.registrationConfigFileoption. -
iproute2now has libbpf support. -
nix.channel.enable = falseno longer impliesnix.settings.nix-path = []. Since Nix 2.13, anix-pathset innix.confcannot be overriden by theNIX_PATHconfiguration variable.
Detailed migration information
sound options removal
The sound options have been largely removed, as they are unnecessary for most modern setups, and cause issues when enabled.
If you set sound.enable in your configuration:
- If you are using Pulseaudio or PipeWire, simply remove that option
- If you are not using an external sound server, and want volumes to be persisted across shutdowns, set
hardware.alsa.enablePersistence = trueinstead
If you set sound.enableOSSEmulation in your configuration:
- Make sure it is still necessary, as very few applications actually use OSS
- If necessary, set
boot.kernelModules = [ "snd_pcm_oss" ]
If you set sound.extraConfig in your configuration:
- If you are using another sound server, like Pulseaudio, JACK or PipeWire, migrate your configuration to that
- If you are not using an external sound server, set
environment.etc."asound.conf".text = yourExtraConfiginstead
If you set sound.mediaKeys in your configuration:
- Preferably switch to handling media keys in your desktop environment/compositor
- If you want to maintain the exact behavior of the option, use the following snippet
services.actkbd = let
volumeStep = "1%";
in {
enable = true;
bindings = [
# "Mute" media key
{ keys = [ 113 ]; events = [ "key" ]; command = "${alsa-utils}/bin/amixer -q set Master toggle"; }
# "Lower Volume" media key
{ keys = [ 114 ]; events = [ "key" "rep" ]; command = "${alsa-utils}/bin/amixer -q set Master ${volumeStep}- unmute"; }
# "Raise Volume" media key
{ keys = [ 115 ]; events = [ "key" "rep" ]; command = "${alsa-utils}/bin/amixer -q set Master ${volumeStep}+ unmute"; }
# "Mic Mute" media key
{ keys = [ 190 ]; events = [ "key" ]; command = "${alsa-utils}/bin/amixer -q set Capture toggle"; }
];
};