Commit 07fe1b98 authored by Jörg Thalheim's avatar Jörg Thalheim
Browse files

nixos/doc/rl-2211: cleanup

parent 881f2267
Loading
Loading
Loading
Loading
+135 −132
Original line number Diff line number Diff line
<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-release-22.11">
  <title>Release 22.11 (“Raccoon”, 2022.11/??)</title>
  <para>
    The NixOS release team is happy to announce a new version of NixOS
    22.11. NixOS is both a linux distribution, and a set of packages
    usable on other Linux systems and macOS.
  </para>
  <para>
    This release is supported until the end of June 2023, handing over
    to NixOS 23.05.
  </para>
  <para>
    To upgrade to the latest release follow the
    <link linkend="sec-upgrading">upgrade chapter</link>.
  </para>
  <section xml:id="sec-release-22.11-highlights">
    <title>Highlights</title>
    <para>
@@ -69,85 +78,70 @@
      </listitem>
      <listitem>
        <para>
          GNOME has been upgraded to version 43. Please take a look at
          their <link xlink:href="https://release.gnome.org/43/">Release
          Notes</link> for details.
        </para>
      </listitem>
      <listitem>
        <para>
          KDE Plasma has been upgraded from v5.24 to v5.26. Please see
          the release notes for
          <link xlink:href="https://kde.org/announcements/plasma/5/5.25.0/">v5.25</link>
          and
          <link xlink:href="https://kde.org/announcements/plasma/5/5.26.0/">v5.26</link>
          for more details on the included changes.
          The NixOS documentation is now generated from markdown. While
          docbook is still part of the documentation build process, it’s
          a big step towards the full migration.
        </para>
      </listitem>
      <listitem>
        <para>
          Cinnamon has been updated to 5.4, and the Cinnamon module now
          defaults to Blueman as the Bluetooth manager and slick-greeter
          as the LightDM greeter, to match upstream.
          <literal>aarch64-linux</literal> is now included in the
          <literal>nixos-22.11</literal> and
          <literal>nixos-22.11-small</literal> channels. This means that
          when those channel update, both
          <literal>x86_64-linux</literal> and
          <literal>aarch64-linux</literal> will be available in the
          binary cache.
        </para>
      </listitem>
      <listitem>
        <para>
          OpenSSL now defaults to OpenSSL 3, updated from 1.1.1.
          <literal>aarch64-linux</literal> ISOs are now available on the
          <link xlink:href="https://nixos.org/download.html">downloads
          page</link>.
        </para>
      </listitem>
      <listitem>
        <para>
          PHP now defaults to PHP 8.1, updated from 8.0.
          <literal>nsncd</literal> is now available as a replacement of
          <literal>nscd</literal>.
        </para>
      </listitem>
      <listitem>
        <para>
          PHP is now built in <literal>NTS</literal> (Non-Thread Safe)
          mode by default.
          <literal>nscd</literal> is responsible for resolving
          hostnames, users and more in NixOS and has been a long
          standing source of bugs, such as sporadic network freezes.
        </para>
        <itemizedlist spacing="compact">
          <listitem>
        <para>
              For Apache and <literal>mod_php</literal> usage, we enable
              <literal>ZTS</literal> (Zend Thread Safe) mode. This has
              been a common practice for a long time in other
              distributions.
          More context in this
          <link xlink:href="https://github.com/NixOS/nixpkgs/issues/135888">issue</link>.
        </para>
          </listitem>
        </itemizedlist>
      </listitem>
      <listitem>
        <para>
          Perl has been updated to 5.36, and its core module
          <literal>HTTP::Tiny</literal> was patched to verify SSL/TLS
          certificates by default.
        </para>
      </listitem>
      <listitem>
        <para>
          <literal>nscd</literal> functionality, necessary to provide
          non-glibc-builtin NSS modules (such as
          <literal>nss_systemd</literal> or <literal>nss_ldap</literal>)
          can now be provided by <literal>nsncd</literal>, by setting
          Help us test the new implementation by setting
          <literal>services.nscd.enableNsncd</literal> to
          <literal>true</literal>.
        </para>
        <para>
          The <literal>nscd</literal> daemon provided by glibc, which is
          currently used by NixOS isn’t very reliable. For example, it’s
          <link xlink:href="https://github.com/NixOS/nixpkgs/issues/135888">not
          fully possible to disable caching functionality</link>,
          causing various issues and failed lookups.
          We plan to use <literal>nsncd</literal> by default in NixOS
          23.05.
        </para>
      </listitem>
      <listitem>
        <para>
          In contrast to nscd’s behavior of caching module responses on
          its own, nsncd merely forwards requests to NSS modules, which
          might cache or not.
          Linode cloud images are now supported by importing
          <literal>${modulesPath}/virtualisation/linode-image.nix</literal>
          and accessing <literal>system.build.linodeImage</literal> on
          the output.
        </para>
      </listitem>
      <listitem>
        <para>
          We plan to use <literal>nsncd</literal> by default in NixOS
          23.05.
          <literal>hardware.nvidia</literal> has a new option,
          <literal>hardware.nvidia.open</literal>, that can be used to
          enable the usage of NVIDIA’s open-source kernel driver. Note
          that the driver’s support for GeForce and Workstation GPUs is
          still alpha quality, see
          <link xlink:href="https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/">the
          release announcement</link> for more information.
        </para>
      </listitem>
      <listitem>
