···1717 - Use `Cm` to mark literal string arguments, e.g. the `boot` command argument passed to `nixos-rebuild`.
1818 - Optional flags or arguments should be marked with `Op`. This includes optional repeating arguments.
1919 - Required flags or arguments should not be marked.
2020- - Mutually exclusive groups of arguments should be enclosed in curly brackets, preferrably created with `Bro`/`Brc` blocks.
2020+ - Mutually exclusive groups of arguments should be enclosed in curly brackets, preferably created with `Bro`/`Brc` blocks.
21212222When an argument is used in an example it should be marked up with `Ar` again to differentiate it from a constant. For example, a command with a `--host name` flag that calls ssh to retrieve the host's local time would signify this thusly:
2323```
···4545...
4646.Ed
4747```
4848-Contents of code blocks may be marked up further, e.g. if they refer to arguments that will be subsituted into them:
4848+Contents of code blocks may be marked up further, e.g. if they refer to arguments that will be substituted into them:
4949```
5050.Bd -literal -offset indent
5151{
+2-2
nixos/doc/manual/release-notes/rl-1609.section.md
···20202121- A large number of packages have been converted to use the multiple outputs feature of Nix to greatly reduce the amount of required disk space, as mentioned above. This may require changes to any custom packages to make them build again; see the relevant chapter in the Nixpkgs manual for more information. (Additional caveat to packagers: some packaging conventions related to multiple-output packages [were changed](https://github.com/NixOS/nixpkgs/pull/14766) late (August 2016) in the release cycle and differ from the initial introduction of multiple outputs.)
22222323-- Previous versions of Nixpkgs had support for all versions of the LTS Haskell package set. That support has been dropped. The previously provided `haskell.packages.lts-x_y` package sets still exist in name to aviod breaking user code, but these package sets don't actually contain the versions mandated by the corresponding LTS release. Instead, our package set it loosely based on the latest available LTS release, i.e. LTS 7.x at the time of this writing. New releases of NixOS and Nixpkgs will drop those old names entirely. [The motivation for this change](https://nixos.org/nix-dev/2016-June/020585.html) has been discussed at length on the `nix-dev` mailing list and in [Github issue \#14897](https://github.com/NixOS/nixpkgs/issues/14897). Development strategies for Haskell hackers who want to rely on Nix and NixOS have been described in [another nix-dev article](https://nixos.org/nix-dev/2016-June/020642.html).
2323+- Previous versions of Nixpkgs had support for all versions of the LTS Haskell package set. That support has been dropped. The previously provided `haskell.packages.lts-x_y` package sets still exist in name to avoid breaking user code, but these package sets don't actually contain the versions mandated by the corresponding LTS release. Instead, our package set it loosely based on the latest available LTS release, i.e. LTS 7.x at the time of this writing. New releases of NixOS and Nixpkgs will drop those old names entirely. [The motivation for this change](https://nixos.org/nix-dev/2016-June/020585.html) has been discussed at length on the `nix-dev` mailing list and in [Github issue \#14897](https://github.com/NixOS/nixpkgs/issues/14897). Development strategies for Haskell hackers who want to rely on Nix and NixOS have been described in [another nix-dev article](https://nixos.org/nix-dev/2016-June/020642.html).
24242525- Shell aliases for systemd sub-commands [were dropped](https://github.com/NixOS/nixpkgs/pull/15598): `start`, `stop`, `restart`, `status`.
2626···28282929- `/var/empty` is now immutable. Activation script runs `chattr +i` to forbid any modifications inside the folder. See [ the pull request](https://github.com/NixOS/nixpkgs/pull/18365) for what bugs this caused.
30303131-- Gitlab's maintainance script `gitlab-runner` was removed and split up into the more clearer `gitlab-run` and `gitlab-rake` scripts, because `gitlab-runner` is a component of Gitlab CI.
3131+- Gitlab's maintenance script `gitlab-runner` was removed and split up into the more clearer `gitlab-run` and `gitlab-rake` scripts, because `gitlab-runner` is a component of Gitlab CI.
32323333- `services.xserver.libinput.accelProfile` default changed from `flat` to `adaptive`, as per [ official documentation](https://wayland.freedesktop.org/libinput/doc/latest/group__config.html#gad63796972347f318b180e322e35cee79).
3434
+1-1
nixos/doc/manual/release-notes/rl-1709.section.md
···275275276276 You can check that backups still work by running `systemctl start mysql-backup` then `systemctl status mysql-backup`.
277277278278-- Templated systemd services e.g `container@name` are now handled currectly when switching to a new configuration, resulting in them being reloaded.
278278+- Templated systemd services e.g `container@name` are now handled correctly when switching to a new configuration, resulting in them being reloaded.
279279280280- Steam: the `newStdcpp` parameter was removed and should not be needed anymore.
281281
+1-1
nixos/doc/manual/release-notes/rl-1803.section.md
···174174175175- The `openssh` package now includes Kerberos support by default; the `openssh_with_kerberos` package is now a deprecated alias. If you do not want Kerberos support, you can do `openssh.override { withKerberos = false; }`. Note, this also applies to the `openssh_hpn` package.
176176177177-- `cc-wrapper` has been split in two; there is now also a `bintools-wrapper`. The most commonly used files in `nix-support` are now split between the two wrappers. Some commonly used ones, like `nix-support/dynamic-linker`, are duplicated for backwards compatability, even though they rightly belong only in `bintools-wrapper`. Other more obscure ones are just moved.
177177+- `cc-wrapper` has been split in two; there is now also a `bintools-wrapper`. The most commonly used files in `nix-support` are now split between the two wrappers. Some commonly used ones, like `nix-support/dynamic-linker`, are duplicated for backwards compatibility, even though they rightly belong only in `bintools-wrapper`. Other more obscure ones are just moved.
178178179179- The propagation logic has been changed. The new logic, along with new types of dependencies that go with, is thoroughly documented in the "Specifying dependencies" section of the "Standard Environment" chapter of the nixpkgs manual. The old logic isn't but is easy to describe: dependencies were propagated as the same type of dependency no matter what. In practice, that means that many `propagatedNativeBuildInputs` should instead be `propagatedBuildInputs`. Thankfully, that was and is the least used type of dependency. Also, it means that some `propagatedBuildInputs` should instead be `depsTargetTargetPropagated`. Other types dependencies should be unaffected.
180180
+3-3
nixos/doc/manual/release-notes/rl-1903.section.md
···81818282 The slurmctld now runs as user `slurm` instead of `root`. If you want to keep slurmctld running as `root`, set `services.slurm.user = root`.
83838484- The options `services.slurm.nodeName` and `services.slurm.partitionName` are now sets of strings to correctly reflect that fact that each of these options can occour more than once in the configuration.
8484+ The options `services.slurm.nodeName` and `services.slurm.partitionName` are now sets of strings to correctly reflect that fact that each of these options can occur more than once in the configuration.
85858686- The `solr` package has been upgraded from 4.10.3 to 7.5.0 and has undergone some major changes. The `services.solr` module has been updated to reflect these changes. Please review http://lucene.apache.org/solr/ carefully before upgrading.
8787···91919292- Network interface indiscriminate NixOS firewall options (`networking.firewall.allow*`) are now preserved when also setting interface specific rules such as `networking.firewall.interfaces.en0.allow*`. These rules continue to use the pseudo device "default" (`networking.firewall.interfaces.default.*`), and assigning to this pseudo device will override the (`networking.firewall.allow*`) options.
93939494-- The `nscd` service now disables all caching of `passwd` and `group` databases by default. This was interferring with the correct functioning of the `libnss_systemd.so` module which is used by `systemd` to manage uids and usernames in the presence of `DynamicUser=` in systemd services. This was already the default behaviour in presence of `services.sssd.enable = true` because nscd caching would interfere with `sssd` in unpredictable ways as well. Because we're using nscd not for caching, but for convincing glibc to find NSS modules in the nix store instead of an absolute path, we have decided to disable caching globally now, as it's usually not the behaviour the user wants and can lead to surprising behaviour. Furthermore, negative caching of host lookups is also disabled now by default. This should fix the issue of dns lookups failing in the presence of an unreliable network.
9494+- The `nscd` service now disables all caching of `passwd` and `group` databases by default. This was interfering with the correct functioning of the `libnss_systemd.so` module which is used by `systemd` to manage uids and usernames in the presence of `DynamicUser=` in systemd services. This was already the default behaviour in presence of `services.sssd.enable = true` because nscd caching would interfere with `sssd` in unpredictable ways as well. Because we're using nscd not for caching, but for convincing glibc to find NSS modules in the nix store instead of an absolute path, we have decided to disable caching globally now, as it's usually not the behaviour the user wants and can lead to surprising behaviour. Furthermore, negative caching of host lookups is also disabled now by default. This should fix the issue of dns lookups failing in the presence of an unreliable network.
95959696 If the old behaviour is desired, this can be restored by setting the `services.nscd.config` option with the desired caching parameters.
9797···135135136136- GitLab Shell previously used the nix store paths for the `gitlab-shell` command in its `authorized_keys` file, which might stop working after garbage collection. To circumvent that, we regenerated that file on each startup. As `gitlab-shell` has now been changed to use `/var/run/current-system/sw/bin/gitlab-shell`, this is not necessary anymore, but there might be leftover lines with a nix store path. Regenerate the `authorized_keys` file via `sudo -u git -H gitlab-rake gitlab:shell:setup` in that case.
137137138138-- The `pam_unix` account module is now loaded with its control field set to `required` instead of `sufficient`, so that later PAM account modules that might do more extensive checks are being executed. Previously, the whole account module verification was exited prematurely in case a nss module provided the account name to `pam_unix`. The LDAP and SSSD NixOS modules already add their NSS modules when enabled. In case your setup breaks due to some later PAM account module previosuly shadowed, or failing NSS lookups, please file a bug. You can get back the old behaviour by manually setting `security.pam.services.<name?>.text`.
138138+- The `pam_unix` account module is now loaded with its control field set to `required` instead of `sufficient`, so that later PAM account modules that might do more extensive checks are being executed. Previously, the whole account module verification was exited prematurely in case a nss module provided the account name to `pam_unix`. The LDAP and SSSD NixOS modules already add their NSS modules when enabled. In case your setup breaks due to some later PAM account module previously shadowed, or failing NSS lookups, please file a bug. You can get back the old behaviour by manually setting `security.pam.services.<name?>.text`.
139139140140- The `pam_unix` password module is now loaded with its control field set to `sufficient` instead of `required`, so that password managed only by later PAM password modules are being executed. Previously, for example, changing an LDAP account's password through PAM was not possible: the whole password module verification was exited prematurely by `pam_unix`, preventing `pam_ldap` to manage the password as it should.
141141
+1-1
nixos/doc/manual/release-notes/rl-1909.section.md
···194194195195 `security.acme.preDelay` and `security.acme.activationDelay` options have been removed. To execute a service before certificates are provisioned or renewed add a `RequiredBy=acme-${cert}.service` to any service.
196196197197- Furthermore, the acme module will not automatically add a dependency on `lighttpd.service` anymore. If you are using certficates provided by letsencrypt for lighttpd, then you should depend on the certificate service `acme-${cert}.service>` manually.
197197+ Furthermore, the acme module will not automatically add a dependency on `lighttpd.service` anymore. If you are using certificates provided by letsencrypt for lighttpd, then you should depend on the certificate service `acme-${cert}.service>` manually.
198198199199 For nginx, the dependencies are still automatically managed when `services.nginx.virtualhosts.<name>.enableACME` is enabled just like before. What changed is that nginx now directly depends on the specific certificates that it needs, instead of depending on the catch-all `acme-certificates.target`. This target unit was also removed from the codebase. This will mean nginx will no longer depend on certificates it isn't explicitly managing and fixes a bug with certificate renewal ordering racing with nginx restarting which could lead to nginx getting in a broken state as described at [NixOS/nixpkgs\#60180](https://github.com/NixOS/nixpkgs/issues/60180).
200200
+2-2
nixos/doc/manual/release-notes/rl-2009.section.md
···130130131131 - [services.cage.enable](options.html#opt-services.cage.enable) Wayland cage service
132132133133- - [services.convos.enable](options.html#opt-services.convos.enable) IRC daemon, which can be accessed throught the browser
133133+ - [services.convos.enable](options.html#opt-services.convos.enable) IRC daemon, which can be accessed through the browser
134134135135 - [services.engelsystem.enable](options.html#opt-services.engelsystem.enable) Tool for coordinating volunteers and shifts on large events
136136···552552553553- The [jellyfin](options.html#opt-services.jellyfin.enable) module will use and stay on the Jellyfin version `10.5.5` if `stateVersion` is lower than `20.09`. This is because significant changes were made to the database schema, and it is highly recommended to backup your instance before upgrading. After making your backup, you can upgrade to the latest version either by setting your `stateVersion` to `20.09` or higher, or set the `services.jellyfin.package` to `pkgs.jellyfin`. If you do not wish to upgrade Jellyfin, but want to change your `stateVersion`, you can set the value of `services.jellyfin.package` to `pkgs.jellyfin_10_5`.
554554555555-- The `security.rngd` service is now disabled by default. This choice was made because there's krngd in the linux kernel space making it (for most usecases) functionally redundent.
555555+- The `security.rngd` service is now disabled by default. This choice was made because there's krngd in the linux kernel space making it (for most usecases) functionally redundant.
556556557557- The `hardware.nvidia.optimus_prime.enable` service has been renamed to `hardware.nvidia.prime.sync.enable` and has many new enhancements. Related nvidia prime settings may have also changed.
558558
+3-3
nixos/doc/manual/release-notes/rl-2105.section.md
···197197198198 Android packages are now loaded from a repo.json file created by parsing Android repo XML files. The arguments `repoJson` and `repoXmls` have been added to allow overriding the built-in androidenv repo.json with your own. Additionally, license files are now written to allow compatibility with Gradle-based tools, and the `extraLicenses` argument has been added to accept more SDK licenses if your project requires it. See the androidenv documentation for more details.
199199200200-- The attribute `mpi` is now consistently used to provide a default, system-wide MPI implementation. The default implementation is openmpi, which has been used before by all derivations affects by this change. Note that all packages that have used `mpi ? null` in the input for optional MPI builds, have been changed to the boolean input paramater `useMpi` to enable building with MPI. Building all packages with `mpich` instead of the default `openmpi` can now be achived like this:
200200+- The attribute `mpi` is now consistently used to provide a default, system-wide MPI implementation. The default implementation is openmpi, which has been used before by all derivations affects by this change. Note that all packages that have used `mpi ? null` in the input for optional MPI builds, have been changed to the boolean input parameter `useMpi` to enable building with MPI. Building all packages with `mpich` instead of the default `openmpi` can now be achieved like this:
201201202202 ```nix
203203 self: super:
···272272273273- `environment.defaultPackages` now includes the nano package. If pkgs.nano is not added to the list, make sure another editor is installed and the `EDITOR` environment variable is set to it. Environment variables can be set using `environment.variables`.
274274275275-- `services.minio.dataDir` changed type to a list of paths, required for specifiyng multiple data directories for using with erasure coding. Currently, the service doesn't enforce nor checks the correct number of paths to correspond to minio requirements.
275275+- `services.minio.dataDir` changed type to a list of paths, required for specifying multiple data directories for using with erasure coding. Currently, the service doesn't enforce nor checks the correct number of paths to correspond to minio requirements.
276276277277- All CUDA toolkit versions prior to CUDA 10 have been removed.
278278···375375376376- When defining a new user, one of [users.users._name_.isNormalUser](options.html#opt-users.users._name_.isNormalUser) and [users.users._name_.isSystemUser](options.html#opt-users.users._name_.isSystemUser) is now required. This is to prevent accidentally giving a UID above 1000 to system users, which could have unexpected consequences, like running user activation scripts for system users. Note that users defined with an explicit UID below 500 are exempted from this check, as [users.users._name_.isSystemUser](options.html#opt-users.users._name_.isSystemUser) has no effect for those.
377377378378-- The `security.apparmor` module, for the [AppArmor](https://gitlab.com/apparmor/apparmor/-/wikis/Documentation) Mandatory Access Control system, has been substantialy improved along with related tools, so that module maintainers can now more easily write AppArmor profiles for NixOS. The most notable change on the user-side is the new option [security.apparmor.policies](options.html#opt-security.apparmor.policies), replacing the previous `profiles` option to provide a way to disable a profile and to select whether to confine in enforce mode (default) or in complain mode (see `journalctl -b --grep apparmor`). Security-minded users may also want to enable [security.apparmor.killUnconfinedConfinables](options.html#opt-security.apparmor.killUnconfinedConfinables), at the cost of having some of their processes killed when updating to a NixOS version introducing new AppArmor profiles.
378378+- The `security.apparmor` module, for the [AppArmor](https://gitlab.com/apparmor/apparmor/-/wikis/Documentation) Mandatory Access Control system, has been substantially improved along with related tools, so that module maintainers can now more easily write AppArmor profiles for NixOS. The most notable change on the user-side is the new option [security.apparmor.policies](options.html#opt-security.apparmor.policies), replacing the previous `profiles` option to provide a way to disable a profile and to select whether to confine in enforce mode (default) or in complain mode (see `journalctl -b --grep apparmor`). Security-minded users may also want to enable [security.apparmor.killUnconfinedConfinables](options.html#opt-security.apparmor.killUnconfinedConfinables), at the cost of having some of their processes killed when updating to a NixOS version introducing new AppArmor profiles.
379379380380- The GNOME desktop manager once again installs gnome.epiphany by default.
381381
+1-1
nixos/doc/manual/release-notes/rl-2111.section.md
···375375376376- `programs.neovim.runtime` switched to a `linkFarm` internally, making it impossible to use wildcards in the `source` argument.
377377378378-- The `openrazer` and `openrazer-daemon` packages as well as the `hardware.openrazer` module now require users to be members of the `openrazer` group instead of `plugdev`. With this change, users no longer need be granted the entire set of `plugdev` group permissions, which can include permissions other than those required by `openrazer`. This is desirable from a security point of view. The setting [`harware.openrazer.users`](options.html#opt-services.hardware.openrazer.users) can be used to add users to the `openrazer` group.
378378+- The `openrazer` and `openrazer-daemon` packages as well as the `hardware.openrazer` module now require users to be members of the `openrazer` group instead of `plugdev`. With this change, users no longer need be granted the entire set of `plugdev` group permissions, which can include permissions other than those required by `openrazer`. This is desirable from a security point of view. The setting [`hardware.openrazer.users`](options.html#opt-services.hardware.openrazer.users) can be used to add users to the `openrazer` group.
379379380380- The fontconfig service's dpi option has been removed.
381381 Fontconfig should use Xft settings by default so there's no need to override one value in multiple places.
+6-6
nixos/doc/manual/release-notes/rl-2205.section.md
···1010 for Flakes, but also marks the `nix` command as experimental which now has to
1111 be enabled via the configuration explicitly. For more information and
1212 instructions for upgrades, see the
1313- relase notes for [nix-2.4](https://nixos.org/manual/nix/stable/release-notes/rl-2.4.html),
1313+ release notes for [nix-2.4](https://nixos.org/manual/nix/stable/release-notes/rl-2.4.html),
1414 [nix-2.5](https://nixos.org/manual/nix/stable/release-notes/rl-2.5.html),
1515 [nix-2.6](https://nixos.org/manual/nix/stable/release-notes/rl-2.6.html),
1616 [nix-2.7](https://nixos.org/manual/nix/stable/release-notes/rl-2.7.html) and
···278278279279- `openldap` (and therefore the slapd LDAP server) were updated to version 2.6.2. The project introduced backwards-incompatible changes, namely the removal of the bdb, hdb, ndb, and shell backends in slapd. Therefore before updating, dump your database `slapcat -n 1` in LDIF format, and reimport it after updating your `services.openldap.settings`, which represents your `cn=config`.
280280281281- Additionally with 2.5 the argon2 module was included in the standard distrubtion and renamed from `pw-argon2` to `argon2`. Remember to update your `olcModuleLoad` entry in `cn=config`.
281281+ Additionally with 2.5 the argon2 module was included in the standard distribution and renamed from `pw-argon2` to `argon2`. Remember to update your `olcModuleLoad` entry in `cn=config`.
282282283283- `openssh` has been update to 8.9p1, changing the FIDO security key middleware interface.
284284285285-- `git` no longer hardcodes the path to openssh' ssh binary to reduce the amount of rebuilds. If you are using git with ssh remotes and do not have a ssh binary in your enviroment consider adding `openssh` to it or switching to `gitFull`.
285285+- `git` no longer hardcodes the path to openssh' ssh binary to reduce the amount of rebuilds. If you are using git with ssh remotes and do not have a ssh binary in your environment consider adding `openssh` to it or switching to `gitFull`.
286286287287- `services.k3s.enable` no longer implies `systemd.enableUnifiedCgroupHierarchy = false`, and will default to the 'systemd' cgroup driver when using `services.k3s.docker = true`.
288288 This change may require a reboot to take effect, and k3s may not be able to run if the boot cgroup hierarchy does not match its configuration.
···639639 changes in the database scheme and configuration format.
640640641641- Some top-level settings under [services.epgstation](#opt-services.epgstation.enable)
642642- is now deprecated because it was redudant due to the same options being
642642+ is now deprecated because it was redundant due to the same options being
643643 present in [services.epgstation.settings](#opt-services.epgstation.settings).
644644645645- The option `services.epgstation.basicAuth` was removed because basic
···653653 option now expects options for `config.yml` in EPGStation v2.
654654655655- Existing data for the [services.epgstation](#opt-services.epgstation.enable)
656656- module would have to be backed up prior to the upgrade. To back up exising
656656+ module would have to be backed up prior to the upgrade. To back up existing
657657 data to `/tmp/epgstation.bak`, run
658658 `sudo -u epgstation epgstation run backup /tmp/epgstation.bak`.
659659 To import that data after to the upgrade, run
···804804- The `influxdb2` package was split into `influxdb2-server` and
805805 `influxdb2-cli`, matching the split that took place upstream. A
806806 combined `influxdb2` package is still provided in this release for
807807- backwards compatibilty, but will be removed at a later date.
807807+ backwards compatibility, but will be removed at a later date.
808808809809- The `unifi` package was switched from `unifi6` to `unifi7`.
810810 Direct downgrades from Unifi 7 to Unifi 6 are not possible and require restoring from a backup made by Unifi 6.
+2-2
nixos/doc/manual/release-notes/rl-2211.section.md
···205205206206- Linux 4.9 has been removed because it will reach its end of life within the lifespan of 22.11.
207207208208-- (Neo)Vim can not be configured with `configure.pathogen` anymore to reduce maintainance burden.
208208+- (Neo)Vim can not be configured with `configure.pathogen` anymore to reduce maintenance burden.
209209 Use `configure.packages` instead.
210210- Neovim can not be configured with plug anymore (still works for vim).
211211···221221222222- `mysql57` has been removed. Please update to `mysql80` or `mariadb`. See the [upgrade guide](https://mariadb.com/kb/en/upgrading-from-mysql-to-mariadb/) for more information.
223223224224-- Consequently, `cqrlog` and `amorok` now use `mariadb` instead of `mysql57` for their embedded databases. Running `mysql_upgrade` may be neccesary.
224224+- Consequently, `cqrlog` and `amorok` now use `mariadb` instead of `mysql57` for their embedded databases. Running `mysql_upgrade` may be necessary.
225225- `k3s` supports `clusterInit` option, and it is enabled by default, for servers.
226226227227- `percona-server56` has been removed. Please migrate to `mysql` or `mariadb` if possible.
+6-6
nixos/doc/manual/release-notes/rl-2305.section.md
···72727373- [stevenblack-blocklist](https://github.com/StevenBlack/hosts), A unified hosts file with base extensions for blocking unwanted websites. Available as [networking.stevenblack](options.html#opt-networking.stevenblack.enable).
74747575-- [Budgie Desktop](https://github.com/BuddiesOfBudgie/budgie-desktop), a familiar, modern desktop environment. Availabe as [services.xserver.desktopManager.budgie](options.html#opt-services.xserver.desktopManager.budgie).
7575+- [Budgie Desktop](https://github.com/BuddiesOfBudgie/budgie-desktop), a familiar, modern desktop environment. Available as [services.xserver.desktopManager.budgie](options.html#opt-services.xserver.desktopManager.budgie).
76767777- [imaginary](https://github.com/h2non/imaginary), a microservice for high-level image processing that Nextcloud can use to generate previews. Available as [services.imaginary](#opt-services.imaginary.enable).
7878···88888989- [alertmanager-irc-relay](https://github.com/google/alertmanager-irc-relay), a Prometheus Alertmanager IRC Relay. Available as [services.prometheus.alertmanagerIrcRelay](options.html#opt-services.prometheus.alertmanagerIrcRelay.enable).
90909191-- [tts](https://github.com/coqui-ai/TTS), a battle-tested deep learning toolkit for Text-to-Speech. Mutiple servers may be configured below [services.tts.servers](#opt-services.tts.servers).
9191+- [tts](https://github.com/coqui-ai/TTS), a battle-tested deep learning toolkit for Text-to-Speech. Multiple servers may be configured below [services.tts.servers](#opt-services.tts.servers).
92929393- [atuin](https://github.com/ellie/atuin), a sync server for shell history. Available as [services.atuin](#opt-services.atuin.enable).
9494···98989999- [gonic](https://github.com/sentriz/gonic), a Subsonic music streaming server. Available as [services.gonic](#opt-services.gonic.enable).
100100101101-- [mmsd](https://gitlab.com/kop316/mmsd), a lower level daemon that transmits and recieves MMSes. Available as [services.mmsd](#opt-services.mmsd.enable).
101101+- [mmsd](https://gitlab.com/kop316/mmsd), a lower level daemon that transmits and receives MMSes. Available as [services.mmsd](#opt-services.mmsd.enable).
102102103103- [QDMR](https://dm3mat.darc.de/qdmr/), a GUI application and command line tool for programming DMR radios [programs.qdmr](#opt-programs.qdmr.enable)
104104···287287288288- The `nix.readOnlyStore` option has been renamed to `boot.readOnlyNixStore` to clarify that it configures the NixOS boot process, not the Nix daemon.
289289290290-- Deprecated `xlibsWrapper` transitional package has been removed in favour of direct use of its constitutents: `xorg.libX11`, `freetype` and others.
290290+- Deprecated `xlibsWrapper` transitional package has been removed in favour of direct use of its constituents: `xorg.libX11`, `freetype` and others.
291291292292- The latest available version of Nextcloud is v26 (available as `pkgs.nextcloud26`) which uses PHP 8.2 as interpreter by default. The installation logic is as follows:
293293 - If `system.stateVersion` is >=23.05, `pkgs.nextcloud26` will be installed by default.
···302302 [upstream's release notes](https://github.com/iputils/iputils/releases/tag/20221126)
303303 for more details and available replacements.
304304305305-- The ppp plugin `rp-pppoe.so` has been renamed to `pppoe.so` in ppp 2.4.9. Starting from ppp 2.5.0, there is no longer a alias for backwards compatiblity. Configurations that use this plugin must be updated accordingly from `plugin rp-pppoe.so` to `plugin pppoe.so`. See [upstream change](https://github.com/ppp-project/ppp/commit/610a7bd76eb1f99f22317541b35001b1e24877ed).
305305+- The ppp plugin `rp-pppoe.so` has been renamed to `pppoe.so` in ppp 2.4.9. Starting from ppp 2.5.0, there is no longer a alias for backwards compatibility. Configurations that use this plugin must be updated accordingly from `plugin rp-pppoe.so` to `plugin pppoe.so`. See [upstream change](https://github.com/ppp-project/ppp/commit/610a7bd76eb1f99f22317541b35001b1e24877ed).
306306307307- [services.xserver.videoDrivers](options.html#opt-services.xserver.videoDrivers) now defaults to the `modesetting` driver over device-specific ones. The `radeon`, `amdgpu` and `nouveau` drivers are still available, but effectively unmaintained and not recommended for use.
308308···567567568568The Pipewire config semantics don't really match the NixOS module semantics, so it's extremely awkward to override the default config, especially when lists are involved. Vendoring the configuration files in nixpkgs also creates unnecessary maintenance overhead.
569569570570-Also, upstream added a lot of accomodations to allow doing most of the things you'd want to do with a config edit in better ways.
570570+Also, upstream added a lot of accommodations to allow doing most of the things you'd want to do with a config edit in better ways.
571571572572#### Migrating your configuration {#sec-release-23.05-migration-pipewire-how}
573573
+1-1
nixos/modules/config/xdg/portal.nix
···2121 in
2222 {
2323 warnings = lib.mkIf config.xdg.portal.gtkUsePortal [
2424- "The option `${lib.showOption from}' defined in ${lib.showFiles fromOpt.files} has been deprecated. Setting the variable globally with `environment.sessionVariables' NixOS option can have unforseen side-effects."
2424+ "The option `${lib.showOption from}' defined in ${lib.showFiles fromOpt.files} has been deprecated. Setting the variable globally with `environment.sessionVariables' NixOS option can have unforeseen side-effects."
2525 ];
2626 }
2727 )
+1-1
nixos/modules/hardware/sensor/hddtemp.nix
···4343 };
44444545 unit = mkOption {
4646- description = lib.mdDoc "Celcius or Fahrenheit";
4646+ description = lib.mdDoc "Celsius or Fahrenheit";
4747 type = types.enum [ "C" "F" ];
4848 default = "C";
4949 };
+1-1
nixos/modules/installer/tools/nixos-enter.sh
···9797 exec 2>/dev/null
9898 fi
9999100100- # Run the activation script. Set $LOCALE_ARCHIVE to supress some Perl locale warnings.
100100+ # Run the activation script. Set $LOCALE_ARCHIVE to suppress some Perl locale warnings.
101101 LOCALE_ARCHIVE="$system/sw/lib/locale/locale-archive" IN_NIXOS_ENTER=1 chroot "$mountPoint" "$system/activate" 1>&2 || true
102102103103 # Create /tmp. This is needed for nix-build and the NixOS activation script to work.
···303303 programs.fish.interactiveShellInit = ''
304304 # add completions generated by NixOS to $fish_complete_path
305305 begin
306306- # joins with null byte to acommodate all characters in paths, then respectively gets all paths before (exclusive) / after (inclusive) the first one including "generated_completions",
306306+ # joins with null byte to accommodate all characters in paths, then respectively gets all paths before (exclusive) / after (inclusive) the first one including "generated_completions",
307307 # splits by null byte, and then removes all empty lines produced by using 'string'
308308 set -l prev (string join0 $fish_complete_path | string match --regex "^.*?(?=\x00[^\x00]*generated_completions.*)" | string split0 | string match -er ".")
309309 set -l post (string join0 $fish_complete_path | string match --regex "[^\x00]*generated_completions.*" | string split0 | string match -er ".")
+1-1
nixos/modules/programs/nix-ld.nix
···22let
33 cfg = config.programs.nix-ld;
4455- # TODO make glibc here configureable?
55+ # TODO make glibc here configurable?
66 nix-ld-so = pkgs.runCommand "ld.so" {} ''
77 ln -s "$(cat '${pkgs.stdenv.cc}/nix-support/dynamic-linker')" $out
88 '';
+3-3
nixos/modules/programs/singularity.nix
···2525 type = types.nullOr types.package;
2626 default = null;
2727 description = mdDoc ''
2828- This option provides access to the overriden result of `programs.singularity.package`.
2828+ This option provides access to the overridden result of `programs.singularity.package`.
29293030- For example, the following configuration makes all the Nixpkgs packages use the overriden `singularity`:
3030+ For example, the following configuration makes all the Nixpkgs packages use the overridden `singularity`:
3131 ```Nix
3232 { config, lib, pkgs, ... }:
3333 {
···4242 }
4343 ```
44444545- Use `lib.mkForce` to forcefully specify the overriden package.
4545+ Use `lib.mkForce` to forcefully specify the overridden package.
4646 '';
4747 };
4848 enableFakeroot = mkOption {
+1-1
nixos/modules/programs/turbovnc.nix
···3939 config = mkIf cfg.ensureHeadlessSoftwareOpenGL {
40404141 # TurboVNC has builtin support for Mesa llvmpipe's `swrast`
4242- # software rendering to implemnt GLX (OpenGL on Xorg).
4242+ # software rendering to implement GLX (OpenGL on Xorg).
4343 # However, just building TurboVNC with support for that is not enough
4444 # (it only takes care of the X server side part of OpenGL);
4545 # the indiviudual applications (e.g. `glxgears`) also need to directly load
+1-1
nixos/modules/rename.nix
···112112 (mkRemovedOptionModule [ "services" "cryptpad" ] "The corresponding package was removed from nixpkgs.")
113113 (mkRemovedOptionModule [ "services" "rtsp-simple-server" ] "Package has been completely rebranded by upstream as mediamtx, and thus the service and the package were renamed in NixOS as well.")
114114115115- (mkRemovedOptionModule [ "i18n" "inputMethod" "fcitx" ] "The fcitx module has been removed. Plesae use fcitx5 instead")
115115+ (mkRemovedOptionModule [ "i18n" "inputMethod" "fcitx" ] "The fcitx module has been removed. Please use fcitx5 instead")
116116117117 # Do NOT add any option renames here, see top of the file
118118 ];
···2828 WOODPECKER_GITEA_URL = "https://git.example.com";
2929 }
3030 '';
3131- description = lib.mdDoc "woodpecker-server config envrionment variables, for other options read the [documentation](https://woodpecker-ci.org/docs/administration/server-config)";
3131+ description = lib.mdDoc "woodpecker-server config environment variables, for other options read the [documentation](https://woodpecker-ci.org/docs/administration/server-config)";
3232 };
3333 environmentFile = lib.mkOption {
3434 type = lib.types.nullOr lib.types.path;
+1-1
nixos/modules/services/databases/cockroachdb.nix
···164164 example = [ "--advertise-addr" "[fe80::f6f2:::]" ];
165165 description = lib.mdDoc ''
166166 Extra CLI arguments passed to {command}`cockroach start`.
167167- For the full list of supported argumemnts, check <https://www.cockroachlabs.com/docs/stable/cockroach-start.html#flags>
167167+ For the full list of supported arguments, check <https://www.cockroachlabs.com/docs/stable/cockroach-start.html#flags>
168168 '';
169169 };
170170 };
+1-1
nixos/modules/services/databases/couchdb.nix
···141141 type = types.lines;
142142 default = "";
143143 description = lib.mdDoc ''
144144- Extra configuration. Overrides any other cofiguration.
144144+ Extra configuration. Overrides any other configuration.
145145 '';
146146 };
147147
+1-1
nixos/modules/services/databases/firebird.nix
···11{ config, lib, pkgs, ... }:
2233-# TODO: This may file may need additional review, eg which configuartions to
33+# TODO: This may file may need additional review, eg which configurations to
44# expose to the user.
55#
66# I only used it to access some simple databases.
+1-1
nixos/modules/services/databases/mongodb.nix
···142142 User = cfg.user;
143143 PIDFile = cfg.pidFile;
144144 Type = "forking";
145145- TimeoutStartSec=120; # intial creating of journal can take some time
145145+ TimeoutStartSec=120; # initial creating of journal can take some time
146146 PermissionsStartOnly = true;
147147 };
148148
···16161717 enable = mkEnableOption (lib.mdDoc ''
1818 Provides some dbus interfaces that is used for screen zone detecting,
1919- thumbnail generating, and sound playing in Deepin Desktop Enviroment.
1919+ thumbnail generating, and sound playing in Deepin Desktop Environment.
2020 '');
21212222 };
+1-1
nixos/modules/services/mail/roundcube.nix
···7272 type = types.str;
7373 description = lib.mdDoc ''
7474 Password file for the postgresql connection.
7575- Must be formated according to PostgreSQL .pgpass standard (see https://www.postgresql.org/docs/current/libpq-pgpass.html)
7575+ Must be formatted according to PostgreSQL .pgpass standard (see https://www.postgresql.org/docs/current/libpq-pgpass.html)
7676 but only one line, no comments and readable by user `nginx`.
7777 Ignored if `database.host` is set to `localhost`, as peer authentication will be used.
7878 '';
+3-3
nixos/modules/services/misc/siproxd.nix
···6060 default = [ ];
6161 example = [ "192.168.1.0/24" "192.168.2.0/24" ];
6262 description = lib.mdDoc ''
6363- Acess control list for incoming SIP registrations.
6363+ Access control list for incoming SIP registrations.
6464 '';
6565 };
6666···6969 default = [ ];
7070 example = [ "123.45.0.0/16" "123.46.0.0/16" ];
7171 description = lib.mdDoc ''
7272- Acess control list for incoming SIP traffic.
7272+ Access control list for incoming SIP traffic.
7373 '';
7474 };
7575···7878 default = [ ];
7979 example = [ "10.0.0.0/8" "11.0.0.0/8" ];
8080 description = lib.mdDoc ''
8181- Acess control list for denying incoming
8181+ Access control list for denying incoming
8282 SIP registrations and traffic.
8383 '';
8484 };
···1614161416151615 The following property holds: switching to a configuration
16161616 (`switch-to-configuration`) that changes the prometheus
16171617- configuration only finishes successully when prometheus has finished
16171617+ configuration only finishes successfully when prometheus has finished
16181618 loading the new configuration.
16191619 '';
16201620 };
+2-2
nixos/modules/services/monitoring/unpoller.nix
···4747 type = types.bool;
4848 default = false;
4949 description = lib.mdDoc ''
5050- Whether to disable the prometheus ouput plugin.
5050+ Whether to disable the prometheus output plugin.
5151 '';
5252 };
5353 http_listen = mkOption {
···7171 type = types.bool;
7272 default = false;
7373 description = lib.mdDoc ''
7474- Whether to disable the influxdb ouput plugin.
7474+ Whether to disable the influxdb output plugin.
7575 '';
7676 };
7777 url = mkOption {
+1-1
nixos/modules/services/networking/headscale.nix
···393393 type = types.nullOr types.path;
394394 default = null;
395395 description = lib.mdDoc ''
396396- Path to a file containg ACL policies.
396396+ Path to a file containing ACL policies.
397397 '';
398398 };
399399 };
+1-1
nixos/modules/services/networking/wgautomesh.nix
···9494 address = mkOption {
9595 type = types.str;
9696 description = mdDoc ''
9797- Wireguard address of this peer (a single IP address, multliple
9797+ Wireguard address of this peer (a single IP address, multiple
9898 addresses or address ranges are not supported).
9999 '';
100100 example = "10.0.0.42";
+1-1
nixos/modules/services/search/meilisearch.md
···30303131- The default nixos package doesn't come with the [dashboard](https://docs.meilisearch.com/learn/getting_started/quick_start.html#search), since the dashboard features makes some assets downloads at compile time.
32323333-- Anonimized Analytics sent to meilisearch are disabled by default.
3333+- Anonymized Analytics sent to meilisearch are disabled by default.
34343535- Default deployment is development mode. It doesn't require a secret master key. All routes are not protected and accessible.
3636
+1-1
nixos/modules/services/security/authelia.nix
···7272 type = types.nullOr types.path;
7373 default = null;
7474 description = mdDoc ''
7575- Path to your JWT secret used during identity verificaiton.
7575+ Path to your JWT secret used during identity verificaton.
7676 '';
7777 };
7878
+1-1
nixos/modules/services/security/kanidm.nix
···1010 certPaths = builtins.map builtins.dirOf [ cfg.serverSettings.tls_chain cfg.serverSettings.tls_key ];
11111212 # Merge bind mount paths and remove paths where a prefix is already mounted.
1313- # This makes sure that if e.g. the tls_chain is in the nix store and /nix/store is alread in the mount
1313+ # This makes sure that if e.g. the tls_chain is in the nix store and /nix/store is already in the mount
1414 # paths, no new bind mount is added. Adding subpaths caused problems on ofborg.
1515 hasPrefixInList = list: newPath: lib.any (path: lib.hasPrefix (builtins.toString path) (builtins.toString newPath)) list;
1616 mergePaths = lib.foldl' (merged: newPath: let
+1-1
nixos/modules/services/web-apps/dokuwiki.nix
···173173 }
174174 {
175175 assertion = config.usersFile != null -> config.mergedConfig.useacl != false;
176176- message = "${showPath [ "settings" "useacl" ]} is required when ${showPath [ "usersFile" ]} is set (Currently defiend as `${config.usersFile}' in ${showFiles options.usersFile.files}).";
176176+ message = "${showPath [ "settings" "useacl" ]} is required when ${showPath [ "usersFile" ]} is set (Currently defined as `${config.usersFile}' in ${showFiles options.usersFile.files}).";
177177 }
178178 ];
179179 })
+1-1
nixos/modules/services/web-apps/kavita.nix
···3535 ipAdresses = lib.mkOption {
3636 default = ["0.0.0.0" "::"];
3737 type = lib.types.listOf lib.types.str;
3838- description = lib.mdDoc "IP Adresses to bind to. The default is to bind
3838+ description = lib.mdDoc "IP Addresses to bind to. The default is to bind
3939 to all IPv4 and IPv6 addresses.";
4040 };
4141 };
+1-1
nixos/modules/services/web-apps/mastodon.nix
···508508 type = with lib.types; listOf path;
509509 default = [];
510510 description = lib.mdDoc ''
511511- Extra environment files to pass to all mastodon services. Useful for passing down environemntal secrets.
511511+ Extra environment files to pass to all mastodon services. Useful for passing down environmental secrets.
512512 '';
513513 example = [ "/etc/mastodon/s3config.env" ];
514514 };
+1-1
nixos/modules/services/web-apps/monica.nix
···367367 };
368368369369 systemd.services.monica-setup = {
370370- description = "Preperation tasks for monica";
370370+ description = "Preparation tasks for monica";
371371 before = ["phpfpm-monica.service"];
372372 after = optional db.createLocally "mysql.service";
373373 wantedBy = ["multi-user.target"];
···3131 type = lib.types.bool;
3232 default = false;
3333 description = lib.mdDoc ''
3434- Wether to add an entry to `/etc/hosts` for the configured nextcloud domain to point to `localhost` and add `localhost `to nextcloud's `trusted_proxies` config option.
3434+ Whether to add an entry to `/etc/hosts` for the configured nextcloud domain to point to `localhost` and add `localhost `to nextcloud's `trusted_proxies` config option.
35353636 This is useful when nextcloud's domain is not a static IP address and when the reverse proxy cannot be bypassed because the backend connection is done via unix socket.
3737 '';
+1-1
nixos/modules/services/web-apps/nextcloud.nix
···556556 default = config.services.nextcloud.notify_push.enable;
557557 defaultText = literalExpression "config.services.nextcloud.notify_push.enable";
558558 description = lib.mdDoc ''
559559- Wether to configure nextcloud to use the recommended redis settings for small instances.
559559+ Whether to configure nextcloud to use the recommended redis settings for small instances.
560560561561 ::: {.note}
562562 The `notify_push` app requires redis to be configured. If this option is turned off, this must be configured manually.
···7777on fresh setups.
78787979If major-releases will be abandoned by upstream, we should check first if those are needed
8080-in NixOS for a safe upgrade-path before removing those. In that case we shold keep those
8080+in NixOS for a safe upgrade-path before removing those. In that case we should keep those
8181packages, but mark them as insecure in an expression like this (in
8282`<nixpkgs/pkgs/tools/filesystem/garage/default.nix>`):
8383```
+1-1
nixos/modules/services/web-servers/stargazer.nix
···152152153153 Expressed as a list of attribute sets. Each set must have a key `route`
154154 that becomes the section name for that route in the stargazer ini cofig.
155155- The remaining keys and vaules become the parameters for that route.
155155+ The remaining keys and values become the parameters for that route.
156156157157 [Refer to upstream docs for other params](https://git.sr.ht/~zethra/stargazer/tree/main/item/doc/stargazer.ini.5.txt)
158158 '';
···4040 description = lib.mdDoc ''
4141 Extra Python packages available to Qtile.
4242 An example would be to include `python3Packages.qtile-extras`
4343- for additional unoffical widgets.
4343+ for additional unofficial widgets.
4444 '';
4545 example = literalExpression ''
4646 python3Packages: with python3Packages; [
···213213 $search .= $matches[0];
214214 }
215215216216- # BTRFS is a special case in that we need to fix the referrenced path based on subvolumes
216216+ # BTRFS is a special case in that we need to fix the referenced path based on subvolumes
217217 if ($fs->type eq 'btrfs') {
218218 my ($status, @id_info) = runCommand("@btrfsprogs@/bin/btrfs", "subvol", "show", @{[$fs->mount]});
219219 if ($status != 0) {
···586586 if (($grubTarget eq "") || ($grubTargetEfi eq "")) { die }
587587 else { return "both" }
588588 } elsif (($grub ne "") && ($grubEfi eq "")) {
589589- # TODO: It would be safer to disallow non-EFI grub installation if no taget is given.
589589+ # TODO: It would be safer to disallow non-EFI grub installation if no target is given.
590590 # If no target is given, then grub auto-detects the target which can lead to errors.
591591 # E.g. it seems as if grub would auto-detect a EFI target based on the availability
592592 # of a EFI partition.
+2-2
nixos/modules/system/boot/luksroot.nix
···130130 ''}
131131132132 # Disable all input echo for the whole stage. We could use read -s
133133- # instead but that would ocasionally leak characters between read
133133+ # instead but that would occasionally leak characters between read
134134 # invocations.
135135 stty -echo
136136 '';
···861861 '';
862862 description = lib.mdDoc ''
863863 Commands that should be run right before we try to mount our LUKS device.
864864- This can be useful, if the keys needed to open the drive is on another partion.
864864+ This can be useful, if the keys needed to open the drive is on another partition.
865865 '';
866866 };
867867
+1-1
nixos/modules/system/boot/stage-1-init.sh
···445445 mv -v "$d" "$root/old-root.tmp"
446446 done
447447448448- # Use .tmp to make sure subsequent invokations don't clash
448448+ # Use .tmp to make sure subsequent invocations don't clash
449449 mv -v "$root/old-root.tmp" "$root/old-root"
450450451451 mkdir -m 0755 -p "$root/etc"
+1-1
nixos/modules/tasks/filesystems/bcachefs.nix
···1616 local path="$2"
1717 if bcachefs unlock -c $path > /dev/null 2> /dev/null; then # test for encryption
1818 prompt $name
1919- until bcachefs unlock $path 2> /dev/null; do # repeat until sucessfully unlocked
1919+ until bcachefs unlock $path 2> /dev/null; do # repeat until successfully unlocked
2020 printf "unlocking failed!\n"
2121 prompt $name
2222 done
+1-1
nixos/modules/tasks/filesystems/btrfs.nix
···2525 type = types.listOf types.path;
2626 example = [ "/" ];
2727 description = lib.mdDoc ''
2828- List of paths to btrfs filesystems to regularily call {command}`btrfs scrub` on.
2828+ List of paths to btrfs filesystems to regularly call {command}`btrfs scrub` on.
2929 Defaults to all mount points with btrfs filesystems.
3030 If you mount a filesystem multiple times or additionally mount subvolumes,
3131 you need to manually specify this list to avoid scrubbing multiple times.
···437437 '';
438438 postStop = ''
439439 echo "Cleaning Open vSwitch ${n}"
440440- echo "Shuting down internal ${n} interface"
440440+ echo "Shutting down internal ${n} interface"
441441 ip link set ${n} down || true
442442 echo "Deleting flows for ${n}"
443443 ovs-ofctl --protocols=${v.openFlowVersion} del-flows ${n} || true
+1-1
nixos/modules/testing/test-instrumentation.nix
···4343 # Passing the terminal device makes bash run non-interactively.
4444 # Otherwise we get errors on the terminal because bash tries to
4545 # setup things like job control.
4646- # Note: calling bash explicitely here instead of sh makes sure that
4646+ # Note: calling bash explicitly here instead of sh makes sure that
4747 # we can also run non-NixOS guests during tests.
4848 PS1= exec /usr/bin/env bash --norc /dev/hvc0
4949 '';