···3737 pkgs/development/cuda-modules
3838 pkgs/test/cuda
3939 pkgs/top-level/cuda-packages.nix
4040+ NIX_FMT_PATHS_VSCODE_EXTS: pkgs/applications/editors/vscode/extensions
4041 # Iterate over all environment variables beginning with NIX_FMT_PATHS_.
4142 run: |
4243 for env_var in "${!NIX_FMT_PATHS_@}"; do
···10101111- `cryptsetup` has been upgraded from 2.6.1 to 2.7.0. Cryptsetup is a critical component enabling LUKS-based (but not only) full disk encryption.
1212 Take the time to review [the release notes](https://gitlab.com/cryptsetup/cryptsetup/-/raw/v2.7.0/docs/v2.7.0-ReleaseNotes).
1313- One of the highlight is that it is now possible to use hardware OPAL-based encryption of your disk with `cryptsetup`, it has a lot of caveats, see the above notes for the full details.
1313+ One of the highlights is that it is now possible to use hardware OPAL-based encryption of your disk with `cryptsetup`. It has a lot of caveats, see the above notes for the full details.
14141515- `screen`'s module has been cleaned, and will now require you to set `programs.screen.enable` in order to populate `screenrc` and add the program to the environment.
16161717- `linuxPackages_testing_bcachefs` is now fully deprecated by `linuxPackages_latest`, and is therefore no longer available.
18181919-- The default kernel package has been updated from 6.1 to 6.6. All supported kernels remain available.
1919+- (TODO not sure what path to use here) The default kernel package has been updated from 6.1 to 6.6. All supported kernels remain available.
20202121- NixOS now installs a stub ELF loader that prints an informative error message when users attempt to run binaries not made for NixOS.
2222 - This can be disabled through the `environment.stub-ld.enable` option.
···3434 - `nixVersions.git` which tracks the latest Nix master and is roughly updated once a week. This is intended to enable people to easily test unreleased changes of Nix to catch regressions earlier.
3535 - `nixVersions.latest` which points to the latest Nix version packaged in nixpkgs.
36363737-- Julia environments can now be built with arbitrary packages from the ecosystem using the `.withPackages` function. For example: `julia.withPackages ["Plots"]`.
3737+- `julia` environments can now be built with arbitrary packages from the ecosystem using the `.withPackages` function. For example: `julia.withPackages ["Plots"]`.
38383939-- The PipeWire and WirePlumber modules have removed support for using
3939+- `pipewire` and `wireplumber` modules have removed support for using
4040`environment.etc."pipewire/..."` and `environment.etc."wireplumber/..."`.
4141Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for PipeWire and
4242`services.pipewire.wireplumber.configPackages` for WirePlumber instead."
···4545 Refer to upstream [upgrade instructions](https://goteleport.com/docs/management/operations/upgrading/)
4646 and release notes for [v15](https://goteleport.com/docs/changelog/#1500-013124).
47474848-- A new option `systemd.sysusers.enable` was added. If enabled, users and
4848+- `systemd.sysusers.enable` option was added. If enabled, users and
4949 groups are created with systemd-sysusers instead of with a custom perl script.
50505151- `virtualisation.docker.enableNvidia` and `virtualisation.podman.enableNvidia` options are deprecated. `hardware.nvidia-container-toolkit.enable` should be used instead. This option will expose GPUs on containers with the `--device` CLI option. This is supported by Docker 25, Podman 3.2.0 and Singularity 4. Any container runtime that supports the CDI specification will take advantage of this feature.
···6969 }
7070 ```
71717272-- The initial Incus LTS release (v6.0.x) is now available through `virtualisation.incus` as the default. Users who wish to continue using the non-LTS release will need to set `virtualisation.incus.package = pkgs.incus`. Stable release users are encouraged to stay on the LTS release as non-LTS releases will by default not be backported.
7272+- `virtialisation.incus` now defaults to the newly-added `incus-lts` release (v6.0.x). Users who wish to continue using the non-LTS release will need to set `virtualisation.incus.package = pkgs.incus`. Stable release users are encouraged to stay on the LTS release as non-LTS releases will by default not be backported.
73737474-- Canonical LXD has been upgraded to v5.21.x, an LTS release. The LTS release is now the only supported LXD release. Users are encouraged to [migrate to Incus](https://linuxcontainers.org/incus/docs/main/howto/server_migrate_lxd/) for better support on NixOS.
7474+- Canonical `lxd` has been upgraded to v5.21.x, an LTS release. The LTS release is now the only supported LXD release. Users are encouraged to [migrate to Incus](https://linuxcontainers.org/incus/docs/main/howto/server_migrate_lxd/) for better support on NixOS.
75757676-- lua interpreters default LUA_PATH and LUA_CPATH are not overriden by nixpkgs
7676+- `lua` interpreters default LUA_PATH and LUA_CPATH are not overriden by nixpkgs
7777 anymore, we patch LUA_ROOT instead which is more respectful to upstream.
78787979-- Plasma 6 is now available and can be installed with `services.xserver.desktopManager.plasma6.enable = true;`. Plasma 5 will likely be deprecated in the next release (24.11). Note that Plasma 6 runs as Wayland by default, and the X11 session needs to be explicitly selected if necessary.
7979+- `plasma6` is now available and can be installed with `services.xserver.desktopManager.plasma6.enable = true;`. Plasma 5 will likely be deprecated in the next release (24.11). Note that Plasma 6 runs as Wayland by default, and the X11 session needs to be explicitly selected if necessary.
80808181-- The desktop mode of Lomiri (formerly known as Unity8), using Mir 2.x to function as a Wayland compositor, is now available and can be installed with `services.desktopManager.lomiri.enable = true`. Note that some core applications, services and indicators have yet to be packaged, and some functions may remain incomplete, but the base experience should be there.
8181+- `lomiri` (formerly known as Unity8) desktop mode, using Mir 2.x to function as a Wayland compositor, is now available and can be installed with `services.desktopManager.lomiri.enable = true`. Note that some core applications, services and indicators have yet to be packaged, and some functions may remain incomplete, but the base experience should be there.
82828383## New Services {#sec-release-24.05-new-services}
8484···100100101101- [ryzen-smu](https://gitlab.com/leogx9r/ryzen_smu), Linux kernel driver to expose the SMU (System Management Unit) for certain AMD Ryzen Processors. Includes the userspace program `monitor_cpu`. Available at [hardward.cpu.amd.ryzen-smu](#opt-hardware.cpu.amd.ryzen-smu.enable)
102102103103-- systemd's gateway, upload, and remote services, which provides ways of sending journals across the network. Enable using [services.journald.gateway](#opt-services.journald.gateway.enable), [services.journald.upload](#opt-services.journald.upload.enable), and [services.journald.remote](#opt-services.journald.remote.enable).
103103+- `systemd`'s `gateway`, `upload`, and `remote` services, which provide ways of sending journals across the network. Enable using [services.journald.gateway](#opt-services.journald.gateway.enable), [services.journald.upload](#opt-services.journald.upload.enable), and [services.journald.remote](#opt-services.journald.remote.enable).
104104105105- [GNS3](https://www.gns3.com/), a network software emulator. Available as [services.gns3-server](#opt-services.gns3-server.enable).
106106···127127- [db-rest](https://github.com/derhuerst/db-rest), a wrapper around Deutsche Bahn's internal API for public transport data. Available as [services.db-rest](#opt-services.db-rest.enable).
128128129129- [Anki Sync Server](https://docs.ankiweb.net/sync-server.html), the official sync server built into recent versions of Anki. Available as [services.anki-sync-server](#opt-services.anki-sync-server.enable).
130130-The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been marked deprecated and will be dropped after 24.05 due to lack of maintenance of the anki-sync-server softwares.
130130+The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been marked deprecated and will be dropped after 24.05 due to lack of maintenance of the anki-sync-server software.
131131132132- [mautrix-meta](https://github.com/mautrix/meta), a Matrix <-> Facebook and Matrix <-> Instagram hybrid puppeting/relaybot bridge. Available as services.mautrix-meta
133133···139139140140- [Suwayomi Server](https://github.com/Suwayomi/Suwayomi-Server), a free and open source manga reader server that runs extensions built for [Tachiyomi](https://tachiyomi.org). Available as [services.suwayomi-server](#opt-services.suwayomi-server.enable).
141141142142-- A self-hosted management server for the [Netbird](https://netbird.io). Available as [services.netbird.server](#opt-services.netbird.server.enable).
142142+- [Netbird](https://netbird.io), an open-source VPN management platform, now has a self-hosted management server. Available as [services.netbird.server](#opt-services.netbird.server.enable).
143143144144- [ping_exporter](https://github.com/czerwonk/ping_exporter), a Prometheus exporter for ICMP echo requests. Available as [services.prometheus.exporters.ping](#opt-services.prometheus.exporters.ping.enable).
145145···151151152152- [Monado](https://monado.freedesktop.org/), an open source XR runtime. Available as [services.monado](#opt-services.monado.enable).
153153154154-- [Pretix](https://pretix.eu/about/en/), an open source ticketing software for events. Available as [services.pretix]($opt-services-pretix.enable).
154154+- [Pretix](https://pretix.eu/about/en/), an open source ticketing software for events. Available as [services.pretix](#opt-services.pretix.enable).
155155156156-- [microsocks](https://github.com/rofl0r/microsocks), a tiny, portable SOCKS5 server with very moderate resource usage. Available as [services.microsocks]($opt-services-microsocks.enable).
156156+- [microsocks](https://github.com/rofl0r/microsocks), a tiny, portable SOCKS5 server with very moderate resource usage. Available as [services.microsocks](#opt-services.microsocks.enable).
157157158158- [inadyn](https://github.com/troglobit/inadyn), a Dynamic DNS client with built-in support for multiple providers. Available as [services.inadyn](#opt-services.inadyn.enable).
159159···163163164164- [armagetronad](https://wiki.armagetronad.org), a mid-2000s 3D lightcycle game widely played at iD Tech Camps. You can define multiple servers using `services.armagetronad.<server>.enable`.
165165166166-- [wyoming-satellite](https://github.com/rhasspy/wyoming-satellite), a voice assistant satellite for Home Assistant using the Wyoming protocol. Available as [services.wyoming.satellite]($opt-services.wyoming.satellite.enable).
166166+- [wyoming-satellite](https://github.com/rhasspy/wyoming-satellite), a voice assistant satellite for Home Assistant using the Wyoming protocol. Available as [services.wyoming.satellite](#opt-services.wyoming.satellite.enable).
167167168168- [TuxClocker](https://github.com/Lurkki14/tuxclocker), a hardware control and monitoring program. Available as [programs.tuxclocker](#opt-programs.tuxclocker.enable).
169169170170-- binfmt option for AppImage-run to support running [AppImage](https://appimage.org/)'s seamlessly on NixOS.. Available as [programs.appimage.binfmt](#opt-programs.appimage.binfmt).
170170+- [AppImage](https://appimage.org/), a tool to package desktop applications, now has a `binfmt` option to support running AppImages seamlessly on NixOS. Available as [programs.appimage.binfmt](#opt-programs.appimage.binfmt).
171171172172- [nh](https://github.com/viperML/nh), yet another Nix CLI helper. Available as [programs.nh](#opt-programs.nh.enable).
173173174174- [ALVR](https://github.com/alvr-org/alvr), a VR desktop streamer. Available as [programs.alvr](#opt-programs.alvr.enable)
175175176176-- [RustDesk](https://rustdesk.com), a full-featured open source remote control alternative for self-hosting and security with minimal configuration. Alternative to TeamViewer.
176176+- [RustDesk](https://rustdesk.com), a full-featured open source remote control alternative for self-hosting and security with minimal configuration. Alternative to TeamViewer. Available as [services.rustdesk-server](#opt-services.rustdesk-server.enable).
177177178178-- [Scrutiny](https://github.com/AnalogJ/scrutiny), a S.M.A.R.T monitoring tool for hard disks with a web frontend.
178178+- [Scrutiny](https://github.com/AnalogJ/scrutiny), a S.M.A.R.T monitoring tool for hard disks with a web frontend. Available as [services.scrutiny](#opt-services.scrutiny.enable).
179179180180-- [davis](https://github.com/tchapi/davis), a simple CardDav and CalDav server inspired by Baïkal. Available as [services.davis]($opt-services-davis.enable).
180180+- [davis](https://github.com/tchapi/davis), a simple CardDav and CalDav server inspired by Baïkal. Available as [services.davis](#opt-services.davis.enable).
181181182182- [Firefly-iii](https://www.firefly-iii.org), a free and open source personal finance manager. Available as [services.firefly-iii](#opt-services.firefly-iii.enable)
183183···208208 defaulting to `/etc/ssh/authorized_keys.d/%u`.
209209 ::: {.warning}
210210 Users of {manpage}`pam_ssh_agent_auth(8)` must take care that the pubkeys they use (for instance with `sudo`)
211211- are listed in [`sshAgentAuth.authorizedKeysFiles`]..
211211+ are listed in [`sshAgentAuth.authorizedKeysFiles`].
212212 :::
213213 ::: {.note}
214214 Previously, all `services.openssh.authorizedKeysFiles` were trusted, including `~/.ssh/authorized_keys`,
···226226227227- `cudaPackages.autoFixElfFiles` has been deprecated for `pkgs.autoFixElfFiles`. Functionality has not changed, but the setuphook has been renamed and moved to the top-level package scope.
228228229229-- `appimageTools.wrapAppImage` now create the binary at `$out/bin/${pname}` rather than `$out/bin/${pname}-${version}`, which will break downstream workarounds.
229229+- `appimageTools.wrapAppImage` now creates the binary at `$out/bin/${pname}` rather than `$out/bin/${pname}-${version}`, which will break downstream workarounds.
230230231231- `pdns` was updated to version [v4.9.x](https://doc.powerdns.com/authoritative/changelog/4.9.html), which introduces breaking changes. Check out the [Upgrade Notes](https://doc.powerdns.com/authoritative/upgrading.html#to-4-9-0) for details.
232232···246246 The list in `nixos/modules/virtualisation/amazon-ec2-amis.nix` will stop
247247 being updated and will be removed in the future.
248248249249-- The option `services.postgresql.ensureUsers._.ensurePermissions` has been removed as it's
249249+- The option `services.postgresql.ensureUsers._.ensurePermissions` has been removed as it is
250250 not declarative and is broken with newer postgresql versions. Consider using
251251 [](#opt-services.postgresql.ensureUsers._.ensureDBOwnership)
252252- instead or a tool that's more suited for managing the data inside a postgresql database.
252252+ instead or a tool that is more suited for managing the data inside a postgresql database.
253253254254- `idris2` was updated to v0.7.0. This version introduces breaking changes. Check out the [changelog](https://github.com/idris-lang/Idris2/blob/v0.7.0/CHANGELOG.md#v070) for details.
255255256256- `nvtop` family of packages was reorganized into nested attrset. `nvtop` has been renamed to `nvtopPackages.full`, and all `nvtop-{amd,nvidia,intel,msm}` packages are now named as `nvtopPackages.{amd,nvidia,intel,msm}`
257257258258-- `neo4j` has been updated to version 5, you may want to read the [release notes for Neo4j 5](https://neo4j.com/release-notes/database/neo4j-5/)
258258+- `neo4j` has been updated to version 5. You may want to read the [release notes for Neo4j 5](https://neo4j.com/release-notes/database/neo4j-5/).
259259260260- `services.neo4j.allowUpgrade` was removed and no longer has any effect. Neo4j 5 supports automatic rolling upgrades.
261261
+54-10
nixos/modules/hardware/openrazer.nix
···1919 [Startup]
2020 sync_effects_enabled = ${toPyBoolStr cfg.syncEffectsEnabled}
2121 devices_off_on_screensaver = ${toPyBoolStr cfg.devicesOffOnScreensaver}
2222- mouse_battery_notifier = ${toPyBoolStr cfg.mouseBatteryNotifier}
2222+ battery_notifier = ${toPyBoolStr (cfg.mouseBatteryNotifier || cfg.batteryNotifier.enable)}
2323+ battery_notifier_freq = ${builtins.toString cfg.batteryNotifier.frequency}
2424+ battery_notifier_percent = ${builtins.toString cfg.batteryNotifier.percentage}
23252426 [Statistics]
2527 key_statistics = ${toPyBoolStr cfg.keyStatistics}
···8688 '';
8789 };
88909191+ batteryNotifier = mkOption {
9292+ description = ''
9393+ Settings for device battery notifications.
9494+ '';
9595+ default = {};
9696+ type = types.submodule {
9797+ options = {
9898+ enable = mkOption {
9999+ type = types.bool;
100100+ default = true;
101101+ description = ''
102102+ Mouse battery notifier.
103103+ '';
104104+ };
105105+ frequency = mkOption {
106106+ type = types.int;
107107+ default = 600;
108108+ description = ''
109109+ How often battery notifications should be shown (in seconds).
110110+ A value of 0 disables notifications.
111111+ '';
112112+ };
113113+114114+ percentage = mkOption {
115115+ type = types.int;
116116+ default = 33;
117117+ description = ''
118118+ At what battery percentage the device should reach before
119119+ sending notifications.
120120+ '';
121121+ };
122122+ };
123123+ };
124124+ };
125125+89126 keyStatistics = mkOption {
90127 type = types.bool;
91128 default = false;
···107144 };
108145109146 config = mkIf cfg.enable {
147147+ warnings = flatten [
148148+ (optional cfg.mouseBatteryNotifier ''
149149+ The option openrazer.mouseBatteryNotifier is deprecated.
150150+ Please use openrazer.batteryNotifier instead to enable and configure battery notifications.
151151+ '')
152152+ ];
153153+110154 boot.extraModulePackages = [ kernelPackages.openrazer ];
111155 boot.kernelModules = drivers;
112156···127171 systemd.user.services.openrazer-daemon = {
128172 description = "Daemon to manage razer devices in userspace";
129173 unitConfig.Documentation = "man:openrazer-daemon(8)";
130130- # Requires a graphical session so the daemon knows when the screensaver
131131- # starts. See the 'devicesOffOnScreensaver' option.
132132- wantedBy = [ "graphical-session.target" ];
133133- partOf = [ "graphical-session.target" ];
134134- serviceConfig = {
135135- Type = "dbus";
136136- BusName = "org.razer";
137137- ExecStart = "${daemonExe} --foreground";
138138- Restart = "always";
174174+ # Requires a graphical session so the daemon knows when the screensaver
175175+ # starts. See the 'devicesOffOnScreensaver' option.
176176+ wantedBy = [ "graphical-session.target" ];
177177+ partOf = [ "graphical-session.target" ];
178178+ serviceConfig = {
179179+ Type = "dbus";
180180+ BusName = "org.razer";
181181+ ExecStart = "${daemonExe} --foreground";
182182+ Restart = "always";
139183 };
140184 };
141185 };
+28-5
nixos/modules/services/databases/postgresql.nix
···11{ config, lib, pkgs, ... }:
2233-with lib;
44-53let
44+ inherit (lib)
55+ attrValues
66+ concatMapStrings
77+ concatStringsSep
88+ const
99+ elem
1010+ filterAttrs
1111+ isString
1212+ literalExpression
1313+ mapAttrs
1414+ mapAttrsToList
1515+ mkAfter
1616+ mkBefore
1717+ mkDefault
1818+ mkEnableOption
1919+ mkIf
2020+ mkMerge
2121+ mkOption
2222+ mkPackageOption
2323+ mkRemovedOptionModule
2424+ mkRenamedOptionModule
2525+ optionalString
2626+ types
2727+ versionAtLeast
2828+ ;
629730 cfg = config.services.postgresql;
831···2447 if true == value then "yes"
2548 else if false == value then "no"
2649 else if isString value then "'${lib.replaceStrings ["'"] ["''"] value}'"
2727- else toString value;
5050+ else builtins.toString value;
28512952 # The main PostgreSQL configuration file.
3053 configFile = pkgs.writeTextDir "postgresql.conf" (concatStringsSep "\n" (mapAttrsToList (n: v: "${n} = ${toStr v}") (filterAttrs (const (x: x != null)) cfg.settings)));
···439462 config = mkIf cfg.enable {
440463441464 assertions = map ({ name, ensureDBOwnership, ... }: {
442442- assertion = ensureDBOwnership -> builtins.elem name cfg.ensureDatabases;
465465+ assertion = ensureDBOwnership -> elem name cfg.ensureDatabases;
443466 message = ''
444467 For each database user defined with `services.postgresql.ensureUsers` and
445468 `ensureDBOwnership = true;`, a database with the same name must be defined
···537560 # Wait for PostgreSQL to be ready to accept connections.
538561 postStart =
539562 ''
540540- PSQL="psql --port=${toString cfg.settings.port}"
563563+ PSQL="psql --port=${builtins.toString cfg.settings.port}"
541564542565 while ! $PSQL -d postgres -c "" 2> /dev/null; do
543566 if ! kill -0 "$MAINPID"; then exit 1; fi
+2-2
nixos/modules/services/security/vault.nix
···5656 };
57575858 devRootTokenID = mkOption {
5959- type = types.str;
6060- default = false;
5959+ type = types.nullOr types.str;
6060+ default = null;
6161 description = ''
6262 Initial root token. This only applies when {option}`services.vault.dev` is true
6363 '';
···352352353353 # The acme-challenge location doesn't need to be added if we are not using any automated
354354 # certificate provisioning and can also be omitted when we use a certificate obtained via a DNS-01 challenge
355355- acmeLocation = optionalString (vhost.enableACME || (vhost.useACMEHost != null && config.security.acme.certs.${vhost.useACMEHost}.dnsProvider == null))
355355+ acmeName = if vhost.useACMEHost != null then vhost.useACMEHost else vhostName;
356356+ acmeLocation = optionalString ((vhost.enableACME || vhost.useACMEHost != null) && config.security.acme.certs.${acmeName}.dnsProvider == null)
356357 # Rule for legitimate ACME Challenge requests (like /.well-known/acme-challenge/xxxxxxxxx)
357358 # We use ^~ here, so that we don't check any regexes (which could
358359 # otherwise easily override this intended match accidentally).
···11-{ lib
22-, nixosTests
33-, vscode-utils
44-, useLocalExtensions ? false
11+{
22+ lib,
33+ nixosTests,
44+ vscode-utils,
55+ useLocalExtensions ? false,
56}:
67# Note that useLocalExtensions requires that vscode-server is not running
78# on host. If it is, you'll need to remove $HOME/.vscode-server,
···9293 --replace '# Start the server\n' '${patch}'
9394 '';
94959595- passthru.tests = { inherit (nixosTests) vscode-remote-ssh; };
9696+ passthru.tests = {
9797+ inherit (nixosTests) vscode-remote-ssh;
9898+ };
969997100 meta = {
98101 description = "Use any remote machine with a SSH server as your development environment.";