@@ -178,61 +172,6 @@
          </listitem>
        </itemizedlist>
      </listitem>
      <listitem>
        <para>
          <literal>nixos-generate-config</literal> now generates
          configurations that can be built in pure mode. This is
          achieved by setting the new
          <literal>nixpkgs.hostPlatform</literal> option.
        </para>
        <para>
          You may have to unset the <literal>system</literal> parameter
          in <literal>lib.nixosSystem</literal>, or similarly remove
          definitions of the
          <literal>nixpkgs.{system,localSystem,crossSystem}</literal>
          options.
        </para>
        <para>
          Alternatively, you can remove the
          <literal>hostPlatform</literal> line and use NixOS like you
          would in NixOS 22.05 and earlier.
        </para>
      </listitem>
      <listitem>
        <para>
          It is now possible to generate NixOS images for the Linode
          cloud provider, via
          <literal>system.build.linodeImage</literal>.
        </para>
      </listitem>
      <listitem>
        <para>
          <literal>hardware.nvidia</literal> has a new option,
          <literal>hardware.nvidia.open</literal>, that can be used to
          enable the usage of NVIDIA’s open-source kernel driver. Note
          that the driver’s support for GeForce and Workstation GPUs is
          still alpha quality, see
          <link xlink:href="https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/">the
          release announcement</link> for more information.
        </para>
      </listitem>
      <listitem>
        <para>
          <literal>aarch64-linux</literal> is now included in the
          <literal>nixos-22.11</literal> and
          <literal>nixos-22.11-small</literal> channels. This means that
          <literal>x86_64-linux</literal> and
          <literal>aarch64-linux</literal> will recieve updates at the
          same time.
        </para>
      </listitem>
      <listitem>
        <para>
          <literal>aarch64-linux</literal> ISOs are now available on the
          <link xlink:href="https://nixos.org/download.html">downloads
          page</link>.
        </para>
      </listitem>
    </itemizedlist>
  </section>
  <section xml:id="sec-release-22.11-internal">
@@ -240,38 +179,28 @@
    <itemizedlist>
      <listitem>
        <para>
          Improved performances of
          <literal>lib.closePropagation</literal> which was previously
          quadratic. This is used in e.g.
          <literal>ghcWithPackages</literal>. Please see backward
          incompatibilities notes below.
          Haskell <literal>ghcWithPackages</literal> is now up to 15
          times faster to evaluate, thanks to changing
          <literal>lib.closePropagation</literal> from a quadratic to
          linear complexity. Please see backward incompatibilities notes
          below.
          <link xlink:href="https://github.com/NixOS/nixpkgs/pull/194391">https://github.com/NixOS/nixpkgs/pull/194391</link>
        </para>
      </listitem>
      <listitem>
        <para>
          During cross-compilation, tests are now executed if the test
          suite can be executed by the build platform. This is the case
          when doing “native” cross-compilation where the build and host
          platforms are largely the same, but the nixpkgs’ cross
          compilation infrastructure is used, e.g.
          <literal>pkgsStatic</literal> and <literal>pkgsLLVM</literal>.
          Another possibility is that the build platform is a superset
          of the host platform, e.g. when cross-compiling from
          <literal>x86_64-unknown-linux</literal> to
          <literal>i686-unknown-linux</literal>. The predicate gating
          test suite execution is the newly added
          <literal>canExecute</literal> predicate: You can e.g. check if
          <literal>stdenv.buildPlatform</literal> can execute binaries
          built for <literal>stdenv.hostPlatform</literal> (i.e.
          produced by <literal>stdenv.cc</literal>) by evaluating
          <literal>stdenv.buildPlatform.canExecute stdenv.hostPlatform</literal>.
          For cross-compilation targets that can also run on the
          building machine, we also enabled running tests now. This is
          for example the case for the pkgsStatic and pkgsLLVm package
          sets or i686 packages on <literal>x86_64</literal> machine.
        </para>
      </listitem>
      <listitem>
        <para>
          The <literal>nixpkgs.hostPlatform</literal> and
          <literal>nixpkgs.buildPlatform</literal> options have been
          added. These cover and override the
          To simplify cross-compilation in NixOS, this release
          introduces the <literal>nixpkgs.hostPlatform</literal> and
          <literal>nixpkgs.buildPlatform</literal> options. These cover
          and override the
          <literal>nixpkgs.{system,localSystem,crossSystem}</literal>
          options.
        </para>
