summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorLinus Heckemann <git@sphalerite.org>2024-05-08 15:17:45 +0200
committerGitHub <noreply@github.com>2024-05-08 15:17:45 +0200
commita10842c7f0343bad733d039c72cf15a6ca0d1eb4 (patch)
tree047be3e42d725cdb39c933c441237017f630341f /nixos
parent9a604d82fbc5d8a85a830efc28564cf397a297ab (diff)
parentb6ef9ffdfd54e91cce180c306852489f5ebc3098 (diff)
Merge pull request #302300 from Ma27/kernel-zstd
linux kernel: prefer zstd where possible
Diffstat (limited to 'nixos')
-rw-r--r--nixos/doc/manual/release-notes/rl-2405.section.md4
-rw-r--r--nixos/modules/services/hardware/udev.nix14
2 files changed, 14 insertions, 4 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md
index f8289da2c977..c18f3af9219f 100644
--- a/nixos/doc/manual/release-notes/rl-2405.section.md
+++ b/nixos/doc/manual/release-notes/rl-2405.section.md
@@ -53,6 +53,10 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi
- `system.etc.overlay.enable` option was added. If enabled, `/etc` is
mounted via an overlayfs instead of being created by a custom perl script.
+- For each supporting version of the Linux kernel firmware blobs and kernel modules
+ are compressed with zstd. For firmware blobs this means an increase of 4.4% in size, however
+ a significantly higher decompression speed.
+
- NixOS AMIs are now uploaded regularly to a new AWS Account.
Instructions on how to use them can be found on <https://nixos.github.io/amis>.
We are working on integration the data into the NixOS homepage.
diff --git a/nixos/modules/services/hardware/udev.nix b/nixos/modules/services/hardware/udev.nix
index 3db661644281..62603d20e2d3 100644
--- a/nixos/modules/services/hardware/udev.nix
+++ b/nixos/modules/services/hardware/udev.nix
@@ -167,10 +167,16 @@ let
mv etc/udev/hwdb.bin $out
'';
- compressFirmware = firmware: if (config.boot.kernelPackages.kernelAtLeast "5.3" && (firmware.compressFirmware or true)) then
- pkgs.compressFirmwareXz firmware
- else
- id firmware;
+ compressFirmware = firmware:
+ let
+ inherit (config.boot.kernelPackages) kernelAtLeast;
+ in
+ if ! (firmware.compressFirmware or true) then
+ firmware
+ else
+ if kernelAtLeast "5.19" then pkgs.compressFirmwareZstd firmware
+ else if kernelAtLeast "5.3" then pkgs.compressFirmwareXz firmware
+ else firmware;
# Udev has a 512-character limit for ENV{PATH}, so create a symlink
# tree to work around this.