about summary refs log tree commit diff
path: root/nixpkgs/pkgs/os-specific
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/os-specific')
-rw-r--r--nixpkgs/pkgs/os-specific/bsd/netbsd/default.nix21
-rw-r--r--nixpkgs/pkgs/os-specific/darwin/aldente/default.nix12
-rw-r--r--nixpkgs/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/darwin/yabai/default.nix5
-rw-r--r--nixpkgs/pkgs/os-specific/linux/amdgpu-pro/default.nix2
-rw-r--r--nixpkgs/pkgs/os-specific/linux/android-udev-rules/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/below/default.nix6
-rw-r--r--nixpkgs/pkgs/os-specific/linux/cfs-zen-tweaks/default.nix8
-rw-r--r--nixpkgs/pkgs/os-specific/linux/firmware/fwupd/default.nix7
-rw-r--r--nixpkgs/pkgs/os-specific/linux/hostapd/default.nix2
-rw-r--r--nixpkgs/pkgs/os-specific/linux/intel-compute-runtime/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/irqbalance/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/README.md33
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/kernels-org.json36
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/linux-rt-5.10.nix6
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/linux-testing-bcachefs.nix2
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/xanmod-kernels.nix8
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/zen-kernels.nix10
-rw-r--r--nixpkgs/pkgs/os-specific/linux/ksmbd-tools/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/libcap/default.nix2
-rw-r--r--nixpkgs/pkgs/os-specific/linux/libnl-tiny/default.nix2
-rw-r--r--nixpkgs/pkgs/os-specific/linux/libselinux/default.nix2
-rw-r--r--nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/default.nix2
-rw-r--r--nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix18
-rwxr-xr-xnixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/gen-sources.sh19
-rw-r--r--nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/nyacc.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/sources.nix1066
-rw-r--r--nixpkgs/pkgs/os-specific/linux/nix-ld/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.84
-rw-r--r--nixpkgs/pkgs/os-specific/linux/nvidia-x11/default.nix12
-rw-r--r--nixpkgs/pkgs/os-specific/linux/nvidia-x11/generic.nix162
-rw-r--r--nixpkgs/pkgs/os-specific/linux/nvidia-x11/open.nix8
-rw-r--r--nixpkgs/pkgs/os-specific/linux/pam/default.nix6
-rw-r--r--nixpkgs/pkgs/os-specific/linux/powerstat/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/rasdaemon/default.nix27
-rw-r--r--nixpkgs/pkgs/os-specific/linux/rdma-core/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/sssd/default.nix7
-rw-r--r--nixpkgs/pkgs/os-specific/linux/sysdig/default.nix64
-rw-r--r--nixpkgs/pkgs/os-specific/linux/systemd/default.nix3
-rw-r--r--nixpkgs/pkgs/os-specific/linux/teensy-udev-rules/default.nix5
-rw-r--r--nixpkgs/pkgs/os-specific/linux/waydroid/default.nix8
-rw-r--r--nixpkgs/pkgs/os-specific/linux/zfs/2_1.nix39
-rw-r--r--nixpkgs/pkgs/os-specific/linux/zfs/generic.nix451
-rw-r--r--nixpkgs/pkgs/os-specific/linux/zfs/stable.nix18
-rw-r--r--nixpkgs/pkgs/os-specific/linux/zfs/unstable.nix21
45 files changed, 1683 insertions, 457 deletions
diff --git a/nixpkgs/pkgs/os-specific/bsd/netbsd/default.nix b/nixpkgs/pkgs/os-specific/bsd/netbsd/default.nix
index 5012a0c7d3c7..c44936ddcb47 100644
--- a/nixpkgs/pkgs/os-specific/bsd/netbsd/default.nix
+++ b/nixpkgs/pkgs/os-specific/bsd/netbsd/default.nix
@@ -603,6 +603,12 @@ in makeScopeWithSplicing' {
     version = "9.2";
     sha256 = "03s18q8d9giipf05bx199fajc2qwikji0djz7hw63d2lya6bfnpj";
 
+    # Make the build ignore linker warnings
+    prePatch = ''
+      substituteInPlace sys/conf/Makefile.kern.inc \
+        --replace "-Wa,--fatal-warnings" ""
+    '';
+
     patches = [
       # Fix this error when building bootia32.efi and bootx64.efi:
       # error: PHDR segment not covered by LOAD segment
@@ -612,8 +618,13 @@ in makeScopeWithSplicing' {
       ./sys-headers-incsdir.patch
     ];
 
-    # multiple header dirs, see above
-    inherit (self.include) postPatch;
+    postPatch =
+      ''
+        substituteInPlace sys/arch/i386/stand/efiboot/Makefile.efiboot \
+          --replace "-nocombreloc" "-z nocombreloc"
+      '' +
+      # multiple header dirs, see above
+      self.include.postPatch;
 
     CONFIG = "GENERIC";
 
@@ -634,7 +645,11 @@ in makeScopeWithSplicing' {
     makeFlags = defaultMakeFlags ++ [ "FIRMWAREDIR=$(out)/libdata/firmware" ];
     hardeningDisable = [ "pic" ];
     MKKMOD = "no";
-    env.NIX_CFLAGS_COMPILE = toString [ "-Wa,--no-warn" ];
+    env.NIX_CFLAGS_COMPILE = toString [
+      "-Wno-error=array-parameter"
+      "-Wno-error=array-bounds"
+      "-Wa,--no-warn"
+    ];
 
     postBuild = ''
       make -C arch/$MACHINE/compile/$CONFIG $makeFlags
diff --git a/nixpkgs/pkgs/os-specific/darwin/aldente/default.nix b/nixpkgs/pkgs/os-specific/darwin/aldente/default.nix
index 7ca454609aed..245ba81e2914 100644
--- a/nixpkgs/pkgs/os-specific/darwin/aldente/default.nix
+++ b/nixpkgs/pkgs/os-specific/darwin/aldente/default.nix
@@ -6,11 +6,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "aldente";
-  version = "1.22.3";
+  version = "1.24";
 
   src = fetchurl {
     url = "https://github.com/davidwernhart/aldente-charge-limiter/releases/download/${finalAttrs.version}/AlDente.dmg";
-    hash = "sha256-pSqBDDumCbORLQ+B3skSqKmgG2KybR5Zb4ojiNQcAaM=";
+    hash = "sha256-5byGKtVgKiE8m0+GXDtUpTwQpuUj4lv0hPOl4jhH9wk=";
   };
 
   dontBuild = true;
@@ -47,13 +47,13 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     runHook postInstall
   '';
 
-  meta = with lib; {
+  meta = {
     description = "macOS tool to limit maximum charging percentage";
     homepage = "https://apphousekitchen.com";
     changelog = "https://github.com/davidwernhart/aldente-charge-limiter/releases/tag/${finalAttrs.version}";
-    license = with licenses; [ unfree ];
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    maintainers = with maintainers; [ stepbrobd ];
+    license = with lib.licenses; [ unfree ];
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    maintainers = with lib.maintainers; [ stepbrobd ];
     platforms = [ "aarch64-darwin" "x86_64-darwin" ];
   };
 })