@@ -308,6 +237,64 @@
      </listitem>
    </itemizedlist>
  </section>
  <section xml:id="sec-release-22.11-version-updates">
    <title>Notable version updates</title>
    <itemizedlist>
      <listitem>
        <para>
          Nix has been upgraded from
          <link xlink:href="https://github.com/NixOS/nix/compare/2.8.1...2.11.0">v2.8.1
          to v2.11.0</link>
        </para>
      </listitem>
      <listitem>
        <para>
          OpenSSL now defaults to OpenSSL 3, updated from 1.1.1.
        </para>
      </listitem>
      <listitem>
        <para>
          GNOME has been upgraded to version 43. Please take a look at
          their <link xlink:href="https://release.gnome.org/43/">Release
          Notes</link> for details.
        </para>
      </listitem>
      <listitem>
        <para>
          KDE Plasma has been upgraded from v5.24 to v5.26. Please see
          the release notes for
          <link xlink:href="https://kde.org/announcements/plasma/5/5.25.0/">v5.25</link>
          and
          <link xlink:href="https://kde.org/announcements/plasma/5/5.26.0/">v5.26</link>
          for more details on the included changes.
        </para>
      </listitem>
      <listitem>
        <para>
          Cinnamon has been updated to 5.4, and the Cinnamon module now
          defaults to Blueman as the Bluetooth manager and slick-greeter
          as the LightDM greeter, to match upstream.
        </para>
      </listitem>
      <listitem>
        <para>
          PHP now defaults to PHP 8.1, updated from 8.0.
        </para>
      </listitem>
      <listitem>
        <para>
          Perl has been updated to 5.36, and its core module
          <literal>HTTP::Tiny</literal> was patched to verify SSL/TLS
          certificates by default.
        </para>
      </listitem>
      <listitem>
        <para>
          Python now defalts to 3.10, updated from 3.9.
        </para>
      </listitem>
    </itemizedlist>
  </section>
  <section xml:id="sec-release-22.11-incompatibilities">
    <title>Backward Incompatibilities</title>
    <itemizedlist>
@@ -908,6 +895,22 @@ services.github-runner.serviceOverrides.SupplementaryGroups = [
  <section xml:id="sec-release-22.11-notable-changes">
    <title>Other Notable Changes</title>
    <itemizedlist>
      <listitem>
        <para>
          PHP is now built in <literal>NTS</literal> (Non-Thread Safe)
          mode by default.
        </para>
        <itemizedlist spacing="compact">
          <listitem>
            <para>
              For Apache and <literal>mod_php</literal> usage, we enable
              <literal>ZTS</literal> (Zend Thread Safe) mode. This has
              been a common practice for a long time in other
              distributions.
            </para>
          </listitem>
        </itemizedlist>
      </listitem>
      <listitem>
        <para>
          <literal>firefox</literal>, <literal>thunderbird</literal> and
+43 −53
Original line number Diff line number Diff line
# Release 22.11 (“Raccoon”, 2022.11/??) {#sec-release-22.11}

The NixOS release team is happy to announce a new version of NixOS 22.11. NixOS is both a linux distribution, and a set of packages usable on other Linux systems and macOS.

This release is supported until the end of June 2023, handing over to NixOS 23.05.

To upgrade to the latest release follow the [upgrade chapter](#sec-upgrading).

## Highlights {#sec-release-22.11-highlights}

In addition to numerous new and upgraded packages, this release includes the following highlights:
@@ -13,74 +17,37 @@ In addition to numerous new and upgraded packages, this release includes the fol
    - On the other hand, for interactively configured user passwords, simply re-set the passwords for all users with `passwd`.
    - This release introduces warnings for the use of deprecated hash algorithms for both methods of configuring passwords. To make sure you migrated correctly, run `nixos-rebuild switch`.

- GNOME has been upgraded to version 43. Please take a look at their [Release Notes](https://release.gnome.org/43/) for details.
- The NixOS documentation is now generated from markdown. While docbook is still part of the documentation build process, it's a big step towards the full migration.

- KDE Plasma has been upgraded from v5.24 to v5.26. Please see the release notes for [v5.25](https://kde.org/announcements/plasma/5/5.25.0/) and [v5.26](https://kde.org/announcements/plasma/5/5.26.0/) for more details on the included changes.
- `aarch64-linux` is now included in the `nixos-22.11` and `nixos-22.11-small` channels. This means that when those channel update, both `x86_64-linux` and `aarch64-linux` will be available in the binary cache.

- Cinnamon has been updated to 5.4, and the Cinnamon module now defaults to
  Blueman as the Bluetooth manager and slick-greeter as the LightDM greeter, to match upstream.
- `aarch64-linux` ISOs are now available on the [downloads page](https://nixos.org/download.html).

- OpenSSL now defaults to OpenSSL 3, updated from 1.1.1.
- `nsncd` is now available as a replacement of `nscd`.

- PHP now defaults to PHP 8.1, updated from 8.0.
  `nscd` is responsible for resolving hostnames, users and more in NixOS and has been a long standing source of bugs, such as sporadic network freezes.
  
- PHP is now built in `NTS` (Non-Thread Safe) mode by default.
  - For Apache and `mod_php` usage, we enable `ZTS` (Zend Thread Safe) mode. This has been a
  common practice for a long time in other distributions.
  More context in this [issue](https://github.com/NixOS/nixpkgs/issues/135888).
  
- Perl has been updated to 5.36, and its core module `HTTP::Tiny` was patched to verify SSL/TLS certificates by default.

- `nscd` functionality, necessary to provide non-glibc-builtin NSS
   modules (such as `nss_systemd` or `nss_ldap`) can now be provided by
   `nsncd`, by setting `services.nscd.enableNsncd` to `true`.
  Help us test the new implementation by setting `services.nscd.enableNsncd` to `true`.

   The `nscd` daemon provided by glibc, which is currently used by NixOS isn't
   very reliable. For example, it's [not fully possible to disable caching
   functionality](https://github.com/NixOS/nixpkgs/issues/135888), causing
   various issues and failed lookups.
  We plan to use `nsncd` by default in NixOS 23.05.

   In contrast to nscd's behavior of caching module responses on its own,
   nsncd merely forwards requests to NSS modules, which might cache or not.
- Linode cloud images are now supported by importing `${modulesPath}/virtualisation/linode-image.nix` and accessing `system.build.linodeImage` on the output.

   We plan to use `nsncd` by default in NixOS 23.05.
- `hardware.nvidia` has a new option, `hardware.nvidia.open`, that can be used to enable the usage of NVIDIA's open-source kernel driver. Note that the driver's support for GeForce and Workstation GPUs is still alpha quality, see [the release announcement](https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/) for more information.

- The `emacs` package now makes use of native compilation which means:
  - Emacs packages from Nixpkgs, builtin or not, will do native compilation ahead of time so you can enjoy the benefit of native compilation without compiling them on you machine;
  - Emacs packages from somewhere else, e.g. `package-install`, will perform asynchronously deferred native compilation. If you do not want this, maybe to avoid CPU consumption for compilation, you can use `(setq native-comp-deferred-compilation nil)` to disable it while still benefiting from native compilation for packages from Nixpkgs.

- `nixos-generate-config` now generates configurations that can be built in pure
  mode. This is achieved by setting the new `nixpkgs.hostPlatform` option.

  You may have to unset the `system` parameter in `lib.nixosSystem`, or similarly
  remove definitions of the `nixpkgs.{system,localSystem,crossSystem}` options.

  Alternatively, you can remove the `hostPlatform` line and use NixOS like you
  would in NixOS 22.05 and earlier.

- It is now possible to generate NixOS images for the Linode cloud provider, via `system.build.linodeImage`.

- `hardware.nvidia` has a new option, `hardware.nvidia.open`, that can be used to enable the usage of NVIDIA's open-source kernel driver. Note that the driver's support for GeForce and Workstation GPUs is still alpha quality, see [the release announcement](https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/) for more information.

- `aarch64-linux` is now included in the `nixos-22.11` and `nixos-22.11-small` channels. This means that `x86_64-linux` and `aarch64-linux` will recieve updates at the same time.
## Internal changes {#sec-release-22.11-internal}

- `aarch64-linux` ISOs are now available on the [downloads page](https://nixos.org/download.html).
- Haskell `ghcWithPackages` is now up to 15 times faster to evaluate, thanks to changing `lib.closePropagation` from a quadratic to linear complexity. Please see backward incompatibilities notes below. <https://github.com/NixOS/nixpkgs/pull/194391>

## Internal changes {#sec-release-22.11-internal}
- For cross-compilation targets that can also run on the building machine, we also enabled running tests now. This is for example the case for the pkgsStatic and pkgsLLVm package sets or i686 packages on `x86_64` machine.

- Improved performances of `lib.closePropagation` which was previously quadratic. This is used in e.g. `ghcWithPackages`. Please see backward incompatibilities notes below.
- During cross-compilation, tests are now executed if the test suite can be executed
  by the build platform. This is the case when doing “native” cross-compilation
  where the build and host platforms are largely the same, but the nixpkgs' cross
  compilation infrastructure is used, e.g. `pkgsStatic` and `pkgsLLVM`. Another
  possibility is that the build platform is a superset of the host platform, e.g. when
  cross-compiling from `x86_64-unknown-linux` to `i686-unknown-linux`.
  The predicate gating test suite execution is the newly added `canExecute`
  predicate: You can e.g. check if `stdenv.buildPlatform` can execute binaries
  built for `stdenv.hostPlatform` (i.e. produced by `stdenv.cc`) by evaluating
  `stdenv.buildPlatform.canExecute stdenv.hostPlatform`.

- The `nixpkgs.hostPlatform` and `nixpkgs.buildPlatform` options have been added.
  These cover and override the `nixpkgs.{system,localSystem,crossSystem}` options.
- To simplify cross-compilation in NixOS, this release introduces the `nixpkgs.hostPlatform` and `nixpkgs.buildPlatform` options. These cover and override the `nixpkgs.{system,localSystem,crossSystem}` options.

   - `hostPlatform` is the platform or "`system`" string of the NixOS system
     described by the configuration.
@@ -97,6 +64,25 @@ In addition to numerous new and upgraded packages, this release includes the fol
  for a transition period so that in time the ecosystem can switch without
  breaking compatibility with any supported NixOS release.

## Notable version updates {#sec-release-22.11-version-updates}

- Nix has been upgraded from [v2.8.1 to v2.11.0](https://github.com/NixOS/nix/compare/2.8.1...2.11.0)

- OpenSSL now defaults to OpenSSL 3, updated from 1.1.1.

- GNOME has been upgraded to version 43. Please take a look at their [Release Notes](https://release.gnome.org/43/) for details.

- KDE Plasma has been upgraded from v5.24 to v5.26. Please see the release notes for [v5.25](https://kde.org/announcements/plasma/5/5.25.0/) and [v5.26](https://kde.org/announcements/plasma/5/5.26.0/) for more details on the included changes.

- Cinnamon has been updated to 5.4, and the Cinnamon module now defaults to
  Blueman as the Bluetooth manager and slick-greeter as the LightDM greeter, to match upstream.

- PHP now defaults to PHP 8.1, updated from 8.0.

- Perl has been updated to 5.36, and its core module `HTTP::Tiny` was patched to verify SSL/TLS certificates by default.

- Python now defalts to 3.10, updated from 3.9.

## Backward Incompatibilities {#sec-release-22.11-incompatibilities}

- Nixpkgs now requires Nix 2.3 or newer.
@@ -279,6 +265,10 @@ In addition to numerous new and upgraded packages, this release includes the fol

## Other Notable Changes {#sec-release-22.11-notable-changes}

- PHP is now built in `NTS` (Non-Thread Safe) mode by default.
  - For Apache and `mod_php` usage, we enable `ZTS` (Zend Thread Safe) mode. This has been a
  common practice for a long time in other distributions.

- `firefox`, `thunderbird` and `librewolf` now come with Wayland support by default. The `firefox-wayland`, `firefox-esr-wayland`, `thunderbird-wayland` and `librewolf-wayland` attributes are obsolete and have been aliased to their generic attribute.

- The `xplr` package has been updated from 0.18.0 to 0.19.0, which brings some breaking changes. See the [upstream release notes](https://github.com/sayanarijit/xplr/releases/tag/v0.19.0) for more details.