diff --git a/nixpkgs/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix b/nixpkgs/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix
index 50eb50ea6b78..45cb12b89f4c 100644
--- a/nixpkgs/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix
+++ b/nixpkgs/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix
@@ -22,8 +22,8 @@ rec {
     type = "derivation";
     outPath = xcode + "/Contents/Developer/Platforms/${platform}.platform/Developer/SDKs/${platform}${version}.sdk";
 
-    platform = stdenv.targetPlatform.xcodePlatform;
-    version = stdenv.targetPlatform.sdkVer;
+    platform = stdenv.targetPlatform.xcodePlatform or "";
+    version = stdenv.targetPlatform.sdkVer or "";
   };
 
   binutils = wrapBintoolsWith {
diff --git a/nixpkgs/pkgs/os-specific/darwin/yabai/default.nix b/nixpkgs/pkgs/os-specific/darwin/yabai/default.nix
index 841746957c76..417d25400a47 100644
--- a/nixpkgs/pkgs/os-specific/darwin/yabai/default.nix
+++ b/nixpkgs/pkgs/os-specific/darwin/yabai/default.nix
@@ -108,6 +108,11 @@ in
     dontConfigure = true;
     enableParallelBuilding = true;
 
+    env = {
+      # silence service.h error
+      NIX_CFLAGS_COMPILE = "-Wno-implicit-function-declaration";
+    };
+
     postPatch = ''
       # aarch64 code is compiled on all targets, which causes our Apple SDK headers to error out.
       # Since multilib doesnt work on darwin i dont know of a better way of handling this.
diff --git a/nixpkgs/pkgs/os-specific/linux/amdgpu-pro/default.nix b/nixpkgs/pkgs/os-specific/linux/amdgpu-pro/default.nix
index 241145a24843..96339c1d164f 100644
--- a/nixpkgs/pkgs/os-specific/linux/amdgpu-pro/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/amdgpu-pro/default.nix
@@ -27,7 +27,7 @@ let
       "i386-linux-gnu"
     else if stdenv.hostPlatform.system == "x86_64-linux" then
       "x86_64-linux-gnu"
-    else throw "amdgpu-pro is Linux only. Sorry.";
+    else throw "amdgpu-pro is Linux only. Sorry ${stdenv.hostPlatform.system}.";
 
 in stdenv.mkDerivation rec {
 
diff --git a/nixpkgs/pkgs/os-specific/linux/android-udev-rules/default.nix b/nixpkgs/pkgs/os-specific/linux/android-udev-rules/default.nix
index 07cdbf6bdce7..b5f879c1bd31 100644
--- a/nixpkgs/pkgs/os-specific/linux/android-udev-rules/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/android-udev-rules/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "android-udev-rules";
-  version = "20231030";
+  version = "20231124";
 
   src = fetchFromGitHub {
     owner = "M0Rf30";
     repo = "android-udev-rules";
     rev = version;
-    sha256 = "sha256-+h0FwvfIoluhldOi6cgVDvmNWe1Lvj1SV3pL8Zh+gRM=";
+    hash = "sha256-pDAAC8RibPtkhVVz5WPj/eUjz0A+8bZt/pjzG8zpaE4=";
   };
 
   installPhase = ''
diff --git a/nixpkgs/pkgs/os-specific/linux/below/default.nix b/nixpkgs/pkgs/os-specific/linux/below/default.nix
index 0a91fd585906..3204bd7dcf27 100644
--- a/nixpkgs/pkgs/os-specific/linux/below/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/below/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "below";
-  version = "0.6.3";
+  version = "0.7.1";
 
   src = fetchFromGitHub {
     owner = "facebookincubator";
     repo = "below";
     rev = "v${version}";
-    sha256 = "sha256-d5a/M2XEw2E2iydopzedqZ/XfQU7KQyTC5NrPTeeNLg=";
+    sha256 = "sha256-2mZBpvLPY6yrEAvB1YlFuaXJlmmNuZqhu3xWADNHbx0=";
   };
 
-  cargoSha256 = "sha256-EoRCmEe9SAySZCm+QhaR4ngik4Arnm4SZjgDM5fSRmk=";
+  cargoHash = "sha256-cTNxWCd4YH5VuZh0GRfBNtHmLqCQ75uyHqROkv1jbRA=";
 
   prePatch = ''sed -i "s,ExecStart=.*/bin,ExecStart=$out/bin," etc/below.service'';
   postInstall = ''
diff --git a/nixpkgs/pkgs/os-specific/linux/cfs-zen-tweaks/default.nix b/nixpkgs/pkgs/os-specific/linux/cfs-zen-tweaks/default.nix
index ef5dfe8e2e06..d7a06ed6e737 100644
--- a/nixpkgs/pkgs/os-specific/linux/cfs-zen-tweaks/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/cfs-zen-tweaks/default.nix
@@ -8,22 +8,22 @@
 
 stdenv.mkDerivation rec {
   pname = "cfs-zen-tweaks";
-  version = "1.2.0";
+  version = "1.3.0";
 
   src = fetchFromGitHub {
     owner = "igo95862";
     repo = "cfs-zen-tweaks";
     rev = version;
-    sha256 = "HRR2tdjNmWyrpbcMlihSdb/7g/tHma3YyXogQpRCVyo=";
+    hash = "sha256-E3sNWWXm0NEqLCzFccd/nfYby+/b/MVjIHeGlDxV1W4=";
   };
 
   preConfigure = ''
-    substituteInPlace set-cfs-zen-tweaks.bash \
+    substituteInPlace set-cfs-zen-tweaks.sh \
       --replace '$(gawk' '$(${gawk}/bin/gawk'
   '';
 
   preFixup = ''
-    chmod +x $out/lib/cfs-zen-tweaks/set-cfs-zen-tweaks.bash
+    chmod +x $out/lib/cfs-zen-tweaks/set-cfs-zen-tweaks.sh
   '';
 
   nativeBuildInputs = [ cmake ];
diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/default.nix
index f4914d843272..c77c01df8508 100644
--- a/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/default.nix
@@ -19,7 +19,6 @@
 , curl
 , libjcat
 , elfutils
-, efivar
 , valgrind
 , meson
 , libuuid
@@ -123,7 +122,7 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "fwupd";
-  version = "1.9.7";
+  version = "1.9.9";
 
   # libfwupd goes to lib
   # daemon, plug-ins and libfwupdplugin go to out
@@ -134,7 +133,7 @@ stdenv.mkDerivation (finalAttrs: {
     owner = "fwupd";
     repo = "fwupd";
     rev = finalAttrs.version;
-    hash = "sha256-NhVCIjkwoTZptctIrkU9HgXzjr+KCUZfEKcjoYgAEdM=";
+    hash = "sha256-UUrG3CMCAC5hyy2U5I4zqvJoSP/+zuiq1P+2Pdb3QD0=";
   };
 
   patches = [
@@ -193,7 +192,6 @@ stdenv.mkDerivation (finalAttrs: {
     bash-completion
     pango
     tpm2-tss
-    efivar
     fwupd-efi
     protobufc
     modemmanager
@@ -207,7 +205,6 @@ stdenv.mkDerivation (finalAttrs: {
 
   mesonFlags = [
     "-Ddocs=enabled"
-    "-Dplugin_dummy=true"
     # We are building the official releases.
     "-Dsupported_build=enabled"
     "-Dlaunchd=disabled"
diff --git a/nixpkgs/pkgs/os-specific/linux/hostapd/default.nix b/nixpkgs/pkgs/os-specific/linux/hostapd/default.nix
index e4b41f3a0c82..37fe57f526a7 100644
--- a/nixpkgs/pkgs/os-specific/linux/hostapd/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/hostapd/default.nix
@@ -62,6 +62,8 @@ stdenv.mkDerivation rec {
 
     # Misc
     CONFIG_RADIUS_SERVER=y
+    CONFIG_MACSEC=y
+    CONFIG_DRIVER_MACSEC_LINUX=y
     CONFIG_FULL_DYNAMIC_VLAN=y
     CONFIG_VLAN_NETLINK=y
     CONFIG_GETRANDOM=y
diff --git a/nixpkgs/pkgs/os-specific/linux/intel-compute-runtime/default.nix b/nixpkgs/pkgs/os-specific/linux/intel-compute-runtime/default.nix
index dacfb76eb9af..0deb493a49b7 100644
--- a/nixpkgs/pkgs/os-specific/linux/intel-compute-runtime/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/intel-compute-runtime/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation rec {
   pname = "intel-compute-runtime";
-  version = "23.30.26918.20";
+  version = "23.35.27191.9";
 
   src = fetchFromGitHub {
     owner = "intel";
     repo = "compute-runtime";
     rev = version;
-    hash = "sha256-dEznHRgAcJa/BBTD/AWJHlA7fNj2IXHHrYcKM4M+/1o=";
+    hash = "sha256-yyuP9erK3bQ5oegLXPM+of6x7fslUXHPlX2q71lnGWA=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
diff --git a/nixpkgs/pkgs/os-specific/linux/irqbalance/default.nix b/nixpkgs/pkgs/os-specific/linux/irqbalance/default.nix
index df1977150136..d73a74ee7eff 100644
--- a/nixpkgs/pkgs/os-specific/linux/irqbalance/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/irqbalance/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "irqbalance";
-  version = "1.9.2";
+  version = "1.9.3";
 
   src = fetchFromGitHub {
     owner = "irqbalance";
     repo = "irqbalance";
     rev = "v${version}";
-    sha256 = "sha256-dk5gdDCXNELTlbZ34gUOVwPHvXF3N07v/ZqeNVfGTGw=";
+    sha256 = "sha256-0e7dV6gncSlAUfkyX7F0FSYJjlvdi/ol7YC2T5afl+Q=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config ];
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/README.md b/nixpkgs/pkgs/os-specific/linux/kernel/README.md
new file mode 100644
index 000000000000..92d5308e1c05
--- /dev/null
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/README.md
@@ -0,0 +1,33 @@
+# How to add a new (major) version of the Linux kernel to Nixpkgs:
+
+1.  Copy the old Nix expression (e.g., `linux-2.6.21.nix`) to the new one (e.g., `linux-2.6.22.nix`) and update it.
+
+2.  Add the new kernel to the `kernels` attribute set in [`linux-kernels.nix`](./linux-kernels.nix) (e.g., create an attribute `kernel_2_6_22`).
+
+3.  Update the kernel configuration. First unpack the kernel. Then for each supported platform (`i686`, `x86_64`, `uml`) do the following:
+
+    1.  Make a copy from the old config (e.g., `config-2.6.21-i686-smp`) to the new one (e.g., `config-2.6.22-i686-smp`).
+
+    2.  Copy the config file for this platform (e.g., `config-2.6.22-i686-smp`) to `.config` in the kernel source tree.
+
+    3.  Run `make oldconfig ARCH={i386,x86_64,um}` and answer all questions. (For the uml configuration, also add `SHELL=bash`.) Make sure to keep the configuration consistent between platforms (i.e., don’t enable some feature on `i686` and disable it on `x86_64`).
+
+    4.  If needed, you can also run `make menuconfig`:
+
+        ```ShellSession
+        $ nix-env -f "<nixpkgs>" -iA ncurses
+        $ export NIX_CFLAGS_LINK=-lncurses
+        $ make menuconfig ARCH=arch
+        ```
+
+    5.  Copy `.config` over the new config file (e.g., `config-2.6.22-i686-smp`).
+
+4.  Test building the kernel:
+
+```ShellSession
+nix-build -A linuxKernel.kernels.kernel_2_6_22
+```
+
+If it compiles, ship it! For extra credit, try booting NixOS with it.
+
+5.  It may be that the new kernel requires updating the external kernel modules and kernel-dependent packages listed in the `linuxPackagesFor` function in `linux-kernels.nix` (such as the NVIDIA drivers, AUFS, etc.). If the updated packages aren’t backwards compatible with older kernels, you may need to keep the older versions around.
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/kernels-org.json b/nixpkgs/pkgs/os-specific/linux/kernel/kernels-org.json
index 94ab60aa67b9..25b28539bc39 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/kernels-org.json
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/kernels-org.json
@@ -1,38 +1,38 @@
 {
     "testing": {
-        "version": "6.7-rc1",
-        "hash": "sha256:1a071vvmm08sp48d0arqzcmqnz5xdb1vflfhxcqwmpzaabjrgadk"
+        "version": "6.7-rc3",
+        "hash": "sha256:1bi80271g76pcajzmzr0dxcmzzlzicqddm38mr7pkz8zi0070arf"
     },
     "6.5": {
-        "version": "6.5.11",
-        "hash": "sha256:06dmb4hbwrms0lp4axphwgj8wbnzsym70sx55lxr501b53wlmqif"
+        "version": "6.5.13",
+        "hash": "sha256:1dfbbydmayfj9npx3z0g38p574pmcx3qgs49dv0npigl48wd9yvq"
     },
     "6.1": {
-        "version": "6.1.62",
-        "hash": "sha256:1v453q4sf0j8708ivs1zmdf645hgimqvxfc8xz7czgnnmipn3zdr"
+        "version": "6.1.64",
+        "hash": "sha256:1ry7dp39010hfja1wial6r6q6ilgygwm7gdz22bg4rzaycwam7b2"
     },
     "5.15": {
-        "version": "5.15.138",
-        "hash": "sha256:1ajaxy97gx0c9cdxiyxa49ykfsykir22i9abfrcizh71ci0yb15g"
+        "version": "5.15.140",
+        "hash": "sha256:0isa9si9wjn10lw41431wdqsbp9y685ch5lzhwswng3g6j5ywaxy"
     },
     "5.10": {
-        "version": "5.10.200",
-        "hash": "sha256:012i41bj8rcqn0vhfxrwq3gg82nb6pp2cwq8n146wj47pwgrcbcx"
+        "version": "5.10.202",
+        "hash": "sha256:12zs2bz2plps6xp80sdg36zkyr00rf5l5c85jl4dd7b9klly04ij"
     },
     "5.4": {
-        "version": "5.4.260",
-        "hash": "sha256:1zpbaipd2j3idj8h9iznlj0ywcq5nkhwj707a1f9ixf82h3q4c4q"
+        "version": "5.4.262",
+        "hash": "sha256:1p34x33gkvpv26zcrpx1i6dr7dknyxj8gnp6caqb8sj58h3slgkx"
     },
     "4.19": {
-        "version": "4.19.298",
-        "hash": "sha256:0mhgq6hdcls1af7nj999x1mds5b37s7vwin8nsb4q0lnx2y1da4x"
+        "version": "4.19.300",
+        "hash": "sha256:0ilksl94gjpc4pzc90swfawsl8lvibpq14nkaxzl0831i219ahd8"
     },
     "4.14": {
-        "version": "4.14.329",
-        "hash": "sha256:1dvb4xf0b7snabznl7bg7gga7ffdmywy8vr8q65pzl9yf6fnhdny"
+        "version": "4.14.331",
+        "hash": "sha256:03sk82dgvccv70i3hy8gf2hw0n4m305f7rxjw93p7jnjrbpdrp1r"
     },
     "6.6": {
-        "version": "6.6.1",
-        "hash": "sha256:0d42b1hbvv9w3y3q4wydr6il0g5a823n54a06p4p5vcpgkadf7ns"
+        "version": "6.6.3",
+        "hash": "sha256:19wmjkyyv5glv1w647qisrv829hhhpba5x905a7p7kch9wyzrv98"
     }
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/linux-rt-5.10.nix b/nixpkgs/pkgs/os-specific/linux/kernel/linux-rt-5.10.nix
index 65ca352b53b8..ce26a38ed069 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/linux-rt-5.10.nix
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/linux-rt-5.10.nix
@@ -6,7 +6,7 @@
 , ... } @ args:
 
 let
-  version = "5.10.199-rt97"; # updated by ./update-rt.sh
+  version = "5.10.201-rt98"; # updated by ./update-rt.sh
   branch = lib.versions.majorMinor version;
   kversion = builtins.elemAt (lib.splitString "-" version) 0;
 in buildLinux (args // {
@@ -17,14 +17,14 @@ in buildLinux (args // {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v5.x/linux-${kversion}.tar.xz";
-    sha256 = "1h944syk7n6c4j1djlx19n77alzwbxcdza77c9ykicgfynhpgsm0";
+    sha256 = "0642y6qj2d4aww6jcki81ba53pvjyfazjxgzgj8brqx8ixchdz3a";
   };
 
   kernelPatches = let rt-patch = {
     name = "rt";
     patch = fetchurl {
       url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz";
-      sha256 = "13k7md0a63q4r5vqqvbszmg3kzp5np0hdaj1siyl4yvs9j78d03s";
+      sha256 = "1g7xbjsfrgins3agz9sq9ia13h5k9605gak7s14z5i4vd34y8pk8";
     };
   }; in [ rt-patch ] ++ kernelPatches;
 
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/linux-testing-bcachefs.nix b/nixpkgs/pkgs/os-specific/linux/kernel/linux-testing-bcachefs.nix
index c58c4e67e4d0..777f942c04e2 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/linux-testing-bcachefs.nix
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/linux-testing-bcachefs.nix
@@ -22,7 +22,7 @@
     extraMeta = {
       homepage = "https://bcachefs.org/";
       branch = "master";
-      maintainers = with lib.maintainers; [ davidak Madouura pedrohlc raitobezarius YellowOnion ];
+      maintainers = with lib.maintainers; [ davidak Madouura raitobezarius YellowOnion ];
     };
   } // argsOverride;
 
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/xanmod-kernels.nix b/nixpkgs/pkgs/os-specific/linux/kernel/xanmod-kernels.nix
index 4f967734d5e0..97e5512e4452 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/xanmod-kernels.nix
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/xanmod-kernels.nix
@@ -6,14 +6,14 @@ let
   # NOTE: When updating these, please also take a look at the changes done to
   # kernel config in the xanmod version commit
   ltsVariant = {
-    version = "6.1.62";
-    hash = "sha256-fo5OQ/MZ+QVdCmLzX0OgFUBedfqrkqp+Ev081RVdtWw=";
+    version = "6.1.63";
+    hash = "sha256-WBMKJCLYexWJuTpli8vjvdms2ZYPXIS0yUxTgAL00io=";
     variant = "lts";
   };
 
   mainVariant = {
-    version = "6.5.11";
-    hash = "sha256-1bb5LG6JvqX5eNSe2Xyu86HxaqkUVkKUf1H3T7bFkGE=";
+    version = "6.5.12";
+    hash = "sha256-zG9+d+hKg0S0qCX2hOc02CowC6s9u82MB45+X1bGYpE=";
     variant = "main";
   };
 
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/zen-kernels.nix b/nixpkgs/pkgs/os-specific/linux/kernel/zen-kernels.nix
index 456a6c7c27dd..e72df64c4a22 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/zen-kernels.nix
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/zen-kernels.nix
@@ -4,16 +4,16 @@ let
   # comments with variant added for update script
   # ./update-zen.py zen
   zenVariant = {
-    version = "6.6.1"; #zen
+    version = "6.6.3"; #zen
     suffix = "zen1"; #zen
-    sha256 = "13m820wggf6pkp351w06mdn2lfcwbn08ydwksyxilqb88vmr0lpq"; #zen
+    sha256 = "0hjn4qq8dppa0cn4rx7n98cxvzhkbn30hlm3bgcv97fwyvglsdwc"; #zen
     isLqx = false;
   };
   # ./update-zen.py lqx
   lqxVariant = {
-    version = "6.5.11"; #lqx
-    suffix = "lqx2"; #lqx
-    sha256 = "0rak2ald95bwb5qlp8pf2g93a0gkv8rypiv5s8dpds3cilwmxrg9"; #lqx
+    version = "6.6.3"; #lqx
+    suffix = "lqx1"; #lqx
+    sha256 = "1mh2pngz589z1c4jqdx2slh1dsmjqq7f1yriz2yp50kkv8abff8z"; #lqx
     isLqx = true;
   };
   zenKernelsFor = { version, suffix, sha256, isLqx }: buildLinux (args // {
diff --git a/nixpkgs/pkgs/os-specific/linux/ksmbd-tools/default.nix b/nixpkgs/pkgs/os-specific/linux/ksmbd-tools/default.nix
index 4098f6c22258..edb9ce3fb8b7 100644
--- a/nixpkgs/pkgs/os-specific/linux/ksmbd-tools/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/ksmbd-tools/default.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ksmbd-tools";
-  version = "3.5.0";
+  version = "3.5.1";
 
   src = fetchFromGitHub {
     owner = "cifsd-team";
     repo = pname;
     rev = version;
-    sha256 = "sha256-8mjfKCazigHnuN7Egf11ZuD+nQx7ZTesn0a4LsVvV/M=";
+    sha256 = "sha256-1Htky39oggDqPYSbF4it2UMIxuoLp0aK+IjGojPgaiU=";
   };
 
   buildInputs = [ glib libnl ] ++ lib.optional withKerberos libkrb5;
diff --git a/nixpkgs/pkgs/os-specific/linux/libcap/default.nix b/nixpkgs/pkgs/os-specific/linux/libcap/default.nix
index 9b23625102ae..3fb3003d77aa 100644
--- a/nixpkgs/pkgs/os-specific/linux/libcap/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/libcap/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
     "BUILD_CC=$(CC_FOR_BUILD)"
     "CC:=$(CC)"
     "CROSS_COMPILE=${stdenv.cc.targetPrefix}"
-  ] ++ lib.optional isStatic "SHARED=no";
+  ] ++ lib.optionals isStatic [ "SHARED=no" "LIBCSTATIC=yes" ];
 
   postPatch = ''
     patchShebangs ./progs/mkcapshdoc.sh
diff --git a/nixpkgs/pkgs/os-specific/linux/libnl-tiny/default.nix b/nixpkgs/pkgs/os-specific/linux/libnl-tiny/default.nix
index 2f5d1d0999a0..ec39b560826d 100644
--- a/nixpkgs/pkgs/os-specific/linux/libnl-tiny/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/libnl-tiny/default.nix
@@ -23,6 +23,6 @@ stdenv.mkDerivation {
     homepage = "https://git.openwrt.org/?p=project/libnl-tiny.git;a=summary";
     license = licenses.isc;
     maintainers = with maintainers; [ mkg20001 ];
-    platforms = platforms.all;
+    platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/libselinux/default.nix b/nixpkgs/pkgs/os-specific/linux/libselinux/default.nix
index 695012effc5c..62db42e13aa0 100644
--- a/nixpkgs/pkgs/os-specific/linux/libselinux/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/libselinux/default.nix
@@ -61,6 +61,8 @@ stdenv.mkDerivation rec {
 
     "LIBSEPOLA=${lib.getLib libsepol}/lib/libsepol.a"
     "ARCH=${stdenv.hostPlatform.linuxArch}"
+  ] ++ optionals (fts != null) [
+    "FTS_LDLIBS=-lfts"
   ] ++ optionals stdenv.hostPlatform.isStatic [
     "DISABLE_SHARED=y"
   ] ++ optionals enablePython [
diff --git a/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/default.nix b/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/default.nix
index a246b587dd4f..d344b85a4d64 100644
--- a/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/default.nix
@@ -163,7 +163,7 @@ lib.makeScope
 
     ln-boot = callPackage ./ln-boot { };
 
-    mes = lib.recurseIntoAttrs (callPackage ./mes { });
+    mes = callPackage ./mes { };
     mes-libc = callPackage ./mes/libc.nix { };
 
     musl11 = callPackage ./musl/1.1.nix {
diff --git a/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix b/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix
index 0cf66c5bc230..03ce9300f316 100644
--- a/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix
@@ -2,22 +2,21 @@
 , fetchurl
 , callPackage
 , kaem
-, m2libc
 , mescc-tools
 }:
 
 # Maintenance note:
 # Build steps have been adapted from build-aux/bootstrap.sh.in
 # as well as the live-bootstrap project
-# https://github.com/fosslinux/live-bootstrap/blob/1bc4296091c51f53a5598050c8956d16e945b0f5/sysa/mes-0.24.2/mes-0.24.2.kaem
+# https://github.com/fosslinux/live-bootstrap/blob/737bf61a26152fb82510a2797f0d712de918aa78/sysa/mes-0.25/mes-0.25.kaem
 
 let
   pname = "mes";
-  version = "0.24.2";
+  version = "0.25";
 
   src = fetchurl {
     url = "mirror://gnu/mes/mes-${version}.tar.gz";
-    sha256 = "0vp8v88zszh1imm3dvdfi3m8cywshdj7xcrsq4cgmss69s2y1nkx";
+    hash = "sha256-MlJQs1Z+2SA7pwFhyDWvAQeec+vtl7S1u3fKUAuCiUA=";
   };
 
   nyacc = callPackage ./nyacc.nix { inherit nyacc; };
@@ -68,11 +67,6 @@ let
     cp mes/module/srfi/srfi-9-struct.mes mes/module/srfi/srfi-9.mes
     cp mes/module/srfi/srfi-9/gnu-struct.mes mes/module/srfi/srfi-9/gnu.mes
 
-    # Fixes to support newer M2-Planet
-    catm x86_defs.M1 ${m2libc}/x86/x86_defs.M1 lib/m2/x86/x86_defs.M1
-    cp x86_defs.M1 lib/m2/x86/x86_defs.M1
-    rm x86_defs.M1
-
     # Remove environment impurities
     __GUILE_LOAD_PATH="\"''${MES_PREFIX}/mes/module:''${MES_PREFIX}/module:${nyacc.guilePath}\""
     boot0_scm=mes/module/mes/boot-0.scm
@@ -109,9 +103,7 @@ let
     cp ''${mescc_in} ''${bin}/bin/mescc.scm
 
     # Build mes-m2
-    mes_cpu=x86
-    stage0_cpu=x86
-    kaem --verbose --strict --file kaem.run
+    kaem --verbose --strict --file kaem.x86
     cp bin/mes-m2 ''${bin}/bin/mes-m2
     chmod 555 ''${bin}/bin/mes-m2
   '';
@@ -232,6 +224,6 @@ let
       ${lib.concatMapStringsSep " " (getRes ".o") (map compile mes_SOURCES)}
   '';
 in {
-  inherit srcPost srcPrefix nyacc;
+  inherit src srcPost srcPrefix nyacc;
   inherit compiler libs;
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/gen-sources.sh b/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/gen-sources.sh
index 3a734129c1f7..d86e5764e065 100755
--- a/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/gen-sources.sh
+++ b/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/gen-sources.sh
@@ -19,10 +19,9 @@ COMPILERS="mescc gcc"
 
 
 format() {
-  echo -n "[ "
-  # Terrible hack to convert a newline-delimited string to space-delimited
-  echo $* | xargs printf '"%s" '
-  echo -n "]"
+  echo "["
+  echo $* | xargs printf '      "%s"\n'
+  echo "    ]"
 }
 
 gen_sources() {
@@ -38,12 +37,12 @@ gen_sources() {
   cat <<EOF
   $mes_cpu.$mes_kernel.$compiler = {
     libc_mini_SOURCES = $(format $libc_mini_SOURCES);
-    libmescc_SOURCES  = $(format $libmescc_SOURCES);
-    libtcc1_SOURCES   = $(format $libtcc1_SOURCES);
-    libc_SOURCES      = $(format $libc_SOURCES);
-    libc_tcc_SOURCES  = $(format $libc_tcc_SOURCES);
-    libc_gnu_SOURCES  = $(format $libc_gnu_SOURCES);
-    mes_SOURCES       = $(format $mes_SOURCES);
+    libmescc_SOURCES = $(format $libmescc_SOURCES);
+    libtcc1_SOURCES = $(format $libtcc1_SOURCES);
+    libc_SOURCES = $(format $libc_SOURCES);
+    libc_tcc_SOURCES = $(format $libc_tcc_SOURCES);
+    libc_gnu_SOURCES = $(format $libc_gnu_SOURCES);
+    mes_SOURCES = $(format $mes_SOURCES);
   };
 EOF
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/nyacc.nix b/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/nyacc.nix
index ed402cbaacf3..c384b4a4c0b4 100644
--- a/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/nyacc.nix
+++ b/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/nyacc.nix
@@ -6,8 +6,8 @@
 let
   pname = "nyacc";
   # NYACC is a tightly coupled dependency of mes. This version is known to work
-  # with mes 0.24.2.
-  # https://git.savannah.gnu.org/cgit/mes.git/tree/INSTALL?h=v0.24.2&id=7562330ec746f09b4060d3081e3377fb7083897d#n31
+  # with mes 0.25.
+  # https://git.savannah.gnu.org/cgit/mes.git/tree/INSTALL?h=v0.25#n31
   version = "1.00.2";
 
   src = fetchurl {
diff --git a/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/sources.nix b/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/sources.nix
index ac534284346d..4b5d3b336575 100644
--- a/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/sources.nix
+++ b/nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/mes/sources.nix
@@ -2,21 +2,1059 @@
 # Do not edit!
 {
   x86.linux.mescc = {
-    libc_mini_SOURCES = [ "lib/mes/eputs.c" "lib/mes/oputs.c" "lib/mes/globals.c" "lib/stdlib/exit.c" "lib/linux/x86-mes-mescc/_exit.c" "lib/linux/x86-mes-mescc/_write.c" "lib/stdlib/puts.c" "lib/string/strlen.c" "lib/mes/mini-write.c" ];
-    libmescc_SOURCES  = [ "lib/mes/globals.c" "lib/linux/x86-mes-mescc/syscall-internal.c" ];
-    libtcc1_SOURCES   = [ "lib/libtcc1.c" ];
-    libc_SOURCES      = [ "lib/mes/eputs.c" "lib/mes/oputs.c" "lib/mes/globals.c" "lib/stdlib/exit.c" "lib/linux/x86-mes-mescc/_exit.c" "lib/linux/x86-mes-mescc/_write.c" "lib/stdlib/puts.c" "lib/string/strlen.c" "lib/ctype/isnumber.c" "lib/mes/abtol.c" "lib/mes/cast.c" "lib/mes/eputc.c" "lib/mes/fdgetc.c" "lib/mes/fdputc.c" "lib/mes/fdputs.c" "lib/mes/fdungetc.c" "lib/mes/itoa.c" "lib/mes/ltoa.c" "lib/mes/ltoab.c" "lib/mes/mes_open.c" "lib/mes/ntoab.c" "lib/mes/oputc.c" "lib/mes/ultoa.c" "lib/mes/utoa.c" "lib/stub/__raise.c" "lib/ctype/isdigit.c" "lib/ctype/isspace.c" "lib/ctype/isxdigit.c" "lib/mes/assert_msg.c" "lib/posix/write.c" "lib/stdlib/atoi.c" "lib/linux/lseek.c" "lib/mes/__assert_fail.c" "lib/mes/__buffered_read.c" "lib/mes/__mes_debug.c" "lib/posix/execv.c" "lib/posix/getcwd.c" "lib/posix/getenv.c" "lib/posix/isatty.c" "lib/posix/open.c" "lib/posix/buffered-read.c" "lib/posix/setenv.c" "lib/posix/wait.c" "lib/stdio/fgetc.c" "lib/stdio/fputc.c" "lib/stdio/fputs.c" "lib/stdio/getc.c" "lib/stdio/getchar.c" "lib/stdio/putc.c" "lib/stdio/putchar.c" "lib/stdio/ungetc.c" "lib/stdlib/free.c" "lib/stdlib/realloc.c" "lib/string/memchr.c" "lib/string/memcmp.c" "lib/string/memcpy.c" "lib/string/memmove.c" "lib/string/memset.c" "lib/string/strcmp.c" "lib/string/strcpy.c" "lib/string/strncmp.c" "lib/posix/raise.c" "lib/linux/access.c" "lib/linux/brk.c" "lib/linux/chmod.c" "lib/linux/clock_gettime.c" "lib/linux/dup.c" "lib/linux/dup2.c" "lib/linux/execve.c" "lib/linux/fork.c" "lib/linux/fsync.c" "lib/linux/_getcwd.c" "lib/linux/gettimeofday.c" "lib/linux/ioctl3.c" "lib/linux/_open3.c" "lib/linux/malloc.c" "lib/linux/_read.c" "lib/linux/time.c" "lib/linux/unlink.c" "lib/linux/waitpid.c" "lib/linux/x86-mes-mescc/syscall.c" "lib/linux/getpid.c" "lib/linux/kill.c" ];
-    libc_tcc_SOURCES  = [ "lib/mes/eputs.c" "lib/mes/oputs.c" "lib/mes/globals.c" "lib/stdlib/exit.c" "lib/linux/x86-mes-mescc/_exit.c" "lib/linux/x86-mes-mescc/_write.c" "lib/stdlib/puts.c" "lib/string/strlen.c" "lib/ctype/isnumber.c" "lib/mes/abtol.c" "lib/mes/cast.c" "lib/mes/eputc.c" "lib/mes/fdgetc.c" "lib/mes/fdputc.c" "lib/mes/fdputs.c" "lib/mes/fdungetc.c" "lib/mes/itoa.c" "lib/mes/ltoa.c" "lib/mes/ltoab.c" "lib/mes/mes_open.c" "lib/mes/ntoab.c" "lib/mes/oputc.c" "lib/mes/ultoa.c" "lib/mes/utoa.c" "lib/stub/__raise.c" "lib/ctype/isdigit.c" "lib/ctype/isspace.c" "lib/ctype/isxdigit.c" "lib/mes/assert_msg.c" "lib/posix/write.c" "lib/stdlib/atoi.c" "lib/linux/lseek.c" "lib/mes/__assert_fail.c" "lib/mes/__buffered_read.c" "lib/mes/__mes_debug.c" "lib/posix/execv.c" "lib/posix/getcwd.c" "lib/posix/getenv.c" "lib/posix/isatty.c" "lib/posix/open.c" "lib/posix/buffered-read.c" "lib/posix/setenv.c" "lib/posix/wait.c" "lib/stdio/fgetc.c" "lib/stdio/fputc.c" "lib/stdio/fputs.c" "lib/stdio/getc.c" "lib/stdio/getchar.c" "lib/stdio/putc.c" "lib/stdio/putchar.c" "lib/stdio/ungetc.c" "lib/stdlib/free.c" "lib/stdlib/realloc.c" "lib/string/memchr.c" "lib/string/memcmp.c" "lib/string/memcpy.c" "lib/string/memmove.c" "lib/string/memset.c" "lib/string/strcmp.c" "lib/string/strcpy.c" "lib/string/strncmp.c" "lib/posix/raise.c" "lib/linux/access.c" "lib/linux/brk.c" "lib/linux/chmod.c" "lib/linux/clock_gettime.c" "lib/linux/dup.c" "lib/linux/dup2.c" "lib/linux/execve.c" "lib/linux/fork.c" "lib/linux/fsync.c" "lib/linux/_getcwd.c" "lib/linux/gettimeofday.c" "lib/linux/ioctl3.c" "lib/linux/_open3.c" "lib/linux/malloc.c" "lib/linux/_read.c" "lib/linux/time.c" "lib/linux/unlink.c" "lib/linux/waitpid.c" "lib/linux/x86-mes-mescc/syscall.c" "lib/linux/getpid.c" "lib/linux/kill.c" "lib/ctype/islower.c" "lib/ctype/isupper.c" "lib/ctype/tolower.c" "lib/ctype/toupper.c" "lib/mes/abtod.c" "lib/mes/dtoab.c" "lib/mes/search-path.c" "lib/posix/execvp.c" "lib/stdio/fclose.c" "lib/stdio/fdopen.c" "lib/stdio/ferror.c" "lib/stdio/fflush.c" "lib/stdio/fopen.c" "lib/stdio/fprintf.c" "lib/stdio/fread.c" "lib/stdio/fseek.c" "lib/stdio/ftell.c" "lib/stdio/fwrite.c" "lib/stdio/printf.c" "lib/stdio/remove.c" "lib/stdio/snprintf.c" "lib/stdio/sprintf.c" "lib/stdio/sscanf.c" "lib/stdio/vfprintf.c" "lib/stdio/vprintf.c" "lib/stdio/vsnprintf.c" "lib/stdio/vsprintf.c" "lib/stdio/vsscanf.c" "lib/stdlib/calloc.c" "lib/stdlib/qsort.c" "lib/stdlib/strtod.c" "lib/stdlib/strtof.c" "lib/stdlib/strtol.c" "lib/stdlib/strtold.c" "lib/stdlib/strtoll.c" "lib/stdlib/strtoul.c" "lib/stdlib/strtoull.c" "lib/string/memmem.c" "lib/string/strcat.c" "lib/string/strchr.c" "lib/string/strlwr.c" "lib/string/strncpy.c" "lib/string/strrchr.c" "lib/string/strstr.c" "lib/string/strupr.c" "lib/stub/sigaction.c" "lib/stub/ldexp.c" "lib/stub/mprotect.c" "lib/stub/localtime.c" "lib/stub/sigemptyset.c" "lib/x86-mes-mescc/setjmp.c" "lib/linux/close.c" "lib/linux/rmdir.c" "lib/linux/stat.c" ];
-    libc_gnu_SOURCES  = [ "lib/mes/eputs.c" "lib/mes/oputs.c" "lib/mes/globals.c" "lib/stdlib/exit.c" "lib/linux/x86-mes-mescc/_exit.c" "lib/linux/x86-mes-mescc/_write.c" "lib/stdlib/puts.c" "lib/string/strlen.c" "lib/ctype/isnumber.c" "lib/mes/abtol.c" "lib/mes/cast.c" "lib/mes/eputc.c" "lib/mes/fdgetc.c" "lib/mes/fdputc.c" "lib/mes/fdputs.c" "lib/mes/fdungetc.c" "lib/mes/itoa.c" "lib/mes/ltoa.c" "lib/mes/ltoab.c" "lib/mes/mes_open.c" "lib/mes/ntoab.c" "lib/mes/oputc.c" "lib/mes/ultoa.c" "lib/mes/utoa.c" "lib/stub/__raise.c" "lib/ctype/isdigit.c" "lib/ctype/isspace.c" "lib/ctype/isxdigit.c" "lib/mes/assert_msg.c" "lib/posix/write.c" "lib/stdlib/atoi.c" "lib/linux/lseek.c" "lib/mes/__assert_fail.c" "lib/mes/__buffered_read.c" "lib/mes/__mes_debug.c" "lib/posix/execv.c" "lib/posix/getcwd.c" "lib/posix/getenv.c" "lib/posix/isatty.c" "lib/posix/open.c" "lib/posix/buffered-read.c" "lib/posix/setenv.c" "lib/posix/wait.c" "lib/stdio/fgetc.c" "lib/stdio/fputc.c" "lib/stdio/fputs.c" "lib/stdio/getc.c" "lib/stdio/getchar.c" "lib/stdio/putc.c" "lib/stdio/putchar.c" "lib/stdio/ungetc.c" "lib/stdlib/free.c" "lib/stdlib/realloc.c" "lib/string/memchr.c" "lib/string/memcmp.c" "lib/string/memcpy.c" "lib/string/memmove.c" "lib/string/memset.c" "lib/string/strcmp.c" "lib/string/strcpy.c" "lib/string/strncmp.c" "lib/posix/raise.c" "lib/linux/access.c" "lib/linux/brk.c" "lib/linux/chmod.c" "lib/linux/clock_gettime.c" "lib/linux/dup.c" "lib/linux/dup2.c" "lib/linux/execve.c" "lib/linux/fork.c" "lib/linux/fsync.c" "lib/linux/_getcwd.c" "lib/linux/gettimeofday.c" "lib/linux/ioctl3.c" "lib/linux/_open3.c" "lib/linux/malloc.c" "lib/linux/_read.c" "lib/linux/time.c" "lib/linux/unlink.c" "lib/linux/waitpid.c" "lib/linux/x86-mes-mescc/syscall.c" "lib/linux/getpid.c" "lib/linux/kill.c" "lib/ctype/islower.c" "lib/ctype/isupper.c" "lib/ctype/tolower.c" "lib/ctype/toupper.c" "lib/mes/abtod.c" "lib/mes/dtoab.c" "lib/mes/search-path.c" "lib/posix/execvp.c" "lib/stdio/fclose.c" "lib/stdio/fdopen.c" "lib/stdio/ferror.c" "lib/stdio/fflush.c" "lib/stdio/fopen.c" "lib/stdio/fprintf.c" "lib/stdio/fread.c" "lib/stdio/fseek.c" "lib/stdio/ftell.c" "lib/stdio/fwrite.c" "lib/stdio/printf.c" "lib/stdio/remove.c" "lib/stdio/snprintf.c" "lib/stdio/sprintf.c" "lib/stdio/sscanf.c" "lib/stdio/vfprintf.c" "lib/stdio/vprintf.c" "lib/stdio/vsnprintf.c" "lib/stdio/vsprintf.c" "lib/stdio/vsscanf.c" "lib/stdlib/calloc.c" "lib/stdlib/qsort.c" "lib/stdlib/strtod.c" "lib/stdlib/strtof.c" "lib/stdlib/strtol.c" "lib/stdlib/strtold.c" "lib/stdlib/strtoll.c" "lib/stdlib/strtoul.c" "lib/stdlib/strtoull.c" "lib/string/memmem.c" "lib/string/strcat.c" "lib/string/strchr.c" "lib/string/strlwr.c" "lib/string/strncpy.c" "lib/string/strrchr.c" "lib/string/strstr.c" "lib/string/strupr.c" "lib/stub/sigaction.c" "lib/stub/ldexp.c" "lib/stub/mprotect.c" "lib/stub/localtime.c" "lib/stub/sigemptyset.c" "lib/x86-mes-mescc/setjmp.c" "lib/linux/close.c" "lib/linux/rmdir.c" "lib/linux/stat.c" "lib/ctype/isalnum.c" "lib/ctype/isalpha.c" "lib/ctype/isascii.c" "lib/ctype/iscntrl.c" "lib/ctype/isgraph.c" "lib/ctype/isprint.c" "lib/ctype/ispunct.c" "lib/dirent/__getdirentries.c" "lib/dirent/closedir.c" "lib/dirent/opendir.c" "lib/dirent/readdir.c" "lib/math/ceil.c" "lib/math/fabs.c" "lib/math/floor.c" "lib/mes/fdgets.c" "lib/posix/alarm.c" "lib/posix/execl.c" "lib/posix/execlp.c" "lib/posix/mktemp.c" "lib/posix/sbrk.c" "lib/posix/sleep.c" "lib/posix/unsetenv.c" "lib/stdio/clearerr.c" "lib/stdio/feof.c" "lib/stdio/fgets.c" "lib/stdio/fileno.c" "lib/stdio/freopen.c" "lib/stdio/fscanf.c" "lib/stdio/perror.c" "lib/stdio/vfscanf.c" "lib/stdlib/__exit.c" "lib/stdlib/abort.c" "lib/stdlib/abs.c" "lib/stdlib/alloca.c" "lib/stdlib/atexit.c" "lib/stdlib/atof.c" "lib/stdlib/atol.c" "lib/stdlib/mbstowcs.c" "lib/string/bcmp.c" "lib/string/bcopy.c" "lib/string/bzero.c" "lib/string/index.c" "lib/string/rindex.c" "lib/string/strcspn.c" "lib/string/strdup.c" "lib/string/strerror.c" "lib/string/strncat.c" "lib/string/strpbrk.c" "lib/string/strspn.c" "lib/stub/__cleanup.c" "lib/stub/atan2.c" "lib/stub/bsearch.c" "lib/stub/chown.c" "lib/stub/cos.c" "lib/stub/ctime.c" "lib/stub/exp.c" "lib/stub/fpurge.c" "lib/stub/freadahead.c" "lib/stub/frexp.c" "lib/stub/getgrgid.c" "lib/stub/getgrnam.c" "lib/stub/getlogin.c" "lib/stub/getpgid.c" "lib/stub/getpgrp.c" "lib/stub/getpwnam.c" "lib/stub/getpwuid.c" "lib/stub/gmtime.c" "lib/stub/log.c" "lib/stub/mktime.c" "lib/stub/modf.c" "lib/stub/pclose.c" "lib/stub/popen.c" "lib/stub/pow.c" "lib/stub/rand.c" "lib/stub/rewind.c" "lib/stub/setbuf.c" "lib/stub/setgrent.c" "lib/stub/setlocale.c" "lib/stub/setvbuf.c" "lib/stub/sigaddset.c" "lib/stub/sigblock.c" "lib/stub/sigdelset.c" "lib/stub/sigsetmask.c" "lib/stub/sin.c" "lib/stub/sqrt.c" "lib/stub/strftime.c" "lib/stub/sys_siglist.c" "lib/stub/system.c" "lib/stub/times.c" "lib/stub/ttyname.c" "lib/stub/umask.c" "lib/stub/utime.c" "lib/linux/chdir.c" "lib/linux/fcntl.c" "lib/linux/fstat.c" "lib/linux/getdents.c" "lib/linux/getegid.c" "lib/linux/geteuid.c" "lib/linux/getgid.c" "lib/linux/getppid.c" "lib/linux/getrusage.c" "lib/linux/getuid.c" "lib/linux/ioctl.c" "lib/linux/link.c" "lib/linux/lstat.c" "lib/linux/mkdir.c" "lib/linux/mknod.c" "lib/linux/nanosleep.c" "lib/linux/pipe.c" "lib/linux/readlink.c" "lib/linux/rename.c" "lib/linux/setgid.c" "lib/linux/settimer.c" "lib/linux/setuid.c" "lib/linux/signal.c" "lib/linux/sigprogmask.c" "lib/linux/symlink.c" ];
-    mes_SOURCES       = [ "src/builtins.c" "src/cc.c" "src/core.c" "src/display.c" "src/eval-apply.c" "src/gc.c" "src/globals.c" "src/hash.c" "src/lib.c" "src/math.c" "src/mes.c" "src/module.c" "src/posix.c" "src/reader.c" "src/stack.c" "src/string.c" "src/struct.c" "src/symbol.c" "src/vector.c" ];
+    libc_mini_SOURCES = [
+      "lib/mes/__init_io.c"
+      "lib/mes/eputs.c"
+      "lib/mes/oputs.c"
+      "lib/mes/globals.c"
+      "lib/stdlib/exit.c"
+      "lib/linux/x86-mes-mescc/_exit.c"
+      "lib/linux/x86-mes-mescc/_write.c"
+      "lib/stdlib/puts.c"
+      "lib/string/strlen.c"
+      "lib/mes/write.c"
+    ];
+    libmescc_SOURCES = [
+      "lib/mes/globals.c"
+      "lib/linux/x86-mes-mescc/syscall-internal.c"
+    ];
+    libtcc1_SOURCES = [
+      "lib/libtcc1.c"
+    ];
+    libc_SOURCES = [
+      "lib/mes/__init_io.c"
+      "lib/mes/eputs.c"
+      "lib/mes/oputs.c"
+      "lib/mes/globals.c"
+      "lib/stdlib/exit.c"
+      "lib/linux/x86-mes-mescc/_exit.c"
+      "lib/linux/x86-mes-mescc/_write.c"
+      "lib/stdlib/puts.c"
+      "lib/string/strlen.c"
+      "lib/ctype/isnumber.c"
+      "lib/mes/abtol.c"
+      "lib/mes/cast.c"
+      "lib/mes/eputc.c"
+      "lib/mes/fdgetc.c"
+      "lib/mes/fdputc.c"
+      "lib/mes/fdputs.c"
+      "lib/mes/fdungetc.c"
+      "lib/mes/itoa.c"
+      "lib/mes/ltoa.c"
+      "lib/mes/ltoab.c"
+      "lib/mes/mes_open.c"
+      "lib/mes/ntoab.c"
+      "lib/mes/oputc.c"
+      "lib/mes/ultoa.c"
+      "lib/mes/utoa.c"
+      "lib/stub/__raise.c"
+      "lib/ctype/isdigit.c"
+      "lib/ctype/isspace.c"
+      "lib/ctype/isxdigit.c"
+      "lib/mes/assert_msg.c"
+      "lib/posix/write.c"
+      "lib/stdlib/atoi.c"
+      "lib/linux/lseek.c"
+      "lib/mes/__assert_fail.c"
+      "lib/mes/__buffered_read.c"
+      "lib/mes/__mes_debug.c"
+      "lib/posix/execv.c"
+      "lib/posix/getcwd.c"
+      "lib/posix/getenv.c"
+      "lib/posix/isatty.c"
+      "lib/posix/open.c"
+      "lib/posix/buffered-read.c"
+      "lib/posix/setenv.c"
+      "lib/posix/wait.c"
+      "lib/stdio/fgetc.c"
+      "lib/stdio/fputc.c"
+      "lib/stdio/fputs.c"
+      "lib/stdio/getc.c"
+      "lib/stdio/getchar.c"
+      "lib/stdio/putc.c"
+      "lib/stdio/putchar.c"
+      "lib/stdio/ungetc.c"
+      "lib/stdlib/free.c"
+      "lib/stdlib/realloc.c"
+      "lib/string/memchr.c"
+      "lib/string/memcmp.c"
+      "lib/string/memcpy.c"
+      "lib/string/memmove.c"
+      "lib/string/memset.c"
+      "lib/string/strcmp.c"
+      "lib/string/strcpy.c"
+      "lib/string/strncmp.c"
+      "lib/posix/raise.c"
+      "lib/linux/access.c"
+      "lib/linux/brk.c"
+      "lib/linux/chmod.c"
+      "lib/linux/clock_gettime.c"
+      "lib/linux/dup.c"
+      "lib/linux/dup2.c"
+      "lib/linux/execve.c"
+      "lib/linux/fork.c"
+      "lib/linux/fsync.c"
+      "lib/linux/_getcwd.c"
+      "lib/linux/gettimeofday.c"
+      "lib/linux/ioctl3.c"
+      "lib/linux/_open3.c"
+      "lib/linux/malloc.c"
+      "lib/linux/_read.c"
+      "lib/linux/time.c"
+      "lib/linux/unlink.c"
+      "lib/linux/wait4.c"
+      "lib/linux/waitpid.c"
+      "lib/linux/x86-mes-mescc/syscall.c"
+      "lib/linux/getpid.c"
+      "lib/linux/kill.c"
+    ];
+    libc_tcc_SOURCES = [
+      "lib/mes/__init_io.c"
+      "lib/mes/eputs.c"
+      "lib/mes/oputs.c"
+      "lib/mes/globals.c"
+      "lib/stdlib/exit.c"
+      "lib/linux/x86-mes-mescc/_exit.c"
+      "lib/linux/x86-mes-mescc/_write.c"
+      "lib/stdlib/puts.c"
+      "lib/string/strlen.c"
+      "lib/ctype/isnumber.c"
+      "lib/mes/abtol.c"
+      "lib/mes/cast.c"
+      "lib/mes/eputc.c"
+      "lib/mes/fdgetc.c"
+      "lib/mes/fdputc.c"
+      "lib/mes/fdputs.c"
+      "lib/mes/fdungetc.c"
+      "lib/mes/itoa.c"
+      "lib/mes/ltoa.c"
+      "lib/mes/ltoab.c"
+      "lib/mes/mes_open.c"
+      "lib/mes/ntoab.c"
+      "lib/mes/oputc.c"
+      "lib/mes/ultoa.c"
+      "lib/mes/utoa.c"
+      "lib/stub/__raise.c"
+      "lib/ctype/isdigit.c"
+      "lib/ctype/isspace.c"
+      "lib/ctype/isxdigit.c"
+      "lib/mes/assert_msg.c"
+      "lib/posix/write.c"
+      "lib/stdlib/atoi.c"
+      "lib/linux/lseek.c"
+      "lib/mes/__assert_fail.c"
+      "lib/mes/__buffered_read.c"
+      "lib/mes/__mes_debug.c"
+      "lib/posix/execv.c"
+      "lib/posix/getcwd.c"
+      "lib/posix/getenv.c"
+      "lib/posix/isatty.c"
+      "lib/posix/open.c"
+      "lib/posix/buffered-read.c"
+      "lib/posix/setenv.c"
+      "lib/posix/wait.c"
+      "lib/stdio/fgetc.c"
+      "lib/stdio/fputc.c"
+      "lib/stdio/fputs.c"
+      "lib/stdio/getc.c"
+      "lib/stdio/getchar.c"
+      "lib/stdio/putc.c"
+      "lib/stdio/putchar.c"
+      "lib/stdio/ungetc.c"
+      "lib/stdlib/free.c"
+      "lib/stdlib/realloc.c"
+      "lib/string/memchr.c"
+      "lib/string/memcmp.c"
+      "lib/string/memcpy.c"
+      "lib/string/memmove.c"
+      "lib/string/memset.c"
+      "lib/string/strcmp.c"
+      "lib/string/strcpy.c"
+      "lib/string/strncmp.c"
+      "lib/posix/raise.c"
+      "lib/linux/access.c"
+      "lib/linux/brk.c"
+      "lib/linux/chmod.c"
+      "lib/linux/clock_gettime.c"
+      "lib/linux/dup.c"
+      "lib/linux/dup2.c"
+      "lib/linux/execve.c"
+      "lib/linux/fork.c"
+      "lib/linux/fsync.c"
+      "lib/linux/_getcwd.c"
+      "lib/linux/gettimeofday.c"
+      "lib/linux/ioctl3.c"
+      "lib/linux/_open3.c"
+      "lib/linux/malloc.c"
+      "lib/linux/_read.c"
+      "lib/linux/time.c"
+      "lib/linux/unlink.c"
+      "lib/linux/wait4.c"
+      "lib/linux/waitpid.c"
+      "lib/linux/x86-mes-mescc/syscall.c"
+      "lib/linux/getpid.c"
+      "lib/linux/kill.c"
+      "lib/ctype/islower.c"
+      "lib/ctype/isupper.c"
+      "lib/ctype/tolower.c"
+      "lib/ctype/toupper.c"
+      "lib/mes/abtod.c"
+      "lib/mes/dtoab.c"
+      "lib/mes/search-path.c"
+      "lib/posix/execvp.c"
+      "lib/stdio/fclose.c"
+      "lib/stdio/fdopen.c"
+      "lib/stdio/ferror.c"
+      "lib/stdio/fflush.c"
+      "lib/stdio/fopen.c"
+      "lib/stdio/fprintf.c"
+      "lib/stdio/fread.c"
+      "lib/stdio/fseek.c"
+      "lib/stdio/ftell.c"
+      "lib/stdio/fwrite.c"
+      "lib/stdio/printf.c"
+      "lib/stdio/remove.c"
+      "lib/stdio/snprintf.c"
+      "lib/stdio/sprintf.c"
+      "lib/stdio/sscanf.c"
+      "lib/stdio/vfprintf.c"
+      "lib/stdio/vprintf.c"
+      "lib/stdio/vsnprintf.c"
+      "lib/stdio/vsprintf.c"
+      "lib/stdio/vsscanf.c"
+      "lib/stdlib/calloc.c"
+      "lib/stdlib/qsort.c"
+      "lib/stdlib/strtod.c"
+      "lib/stdlib/strtof.c"
+      "lib/stdlib/strtol.c"
+      "lib/stdlib/strtold.c"
+      "lib/stdlib/strtoll.c"
+      "lib/stdlib/strtoul.c"
+      "lib/stdlib/strtoull.c"
+      "lib/string/memmem.c"
+      "lib/string/strcat.c"
+      "lib/string/strchr.c"
+      "lib/string/strlwr.c"
+      "lib/string/strncpy.c"
+      "lib/string/strrchr.c"
+      "lib/string/strstr.c"
+      "lib/string/strupr.c"
+      "lib/stub/sigaction.c"
+      "lib/stub/ldexp.c"
+      "lib/stub/mprotect.c"
+      "lib/stub/localtime.c"
+      "lib/stub/sigemptyset.c"
+      "lib/x86-mes-mescc/setjmp.c"
+      "lib/linux/close.c"
+      "lib/linux/rmdir.c"
+      "lib/linux/stat.c"
+    ];
+    libc_gnu_SOURCES = [
+      "lib/mes/__init_io.c"
+      "lib/mes/eputs.c"
+      "lib/mes/oputs.c"
+      "lib/mes/globals.c"
+      "lib/stdlib/exit.c"
+      "lib/linux/x86-mes-mescc/_exit.c"
+      "lib/linux/x86-mes-mescc/_write.c"
+      "lib/stdlib/puts.c"
+      "lib/string/strlen.c"
+      "lib/ctype/isnumber.c"
+      "lib/mes/abtol.c"
+      "lib/mes/cast.c"
+      "lib/mes/eputc.c"
+      "lib/mes/fdgetc.c"
+      "lib/mes/fdputc.c"
+      "lib/mes/fdputs.c"
+      "lib/mes/fdungetc.c"
+      "lib/mes/itoa.c"
+      "lib/mes/ltoa.c"
+      "lib/mes/ltoab.c"
+      "lib/mes/mes_open.c"
+      "lib/mes/ntoab.c"
+      "lib/mes/oputc.c"
+      "lib/mes/ultoa.c"
+      "lib/mes/utoa.c"
+      "lib/stub/__raise.c"
+      "lib/ctype/isdigit.c"
+      "lib/ctype/isspace.c"
+      "lib/ctype/isxdigit.c"
+      "lib/mes/assert_msg.c"
+      "lib/posix/write.c"
+      "lib/stdlib/atoi.c"
+      "lib/linux/lseek.c"
+      "lib/mes/__assert_fail.c"
+      "lib/mes/__buffered_read.c"
+      "lib/mes/__mes_debug.c"
+      "lib/posix/execv.c"
+      "lib/posix/getcwd.c"
+      "lib/posix/getenv.c"
+      "lib/posix/isatty.c"
+      "lib/posix/open.c"
+      "lib/posix/buffered-read.c"
+      "lib/posix/setenv.c"
+      "lib/posix/wait.c"
+      "lib/stdio/fgetc.c"
+      "lib/stdio/fputc.c"
+      "lib/stdio/fputs.c"
+      "lib/stdio/getc.c"
+      "lib/stdio/getchar.c"
+      "lib/stdio/putc.c"
+      "lib/stdio/putchar.c"
+      "lib/stdio/ungetc.c"
+      "lib/stdlib/free.c"
+      "lib/stdlib/realloc.c"
+      "lib/string/memchr.c"
+      "lib/string/memcmp.c"
+      "lib/string/memcpy.c"
+      "lib/string/memmove.c"
+      "lib/string/memset.c"
+      "lib/string/strcmp.c"
+      "lib/string/strcpy.c"
+      "lib/string/strncmp.c"
+      "lib/posix/raise.c"
+      "lib/linux/access.c"
+      "lib/linux/brk.c"
+      "lib/linux/chmod.c"
+      "lib/linux/clock_gettime.c"
+      "lib/linux/dup.c"
+      "lib/linux/dup2.c"
+      "lib/linux/execve.c"
+      "lib/linux/fork.c"
+      "lib/linux/fsync.c"
+      "lib/linux/_getcwd.c"
+      "lib/linux/gettimeofday.c"
+      "lib/linux/ioctl3.c"
+      "lib/linux/_open3.c"
+      "lib/linux/malloc.c"
+      "lib/linux/_read.c"
+      "lib/linux/time.c"
+      "lib/linux/unlink.c"
+      "lib/linux/wait4.c"
+      "lib/linux/waitpid.c"
+      "lib/linux/x86-mes-mescc/syscall.c"
+      "lib/linux/getpid.c"
+      "lib/linux/kill.c"
+      "lib/ctype/islower.c"
+      "lib/ctype/isupper.c"
+      "lib/ctype/tolower.c"
+      "lib/ctype/toupper.c"
+      "lib/mes/abtod.c"
+      "lib/mes/dtoab.c"
+      "lib/mes/search-path.c"
+      "lib/posix/execvp.c"
+      "lib/stdio/fclose.c"
+      "lib/stdio/fdopen.c"
+      "lib/stdio/ferror.c"
+      "lib/stdio/fflush.c"
+      "lib/stdio/fopen.c"
+      "lib/stdio/fprintf.c"
+      "lib/stdio/fread.c"
+      "lib/stdio/fseek.c"
+      "lib/stdio/ftell.c"
+      "lib/stdio/fwrite.c"
+      "lib/stdio/printf.c"
+      "lib/stdio/remove.c"
+      "lib/stdio/snprintf.c"
+      "lib/stdio/sprintf.c"
+      "lib/stdio/sscanf.c"
+      "lib/stdio/vfprintf.c"
+      "lib/stdio/vprintf.c"
+      "lib/stdio/vsnprintf.c"
+      "lib/stdio/vsprintf.c"
+      "lib/stdio/vsscanf.c"
+      "lib/stdlib/calloc.c"
+      "lib/stdlib/qsort.c"
+      "lib/stdlib/strtod.c"
+      "lib/stdlib/strtof.c"
+      "lib/stdlib/strtol.c"
+      "lib/stdlib/strtold.c"
+      "lib/stdlib/strtoll.c"
+      "lib/stdlib/strtoul.c"
+      "lib/stdlib/strtoull.c"
+      "lib/string/memmem.c"
+      "lib/string/strcat.c"
+      "lib/string/strchr.c"
+      "lib/string/strlwr.c"
+      "lib/string/strncpy.c"
+      "lib/string/strrchr.c"
+      "lib/string/strstr.c"
+      "lib/string/strupr.c"
+      "lib/stub/sigaction.c"
+      "lib/stub/ldexp.c"
+      "lib/stub/mprotect.c"
+      "lib/stub/localtime.c"
+      "lib/stub/sigemptyset.c"
+      "lib/x86-mes-mescc/setjmp.c"
+      "lib/linux/close.c"
+      "lib/linux/rmdir.c"
+      "lib/linux/stat.c"
+      "lib/ctype/isalnum.c"
+      "lib/ctype/isalpha.c"
+      "lib/ctype/isascii.c"
+      "lib/ctype/iscntrl.c"
+      "lib/ctype/isgraph.c"
+      "lib/ctype/isprint.c"
+      "lib/ctype/ispunct.c"
+      "lib/dirent/__getdirentries.c"
+      "lib/dirent/closedir.c"
+      "lib/dirent/opendir.c"
+      "lib/dirent/readdir.c"
+      "lib/math/ceil.c"
+      "lib/math/fabs.c"
+      "lib/math/floor.c"
+      "lib/mes/fdgets.c"
+      "lib/posix/alarm.c"
+      "lib/posix/execl.c"
+      "lib/posix/execlp.c"
+      "lib/posix/mktemp.c"
+      "lib/posix/sbrk.c"
+      "lib/posix/sleep.c"
+      "lib/posix/unsetenv.c"
+      "lib/stdio/clearerr.c"
+      "lib/stdio/feof.c"
+      "lib/stdio/fgets.c"
+      "lib/stdio/fileno.c"
+      "lib/stdio/freopen.c"
+      "lib/stdio/fscanf.c"
+      "lib/stdio/perror.c"
+      "lib/stdio/vfscanf.c"
+      "lib/stdlib/__exit.c"
+      "lib/stdlib/abort.c"
+      "lib/stdlib/abs.c"
+      "lib/stdlib/alloca.c"
+      "lib/stdlib/atexit.c"
+      "lib/stdlib/atof.c"
+      "lib/stdlib/atol.c"
+      "lib/stdlib/mbstowcs.c"
+      "lib/string/bcmp.c"
+      "lib/string/bcopy.c"
+      "lib/string/bzero.c"
+      "lib/string/index.c"
+      "lib/string/rindex.c"
+      "lib/string/strcspn.c"
+      "lib/string/strdup.c"
+      "lib/string/strerror.c"
+      "lib/string/strncat.c"
+      "lib/string/strpbrk.c"
+      "lib/string/strspn.c"
+      "lib/stub/__cleanup.c"
+      "lib/stub/atan2.c"
+      "lib/stub/bsearch.c"
+      "lib/stub/chown.c"
+      "lib/stub/cos.c"
+      "lib/stub/ctime.c"
+      "lib/stub/exp.c"
+      "lib/stub/fpurge.c"
+      "lib/stub/freadahead.c"
+      "lib/stub/frexp.c"
+      "lib/stub/getgrgid.c"
+      "lib/stub/getgrnam.c"
+      "lib/stub/getlogin.c"
+      "lib/stub/getpgid.c"
+      "lib/stub/getpgrp.c"
+      "lib/stub/getpwnam.c"
+      "lib/stub/getpwuid.c"
+      "lib/stub/gmtime.c"
+      "lib/stub/log.c"
+      "lib/stub/mktime.c"
+      "lib/stub/modf.c"
+      "lib/stub/pclose.c"
+      "lib/stub/popen.c"
+      "lib/stub/pow.c"
+      "lib/stub/rand.c"
+      "lib/stub/rewind.c"
+      "lib/stub/setbuf.c"
+      "lib/stub/setgrent.c"
+      "lib/stub/setlocale.c"
+      "lib/stub/setvbuf.c"
+      "lib/stub/sigaddset.c"
+      "lib/stub/sigblock.c"
+      "lib/stub/sigdelset.c"
+      "lib/stub/sigsetmask.c"
+      "lib/stub/sin.c"
+      "lib/stub/sqrt.c"
+      "lib/stub/strftime.c"
+      "lib/stub/sys_siglist.c"
+      "lib/stub/system.c"
+      "lib/stub/times.c"
+      "lib/stub/ttyname.c"
+      "lib/stub/umask.c"
+      "lib/stub/utime.c"
+      "lib/linux/chdir.c"
+      "lib/linux/fcntl.c"
+      "lib/linux/fstat.c"
+      "lib/linux/getdents.c"
+      "lib/linux/getegid.c"
+      "lib/linux/geteuid.c"
+      "lib/linux/getgid.c"
+      "lib/linux/getppid.c"
+      "lib/linux/getrusage.c"
+      "lib/linux/getuid.c"
+      "lib/linux/ioctl.c"
+      "lib/linux/link.c"
+      "lib/linux/lstat.c"
+      "lib/linux/mkdir.c"
+      "lib/linux/mknod.c"
+      "lib/linux/nanosleep.c"
+      "lib/linux/pipe.c"
+      "lib/linux/readlink.c"
+      "lib/linux/rename.c"
+      "lib/linux/setgid.c"
+      "lib/linux/settimer.c"
+      "lib/linux/setuid.c"
+      "lib/linux/signal.c"
+      "lib/linux/sigprogmask.c"
+      "lib/linux/symlink.c"
+    ];
+    mes_SOURCES = [
+      "src/builtins.c"
+      "src/cc.c"
+      "src/core.c"
+      "src/display.c"
+      "src/eval-apply.c"
+      "src/gc.c"
+      "src/globals.c"
+      "src/hash.c"
+      "src/lib.c"
+      "src/math.c"
+      "src/mes.c"
+      "src/module.c"
+      "src/posix.c"
+      "src/reader.c"
+      "src/stack.c"
+      "src/string.c"
+      "src/struct.c"
+      "src/symbol.c"
+      "src/vector.c"
+    ];
   };
   x86.linux.gcc = {
-    libc_mini_SOURCES = [ "lib/mes/eputs.c" "lib/mes/oputs.c" "lib/mes/globals.c" "lib/stdlib/exit.c" "lib/linux/x86-mes-gcc/_exit.c" "lib/linux/x86-mes-gcc/_write.c" "lib/stdlib/puts.c" "lib/string/strlen.c" "lib/mes/mini-write.c" ];
-    libmescc_SOURCES  = [ "lib/mes/globals.c" "lib/linux/x86-mes-gcc/syscall-internal.c" ];
-    libtcc1_SOURCES   = [ "lib/libtcc1.c" ];
-    libc_SOURCES      = [ "lib/mes/eputs.c" "lib/mes/oputs.c" "lib/mes/globals.c" "lib/stdlib/exit.c" "lib/linux/x86-mes-gcc/_exit.c" "lib/linux/x86-mes-gcc/_write.c" "lib/stdlib/puts.c" "lib/string/strlen.c" "lib/ctype/isnumber.c" "lib/mes/abtol.c" "lib/mes/cast.c" "lib/mes/eputc.c" "lib/mes/fdgetc.c" "lib/mes/fdputc.c" "lib/mes/fdputs.c" "lib/mes/fdungetc.c" "lib/mes/itoa.c" "lib/mes/ltoa.c" "lib/mes/ltoab.c" "lib/mes/mes_open.c" "lib/mes/ntoab.c" "lib/mes/oputc.c" "lib/mes/ultoa.c" "lib/mes/utoa.c" "lib/stub/__raise.c" "lib/ctype/isdigit.c" "lib/ctype/isspace.c" "lib/ctype/isxdigit.c" "lib/mes/assert_msg.c" "lib/posix/write.c" "lib/stdlib/atoi.c" "lib/linux/lseek.c" "lib/mes/__assert_fail.c" "lib/mes/__buffered_read.c" "lib/mes/__mes_debug.c" "lib/posix/execv.c" "lib/posix/getcwd.c" "lib/posix/getenv.c" "lib/posix/isatty.c" "lib/posix/open.c" "lib/posix/buffered-read.c" "lib/posix/setenv.c" "lib/posix/wait.c" "lib/stdio/fgetc.c" "lib/stdio/fputc.c" "lib/stdio/fputs.c" "lib/stdio/getc.c" "lib/stdio/getchar.c" "lib/stdio/putc.c" "lib/stdio/putchar.c" "lib/stdio/ungetc.c" "lib/stdlib/free.c" "lib/stdlib/realloc.c" "lib/string/memchr.c" "lib/string/memcmp.c" "lib/string/memcpy.c" "lib/string/memmove.c" "lib/string/memset.c" "lib/string/strcmp.c" "lib/string/strcpy.c" "lib/string/strncmp.c" "lib/posix/raise.c" "lib/linux/access.c" "lib/linux/brk.c" "lib/linux/chmod.c" "lib/linux/clock_gettime.c" "lib/linux/dup.c" "lib/linux/dup2.c" "lib/linux/execve.c" "lib/linux/fork.c" "lib/linux/fsync.c" "lib/linux/_getcwd.c" "lib/linux/gettimeofday.c" "lib/linux/ioctl3.c" "lib/linux/_open3.c" "lib/linux/malloc.c" "lib/linux/_read.c" "lib/linux/time.c" "lib/linux/unlink.c" "lib/linux/waitpid.c" "lib/linux/x86-mes-gcc/syscall.c" "lib/linux/getpid.c" "lib/linux/kill.c" ];
-    libc_tcc_SOURCES  = [ "lib/mes/eputs.c" "lib/mes/oputs.c" "lib/mes/globals.c" "lib/stdlib/exit.c" "lib/linux/x86-mes-gcc/_exit.c" "lib/linux/x86-mes-gcc/_write.c" "lib/stdlib/puts.c" "lib/string/strlen.c" "lib/ctype/isnumber.c" "lib/mes/abtol.c" "lib/mes/cast.c" "lib/mes/eputc.c" "lib/mes/fdgetc.c" "lib/mes/fdputc.c" "lib/mes/fdputs.c" "lib/mes/fdungetc.c" "lib/mes/itoa.c" "lib/mes/ltoa.c" "lib/mes/ltoab.c" "lib/mes/mes_open.c" "lib/mes/ntoab.c" "lib/mes/oputc.c" "lib/mes/ultoa.c" "lib/mes/utoa.c" "lib/stub/__raise.c" "lib/ctype/isdigit.c" "lib/ctype/isspace.c" "lib/ctype/isxdigit.c" "lib/mes/assert_msg.c" "lib/posix/write.c" "lib/stdlib/atoi.c" "lib/linux/lseek.c" "lib/mes/__assert_fail.c" "lib/mes/__buffered_read.c" "lib/mes/__mes_debug.c" "lib/posix/execv.c" "lib/posix/getcwd.c" "lib/posix/getenv.c" "lib/posix/isatty.c" "lib/posix/open.c" "lib/posix/buffered-read.c" "lib/posix/setenv.c" "lib/posix/wait.c" "lib/stdio/fgetc.c" "lib/stdio/fputc.c" "lib/stdio/fputs.c" "lib/stdio/getc.c" "lib/stdio/getchar.c" "lib/stdio/putc.c" "lib/stdio/putchar.c" "lib/stdio/ungetc.c" "lib/stdlib/free.c" "lib/stdlib/realloc.c" "lib/string/memchr.c" "lib/string/memcmp.c" "lib/string/memcpy.c" "lib/string/memmove.c" "lib/string/memset.c" "lib/string/strcmp.c" "lib/string/strcpy.c" "lib/string/strncmp.c" "lib/posix/raise.c" "lib/linux/access.c" "lib/linux/brk.c" "lib/linux/chmod.c" "lib/linux/clock_gettime.c" "lib/linux/dup.c" "lib/linux/dup2.c" "lib/linux/execve.c" "lib/linux/fork.c" "lib/linux/fsync.c" "lib/linux/_getcwd.c" "lib/linux/gettimeofday.c" "lib/linux/ioctl3.c" "lib/linux/_open3.c" "lib/linux/malloc.c" "lib/linux/_read.c" "lib/linux/time.c" "lib/linux/unlink.c" "lib/linux/waitpid.c" "lib/linux/x86-mes-gcc/syscall.c" "lib/linux/getpid.c" "lib/linux/kill.c" "lib/ctype/islower.c" "lib/ctype/isupper.c" "lib/ctype/tolower.c" "lib/ctype/toupper.c" "lib/mes/abtod.c" "lib/mes/dtoab.c" "lib/mes/search-path.c" "lib/posix/execvp.c" "lib/stdio/fclose.c" "lib/stdio/fdopen.c" "lib/stdio/ferror.c" "lib/stdio/fflush.c" "lib/stdio/fopen.c" "lib/stdio/fprintf.c" "lib/stdio/fread.c" "lib/stdio/fseek.c" "lib/stdio/ftell.c" "lib/stdio/fwrite.c" "lib/stdio/printf.c" "lib/stdio/remove.c" "lib/stdio/snprintf.c" "lib/stdio/sprintf.c" "lib/stdio/sscanf.c" "lib/stdio/vfprintf.c" "lib/stdio/vprintf.c" "lib/stdio/vsnprintf.c" "lib/stdio/vsprintf.c" "lib/stdio/vsscanf.c" "lib/stdlib/calloc.c" "lib/stdlib/qsort.c" "lib/stdlib/strtod.c" "lib/stdlib/strtof.c" "lib/stdlib/strtol.c" "lib/stdlib/strtold.c" "lib/stdlib/strtoll.c" "lib/stdlib/strtoul.c" "lib/stdlib/strtoull.c" "lib/string/memmem.c" "lib/string/strcat.c" "lib/string/strchr.c" "lib/string/strlwr.c" "lib/string/strncpy.c" "lib/string/strrchr.c" "lib/string/strstr.c" "lib/string/strupr.c" "lib/stub/sigaction.c" "lib/stub/ldexp.c" "lib/stub/mprotect.c" "lib/stub/localtime.c" "lib/stub/sigemptyset.c" "lib/x86-mes-gcc/setjmp.c" "lib/linux/close.c" "lib/linux/rmdir.c" "lib/linux/stat.c" ];
-    libc_gnu_SOURCES  = [ "lib/mes/eputs.c" "lib/mes/oputs.c" "lib/mes/globals.c" "lib/stdlib/exit.c" "lib/linux/x86-mes-gcc/_exit.c" "lib/linux/x86-mes-gcc/_write.c" "lib/stdlib/puts.c" "lib/string/strlen.c" "lib/ctype/isnumber.c" "lib/mes/abtol.c" "lib/mes/cast.c" "lib/mes/eputc.c" "lib/mes/fdgetc.c" "lib/mes/fdputc.c" "lib/mes/fdputs.c" "lib/mes/fdungetc.c" "lib/mes/itoa.c" "lib/mes/ltoa.c" "lib/mes/ltoab.c" "lib/mes/mes_open.c" "lib/mes/ntoab.c" "lib/mes/oputc.c" "lib/mes/ultoa.c" "lib/mes/utoa.c" "lib/stub/__raise.c" "lib/ctype/isdigit.c" "lib/ctype/isspace.c" "lib/ctype/isxdigit.c" "lib/mes/assert_msg.c" "lib/posix/write.c" "lib/stdlib/atoi.c" "lib/linux/lseek.c" "lib/mes/__assert_fail.c" "lib/mes/__buffered_read.c" "lib/mes/__mes_debug.c" "lib/posix/execv.c" "lib/posix/getcwd.c" "lib/posix/getenv.c" "lib/posix/isatty.c" "lib/posix/open.c" "lib/posix/buffered-read.c" "lib/posix/setenv.c" "lib/posix/wait.c" "lib/stdio/fgetc.c" "lib/stdio/fputc.c" "lib/stdio/fputs.c" "lib/stdio/getc.c" "lib/stdio/getchar.c" "lib/stdio/putc.c" "lib/stdio/putchar.c" "lib/stdio/ungetc.c" "lib/stdlib/free.c" "lib/stdlib/realloc.c" "lib/string/memchr.c" "lib/string/memcmp.c" "lib/string/memcpy.c" "lib/string/memmove.c" "lib/string/memset.c" "lib/string/strcmp.c" "lib/string/strcpy.c" "lib/string/strncmp.c" "lib/posix/raise.c" "lib/linux/access.c" "lib/linux/brk.c" "lib/linux/chmod.c" "lib/linux/clock_gettime.c" "lib/linux/dup.c" "lib/linux/dup2.c" "lib/linux/execve.c" "lib/linux/fork.c" "lib/linux/fsync.c" "lib/linux/_getcwd.c" "lib/linux/gettimeofday.c" "lib/linux/ioctl3.c" "lib/linux/_open3.c" "lib/linux/malloc.c" "lib/linux/_read.c" "lib/linux/time.c" "lib/linux/unlink.c" "lib/linux/waitpid.c" "lib/linux/x86-mes-gcc/syscall.c" "lib/linux/getpid.c" "lib/linux/kill.c" "lib/ctype/islower.c" "lib/ctype/isupper.c" "lib/ctype/tolower.c" "lib/ctype/toupper.c" "lib/mes/abtod.c" "lib/mes/dtoab.c" "lib/mes/search-path.c" "lib/posix/execvp.c" "lib/stdio/fclose.c" "lib/stdio/fdopen.c" "lib/stdio/ferror.c" "lib/stdio/fflush.c" "lib/stdio/fopen.c" "lib/stdio/fprintf.c" "lib/stdio/fread.c" "lib/stdio/fseek.c" "lib/stdio/ftell.c" "lib/stdio/fwrite.c" "lib/stdio/printf.c" "lib/stdio/remove.c" "lib/stdio/snprintf.c" "lib/stdio/sprintf.c" "lib/stdio/sscanf.c" "lib/stdio/vfprintf.c" "lib/stdio/vprintf.c" "lib/stdio/vsnprintf.c" "lib/stdio/vsprintf.c" "lib/stdio/vsscanf.c" "lib/stdlib/calloc.c" "lib/stdlib/qsort.c" "lib/stdlib/strtod.c" "lib/stdlib/strtof.c" "lib/stdlib/strtol.c" "lib/stdlib/strtold.c" "lib/stdlib/strtoll.c" "lib/stdlib/strtoul.c" "lib/stdlib/strtoull.c" "lib/string/memmem.c" "lib/string/strcat.c" "lib/string/strchr.c" "lib/string/strlwr.c" "lib/string/strncpy.c" "lib/string/strrchr.c" "lib/string/strstr.c" "lib/string/strupr.c" "lib/stub/sigaction.c" "lib/stub/ldexp.c" "lib/stub/mprotect.c" "lib/stub/localtime.c" "lib/stub/sigemptyset.c" "lib/x86-mes-gcc/setjmp.c" "lib/linux/close.c" "lib/linux/rmdir.c" "lib/linux/stat.c" "lib/ctype/isalnum.c" "lib/ctype/isalpha.c" "lib/ctype/isascii.c" "lib/ctype/iscntrl.c" "lib/ctype/isgraph.c" "lib/ctype/isprint.c" "lib/ctype/ispunct.c" "lib/dirent/__getdirentries.c" "lib/dirent/closedir.c" "lib/dirent/opendir.c" "lib/dirent/readdir.c" "lib/math/ceil.c" "lib/math/fabs.c" "lib/math/floor.c" "lib/mes/fdgets.c" "lib/posix/alarm.c" "lib/posix/execl.c" "lib/posix/execlp.c" "lib/posix/mktemp.c" "lib/posix/sbrk.c" "lib/posix/sleep.c" "lib/posix/unsetenv.c" "lib/stdio/clearerr.c" "lib/stdio/feof.c" "lib/stdio/fgets.c" "lib/stdio/fileno.c" "lib/stdio/freopen.c" "lib/stdio/fscanf.c" "lib/stdio/perror.c" "lib/stdio/vfscanf.c" "lib/stdlib/__exit.c" "lib/stdlib/abort.c" "lib/stdlib/abs.c" "lib/stdlib/alloca.c" "lib/stdlib/atexit.c" "lib/stdlib/atof.c" "lib/stdlib/atol.c" "lib/stdlib/mbstowcs.c" "lib/string/bcmp.c" "lib/string/bcopy.c" "lib/string/bzero.c" "lib/string/index.c" "lib/string/rindex.c" "lib/string/strcspn.c" "lib/string/strdup.c" "lib/string/strerror.c" "lib/string/strncat.c" "lib/string/strpbrk.c" "lib/string/strspn.c" "lib/stub/__cleanup.c" "lib/stub/atan2.c" "lib/stub/bsearch.c" "lib/stub/chown.c" "lib/stub/cos.c" "lib/stub/ctime.c" "lib/stub/exp.c" "lib/stub/fpurge.c" "lib/stub/freadahead.c" "lib/stub/frexp.c" "lib/stub/getgrgid.c" "lib/stub/getgrnam.c" "lib/stub/getlogin.c" "lib/stub/getpgid.c" "lib/stub/getpgrp.c" "lib/stub/getpwnam.c" "lib/stub/getpwuid.c" "lib/stub/gmtime.c" "lib/stub/log.c" "lib/stub/mktime.c" "lib/stub/modf.c" "lib/stub/pclose.c" "lib/stub/popen.c" "lib/stub/pow.c" "lib/stub/rand.c" "lib/stub/rewind.c" "lib/stub/setbuf.c" "lib/stub/setgrent.c" "lib/stub/setlocale.c" "lib/stub/setvbuf.c" "lib/stub/sigaddset.c" "lib/stub/sigblock.c" "lib/stub/sigdelset.c" "lib/stub/sigsetmask.c" "lib/stub/sin.c" "lib/stub/sqrt.c" "lib/stub/strftime.c" "lib/stub/sys_siglist.c" "lib/stub/system.c" "lib/stub/times.c" "lib/stub/ttyname.c" "lib/stub/umask.c" "lib/stub/utime.c" "lib/linux/chdir.c" "lib/linux/fcntl.c" "lib/linux/fstat.c" "lib/linux/getdents.c" "lib/linux/getegid.c" "lib/linux/geteuid.c" "lib/linux/getgid.c" "lib/linux/getppid.c" "lib/linux/getrusage.c" "lib/linux/getuid.c" "lib/linux/ioctl.c" "lib/linux/link.c" "lib/linux/lstat.c" "lib/linux/mkdir.c" "lib/linux/mknod.c" "lib/linux/nanosleep.c" "lib/linux/pipe.c" "lib/linux/readlink.c" "lib/linux/rename.c" "lib/linux/setgid.c" "lib/linux/settimer.c" "lib/linux/setuid.c" "lib/linux/signal.c" "lib/linux/sigprogmask.c" "lib/linux/symlink.c" ];
-    mes_SOURCES       = [ "src/builtins.c" "src/cc.c" "src/core.c" "src/display.c" "src/eval-apply.c" "src/gc.c" "src/globals.c" "src/hash.c" "src/lib.c" "src/math.c" "src/mes.c" "src/module.c" "src/posix.c" "src/reader.c" "src/stack.c" "src/string.c" "src/struct.c" "src/symbol.c" "src/vector.c" ];
+    libc_mini_SOURCES = [
+      "lib/mes/__init_io.c"
+      "lib/mes/eputs.c"
+      "lib/mes/oputs.c"
+      "lib/mes/globals.c"
+      "lib/stdlib/exit.c"
+      "lib/linux/x86-mes-gcc/_exit.c"
+      "lib/linux/x86-mes-gcc/_write.c"
+      "lib/stdlib/puts.c"
+      "lib/string/strlen.c"
+      "lib/mes/write.c"
+    ];
+    libmescc_SOURCES = [
+      "lib/mes/globals.c"
+      "lib/linux/x86-mes-gcc/syscall-internal.c"
+    ];
+    libtcc1_SOURCES = [
+      "lib/libtcc1.c"
+    ];
+    libc_SOURCES = [
+      "lib/mes/__init_io.c"
+      "lib/mes/eputs.c"
+      "lib/mes/oputs.c"
+      "lib/mes/globals.c"
+      "lib/stdlib/exit.c"
+      "lib/linux/x86-mes-gcc/_exit.c"
+      "lib/linux/x86-mes-gcc/_write.c"
+      "lib/stdlib/puts.c"
+      "lib/string/strlen.c"
+      "lib/ctype/isnumber.c"
+      "lib/mes/abtol.c"
+      "lib/mes/cast.c"
+      "lib/mes/eputc.c"
+      "lib/mes/fdgetc.c"
+      "lib/mes/fdputc.c"
+      "lib/mes/fdputs.c"
+      "lib/mes/fdungetc.c"
+      "lib/mes/itoa.c"
+      "lib/mes/ltoa.c"
+      "lib/mes/ltoab.c"
+      "lib/mes/mes_open.c"
+      "lib/mes/ntoab.c"
+      "lib/mes/oputc.c"
+      "lib/mes/ultoa.c"
+      "lib/mes/utoa.c"
+      "lib/stub/__raise.c"
+      "lib/ctype/isdigit.c"
+      "lib/ctype/isspace.c"
+      "lib/ctype/isxdigit.c"
+      "lib/mes/assert_msg.c"
+      "lib/posix/write.c"
+      "lib/stdlib/atoi.c"
+      "lib/linux/lseek.c"
+      "lib/mes/__assert_fail.c"
+      "lib/mes/__buffered_read.c"
+      "lib/mes/__mes_debug.c"
+      "lib/posix/execv.c"
+      "lib/posix/getcwd.c"
+      "lib/posix/getenv.c"
+      "lib/posix/isatty.c"
+      "lib/posix/open.c"
+      "lib/posix/buffered-read.c"
+      "lib/posix/setenv.c"
+      "lib/posix/wait.c"
+      "lib/stdio/fgetc.c"
+      "lib/stdio/fputc.c"
+      "lib/stdio/fputs.c"
+      "lib/stdio/getc.c"
+      "lib/stdio/getchar.c"
+      "lib/stdio/putc.c"
+      "lib/stdio/putchar.c"
+      "lib/stdio/ungetc.c"
+      "lib/stdlib/free.c"
+      "lib/stdlib/realloc.c"
+      "lib/string/memchr.c"
+      "lib/string/memcmp.c"
+      "lib/string/memcpy.c"
+      "lib/string/memmove.c"
+      "lib/string/memset.c"
+      "lib/string/strcmp.c"
+      "lib/string/strcpy.c"
+      "lib/string/strncmp.c"
+      "lib/posix/raise.c"
+      "lib/linux/access.c"
+      "lib/linux/brk.c"
+      "lib/linux/chmod.c"
+      "lib/linux/clock_gettime.c"
+      "lib/linux/dup.c"
+      "lib/linux/dup2.c"
+      "lib/linux/execve.c"
+      "lib/linux/fork.c"
+      "lib/linux/fsync.c"
+      "lib/linux/_getcwd.c"
+      "lib/linux/gettimeofday.c"
+      "lib/linux/ioctl3.c"
+      "lib/linux/_open3.c"
+      "lib/linux/malloc.c"
+      "lib/linux/_read.c"
+      "lib/linux/time.c"
+      "lib/linux/unlink.c"
+      "lib/linux/wait4.c"
+      "lib/linux/waitpid.c"
+      "lib/linux/x86-mes-gcc/syscall.c"
+      "lib/linux/getpid.c"
+      "lib/linux/kill.c"
+    ];
+    libc_tcc_SOURCES = [
+      "lib/mes/__init_io.c"
+      "lib/mes/eputs.c"
+      "lib/mes/oputs.c"
+      "lib/mes/globals.c"
+      "lib/stdlib/exit.c"
+      "lib/linux/x86-mes-gcc/_exit.c"
+      "lib/linux/x86-mes-gcc/_write.c"
+      "lib/stdlib/puts.c"
+      "lib/string/strlen.c"
+      "lib/ctype/isnumber.c"
+      "lib/mes/abtol.c"
+      "lib/mes/cast.c"
+      "lib/mes/eputc.c"
+      "lib/mes/fdgetc.c"
+      "lib/mes/fdputc.c"
+      "lib/mes/fdputs.c"
+      "lib/mes/fdungetc.c"
+      "lib/mes/itoa.c"
+      "lib/mes/ltoa.c"
+      "lib/mes/ltoab.c"
+      "lib/mes/mes_open.c"
+      "lib/mes/ntoab.c"
+      "lib/mes/oputc.c"
+      "lib/mes/ultoa.c"
+      "lib/mes/utoa.c"
+      "lib/stub/__raise.c"
+      "lib/ctype/isdigit.c"
+      "lib/ctype/isspace.c"
+      "lib/ctype/isxdigit.c"
+      "lib/mes/assert_msg.c"
+      "lib/posix/write.c"
+      "lib/stdlib/atoi.c"
+      "lib/linux/lseek.c"
+      "lib/mes/__assert_fail.c"
+      "lib/mes/__buffered_read.c"
+      "lib/mes/__mes_debug.c"
+      "lib/posix/execv.c"
+      "lib/posix/getcwd.c"
+      "lib/posix/getenv.c"
+      "lib/posix/isatty.c"
+      "lib/posix/open.c"
+      "lib/posix/buffered-read.c"
+      "lib/posix/setenv.c"
+      "lib/posix/wait.c"
+      "lib/stdio/fgetc.c"
+      "lib/stdio/fputc.c"
+      "lib/stdio/fputs.c"
+      "lib/stdio/getc.c"
+      "lib/stdio/getchar.c"
+      "lib/stdio/putc.c"
+      "lib/stdio/putchar.c"
+      "lib/stdio/ungetc.c"
+      "lib/stdlib/free.c"
+      "lib/stdlib/realloc.c"
+      "lib/string/memchr.c"
+      "lib/string/memcmp.c"
+      "lib/string/memcpy.c"
+      "lib/string/memmove.c"
+      "lib/string/memset.c"
+      "lib/string/strcmp.c"
+      "lib/string/strcpy.c"
+      "lib/string/strncmp.c"
+      "lib/posix/raise.c"
+      "lib/linux/access.c"
+      "lib/linux/brk.c"
+      "lib/linux/chmod.c"
+      "lib/linux/clock_gettime.c"
+      "lib/linux/dup.c"
+      "lib/linux/dup2.c"
+      "lib/linux/execve.c"
+      "lib/linux/fork.c"
+      "lib/linux/fsync.c"
+      "lib/linux/_getcwd.c"
+      "lib/linux/gettimeofday.c"
+      "lib/linux/ioctl3.c"
+      "lib/linux/_open3.c"
+      "lib/linux/malloc.c"
+      "lib/linux/_read.c"
+      "lib/linux/time.c"
+      "lib/linux/unlink.c"
+      "lib/linux/wait4.c"
+      "lib/linux/waitpid.c"
+      "lib/linux/x86-mes-gcc/syscall.c"
+      "lib/linux/getpid.c"
+      "lib/linux/kill.c"
+      "lib/ctype/islower.c"
+      "lib/ctype/isupper.c"
+      "lib/ctype/tolower.c"
+      "lib/ctype/toupper.c"
+      "lib/mes/abtod.c"
+      "lib/mes/dtoab.c"
+      "lib/mes/search-path.c"
+      "lib/posix/execvp.c"
+      "lib/stdio/fclose.c"
+      "lib/stdio/fdopen.c"
+      "lib/stdio/ferror.c"
+      "lib/stdio/fflush.c"
+      "lib/stdio/fopen.c"
+      "lib/stdio/fprintf.c"
+      "lib/stdio/fread.c"
+      "lib/stdio/fseek.c"
+      "lib/stdio/ftell.c"
+      "lib/stdio/fwrite.c"
+      "lib/stdio/printf.c"
+      "lib/stdio/remove.c"
+      "lib/stdio/snprintf.c"
+      "lib/stdio/sprintf.c"
+      "lib/stdio/sscanf.c"
+      "lib/stdio/vfprintf.c"
+      "lib/stdio/vprintf.c"
+      "lib/stdio/vsnprintf.c"
+      "lib/stdio/vsprintf.c"
+      "lib/stdio/vsscanf.c"
+      "lib/stdlib/calloc.c"
+      "lib/stdlib/qsort.c"
+      "lib/stdlib/strtod.c"
+      "lib/stdlib/strtof.c"
+      "lib/stdlib/strtol.c"
+      "lib/stdlib/strtold.c"
+      "lib/stdlib/strtoll.c"
+      "lib/stdlib/strtoul.c"
+      "lib/stdlib/strtoull.c"
+      "lib/string/memmem.c"
+      "lib/string/strcat.c"
+      "lib/string/strchr.c"
+      "lib/string/strlwr.c"
+      "lib/string/strncpy.c"
+      "lib/string/strrchr.c"
+      "lib/string/strstr.c"
+      "lib/string/strupr.c"
+      "lib/stub/sigaction.c"
+      "lib/stub/ldexp.c"
+      "lib/stub/mprotect.c"
+      "lib/stub/localtime.c"
+      "lib/stub/sigemptyset.c"
+      "lib/x86-mes-gcc/setjmp.c"
+      "lib/linux/close.c"
+      "lib/linux/rmdir.c"
+      "lib/linux/stat.c"
+    ];
+    libc_gnu_SOURCES = [
+      "lib/mes/__init_io.c"
+      "lib/mes/eputs.c"
+      "lib/mes/oputs.c"
+      "lib/mes/globals.c"
+      "lib/stdlib/exit.c"
+      "lib/linux/x86-mes-gcc/_exit.c"
+      "lib/linux/x86-mes-gcc/_write.c"
+      "lib/stdlib/puts.c"
+      "lib/string/strlen.c"
+      "lib/ctype/isnumber.c"
+      "lib/mes/abtol.c"
+      "lib/mes/cast.c"
+      "lib/mes/eputc.c"
+      "lib/mes/fdgetc.c"
+      "lib/mes/fdputc.c"
+      "lib/mes/fdputs.c"
+      "lib/mes/fdungetc.c"
+      "lib/mes/itoa.c"
+      "lib/mes/ltoa.c"
+      "lib/mes/ltoab.c"
+      "lib/mes/mes_open.c"
+      "lib/mes/ntoab.c"
+      "lib/mes/oputc.c"
+      "lib/mes/ultoa.c"
+      "lib/mes/utoa.c"
+      "lib/stub/__raise.c"
+      "lib/ctype/isdigit.c"
+      "lib/ctype/isspace.c"
+      "lib/ctype/isxdigit.c"
+      "lib/mes/assert_msg.c"
+      "lib/posix/write.c"
+      "lib/stdlib/atoi.c"
+      "lib/linux/lseek.c"
+      "lib/mes/__assert_fail.c"
+      "lib/mes/__buffered_read.c"
+      "lib/mes/__mes_debug.c"
+      "lib/posix/execv.c"
+      "lib/posix/getcwd.c"
+      "lib/posix/getenv.c"
+      "lib/posix/isatty.c"
+      "lib/posix/open.c"
+      "lib/posix/buffered-read.c"
+      "lib/posix/setenv.c"
+      "lib/posix/wait.c"
+      "lib/stdio/fgetc.c"
+      "lib/stdio/fputc.c"
+      "lib/stdio/fputs.c"
+      "lib/stdio/getc.c"
+      "lib/stdio/getchar.c"
+      "lib/stdio/putc.c"
+      "lib/stdio/putchar.c"
+      "lib/stdio/ungetc.c"
+      "lib/stdlib/free.c"
+      "lib/stdlib/realloc.c"
+      "lib/string/memchr.c"
+      "lib/string/memcmp.c"
+      "lib/string/memcpy.c"
+      "lib/string/memmove.c"
+      "lib/string/memset.c"
+      "lib/string/strcmp.c"
+      "lib/string/strcpy.c"
+      "lib/string/strncmp.c"
+      "lib/posix/raise.c"
+      "lib/linux/access.c"
+      "lib/linux/brk.c"
+      "lib/linux/chmod.c"
+      "lib/linux/clock_gettime.c"
+      "lib/linux/dup.c"
+      "lib/linux/dup2.c"
+      "lib/linux/execve.c"
+      "lib/linux/fork.c"
+      "lib/linux/fsync.c"
+      "lib/linux/_getcwd.c"
+      "lib/linux/gettimeofday.c"
+      "lib/linux/ioctl3.c"
+      "lib/linux/_open3.c"
+      "lib/linux/malloc.c"
+      "lib/linux/_read.c"
+      "lib/linux/time.c"
+      "lib/linux/unlink.c"
+      "lib/linux/wait4.c"
+      "lib/linux/waitpid.c"
+      "lib/linux/x86-mes-gcc/syscall.c"
+      "lib/linux/getpid.c"
+      "lib/linux/kill.c"
+      "lib/ctype/islower.c"
+      "lib/ctype/isupper.c"
+      "lib/ctype/tolower.c"
+      "lib/ctype/toupper.c"
+      "lib/mes/abtod.c"
+      "lib/mes/dtoab.c"
+      "lib/mes/search-path.c"
+      "lib/posix/execvp.c"
+      "lib/stdio/fclose.c"
+      "lib/stdio/fdopen.c"
+      "lib/stdio/ferror.c"
+      "lib/stdio/fflush.c"
+      "lib/stdio/fopen.c"
+      "lib/stdio/fprintf.c"
+      "lib/stdio/fread.c"
+      "lib/stdio/fseek.c"
+      "lib/stdio/ftell.c"
+      "lib/stdio/fwrite.c"
+      "lib/stdio/printf.c"
+      "lib/stdio/remove.c"
+      "lib/stdio/snprintf.c"
+      "lib/stdio/sprintf.c"
+      "lib/stdio/sscanf.c"
+      "lib/stdio/vfprintf.c"
+      "lib/stdio/vprintf.c"
+      "lib/stdio/vsnprintf.c"
+      "lib/stdio/vsprintf.c"
+      "lib/stdio/vsscanf.c"
+      "lib/stdlib/calloc.c"
+      "lib/stdlib/qsort.c"
+      "lib/stdlib/strtod.c"
+      "lib/stdlib/strtof.c"
+      "lib/stdlib/strtol.c"
+      "lib/stdlib/strtold.c"
+      "lib/stdlib/strtoll.c"
+      "lib/stdlib/strtoul.c"
+      "lib/stdlib/strtoull.c"
+      "lib/string/memmem.c"
+      "lib/string/strcat.c"
+      "lib/string/strchr.c"
+      "lib/string/strlwr.c"
+      "lib/string/strncpy.c"
+      "lib/string/strrchr.c"
+      "lib/string/strstr.c"
+      "lib/string/strupr.c"
+      "lib/stub/sigaction.c"
+      "lib/stub/ldexp.c"
+      "lib/stub/mprotect.c"
+      "lib/stub/localtime.c"
+      "lib/stub/sigemptyset.c"
+      "lib/x86-mes-gcc/setjmp.c"
+      "lib/linux/close.c"
+      "lib/linux/rmdir.c"
+      "lib/linux/stat.c"
+      "lib/ctype/isalnum.c"
+      "lib/ctype/isalpha.c"
+      "lib/ctype/isascii.c"
+      "lib/ctype/iscntrl.c"
+      "lib/ctype/isgraph.c"
+      "lib/ctype/isprint.c"
+      "lib/ctype/ispunct.c"
+      "lib/dirent/__getdirentries.c"
+      "lib/dirent/closedir.c"
+      "lib/dirent/opendir.c"
+      "lib/dirent/readdir.c"
+      "lib/math/ceil.c"
+      "lib/math/fabs.c"
+      "lib/math/floor.c"
+      "lib/mes/fdgets.c"
+      "lib/posix/alarm.c"
+      "lib/posix/execl.c"
+      "lib/posix/execlp.c"
+      "lib/posix/mktemp.c"
+      "lib/posix/sbrk.c"
+      "lib/posix/sleep.c"
+      "lib/posix/unsetenv.c"
+      "lib/stdio/clearerr.c"
+      "lib/stdio/feof.c"
+      "lib/stdio/fgets.c"
+      "lib/stdio/fileno.c"
+      "lib/stdio/freopen.c"
+      "lib/stdio/fscanf.c"
+      "lib/stdio/perror.c"
+      "lib/stdio/vfscanf.c"
+      "lib/stdlib/__exit.c"
+      "lib/stdlib/abort.c"
+      "lib/stdlib/abs.c"
+      "lib/stdlib/alloca.c"
+      "lib/stdlib/atexit.c"
+      "lib/stdlib/atof.c"
+      "lib/stdlib/atol.c"
+      "lib/stdlib/mbstowcs.c"
+      "lib/string/bcmp.c"
+      "lib/string/bcopy.c"
+      "lib/string/bzero.c"
+      "lib/string/index.c"
+      "lib/string/rindex.c"
+      "lib/string/strcspn.c"
+      "lib/string/strdup.c"
+      "lib/string/strerror.c"
+      "lib/string/strncat.c"
+      "lib/string/strpbrk.c"
+      "lib/string/strspn.c"
+      "lib/stub/__cleanup.c"
+      "lib/stub/atan2.c"
+      "lib/stub/bsearch.c"
+      "lib/stub/chown.c"
+      "lib/stub/cos.c"
+      "lib/stub/ctime.c"
+      "lib/stub/exp.c"
+      "lib/stub/fpurge.c"
+      "lib/stub/freadahead.c"
+      "lib/stub/frexp.c"
+      "lib/stub/getgrgid.c"
+      "lib/stub/getgrnam.c"
+      "lib/stub/getlogin.c"
+      "lib/stub/getpgid.c"
+      "lib/stub/getpgrp.c"
+      "lib/stub/getpwnam.c"
+      "lib/stub/getpwuid.c"
+      "lib/stub/gmtime.c"
+      "lib/stub/log.c"
+      "lib/stub/mktime.c"
+      "lib/stub/modf.c"
+      "lib/stub/pclose.c"
+      "lib/stub/popen.c"
+      "lib/stub/pow.c"
+      "lib/stub/rand.c"
+      "lib/stub/rewind.c"
+      "lib/stub/setbuf.c"
+      "lib/stub/setgrent.c"
+      "lib/stub/setlocale.c"
+      "lib/stub/setvbuf.c"
+      "lib/stub/sigaddset.c"
+      "lib/stub/sigblock.c"
+      "lib/stub/sigdelset.c"
+      "lib/stub/sigsetmask.c"
+      "lib/stub/sin.c"
+      "lib/stub/sqrt.c"
+      "lib/stub/strftime.c"
+      "lib/stub/sys_siglist.c"
+      "lib/stub/system.c"
+      "lib/stub/times.c"
+      "lib/stub/ttyname.c"
+      "lib/stub/umask.c"
+      "lib/stub/utime.c"
+      "lib/linux/chdir.c"
+      "lib/linux/fcntl.c"
+      "lib/linux/fstat.c"
+      "lib/linux/getdents.c"
+      "lib/linux/getegid.c"
+      "lib/linux/geteuid.c"
+      "lib/linux/getgid.c"
+      "lib/linux/getppid.c"
+      "lib/linux/getrusage.c"
+      "lib/linux/getuid.c"
+      "lib/linux/ioctl.c"
+      "lib/linux/link.c"
+      "lib/linux/lstat.c"
+      "lib/linux/mkdir.c"
+      "lib/linux/mknod.c"
+      "lib/linux/nanosleep.c"
+      "lib/linux/pipe.c"
+      "lib/linux/readlink.c"
+      "lib/linux/rename.c"
+      "lib/linux/setgid.c"
+      "lib/linux/settimer.c"
+      "lib/linux/setuid.c"
+      "lib/linux/signal.c"
+      "lib/linux/sigprogmask.c"
+      "lib/linux/symlink.c"
+    ];
+    mes_SOURCES = [
+      "src/builtins.c"
+      "src/cc.c"
+      "src/core.c"
+      "src/display.c"
+      "src/eval-apply.c"
+      "src/gc.c"
+      "src/globals.c"
+      "src/hash.c"
+      "src/lib.c"
+      "src/math.c"
+      "src/mes.c"
+      "src/module.c"
+      "src/posix.c"
+      "src/reader.c"
+      "src/stack.c"
+      "src/string.c"
+      "src/struct.c"
+      "src/symbol.c"
+      "src/vector.c"
+    ];
   };
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/nix-ld/default.nix b/nixpkgs/pkgs/os-specific/linux/nix-ld/default.nix
index 84685e77aaea..5eebe6773147 100644
--- a/nixpkgs/pkgs/os-specific/linux/nix-ld/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/nix-ld/default.nix
@@ -52,5 +52,9 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ mic92 ];
     platforms = platforms.linux;
+
+    # 32 bit builds are broken due to a missing #define value:
+    # https://github.com/Mic92/nix-ld/issues/64
+    broken = stdenv.is32bit;
   };
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.8 b/nixpkgs/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.8
index d947361b3bc5..124c01046ea3 100644
--- a/nixpkgs/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.8
+++ b/nixpkgs/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.8
@@ -200,9 +200,7 @@ partition.
 .It Cm list-generations Op Fl -json
 List the available generations in a similar manner to the boot loader
 menu. It shows the generation number, build date and time, NixOS version,
-kernel version and the configuration revision. This is useful to get
-information e.g. for which generation to roll back to with
-.Ic nixos-rebuild switch Fl -generation Ar N
+kernel version and the configuration revision.
 There is also a json version of output available.
 .El
 .
diff --git a/nixpkgs/pkgs/os-specific/linux/nvidia-x11/default.nix b/nixpkgs/pkgs/os-specific/linux/nvidia-x11/default.nix
index 7fec21a8237b..ecfc04115d00 100644
--- a/nixpkgs/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -36,12 +36,12 @@ rec {
   };
 
   latest = selectHighestVersion production (generic {
-    version = "545.29.02";
-    sha256_64bit = "sha256-RncPlaSjhvBFUCOzWdXSE3PAfRPCIrWAXyJMdLPKuIU=";
-    sha256_aarch64 = "sha256-Y2RDOuDtiIclr06gmLrPDfE5VFmFamXxiIIKtKAewro=";
-    openSha256 = "sha256-PukpOBtG5KvZKWYfJHVQO6SuToJUd/rkjpOlEi8pSmk=";
-    settingsSha256 = "sha256-zj173HCZJaxAbVV/A2sbJ9IPdT1+3yrwyxD+AQdkSD8=";
-    persistencedSha256 = "sha256-mmMi2pfwzI1WYOffMVdD0N1HfbswTGg7o57x9/IiyVU=";
+    version = "545.29.06";
+    sha256_64bit = "sha256-grxVZ2rdQ0FsFG5wxiTI3GrxbMBMcjhoDFajDgBFsXs=";
+    sha256_aarch64 = "sha256-o6ZSjM4gHcotFe+nhFTePPlXm0+RFf64dSIDt+RmeeQ=";
+    openSha256 = "sha256-h4CxaU7EYvBYVbbdjiixBhKf096LyatU6/V6CeY9NKE=";
+    settingsSha256 = "sha256-YBaKpRQWSdXG8Usev8s3GYHCPqL8PpJeF6gpa2droWY=";
+    persistencedSha256 = "sha256-AiYrrOgMagIixu3Ss2rePdoL24CKORFvzgZY3jlNbwM=";
 
     patchFlags = [ "-p1" "-d" "kernel" ];
     patches = [];
diff --git a/nixpkgs/pkgs/os-specific/linux/nvidia-x11/generic.nix b/nixpkgs/pkgs/os-specific/linux/nvidia-x11/generic.nix
index 8ec292f27251..c8957d6193a5 100644
--- a/nixpkgs/pkgs/os-specific/linux/nvidia-x11/generic.nix
+++ b/nixpkgs/pkgs/os-specific/linux/nvidia-x11/generic.nix
@@ -22,13 +22,23 @@
 , prePatch ? ""
 , postPatch ? null
 , patchFlags ? null
-, patches ? []
+, patches ? [ ]
 , broken ? false
 , brokenOpen ? broken
 }@args:
 
-{ lib, stdenv, callPackage, pkgs, pkgsi686Linux, fetchurl
-, kernel ? null, perl, nukeReferences, which, libarchive
+{ lib
+, stdenv
+, callPackage
+, pkgs
+, pkgsi686Linux
+, fetchurl
+, fetchzip
+, kernel ? null
+, perl
+, nukeReferences
+, which
+, libarchive
 , # Whether to build the libraries only (i.e. not the kernel module or
   # nvidia-settings).  Used to support 32-bit binaries on 64-bit
   # Linux.
@@ -42,7 +52,8 @@
   # firmware
 , firmware ? openSha256 != null || useFabricmanager
   # Whether the user accepts the NVIDIA Software License
-, config, acceptLicense ? config.nvidia.acceptLicense or false
+, config
+, acceptLicense ? config.nvidia.acceptLicense or false
 }:
 
 with lib;
@@ -60,9 +71,18 @@ let
   i686bundled = versionAtLeast version "391" && !disable32Bit;
 
   libPathFor = pkgs: lib.makeLibraryPath (with pkgs; [
-    libdrm xorg.libXext xorg.libX11
-    xorg.libXv xorg.libXrandr xorg.libxcb zlib stdenv.cc.cc
-    wayland mesa libGL openssl
+    libdrm
+    xorg.libXext
+    xorg.libX11
+    xorg.libXv
+    xorg.libXrandr
+    xorg.libxcb
+    zlib
+    stdenv.cc.cc
+    wayland
+    mesa
+    libGL
+    openssl
     dbus # for nvidia-powerd
   ]);
 
@@ -94,29 +114,32 @@ let
     src =
       if !acceptLicense && (openSha256 == null) then throwLicense else
       if stdenv.hostPlatform.system == "x86_64-linux" then
-        fetchurl {
-          urls = if args ? url then [ args.url ] else [
-            "https://us.download.nvidia.com/XFree86/Linux-x86_64/${version}/NVIDIA-Linux-x86_64-${version}${pkgSuffix}.run"
-            "https://download.nvidia.com/XFree86/Linux-x86_64/${version}/NVIDIA-Linux-x86_64-${version}${pkgSuffix}.run"
-          ];
-          sha256 = sha256_64bit;
-        }
+        fetchurl
+          {
+            urls = if args ? url then [ args.url ] else [
+              "https://us.download.nvidia.com/XFree86/Linux-x86_64/${version}/NVIDIA-Linux-x86_64-${version}${pkgSuffix}.run"
+              "https://download.nvidia.com/XFree86/Linux-x86_64/${version}/NVIDIA-Linux-x86_64-${version}${pkgSuffix}.run"
+            ];
+            sha256 = sha256_64bit;
+          }
       else if stdenv.hostPlatform.system == "i686-linux" then
-        fetchurl {
-          urls = if args ? url then [ args.url ] else [
-            "https://us.download.nvidia.com/XFree86/Linux-x86/${version}/NVIDIA-Linux-x86-${version}${pkgSuffix}.run"
-            "https://download.nvidia.com/XFree86/Linux-x86/${version}/NVIDIA-Linux-x86-${version}${pkgSuffix}.run"
-          ];
-          sha256 = sha256_32bit;
-        }
+        fetchurl
+          {
+            urls = if args ? url then [ args.url ] else [
+              "https://us.download.nvidia.com/XFree86/Linux-x86/${version}/NVIDIA-Linux-x86-${version}${pkgSuffix}.run"
+              "https://download.nvidia.com/XFree86/Linux-x86/${version}/NVIDIA-Linux-x86-${version}${pkgSuffix}.run"
+            ];
+            sha256 = sha256_32bit;
+          }
       else if stdenv.hostPlatform.system == "aarch64-linux" && sha256_aarch64 != null then
-        fetchurl {
-          urls = if args ? url then [ args.url ] else [
-            "https://us.download.nvidia.com/XFree86/aarch64/${version}/NVIDIA-Linux-aarch64-${version}${pkgSuffix}.run"
-            "https://download.nvidia.com/XFree86/Linux-aarch64/${version}/NVIDIA-Linux-aarch64-${version}${pkgSuffix}.run"
-          ];
-          sha256 = sha256_aarch64;
-        }
+        fetchurl
+          {
+            urls = if args ? url then [ args.url ] else [
+              "https://us.download.nvidia.com/XFree86/aarch64/${version}/NVIDIA-Linux-aarch64-${version}${pkgSuffix}.run"
+              "https://download.nvidia.com/XFree86/Linux-aarch64/${version}/NVIDIA-Linux-aarch64-${version}${pkgSuffix}.run"
+            ];
+            sha256 = sha256_aarch64;
+          }
       else throw "nvidia-x11 does not support platform ${stdenv.hostPlatform.system}";
 
     patches = if libsOnly then null else patches;
@@ -126,9 +149,9 @@ let
     inherit i686bundled;
 
     outputs = [ "out" ]
-        ++ optional i686bundled "lib32"
-        ++ optional (!libsOnly) "bin"
-        ++ optional (!libsOnly && firmware) "firmware";
+      ++ optional i686bundled "lib32"
+      ++ optional (!libsOnly) "bin"
+      ++ optional (!libsOnly && firmware) "firmware";
     outputDev = if libsOnly then null else "bin";
 
     kernel = if libsOnly then null else kernel.dev;
@@ -154,29 +177,57 @@ let
 
     disallowedReferences = optionals (!libsOnly) [ kernel.dev ];
 
-    passthru = {
-      open = mapNullable (hash: callPackage ./open.nix {
-        inherit hash;
-        nvidia_x11 = self;
-        broken = brokenOpen;
-      }) openSha256;
-      settings = if useSettings then
-        (if settings32Bit then pkgsi686Linux.callPackage else callPackage) (import ./settings.nix self settingsSha256) {
-          withGtk2 = preferGtk2;
-          withGtk3 = !preferGtk2;
-        } else {};
-      persistenced = if usePersistenced then
-        mapNullable (hash: callPackage (import ./persistenced.nix self hash) { }) persistencedSha256
-      else {};
-      fabricmanager = if useFabricmanager then
-        mapNullable (hash: callPackage (import ./fabricmanager.nix self hash) { }) fabricmanagerSha256
-      else {};
-      inherit persistencedVersion settingsVersion;
-      compressFirmware = false;
-      ibtSupport = ibtSupport || (lib.versionAtLeast version "530");
-    } // optionalAttrs (!i686bundled) {
-      inherit lib32;
-    };
+    passthru =
+      let
+        fetchFromGithubOrNvidia = { owner, repo, rev, ... }@args:
+          let
+            args' = builtins.removeAttrs args [ "owner" "repo" "rev" ];
+            baseUrl = "https://github.com/${owner}/${repo}";
+          in
+          fetchzip (args' // {
+            urls = [
+              "${baseUrl}/archive/${rev}.tar.gz"
+              "https://download.nvidia.com/XFree86/${repo}/${repo}-${rev}.tar.bz2"
+            ];
+            # github and nvidia use different compression algorithms,
+            #  use an invalid file extension to force detection.
+            extension = "tar.??";
+          });
+      in
+      {
+        open = mapNullable
+          (hash: callPackage ./open.nix {
+            inherit hash;
+            nvidia_x11 = self;
+            broken = brokenOpen;
+          })
+          openSha256;
+        settings =
+          if useSettings then
+            (if settings32Bit then pkgsi686Linux.callPackage else callPackage) (import ./settings.nix self settingsSha256)
+              {
+                withGtk2 = preferGtk2;
+                withGtk3 = !preferGtk2;
+                fetchFromGitHub = fetchFromGithubOrNvidia;
+              } else { };
+        persistenced =
+          if usePersistenced then
+            mapNullable
+              (hash: callPackage (import ./persistenced.nix self hash) {
+                fetchFromGitHub = fetchFromGithubOrNvidia;
+              })
+              persistencedSha256
+          else { };
+        fabricmanager =
+          if useFabricmanager then
+            mapNullable (hash: callPackage (import ./fabricmanager.nix self hash) { }) fabricmanagerSha256
+          else { };
+        inherit persistencedVersion settingsVersion;
+        compressFirmware = false;
+        ibtSupport = ibtSupport || (lib.versionAtLeast version "530");
+      } // optionalAttrs (!i686bundled) {
+        inherit lib32;
+      };
 
     meta = with lib; {
       homepage = "https://www.nvidia.com/object/unix.html";
@@ -191,4 +242,5 @@ let
     };
   };
 
-in self
+in
+self
diff --git a/nixpkgs/pkgs/os-specific/linux/nvidia-x11/open.nix b/nixpkgs/pkgs/os-specific/linux/nvidia-x11/open.nix
index 0625985c908f..a6795c3fd5e7 100644
--- a/nixpkgs/pkgs/os-specific/linux/nvidia-x11/open.nix
+++ b/nixpkgs/pkgs/os-specific/linux/nvidia-x11/open.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , fetchFromGitHub
-, fetchpatch
 , kernel
 , nvidia_x11
 , hash
@@ -19,13 +18,6 @@ stdenv.mkDerivation ({
     inherit hash;
   };
 
-  patches = lib.optionals (nvidia_x11.version == "545.29.02")[
-    (fetchpatch {
-      url = "https://github.com/NVIDIA/open-gpu-kernel-modules/files/13310810/0001-nvkms-initialize-brightnessType-in-_BACKLIGHT_BRIGHT.patch.txt";
-      hash = "sha256-9N+DbyT4VmGNTHXWf23PJU4YWZS+0JK7yqkmkpnINPk=";
-    })
-  ];
-
   nativeBuildInputs = kernel.moduleBuildDependencies;
 
   makeFlags = kernel.makeFlags ++ [
diff --git a/nixpkgs/pkgs/os-specific/linux/pam/default.nix b/nixpkgs/pkgs/os-specific/linux/pam/default.nix
index a35f40be5955..10864df2597b 100644
--- a/nixpkgs/pkgs/os-specific/linux/pam/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/pam/default.nix
@@ -26,6 +26,12 @@ stdenv.mkDerivation rec {
     })
   ];
 
+  # Case-insensitivity workaround for https://github.com/linux-pam/linux-pam/issues/569
+  postPatch = if stdenv.buildPlatform.isDarwin && stdenv.buildPlatform != stdenv.hostPlatform then ''
+    rm CHANGELOG
+    touch ChangeLog
+  '' else null;
+
   outputs = [ "out" "doc" "man" /* "modules" */ ];
 
   depsBuildBuild = [ buildPackages.stdenv.cc ];
diff --git a/nixpkgs/pkgs/os-specific/linux/powerstat/default.nix b/nixpkgs/pkgs/os-specific/linux/powerstat/default.nix
index 901a522fe8fa..605b97e4be2f 100644
--- a/nixpkgs/pkgs/os-specific/linux/powerstat/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/powerstat/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "powerstat";
-  version = "0.03.03";
+  version = "0.04.01";
 
   src = fetchFromGitHub {
     owner = "ColinIanKing";
     repo = pname;
     rev = "V${version}";
-    hash = "sha256-D8VwczXHUHQ8p03IgYW3t8hOIGHKp0n1c7FpAUWua74=";
+    hash = "sha256-Wf6V2zaUrirzd3hfkq74mHNqlzxyr8p4B4qe0kLozM8=";
   };
 
   installFlags = [
diff --git a/nixpkgs/pkgs/os-specific/linux/rasdaemon/default.nix b/nixpkgs/pkgs/os-specific/linux/rasdaemon/default.nix
index 35201d49b7f0..c65a11fe8525 100644
--- a/nixpkgs/pkgs/os-specific/linux/rasdaemon/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/rasdaemon/default.nix
@@ -1,22 +1,22 @@
 { lib, stdenv, fetchFromGitHub
-, autoreconfHook
+, autoreconfHook, pkg-config
 , glibcLocales, kmod, coreutils, perl
-, dmidecode, hwdata, sqlite
+, dmidecode, hwdata, sqlite, libtraceevent
 , nixosTests
 }:
 
 stdenv.mkDerivation rec {
   pname = "rasdaemon";
-  version = "0.7.0";
+  version = "0.8.0";
 
   src = fetchFromGitHub {
     owner = "mchehab";
     repo = "rasdaemon";
     rev = "v${version}";
-    sha256 = "sha256-oLwR+bNgKceVgLTOLYiKHNUkRmLouaQshdp/8UJnfqg=";
+    sha256 = "sha256-BX3kc629FOh5cnD6Sa/69wKdhmhT3Rpz5ZvhnD4MclQ=";
   };
 
-  nativeBuildInputs = [ autoreconfHook ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   buildInputs = [
     coreutils
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
     hwdata
     kmod
     sqlite
+    libtraceevent
     (perl.withPackages (ps: with ps; [ DBI DBDSQLite ]))
   ]
   ++ lib.optionals (!stdenv.isAarch64) [ dmidecode ];
@@ -32,20 +33,8 @@ stdenv.mkDerivation rec {
     "--sysconfdir=/etc"
     "--localstatedir=/var"
     "--with-sysconfdefdir=${placeholder "out"}/etc/sysconfig"
-    "--enable-sqlite3"
-    "--enable-aer"
-    "--enable-mce"
-    "--enable-extlog"
-    "--enable-non-standard"
-    "--enable-abrt-report"
-    "--enable-hisi-ns-decode"
-    "--enable-devlink"
-    "--enable-diskerror"
-    "--enable-memory-failure"
-    "--enable-memory-ce-pfa"
-    "--enable-amp-ns-decode"
-  ]
-  ++ lib.optionals (stdenv.isAarch64) [ "--enable-arm" ];
+    "--enable-all"
+  ];
 
   # The installation attempts to create the following directories:
   # /var/lib/rasdaemon
diff --git a/nixpkgs/pkgs/os-specific/linux/rdma-core/default.nix b/nixpkgs/pkgs/os-specific/linux/rdma-core/default.nix
index e400e5eba7d7..5d75249d616c 100644
--- a/nixpkgs/pkgs/os-specific/linux/rdma-core/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/rdma-core/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "rdma-core";
-  version = "48.0";
+  version = "49.0";
 
   src = fetchFromGitHub {
     owner = "linux-rdma";
     repo = "rdma-core";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-/ltuZ9OiwJJ6CuAd6hqJwo+wETOgZ4UcW50BrjudF+k=";
+    hash = "sha256-4095U7fLIvixUY3K6l0iFJh7oWwwKAX/WcD3ziqdsLg=";
   };
 
   strictDeps = true;
diff --git a/nixpkgs/pkgs/os-specific/linux/sssd/default.nix b/nixpkgs/pkgs/os-specific/linux/sssd/default.nix
index 62db758c7aa7..ddae189f6528 100644
--- a/nixpkgs/pkgs/os-specific/linux/sssd/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/sssd/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, autoreconfHook, makeWrapper, glibc, augeas, dnsutils, c-ares, curl,
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, makeWrapper, glibc, adcli, augeas, dnsutils, c-ares, curl,
   cyrus_sasl, ding-libs, libnl, libunistring, nss, samba, nfs-utils, doxygen,
   python3, pam, popt, talloc, tdb, tevent, pkg-config, ldb, openldap,
   pcre2, libkrb5, cifs-utils, glib, keyutils, dbus, fakeroot, libxslt, libxml2,
@@ -27,7 +27,10 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   # Something is looking for <libxml/foo.h> instead of <libxml2/libxml/foo.h>
-  env.NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2";
+  env.NIX_CFLAGS_COMPILE = toString [
+    "-DRENEWAL_PROG_PATH=\"${adcli}/bin/adcli\""
+    "-I${libxml2.dev}/include/libxml2"
+  ];
 
   preConfigure = ''
     export SGML_CATALOG_FILES="${docbookFiles}"
diff --git a/nixpkgs/pkgs/os-specific/linux/sysdig/default.nix b/nixpkgs/pkgs/os-specific/linux/sysdig/default.nix
index 3e63a4a54d8a..33354b1df8b7 100644
--- a/nixpkgs/pkgs/os-specific/linux/sysdig/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/sysdig/default.nix
@@ -1,61 +1,69 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, kernel, installShellFiles, pkg-config
-, luajit, ncurses, perl, jsoncpp, libb64, openssl, curl, jq, gcc, elfutils, tbb, protobuf, grpc
-, yaml-cpp, nlohmann_json, re2, zstd
+{ lib, stdenv, fetchFromGitHub, cmake, kernel, installShellFiles, pkg-config
+, luajit, ncurses, perl, jsoncpp, openssl, curl, jq, gcc, elfutils, tbb, protobuf, grpc
+, yaml-cpp, nlohmann_json, re2, zstd, uthash, fetchpatch, fetchurl
 }:
 
 let
   # Compare with https://github.com/draios/sysdig/blob/dev/cmake/modules/falcosecurity-libs.cmake
-  libsRev = "59fb313475b82f842e9e9bbc1e0e629428c0a4cf";
-  libsSha256 = "sha256-IjzLbCOpB6EgPDgkGIyg1dNxHfYgU10OLgXrDOPmoTs=";
+  libsRev = "0.13.1";
+  libsHash = "sha256-UNoXIkFr64Nr0XVAtV4+BMNpCk4w8Dn4waZek/ok4Uk=";
 
   # Compare with https://github.com/falcosecurity/libs/blob/master/cmake/modules/valijson.cmake#L17
   valijson = fetchFromGitHub {
     owner = "tristanpenman";
     repo = "valijson";
     rev = "v0.6";
-    sha256 = "sha256-ZD19Q2MxMQd3yEKbY90GFCrerie5/jzgO8do4JQDoKM=";
+    hash = "sha256-ZD19Q2MxMQd3yEKbY90GFCrerie5/jzgO8do4JQDoKM=";
+  };
+
+  tinydir = fetchFromGitHub {
+    owner = "cxong";
+    repo = "tinydir";
+    rev = "1.2.5";
+    hash = "sha256-qQhvLzpCYMAafBNRWlY5yklHrILM8BYD+xxF0l17+do=";
   };
 
   # https://github.com/draios/sysdig/blob/0.31.5/cmake/modules/driver.cmake
   driver = fetchFromGitHub {
     owner = "falcosecurity";
     repo = "libs";
-    rev = libsRev;
-    sha256 = libsSha256;
+    rev = "6.0.1+driver";
+    hash = "sha256-e9TJl/IahrUc4Yq2/KssTz3IBjOZwXeLt1jOkZ94EiE=";
+  };
+
+  # can be dropped in next release
+  uthashDevendorPatch = fetchpatch {
+    url = "https://github.com/falcosecurity/libs/commit/0d58f798ab72e21a16ee6965c775cba2932e5100.patch";
+    hash = "sha256-5Y79M9u5rXZiKllJcXzDDw/3JKt0k/CgvWx+MZepkpw=";
   };
 
+  # https://github.com/falcosecurity/libs/blob/master/cmake/modules/b64.cmake
+  base64 = fetchurl {
+    url = "https://raw.githubusercontent.com/istio/proxy/1.18.2/extensions/common/wasm/base64.h";
+    hash = "sha256-WvHRHp5caMBDvH+2pMrU4ZptX6WvPcPaeVGtVBBCw64=";
+  };
 in
 stdenv.mkDerivation rec {
   pname = "sysdig";
-  version = "0.33.1";
+  version = "0.34.1";
 
   src = fetchFromGitHub {
     owner = "draios";
     repo = "sysdig";
     rev = version;
-    sha256 = "sha256-qcJ9EcePrsKic+wgsck+pTrRdQic0xhzguH4EYVP0gk=";
+    hash = "sha256-G1yr1wHiaGvLMtBZgh4eoiRNJiH0cghHqWFOjKYXXsw=";
   };
 
-  patches = [
-    # https://github.com/draios/sysdig/pull/2024
-    (fetchpatch {
-      url = "https://github.com/draios/sysdig/commit/d9515aad2be660b2ba7ec8c0b4fb2467a10434af.patch";
-      sha256 = "sha256-3m+Rn8BZS8U8QTBDJ6x7kQbH6BE3HKgt1iNnRjPEr8k=";
-    })
-  ];
-
   nativeBuildInputs = [ cmake perl installShellFiles pkg-config ];
   buildInputs = [
     luajit
     ncurses
-    libb64
     openssl
     curl
     jq
     gcc
     elfutils
     tbb
-    libb64
     re2
     protobuf
     grpc
@@ -63,6 +71,7 @@ stdenv.mkDerivation rec {
     jsoncpp
     nlohmann_json
     zstd
+    uthash
   ] ++ lib.optionals (kernel != null) kernel.moduleBuildDependencies;
 
   hardeningDisable = [ "pic" ];
@@ -72,14 +81,20 @@ stdenv.mkDerivation rec {
       owner = "falcosecurity";
       repo = "libs";
       rev = libsRev;
-      sha256 = libsSha256;
+      hash = libsHash;
     }} libs
     chmod -R +w libs
+    pushd libs
+    patch -p1 < ${uthashDevendorPatch}
+    popd
+
     cp -r ${driver} driver-src
     chmod -R +w driver-src
+    pushd driver-src
+    patch -p1 < ${uthashDevendorPatch}
+    popd
     cmakeFlagsArray+=(
       "-DFALCOSECURITY_LIBS_SOURCE_DIR=$(pwd)/libs"
-      "-DVALIJSON_INCLUDE=${valijson}/include"
       "-DDRIVER_SOURCE_DIR=$(pwd)/driver-src/driver"
     )
   '';
@@ -90,7 +105,11 @@ stdenv.mkDerivation rec {
     "-DUSE_BUNDLED_B64=OFF"
     "-DUSE_BUNDLED_TBB=OFF"
     "-DUSE_BUNDLED_RE2=OFF"
+    "-DUSE_BUNDLED_JSONCPP=OFF"
     "-DCREATE_TEST_TARGETS=OFF"
+    "-DVALIJSON_INCLUDE=${valijson}/include"
+    "-DTINYDIR_INCLUDE=${tinydir}"
+    "-DUTHASH_INCLUDE=${uthash}/include"
   ] ++ lib.optional (kernel == null) "-DBUILD_DRIVER=OFF";
 
   env.NIX_CFLAGS_COMPILE =
@@ -105,6 +124,7 @@ stdenv.mkDerivation rec {
       exit 1
     fi
     cmakeFlagsArray+=(-DCMAKE_EXE_LINKER_FLAGS="-ltbb -lcurl -lzstd -labsl_synchronization")
+    install -D ${base64} build/b64/base64.h
   '' + lib.optionalString (kernel != null) ''
     export INSTALL_MOD_PATH="$out"
     export KERNELDIR="${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
diff --git a/nixpkgs/pkgs/os-specific/linux/systemd/default.nix b/nixpkgs/pkgs/os-specific/linux/systemd/default.nix
index 0311d46d1fc4..e6872782b832 100644
--- a/nixpkgs/pkgs/os-specific/linux/systemd/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/systemd/default.nix
@@ -144,6 +144,7 @@
 , docbook_xsl
 , docbook_xml_dtd_42
 , docbook_xml_dtd_45
+, withLogTrace ? false
 }:
 
 assert withImportd -> withCompression;
@@ -568,6 +569,8 @@ stdenv.mkDerivation (finalAttrs: {
   ] ++ lib.optionals withKmod [
     "-Dkmod=true"
     "-Dkmod-path=${kmod}/bin/kmod"
+  ] ++ lib.optionals withLogTrace [
+    "-Dlog-trace=true"
   ];
   preConfigure =
     let
diff --git a/nixpkgs/pkgs/os-specific/linux/teensy-udev-rules/default.nix b/nixpkgs/pkgs/os-specific/linux/teensy-udev-rules/default.nix
index e3d50eee5f67..326cf0a3245f 100644
--- a/nixpkgs/pkgs/os-specific/linux/teensy-udev-rules/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/teensy-udev-rules/default.nix
@@ -19,7 +19,8 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     homepage = "https://www.pjrc.com/teensy/00-teensy.rules";
-    description = ''
+    description = "udev rules for the Teensy microcontrollers";
+    longDescription = ''
       udev rules that give non-root users permission to communicate with the
       Teensy family of microcontrolers.
 
@@ -28,7 +29,7 @@ stdenv.mkDerivation {
       this package's homepage) for possible workarounds.
     '';
     platforms = platforms.linux;
-    license = "unknown";
+    license = licenses.unfree; # No license specified.
     maintainers = with maintainers; [ aidalgol ];
   };
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/waydroid/default.nix b/nixpkgs/pkgs/os-specific/linux/waydroid/default.nix
index 2cf6e0c47e48..e8e0727b8dbf 100644
--- a/nixpkgs/pkgs/os-specific/linux/waydroid/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/waydroid/default.nix
@@ -78,11 +78,11 @@ python3Packages.buildPythonApplication rec {
       --replace '"sh"' '"${runtimeShell}"'
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Waydroid is a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu";
     homepage = "https://github.com/waydroid/waydroid";
-    license = licenses.gpl3;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ mcaju ];
+    license = lib.licenses.gpl3;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ mcaju ];
   };
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/zfs/2_1.nix b/nixpkgs/pkgs/os-specific/linux/zfs/2_1.nix
new file mode 100644
index 000000000000..4642bc20f6fc
--- /dev/null
+++ b/nixpkgs/pkgs/os-specific/linux/zfs/2_1.nix
@@ -0,0 +1,39 @@
+{ callPackage
+, kernel ? null
+, stdenv
+, linuxKernel
+, removeLinuxDRM ? false
+, lib
+, nixosTests
+, ...
+} @ args:
+
+let
+  stdenv' = if kernel == null then stdenv else kernel.stdenv;
+in
+callPackage ./generic.nix args {
+  # You have to ensure that in `pkgs/top-level/linux-kernels.nix`
+  # this attribute is the correct one for this package.
+  kernelModuleAttribute = "zfs_2_1";
+  # check the release notes for compatible kernels
+  kernelCompatible =
+    if stdenv'.isx86_64 || removeLinuxDRM
+    then kernel.kernelOlder "6.6"
+    else kernel.kernelOlder "6.2";
+
+  latestCompatibleLinuxPackages = if stdenv'.isx86_64 || removeLinuxDRM
+    then linuxKernel.packages.linux_6_5
+    else linuxKernel.packages.linux_6_1;
+
+  # This is a fixed version to the 2.1.x series, move only
+  # if the 2.1.x series moves.
+  version = "2.1.14";
+
+  hash = "sha256-RVAoZbV9yclGuN+D37SB6UCRFbbLEpBoyrQOQCVsQwE=";
+
+  tests = [
+    nixosTests.zfs.series_2_1
+  ];
+
+  maintainers = [ lib.maintainers.raitobezarius ];
+}
diff --git a/nixpkgs/pkgs/os-specific/linux/zfs/generic.nix b/nixpkgs/pkgs/os-specific/linux/zfs/generic.nix
index 8adbb8cab8f9..566af6950d48 100644
--- a/nixpkgs/pkgs/os-specific/linux/zfs/generic.nix
+++ b/nixpkgs/pkgs/os-specific/linux/zfs/generic.nix
@@ -1,222 +1,243 @@
-{ pkgs, lib, stdenv, fetchFromGitHub, fetchpatch
-, autoreconfHook269, util-linux, nukeReferences, coreutils
-, perl, nixosTests
-, configFile ? "all"
-
-# Userspace dependencies
-, zlib, libuuid, python3, attr, openssl
-, libtirpc
-, nfs-utils, samba
-, gawk, gnugrep, gnused, systemd
-, smartmontools, enableMail ? false
-, sysstat, pkg-config
-, curl
-, pam
-
-# Kernel dependencies
-, kernel ? null
-, enablePython ? true
-, ...
-}:
-
-{ version
-, sha256
-, extraPatches ? []
-, rev ? "zfs-${version}"
-, isUnstable ? false
-, latestCompatibleLinuxPackages
-, kernelCompatible ? null
-}:
-
 let
-  inherit (lib) any optionalString optionals optional makeBinPath;
-
-  smartmon = smartmontools.override { inherit enableMail; };
-
-  buildKernel = any (n: n == configFile) [ "kernel" "all" ];
-  buildUser = any (n: n == configFile) [ "user" "all" ];
-
-  # XXX: You always want to build kernel modules with the same stdenv as the
-  # kernel was built with. However, since zfs can also be built for userspace we
-  # need to correctly pick between the provided/default stdenv, and the one used
-  # by the kernel.
-  # If you don't do this your ZFS builds will fail on any non-standard (e.g.
-  # clang-built) kernels.
-  stdenv' = if kernel == null then stdenv else kernel.stdenv;
-in
+  genericBuild =
+  { pkgs, lib, stdenv, fetchFromGitHub, fetchpatch
+  , autoreconfHook269, util-linux, nukeReferences, coreutils
+  , perl
+  , configFile ? "all"
+
+  # Userspace dependencies
+  , zlib, libuuid, python3, attr, openssl
+  , libtirpc
+  , nfs-utils, samba
+  , gawk, gnugrep, gnused, systemd
+  , smartmontools, enableMail ? false
+  , sysstat, pkg-config
+  , curl
+  , pam
+
+  # Kernel dependencies
+  , kernel ? null
+  , enablePython ? true
+  , ...
+  }@outerArgs:
+
+  assert (configFile == "kernel") -> (kernel != null);
+  { version
+  , hash
+  , kernelModuleAttribute
+  , extraPatches ? []
+  , rev ? "zfs-${version}"
+  , isUnstable ? false
+  , latestCompatibleLinuxPackages
+  , kernelCompatible ? null
+  , maintainers ? (with lib.maintainers; [ amarshall adamcstephens ])
+  , tests
+  }@innerArgs:
+
+  let
+    inherit (lib) any optionalString optionals optional makeBinPath versionAtLeast;
+
+    smartmon = smartmontools.override { inherit enableMail; };
+
+    buildKernel = any (n: n == configFile) [ "kernel" "all" ];
+    buildUser = any (n: n == configFile) [ "user" "all" ];
+    isAtLeast22Series = versionAtLeast version "2.2.0";
+
+    # XXX: You always want to build kernel modules with the same stdenv as the
+    # kernel was built with. However, since zfs can also be built for userspace we
+    # need to correctly pick between the provided/default stdenv, and the one used
+    # by the kernel.
+    # If you don't do this your ZFS builds will fail on any non-standard (e.g.
+    # clang-built) kernels.
+    stdenv' = if kernel == null then stdenv else kernel.stdenv;
+  in
+
+  stdenv'.mkDerivation {
+    name = "zfs-${configFile}-${version}${optionalString buildKernel "-${kernel.version}"}";
+    pname = "zfs";
+    inherit version;
+
+    src = fetchFromGitHub {
+      owner = "openzfs";
+      repo = "zfs";
+      inherit rev hash;
+    };
+
+    patches = extraPatches;
+
+    postPatch = optionalString buildKernel ''
+      patchShebangs scripts
+      # The arrays must remain the same length, so we repeat a flag that is
+      # already part of the command and therefore has no effect.
+      substituteInPlace ./module/os/linux/zfs/zfs_ctldir.c \
+        --replace '"/usr/bin/env", "umount"' '"${util-linux}/bin/umount", "-n"' \
+        --replace '"/usr/bin/env", "mount"'  '"${util-linux}/bin/mount", "-n"'
+    '' + optionalString buildUser ''
+      substituteInPlace ./lib/libshare/os/linux/nfs.c --replace "/usr/sbin/exportfs" "${
+        # We don't *need* python support, but we set it like this to minimize closure size:
+        # If it's disabled by default, no need to enable it, even if we have python enabled
+        # And if it's enabled by default, only change that if we explicitly disable python to remove python from the closure
+        nfs-utils.override (old: { enablePython = old.enablePython or true && enablePython; })
+      }/bin/exportfs"
+      substituteInPlace ./lib/libshare/smb.h        --replace "/usr/bin/net"            "${samba}/bin/net"
+      # Disable dynamic loading of libcurl
+      substituteInPlace ./config/user-libfetch.m4   --replace "curl-config --built-shared" "true"
+      substituteInPlace ./config/user-systemd.m4    --replace "/usr/lib/modules-load.d" "$out/etc/modules-load.d"
+      substituteInPlace ./config/zfs-build.m4       --replace "\$sysconfdir/init.d"     "$out/etc/init.d" \
+                                                    --replace "/etc/default"            "$out/etc/default"
+      substituteInPlace ./contrib/initramfs/Makefile.am \
+        --replace "/usr/share/initramfs-tools" "$out/usr/share/initramfs-tools"
+    '' + optionalString isAtLeast22Series ''
+      substituteInPlace ./udev/vdev_id \
+        --replace "PATH=/bin:/sbin:/usr/bin:/usr/sbin" \
+         "PATH=${makeBinPath [ coreutils gawk gnused gnugrep systemd ]}"
+    '' + optionalString (!isAtLeast22Series) ''
+      substituteInPlace ./etc/zfs/Makefile.am --replace "\$(sysconfdir)/zfs" "$out/etc/zfs"
+
+      find ./contrib/initramfs -name Makefile.am -exec sed -i -e 's|/usr/share/initramfs-tools|'$out'/share/initramfs-tools|g' {} \;
+
+      substituteInPlace ./cmd/vdev_id/vdev_id \
+        --replace "PATH=/bin:/sbin:/usr/bin:/usr/sbin" \
+        "PATH=${makeBinPath [ coreutils gawk gnused gnugrep systemd ]}"
+    '' + ''
+      substituteInPlace ./config/zfs-build.m4 \
+        --replace "bashcompletiondir=/etc/bash_completion.d" \
+          "bashcompletiondir=$out/share/bash-completion/completions"
+    '';
 
-stdenv'.mkDerivation {
-  name = "zfs-${configFile}-${version}${optionalString buildKernel "-${kernel.version}"}";
+    nativeBuildInputs = [ autoreconfHook269 nukeReferences ]
+      ++ optionals buildKernel (kernel.moduleBuildDependencies ++ [ perl ])
+      ++ optional buildUser pkg-config;
+    buildInputs = optionals buildUser [ zlib libuuid attr libtirpc pam ]
+      ++ optional buildUser openssl
+      ++ optional buildUser curl
+      ++ optional (buildUser && enablePython) python3;
+
+    # for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work
+    NIX_CFLAGS_LINK = "-lgcc_s";
+
+    hardeningDisable = [ "fortify" "stackprotector" "pic" ];
+
+    configureFlags = [
+      "--with-config=${configFile}"
+      "--with-tirpc=1"
+      (lib.withFeatureAs (buildUser && enablePython) "python" python3.interpreter)
+    ] ++ optionals buildUser [
+      "--with-dracutdir=$(out)/lib/dracut"
+      "--with-udevdir=$(out)/lib/udev"
+      "--with-systemdunitdir=$(out)/etc/systemd/system"
+      "--with-systemdpresetdir=$(out)/etc/systemd/system-preset"
+      "--with-systemdgeneratordir=$(out)/lib/systemd/system-generator"
+      "--with-mounthelperdir=$(out)/bin"
+      "--libexecdir=$(out)/libexec"
+      "--sysconfdir=/etc"
+      "--localstatedir=/var"
+      "--enable-systemd"
+      "--enable-pam"
+    ] ++ optionals buildKernel ([
+      "--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source"
+      "--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
+    ] ++ kernel.makeFlags);
+
+    makeFlags = optionals buildKernel kernel.makeFlags;
+
+    enableParallelBuilding = true;
+
+    installFlags = [
+      "sysconfdir=\${out}/etc"
+      "DEFAULT_INITCONF_DIR=\${out}/default"
+      "INSTALL_MOD_PATH=\${out}"
+    ];
+
+    preConfigure = ''
+      # The kernel module builds some tests during the configurePhase, this envvar controls their parallelism
+      export TEST_JOBS=$NIX_BUILD_CORES
+      if [ -z "$enableParallelBuilding" ]; then
+        export TEST_JOBS=1
+      fi
+    '';
 
-  src = fetchFromGitHub {
-    owner = "openzfs";
-    repo = "zfs";
-    inherit rev sha256;
-  };
+    # Enabling BTF causes zfs to be build with debug symbols.
+    # Since zfs compress kernel modules on installation, our strip hooks skip stripping them.
+    # Hence we strip modules prior to compression.
+    postBuild = optionalString buildKernel ''
+       find . -name "*.ko" -print0 | xargs -0 -P$NIX_BUILD_CORES ${stdenv.cc.targetPrefix}strip --strip-debug
+    '';
 
-  patches = extraPatches;
-
-  postPatch = optionalString buildKernel ''
-    patchShebangs scripts
-    # The arrays must remain the same length, so we repeat a flag that is
-    # already part of the command and therefore has no effect.
-    substituteInPlace ./module/os/linux/zfs/zfs_ctldir.c \
-      --replace '"/usr/bin/env", "umount"' '"${util-linux}/bin/umount", "-n"' \
-      --replace '"/usr/bin/env", "mount"'  '"${util-linux}/bin/mount", "-n"'
-  '' + optionalString buildUser ''
-    substituteInPlace ./lib/libshare/os/linux/nfs.c --replace "/usr/sbin/exportfs" "${
-      # We don't *need* python support, but we set it like this to minimize closure size:
-      # If it's disabled by default, no need to enable it, even if we have python enabled
-      # And if it's enabled by default, only change that if we explicitly disable python to remove python from the closure
-      nfs-utils.override (old: { enablePython = old.enablePython or true && enablePython; })
-    }/bin/exportfs"
-    substituteInPlace ./lib/libshare/smb.h        --replace "/usr/bin/net"            "${samba}/bin/net"
-    # Disable dynamic loading of libcurl
-    substituteInPlace ./config/user-libfetch.m4   --replace "curl-config --built-shared" "true"
-    substituteInPlace ./config/user-systemd.m4    --replace "/usr/lib/modules-load.d" "$out/etc/modules-load.d"
-    substituteInPlace ./config/zfs-build.m4       --replace "\$sysconfdir/init.d"     "$out/etc/init.d" \
-                                                  --replace "/etc/default"            "$out/etc/default"
-    substituteInPlace ./contrib/initramfs/Makefile.am \
-      --replace "/usr/share/initramfs-tools" "$out/usr/share/initramfs-tools"
-    substituteInPlace ./udev/vdev_id \
-      --replace "PATH=/bin:/sbin:/usr/bin:/usr/sbin" \
-       "PATH=${makeBinPath [ coreutils gawk gnused gnugrep systemd ]}"
-    substituteInPlace ./config/zfs-build.m4 \
-      --replace "bashcompletiondir=/etc/bash_completion.d" \
-        "bashcompletiondir=$out/share/bash-completion/completions"
-  '';
-
-  nativeBuildInputs = [ autoreconfHook269 nukeReferences ]
-    ++ optionals buildKernel (kernel.moduleBuildDependencies ++ [ perl ])
-    ++ optional buildUser pkg-config;
-  buildInputs = optionals buildUser [ zlib libuuid attr libtirpc pam ]
-    ++ optional buildUser openssl
-    ++ optional buildUser curl
-    ++ optional (buildUser && enablePython) python3;
-
-  # for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work
-  NIX_CFLAGS_LINK = "-lgcc_s";
-
-  hardeningDisable = [ "fortify" "stackprotector" "pic" ];
-
-  configureFlags = [
-    "--with-config=${configFile}"
-    "--with-tirpc=1"
-    (lib.withFeatureAs (buildUser && enablePython) "python" python3.interpreter)
-  ] ++ optionals buildUser [
-    "--with-dracutdir=$(out)/lib/dracut"
-    "--with-udevdir=$(out)/lib/udev"
-    "--with-systemdunitdir=$(out)/etc/systemd/system"
-    "--with-systemdpresetdir=$(out)/etc/systemd/system-preset"
-    "--with-systemdgeneratordir=$(out)/lib/systemd/system-generator"
-    "--with-mounthelperdir=$(out)/bin"
-    "--libexecdir=$(out)/libexec"
-    "--sysconfdir=/etc"
-    "--localstatedir=/var"
-    "--enable-systemd"
-    "--enable-pam"
-  ] ++ optionals buildKernel ([
-    "--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source"
-    "--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
-  ] ++ kernel.makeFlags);
-
-  makeFlags = optionals buildKernel kernel.makeFlags;
-
-  enableParallelBuilding = true;
-
-  installFlags = [
-    "sysconfdir=\${out}/etc"
-    "DEFAULT_INITCONF_DIR=\${out}/default"
-    "INSTALL_MOD_PATH=\${out}"
-  ];
-
-  preConfigure = ''
-    # The kernel module builds some tests during the configurePhase, this envvar controls their parallelism
-    export TEST_JOBS=$NIX_BUILD_CORES
-    if [ -z "$enableParallelBuilding" ]; then
-      export TEST_JOBS=1
-    fi
-  '';
-
-  # Enabling BTF causes zfs to be build with debug symbols.
-  # Since zfs compress kernel modules on installation, our strip hooks skip stripping them.
-  # Hence we strip modules prior to compression.
-  postBuild = optionalString buildKernel ''
-     find . -name "*.ko" -print0 | xargs -0 -P$NIX_BUILD_CORES ${stdenv.cc.targetPrefix}strip --strip-debug
-  '';
-
-  postInstall = optionalString buildKernel ''
-    # Add reference that cannot be detected due to compressed kernel module
-    mkdir -p "$out/nix-support"
-    echo "${util-linux}" >> "$out/nix-support/extra-refs"
-  '' + optionalString buildUser ''
-    # Remove provided services as they are buggy
-    rm $out/etc/systemd/system/zfs-import-*.service
-
-    for i in $out/etc/systemd/system/*; do
-       if [ -L $i ]; then
-         continue
-       fi
-       sed -i '/zfs-import-scan.service/d' $i
-       substituteInPlace $i --replace "zfs-import-cache.service" "zfs-import.target"
-    done
-
-    # Remove tests because they add a runtime dependency on gcc
-    rm -rf $out/share/zfs/zfs-tests
-
-    # Add Bash completions.
-    install -v -m444 -D -t $out/share/bash-completion/completions contrib/bash_completion.d/zfs
-    (cd $out/share/bash-completion/completions; ln -s zfs zpool)
-  '';
-
-  postFixup = let
-    path = "PATH=${makeBinPath [ coreutils gawk gnused gnugrep util-linux smartmon sysstat ]}:$PATH";
-  in ''
-    for i in $out/libexec/zfs/zpool.d/*; do
-      sed -i '2i${path}' $i
-    done
-  '';
-
-  outputs = [ "out" ] ++ optionals buildUser [ "dev" ];
-
-  passthru = {
-    inherit enableMail latestCompatibleLinuxPackages;
-
-    tests =
-      if isUnstable then [
-        nixosTests.zfs.unstable
-      ] else [
-        nixosTests.zfs.installer
-        nixosTests.zfs.stable
-      ];
-  };
+    postInstall = optionalString buildKernel ''
+      # Add reference that cannot be detected due to compressed kernel module
+      mkdir -p "$out/nix-support"
+      echo "${util-linux}" >> "$out/nix-support/extra-refs"
+    '' + optionalString buildUser ''
+      # Remove provided services as they are buggy
+      rm $out/etc/systemd/system/zfs-import-*.service
+
+      for i in $out/etc/systemd/system/*; do
+         if [ -L $i ]; then
+           continue
+         fi
+         sed -i '/zfs-import-scan.service/d' $i
+         substituteInPlace $i --replace "zfs-import-cache.service" "zfs-import.target"
+      done
+
+      # Remove tests because they add a runtime dependency on gcc
+      rm -rf $out/share/zfs/zfs-tests
+
+      # Add Bash completions.
+      install -v -m444 -D -t $out/share/bash-completion/completions contrib/bash_completion.d/zfs
+      (cd $out/share/bash-completion/completions; ln -s zfs zpool)
+    '';
 
-  meta = {
-    description = "ZFS Filesystem Linux Kernel module";
-    longDescription = ''
-      ZFS is a filesystem that combines a logical volume manager with a
-      Copy-On-Write filesystem with data integrity detection and repair,
-      snapshotting, cloning, block devices, deduplication, and more.
+    postFixup = let
+      path = "PATH=${makeBinPath [ coreutils gawk gnused gnugrep util-linux smartmon sysstat ]}:$PATH";
+    in ''
+      for i in $out/libexec/zfs/zpool.d/*; do
+        sed -i '2i${path}' $i
+      done
     '';
-    homepage = "https://github.com/openzfs/zfs";
-    changelog = "https://github.com/openzfs/zfs/releases/tag/zfs-${version}";
-    license = lib.licenses.cddl;
-
-    # The case-block for TARGET_CPU has branches for only some CPU families,
-    # which prevents ZFS from building on any other platform.  Since the NixOS
-    # `boot.zfs.enabled` property is `readOnly`, excluding platforms where ZFS
-    # does not build is the only way to produce a NixOS installer on such
-    # platforms.
-    # https://github.com/openzfs/zfs/blob/6723d1110f6daf93be93db74d5ea9f6b64c9bce5/config/always-arch.m4#L12
-    platforms =
-      with lib.systems.inspect.patterns;
-      map (p: p // isLinux) ([ isx86_32 isx86_64 isPower isAarch64 isSparc ] ++ isArmv7);
-
-    maintainers = with lib.maintainers; [ jcumming jonringer globin raitobezarius ];
-    mainProgram = "zfs";
-    # If your Linux kernel version is not yet supported by zfs, try zfsUnstable.
-    # On NixOS set the option boot.zfs.enableUnstable.
-    broken = buildKernel && (kernelCompatible != null) && !kernelCompatible;
-  };
-}
 
+    outputs = [ "out" ] ++ optionals buildUser [ "dev" ];
+
+    passthru = {
+      inherit enableMail latestCompatibleLinuxPackages kernelModuleAttribute;
+      # The corresponding userspace tools to this instantiation
+      # of the ZFS package set.
+      userspaceTools = genericBuild (outerArgs // {
+        configFile = "user";
+      }) innerArgs;
+
+      inherit tests;
+    };
+
+    meta = {
+      description = "ZFS Filesystem Linux" + (if buildUser then " Userspace Tools" else " Kernel Module");
+      longDescription = ''
+        ZFS is a filesystem that combines a logical volume manager with a
+        Copy-On-Write filesystem with data integrity detection and repair,
+        snapshotting, cloning, block devices, deduplication, and more.
+
+        ${if buildUser then "This is the userspace tools package." else "This is the kernel module package."}
+      '';
+      homepage = "https://github.com/openzfs/zfs";
+      changelog = "https://github.com/openzfs/zfs/releases/tag/zfs-${version}";
+      license = lib.licenses.cddl;
+
+      # The case-block for TARGET_CPU has branches for only some CPU families,
+      # which prevents ZFS from building on any other platform.  Since the NixOS
+      # `boot.zfs.enabled` property is `readOnly`, excluding platforms where ZFS
+      # does not build is the only way to produce a NixOS installer on such
+      # platforms.
+      # https://github.com/openzfs/zfs/blob/6723d1110f6daf93be93db74d5ea9f6b64c9bce5/config/always-arch.m4#L12
+      platforms =
+        with lib.systems.inspect.patterns;
+        map (p: p // isLinux) ([ isx86_32 isx86_64 isPower isAarch64 isSparc ] ++ isArmv7);
+
+      inherit maintainers;
+      mainProgram = "zfs";
+      # If your Linux kernel version is not yet supported by zfs, try zfsUnstable.
+      # On NixOS set the option boot.zfs.enableUnstable.
+      broken = buildKernel && (kernelCompatible != null) && !kernelCompatible;
+    };
+  };
+in
+  genericBuild
diff --git a/nixpkgs/pkgs/os-specific/linux/zfs/stable.nix b/nixpkgs/pkgs/os-specific/linux/zfs/stable.nix
index 3e53ba902cbd..5f879320b4dc 100644
--- a/nixpkgs/pkgs/os-specific/linux/zfs/stable.nix
+++ b/nixpkgs/pkgs/os-specific/linux/zfs/stable.nix
@@ -3,7 +3,7 @@
 , stdenv
 , linuxKernel
 , removeLinuxDRM ? false
-, fetchpatch
+, nixosTests
 , ...
 } @ args:
 
@@ -11,18 +11,26 @@ let
   stdenv' = if kernel == null then stdenv else kernel.stdenv;
 in
 callPackage ./generic.nix args {
+  # You have to ensure that in `pkgs/top-level/linux-kernels.nix`
+  # this attribute is the correct one for this package.
+  kernelModuleAttribute = "zfs";
   # check the release notes for compatible kernels
   kernelCompatible =
     if stdenv'.isx86_64 || removeLinuxDRM
-    then kernel.kernelOlder "6.6"
+    then kernel.kernelOlder "6.7"
     else kernel.kernelOlder "6.2";
 
   latestCompatibleLinuxPackages = if stdenv'.isx86_64 || removeLinuxDRM
-    then linuxKernel.packages.linux_6_5
+    then linuxKernel.packages.linux_6_6
     else linuxKernel.packages.linux_6_1;
 
   # this package should point to the latest release.
-  version = "2.2.0";
+  version = "2.2.2";
 
-  sha256 = "sha256-s1sdXSrLu6uSOmjprbUa4cFsE2Vj7JX5i75e4vRnlvg=";
+  tests = [
+    nixosTests.zfs.installer
+    nixosTests.zfs.stable
+  ];
+
+  hash = "sha256-CqhETAwhWMhbld5ib3Rz1dxms+GQbLwjEZw/V7U/2nE=";
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/zfs/unstable.nix b/nixpkgs/pkgs/os-specific/linux/zfs/unstable.nix
index 9c7e14c31bf3..997cbe18ba7d 100644
--- a/nixpkgs/pkgs/os-specific/linux/zfs/unstable.nix
+++ b/nixpkgs/pkgs/os-specific/linux/zfs/unstable.nix
@@ -3,6 +3,7 @@
 , stdenv
 , linuxKernel
 , removeLinuxDRM ? false
+, nixosTests
 , ...
 } @ args:
 
@@ -10,23 +11,29 @@ let
   stdenv' = if kernel == null then stdenv else kernel.stdenv;
 in
 callPackage ./generic.nix args {
+  # You have to ensure that in `pkgs/top-level/linux-kernels.nix`
+  # this attribute is the correct one for this package.
+  kernelModuleAttribute = "zfsUnstable";
   # check the release notes for compatible kernels
-  kernelCompatible = if stdenv'.isx86_64 || removeLinuxDRM
-    then kernel.kernelOlder "6.6"
+  kernelCompatible =
+    if stdenv'.isx86_64 || removeLinuxDRM
+    then kernel.kernelOlder "6.7"
     else kernel.kernelOlder "6.2";
 
   latestCompatibleLinuxPackages = if stdenv'.isx86_64 || removeLinuxDRM
-    then linuxKernel.packages.linux_6_5
+    then linuxKernel.packages.linux_6_6
     else linuxKernel.packages.linux_6_1;
 
   # this package should point to a version / git revision compatible with the latest kernel release
   # IMPORTANT: Always use a tagged release candidate or commits from the
   # zfs-<version>-staging branch, because this is tested by the OpenZFS
   # maintainers.
-  version = "2.2.1-unstable-2023-10-21";
-  rev = "95785196f26e92d82cf4445654ba84e4a9671c57";
-
-  sha256 = "sha256-s1sdXSrLu6uSOmjprbUa4cFsE2Vj7JX5i75e4vRnlvg=";
+  version = "2.2.2";
 
   isUnstable = true;
+  tests = [
+    nixosTests.zfs.unstable
+  ];
+
+  hash = "sha256-CqhETAwhWMhbld5ib3Rz1dxms+GQbLwjEZw/V7U/2nE=";
 }