about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--modules/nixos-apple-silicon/README.md2
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/modules/kernel/default.nix22
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/modules/kernel/edge.nix45
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/modules/mesa/default.nix16
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix30
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-audio/default.nix14
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/bankstown-lv2/default.nix6
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/0001-fs-fcntl-accept-more-values-as-F_DUPFD_CLOEXEC-args.patch40
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config10
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default-pagesize-16k.patch13
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix30
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/sven-iommu-4k.patch449
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/mesa-asahi-edge/default.nix6
-rw-r--r--modules/nixos-apple-silicon/docs/release-notes.md19
-rw-r--r--modules/nixos-apple-silicon/docs/uefi-standalone.md26
-rw-r--r--modules/nixos-apple-silicon/flake.lock8
-rw-r--r--modules/nixos-apple-silicon/flake.nix2
-rw-r--r--modules/nixos-apple-silicon/iso-configuration/installer-configuration.nix2
-rw-r--r--nixpkgs/doc/languages-frameworks/python.section.md2
-rw-r--r--nixpkgs/nixos/modules/hardware/video/switcheroo-control.nix17
-rw-r--r--nixpkgs/nixos/modules/services/desktops/pipewire/pipewire.nix84
-rw-r--r--nixpkgs/nixos/modules/services/desktops/pipewire/wireplumber.nix113
-rw-r--r--nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/microsoft-edge/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/virtualization/OVMF/default.nix5
-rw-r--r--nixpkgs/pkgs/by-name/cl/clash-meta/package.nix (renamed from nixpkgs/pkgs/tools/networking/clash-meta/default.nix)18
-rw-r--r--nixpkgs/pkgs/by-name/in/intune-portal/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/ja/jasper/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/sa/satellite/package.nix57
-rw-r--r--nixpkgs/pkgs/by-name/sc/scrutiny-collector/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/sc/scrutiny/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/se/searxng/package.nix14
-rw-r--r--nixpkgs/pkgs/by-name/su/supersonic/package.nix6
-rw-r--r--nixpkgs/pkgs/data/themes/nordic/default.nix34
-rw-r--r--nixpkgs/pkgs/development/libraries/quarto/default.nix21
-rw-r--r--nixpkgs/pkgs/development/libraries/quarto/fix-deno-path.patch8
-rw-r--r--nixpkgs/pkgs/development/misc/brev-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/mirage-fs/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-eventhub/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/datafusion/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/enamlx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-securitycenter/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/oslo-db/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/oslo-serialization/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/phx-class-registry/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/backblaze-b2/default.nix2
-rw-r--r--nixpkgs/pkgs/development/tools/yq-go/default.nix6
-rw-r--r--nixpkgs/pkgs/games/r2modman/default.nix6
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/hardened/patches.json70
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/xanmod-kernels.nix8
-rwxr-xr-xnixpkgs/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh19
-rw-r--r--nixpkgs/pkgs/os-specific/linux/switcheroo-control/default.nix13
-rw-r--r--nixpkgs/pkgs/servers/minio/default.nix4
-rw-r--r--nixpkgs/pkgs/servers/nosql/mongodb/4.4.nix4
-rw-r--r--nixpkgs/pkgs/top-level/all-packages.nix2
-rw-r--r--nixpkgs/pkgs/top-level/ocaml-packages.nix2
-rw-r--r--nixpkgs/pkgs/top-level/python-packages.nix2
59 files changed, 535 insertions, 854 deletions
diff --git a/modules/nixos-apple-silicon/README.md b/modules/nixos-apple-silicon/README.md
index 171d24cc7f68..1ef3dd39caea 100644
--- a/modules/nixos-apple-silicon/README.md
+++ b/modules/nixos-apple-silicon/README.md
@@ -9,7 +9,7 @@ Please see the documentation and guide below to get started.
 ## Documentation
 
 * [Release Notes](docs/release-notes.md)
-* [Setup, Installation, and Maintenance Guide (2024-01-17)](docs/uefi-standalone.md)
+* [Setup, Installation, and Maintenance Guide (2024-02-26)](docs/uefi-standalone.md)
 
 ## Credits
 
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/modules/kernel/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/modules/kernel/default.nix
index 8e615479c20b..a7b0ea574713 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/modules/kernel/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/modules/kernel/default.nix
@@ -8,7 +8,6 @@
     in
       pkgs'.linux-asahi.override {
         _kernelPatches = config.boot.kernelPatches;
-        _4KBuild = config.hardware.asahi.use4KPages;
         withRust = config.hardware.asahi.withRust;
       };
 
@@ -82,21 +81,22 @@
       efiInstallAsRemovable = true;
       device = "nodev";
     };
+
+    # autosuspend was enabled as safe for the PCI SD card reader
+    # "Genesys Logic, Inc GL9755 SD Host Controller [17a0:9755] (rev 01)"
+    # by recent systemd versions, but this has a "negative interaction"
+    # with our kernel/SoC and causes random boot hangs. disable it!
+    services.udev.extraHwdb = ''
+      pci:v000017A0d00009755*
+        ID_AUTOSUSPEND=0
+    '';
   };
 
   imports = [
-    ./edge.nix
+    (lib.mkRemovedOptionModule [ "hardware" "asahi" "addEdgeKernelConfig" ]
+      "All edge kernel config options are now the default.")
   ];
 
-  options.hardware.asahi.use4KPages = lib.mkOption {
-    type = lib.types.bool;
-    default = false;
-    description = ''
-      Build the Asahi Linux kernel with 4K pages to improve compatibility in
-      some cases at the cost of performance in others.
-    '';
-  };
-
   options.hardware.asahi.withRust = lib.mkOption {
     type = lib.types.bool;
     default = false;
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/modules/kernel/edge.nix b/modules/nixos-apple-silicon/apple-silicon-support/modules/kernel/edge.nix
deleted file mode 100644
index 83abda6335fe..000000000000
--- a/modules/nixos-apple-silicon/apple-silicon-support/modules/kernel/edge.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-# the Asahi Linux edge config and options that must go along with it
-
-{ config, pkgs, lib, ... }:
-{
-  config = lib.mkIf config.hardware.asahi.addEdgeKernelConfig {
-    boot.kernelPatches = [
-      {
-        name = "edge-config";
-        patch = null;
-        # derived from
-        # https://github.com/AsahiLinux/PKGBUILDs/blob/main/linux-asahi/config.edge
-        extraConfig = ''
-          DRM_APPLE m
-          DRM_VGEM n
-          DRM_SCHED y
-          DRM_GEM_SHMEM_HELPER y
-          DRM_ASAHI m
-          SUSPEND y
-        '';
-      }
-    ];
-
-    # required for proper DRM setup even without GPU driver
-    services.xserver.config = ''
-      Section "OutputClass"
-          Identifier "appledrm"
-          MatchDriver "apple"
-          Driver "modesetting"
-          Option "PrimaryGPU" "true"
-      EndSection
-    '';
-
-    # required for edge drivers
-    hardware.asahi.withRust = true;
-  };
-
-  options.hardware.asahi.addEdgeKernelConfig = lib.mkOption {
-    type = lib.types.bool;
-    default = false;
-    description = ''
-      Build the Asahi Linux kernel with additional experimental "edge"
-      configuration options.
-    '';
-  };
-}
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/modules/mesa/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/modules/mesa/default.nix
index 5c53ba33b694..34966d05d7ad 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/modules/mesa/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/modules/mesa/default.nix
@@ -4,13 +4,23 @@
     isMode = mode: (config.hardware.asahi.useExperimentalGPUDriver
         && config.hardware.asahi.experimentalGPUInstallMode == mode);
   in lib.mkMerge [
+    {
+      # required for proper DRM setup even without GPU driver
+      services.xserver.config = ''
+        Section "OutputClass"
+            Identifier "appledrm"
+            MatchDriver "apple"
+            Driver "modesetting"
+            Option "PrimaryGPU" "true"
+        EndSection
+      '';
+    }
     (lib.mkIf config.hardware.asahi.useExperimentalGPUDriver {
-
       # install the drivers
       hardware.opengl.package = config.hardware.asahi.pkgs.mesa-asahi-edge.drivers;
 
-      # required for GPU kernel driver
-      hardware.asahi.addEdgeKernelConfig = true;
+      # required for in-kernel GPU driver
+      hardware.asahi.withRust = true;
     })
     (lib.mkIf (isMode "replace") {
       # replace the Mesa linked into system packages with the Asahi version
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix
index e1b45a8dcbcf..98b111237d61 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix
@@ -36,34 +36,30 @@
     # enable pipewire to run real-time and avoid audible glitches
     security.rtkit.enable = true;
     # set up pipewire with the supported capabilities (instead of pulseaudio)
+    # and asahi-audio configs and plugins
     services.pipewire = {
       enable = true;
+      configPackages = [ asahi-audio ];
+      extraLv2Packages = [ lsp-plugins pkgs.bankstown-lv2 ];
 
       alsa.enable = true;
-      wireplumber.enable = true;
       pulse.enable = true;
+      wireplumber = {
+        enable = true;
+        configPackages = [ asahi-audio ];
+        extraLv2Packages = [ lsp-plugins pkgs.bankstown-lv2 ];
+      };
     };
 
+    # set up enivronment so that UCM configs are used as well
+    environment.variables.ALSA_CONFIG_UCM2 = "${pkgs.alsa-ucm-conf-asahi}/share/alsa/ucm2";
+    systemd.user.services.pipewire.environment.ALSA_CONFIG_UCM2 = config.environment.variables.ALSA_CONFIG_UCM2;
+    systemd.user.services.wireplumber.environment.ALSA_CONFIG_UCM2 = config.environment.variables.ALSA_CONFIG_UCM2;
+
     # enable speakersafetyd to protect speakers
     systemd.packages = lib.mkAssert lsp-plugins-is-safe
       "lsp-plugins is unpatched/outdated and speakers cannot be safely enabled"
       [ pkgs.speakersafetyd ];
     services.udev.packages = [ pkgs.speakersafetyd ];
-
-    # set up enivronment so that asahi-audio and UCM configs are used
-    environment.etc = builtins.listToAttrs (builtins.map
-      (f: { name = f; value = { source = "${asahi-audio}/share/${f}"; }; })
-      asahi-audio.providedConfigFiles);
-    environment.variables.ALSA_CONFIG_UCM2 = "${pkgs.alsa-ucm-conf-asahi}/share/alsa/ucm2";
-
-    # set up pipewire and wireplumber to use asahi-audio configs and plugins
-    systemd.user.services.pipewire.environment.ALSA_CONFIG_UCM2 = config.environment.variables.ALSA_CONFIG_UCM2;
-    systemd.user.services.wireplumber.environment.ALSA_CONFIG_UCM2 = config.environment.variables.ALSA_CONFIG_UCM2;
-    systemd.user.services.pipewire.environment.LV2_PATH = let
-      lv2Plugins = [ lsp-plugins pkgs.bankstown-lv2 ];
-    in lib.makeSearchPath "lib/lv2" lv2Plugins;
-    systemd.user.services.wireplumber.environment.LV2_PATH = let
-      lv2Plugins = [ lsp-plugins pkgs.bankstown-lv2 ];
-    in lib.makeSearchPath "lib/lv2" lv2Plugins;
   };
 }
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-audio/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-audio/default.nix
index 4ccbcc5d066c..d54c26cb299f 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-audio/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-audio/default.nix
@@ -6,7 +6,6 @@
 stdenv.mkDerivation rec {
   pname = "asahi-audio";
   # tracking: https://src.fedoraproject.org/rpms/asahi-audio
-  # note: ensure that the providedConfigFiles list below is current!
   version = "1.6";
 
   src = fetchFromGitHub {
@@ -35,17 +34,4 @@ stdenv.mkDerivation rec {
     # no need to link the asahi-audio dir globally
     mv $out/share/asahi-audio $out
   '';
-
-  # list of config files installed in $out/share/ and destined for
-  # /etc/, from the `install -pm0644 conf/` lines in the Makefile. note
-  # that the contents of asahi-audio/ stay in $out/ and the config files
-  # are modified to point to them.
-  passthru.providedConfigFiles = [
-    "wireplumber/wireplumber.conf.d/99-asahi.conf"
-    "wireplumber/policy.lua.d/85-asahi-policy.lua"
-    "wireplumber/main.lua.d/85-asahi.lua"
-    "wireplumber/scripts/policy-asahi.lua"
-    "pipewire/pipewire.conf.d/99-asahi.conf"
-    "pipewire/pipewire-pulse.conf.d/99-asahi.conf"
-  ];
 }
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/bankstown-lv2/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/bankstown-lv2/default.nix
index 275019bf1acb..58c7bf91d078 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/bankstown-lv2/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/bankstown-lv2/default.nix
@@ -9,16 +9,16 @@
 rustPlatform.buildRustPackage rec {
   pname = "bankstown-lv2";
   # tracking: https://src.fedoraproject.org/rpms/rust-bankstown-lv2
-  version = "1.0.3";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "chadmed";
     repo = "bankstown";
     rev = version;
-    hash = "sha256-dPgQuwwY1FEsH65vYClTtV/c+0cB5uq8QYszeHPdIQA=";
+    hash = "sha256-IThXEY+mvT2MCw0PSWU/182xbUafd6dtm6hNjieLlKg=";
   };
 
-  cargoSha256 = "sha256-HIW4mJ1VQSzOIksmJ2d4FQjTfU2Zk6xva1mYUk6MQCI=";
+  cargoSha256 = "sha256-yRzM4tcYc6mweTpLnnlCeKgP00L2wRgHamtUzK9Kstc=";
 
   installPhase = ''
     export LIBDIR=$out/lib
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/0001-fs-fcntl-accept-more-values-as-F_DUPFD_CLOEXEC-args.patch b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/0001-fs-fcntl-accept-more-values-as-F_DUPFD_CLOEXEC-args.patch
new file mode 100644
index 000000000000..647fdb6c5340
--- /dev/null
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/0001-fs-fcntl-accept-more-values-as-F_DUPFD_CLOEXEC-args.patch
@@ -0,0 +1,40 @@
+From 0fcdbacd8b06c24f5761a0cf9cb0c43cad05c19b Mon Sep 17 00:00:00 2001
+From: Thomas Watson <twatson52@icloud.com>
+Date: Mon, 26 Feb 2024 19:51:12 -0600
+Subject: [PATCH] fs/fcntl: accept more values as F_DUPFD_CLOEXEC args
+
+libwebrtc doesn't pass anything as the arg to this function so the
+minimum fd ends up as random garbage. If it's bigger than the maximum
+fd, which is likely, then the duplication fails, and libwebrtc breaks.
+
+The previous patch (081abc5fa701738699705a6c0a41c824df77cb37) rejects
+args >= 1024 (the default soft max fd) and instead subtitutes a minimum
+fd of 0 to allow such requests to succeed.
+
+However, gnulib's test suite can pass the following values and expects
+them to fail; this patch prevents those from succeeding:
+* -1 (hard-coded)
+* 1024 (`ulimit -n` value by default)
+* 1048576 (`ulimit -n` value in Nix build sandbox)
+
+Hopefully the garbage values libwebrtc passes do not match very often.
+---
+ fs/fcntl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fs/fcntl.c b/fs/fcntl.c
+index f18f87419445..65a6861476ec 100644
+--- a/fs/fcntl.c
++++ b/fs/fcntl.c
+@@ -326,7 +326,7 @@ static long do_fcntl(int fd, unsigned int cmd, unsigned long arg,
+ 		err = f_dupfd(argi, filp, 0);
+ 		break;
+ 	case F_DUPFD_CLOEXEC:
+-		if (arg >= 1024)
++		if ((arg > 1024) && (argi != 1048576) && (argi != -1))
+ 			argi = 0; /* Lol libwebrtc */
+ 		err = f_dupfd(argi, filp, O_CLOEXEC);
+ 		break;
+-- 
+2.43.0
+
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config
index 6fd5630b89cb..18639f02111b 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config
@@ -3119,7 +3119,7 @@ CONFIG_TABLET_USB_HANWANG=m
 CONFIG_TABLET_USB_KBTAB=m
 CONFIG_TABLET_USB_PEGASUS=m
 # CONFIG_TABLET_SERIAL_WACOM4 is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_TOUCHSCREEN=y
 CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_AD714X is not set
 # CONFIG_INPUT_ATMEL_CAPTOUCH is not set
@@ -4881,7 +4881,7 @@ CONFIG_DRM_TTM_HELPER=y
 # CONFIG_DRM_RADEON is not set
 # CONFIG_DRM_AMDGPU is not set
 # CONFIG_DRM_NOUVEAU is not set
-CONFIG_DRM_VGEM=y
+CONFIG_DRM_VGEM=m
 # CONFIG_DRM_VKMS is not set
 # CONFIG_DRM_VMWGFX is not set
 # CONFIG_DRM_UDL is not set
@@ -7783,11 +7783,17 @@ CONFIG_TCG_TPM=y
 CONFIG_TCG_TIS=m
 CONFIG_TCG_CRB=m
 
+# for better efficiency with sound
+CONFIG_UCLAMP_TASK=y
+CONFIG_UCLAMP_TASK_GROUP=y
+CONFIG_UCLAMP_BUCKETS_COUNT=5
+
 # Fedora Asahi Remix-specific options
 # generated with something like
 # git diff --name-only fedora-6.6 fedora-asahi-6.6 redhat/configs/ | xargs cat >> config
 # in a checkout of https://gitlab.com/fedora-asahi/kernel-asahi/-/tree/fedora-asahi-6.6
 
+CONFIG_SUSPEND=y
 # CONFIG_APPLE_PLATFORMS is not set
 # CONFIG_DRM_SIMPLEDRM_BACKLIGHT is not set
 CONFIG_RUST=y
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default-pagesize-16k.patch b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default-pagesize-16k.patch
deleted file mode 100644
index c6fb651fb686..000000000000
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default-pagesize-16k.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
-index a1eb6572ecd2..b94fbd9b3d70 100644
---- a/arch/arm64/Kconfig
-+++ b/arch/arm64/Kconfig
-@@ -1036,7 +1036,7 @@ endmenu
- 
- choice
- 	prompt "Page size"
--	default ARM64_4K_PAGES
-+	default ARM64_16K_PAGES
- 	help
- 	  Page size (translation granule) configuration.
- 
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix
index debccc6bcce4..36e7c0758a85 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix
@@ -5,7 +5,6 @@
 , writeText
 , removeReferencesTo
 , linuxPackagesFor
-, _4KBuild ? false
 , withRust ? false
 , _kernelPatches ? [ ]
 }:
@@ -72,7 +71,7 @@ let
           ${lib.strings.concatStringsSep "\n" extraConfigText}
         '';
       # final config as an attrset
-      config = let
+      configAttrs = let
         makePair = t: lib.nameValuePair (i t 0) (i t 1);
         configList = (parseConfig origConfigText) ++ extraConfig;
       in builtins.listToAttrs (map makePair (lib.lists.reverseList configList));
@@ -96,11 +95,14 @@ let
         # tracking: https://github.com/AsahiLinux/linux/tree/asahi-wip (w/ fedora verification)
         owner = "AsahiLinux";
         repo = "linux";
-        rev = "asahi-6.6-14";
-        hash = "sha256-+ydX2XXIbcVfq27WC68EPP8n3bf+WD5fDG7FBq3QJi4=";
+        rev = "asahi-6.6-15";
+        hash = "sha256-Jm7wTKWuwd/6ZN0g5F4CNNETiOyGQL31hfSyTDYH85k=";
       };
 
       kernelPatches = [
+        { name = "coreutils-fix";
+          patch = ./0001-fs-fcntl-accept-more-values-as-F_DUPFD_CLOEXEC-args.patch;
+        }
         # speaker enablement; we assert on the relevant lsp-plugins patch
         # before installing speakersafetyd to let the speakers work
         { name = "speakers-1";
@@ -119,24 +121,12 @@ let
         { name = "rustc-1.75.0";
           patch = ./0001-check-in-new-alloc-for-1.75.0.patch;
         }
-      ] ++ lib.optionals _4KBuild [
-        # thanks to Sven Peter
-        # https://lore.kernel.org/linux-iommu/20211019163737.46269-1-sven@svenpeter.dev/
-        { name = "sven-iommu-4k";
-          patch = ./sven-iommu-4k.patch;
-        }
-        (builtins.throw "The Asahi 4K kernel patch is currently broken. Contributions to fix are welcome.")
-      ] ++ lib.optionals (!_4KBuild) [
-        # patch the kernel to set the default size to 16k instead of modifying
-        # the config so we don't need to convert our config to the nixos
-        # infrastructure or patch it and thus introduce a dependency on the host
-        # system architecture
-        { name = "default-pagesize-16k";
-          patch = ./default-pagesize-16k.patch;
-        }
       ] ++ _kernelPatches;
 
-      inherit configfile config;
+      inherit configfile;
+      # hide Rust support from the nixpkgs infra to avoid it re-adding the rust packages.
+      # we can't use it until it's in stable and until we've evaluated the cross-compilation impact.
+      config = configAttrs // { "CONFIG_RUST" = "n"; };
     } // (args.argsOverride or {})).overrideAttrs (old: if withRust then {
       nativeBuildInputs = (old.nativeBuildInputs or []) ++ [
         rust-bindgen
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/sven-iommu-4k.patch b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/sven-iommu-4k.patch
deleted file mode 100644
index 25eb54140025..000000000000
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/sven-iommu-4k.patch
+++ /dev/null
@@ -1,449 +0,0 @@
-diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c
-index 4f1a37bdd42d..c8c3ea81d818 100644
---- a/drivers/iommu/apple-dart.c
-+++ b/drivers/iommu/apple-dart.c
-@@ -97,7 +97,6 @@ struct apple_dart_hw {
-  * @lock: lock for hardware operations involving this dart
-  * @pgsize: pagesize supported by this DART
-  * @supports_bypass: indicates if this DART supports bypass mode
-- * @force_bypass: force bypass mode due to pagesize mismatch?
-  * @sid2group: maps stream ids to iommu_groups
-  * @iommu: iommu core device
-  */
-@@ -115,7 +114,6 @@ struct apple_dart {
-
- 	u32 pgsize;
- 	u32 supports_bypass : 1;
--	u32 force_bypass : 1;
-
- 	struct iommu_group *sid2group[DART_MAX_STREAMS];
- 	struct iommu_device iommu;
-@@ -499,9 +497,6 @@ static int apple_dart_attach_dev(struct iommu_domain *domain,
- 	struct apple_dart_master_cfg *cfg = dev_iommu_priv_get(dev);
- 	struct apple_dart_domain *dart_domain = to_dart_domain(domain);
-
--	if (cfg->stream_maps[0].dart->force_bypass &&
--	    domain->type != IOMMU_DOMAIN_IDENTITY)
--		return -EINVAL;
- 	if (!cfg->stream_maps[0].dart->supports_bypass &&
- 	    domain->type == IOMMU_DOMAIN_IDENTITY)
- 		return -EINVAL;
-@@ -630,8 +625,6 @@ static int apple_dart_of_xlate(struct device *dev, struct of_phandle_args *args)
- 	if (cfg_dart) {
- 		if (cfg_dart->supports_bypass != dart->supports_bypass)
- 			return -EINVAL;
--		if (cfg_dart->force_bypass != dart->force_bypass)
--			return -EINVAL;
- 		if (cfg_dart->pgsize != dart->pgsize)
- 			return -EINVAL;
- 	}
-@@ -736,8 +729,6 @@ static int apple_dart_def_domain_type(struct device *dev)
- {
- 	struct apple_dart_master_cfg *cfg = dev_iommu_priv_get(dev);
-
--	if (cfg->stream_maps[0].dart->force_bypass)
--		return IOMMU_DOMAIN_IDENTITY;
- 	if (!cfg->stream_maps[0].dart->supports_bypass)
- 		return IOMMU_DOMAIN_DMA;
-
-@@ -1121,8 +1121,6 @@ static int apple_dart_probe(struct platform_device *pdev)
- 		goto err_clk_disable;
- 	}
-
--	dart->force_bypass = dart->pgsize > PAGE_SIZE;
--
- 	ret = apple_dart_hw_reset(dart);
- 	if (ret)
- 		goto err_clk_disable;
-@@ -1149,8 +1147,8 @@ static int apple_dart_probe(struct platform_device *pdev)
-
- 	dev_info(
- 		&pdev->dev,
--		"DART [pagesize %x, %d streams, bypass support: %d, bypass forced: %d] initialized\n",
--		dart->pgsize, dart->num_streams, dart->supports_bypass, dart->force_bypass);
-+		"DART [pagesize %x, %d streams, bypass support: %d] initialized\n",
-+		dart->pgsize, dart->num_streams, dart->supports_bypass);
- 	return 0;
-
- err_sysfs_remove:
-
-diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
-index 09f6e1c0f9c0..094592751cfa 100644
---- a/drivers/iommu/dma-iommu.c
-+++ b/drivers/iommu/dma-iommu.c
-@@ -20,9 +20,11 @@
- #include <linux/iommu.h>
- #include <linux/iova.h>
- #include <linux/irq.h>
-+#include <linux/kernel.h>
- #include <linux/list_sort.h>
- #include <linux/mm.h>
- #include <linux/mutex.h>
-+#include <linux/pfn.h>
- #include <linux/pci.h>
- #include <linux/scatterlist.h>
- #include <linux/spinlock.h>
-@@ -710,6 +712,9 @@ static struct page **__iommu_dma_alloc_pages(struct device *dev,
- {
- 	struct page **pages;
- 	unsigned int i = 0, nid = dev_to_node(dev);
-+	unsigned int j;
-+	unsigned long min_order = __fls(order_mask);
-+	unsigned int min_order_size = 1U << min_order;
-
- 	order_mask &= (2U << MAX_ORDER) - 1;
- 	if (!order_mask)
-@@ -749,15 +754,37 @@ static struct page **__iommu_dma_alloc_pages(struct device *dev,
- 				split_page(page, order);
- 			break;
- 		}
--		if (!page) {
--			__iommu_dma_free_pages(pages, i);
--			return NULL;
-+
-+		/*
-+		 * If we have no valid page here we might be trying to allocate
-+		 * the last block consisting of 1<<order pages (to guarantee
-+		 * alignment) but actually need less pages than that.
-+		 * In that case we just try to allocate the entire block and
-+		 * directly free the spillover pages again.
-+		 */
-+		if (!page && !order_mask && count < min_order_size) {
-+			page = alloc_pages_node(nid, gfp, min_order);
-+			if (!page)
-+				goto free_pages;
-+			split_page(page, min_order);
-+
-+			for (j = count; j < min_order_size; ++j)
-+				__free_page(page + j);
-+
-+			order_size = count;
- 		}
-+
-+		if (!page)
-+			goto free_pages;
- 		count -= order_size;
- 		while (order_size--)
- 			pages[i++] = page++;
- 	}
- 	return pages;
-+
-+free_pages:
-+	__iommu_dma_free_pages(pages, i);
-+	return NULL;
- }
-
- /*
-@@ -785,16 +787,28 @@ static struct page **__iommu_dma_alloc_noncontiguous(struct device *dev,
- 	bool coherent = dev_is_dma_coherent(dev);
- 	int ioprot = dma_info_to_prot(DMA_BIDIRECTIONAL, coherent, attrs);
- 	unsigned int count, min_size, alloc_sizes = domain->pgsize_bitmap;
-+	struct sg_append_table sgt_append = {};
-+	struct scatterlist *last_sg;
- 	struct page **pages;
- 	dma_addr_t iova;
- 	ssize_t ret;
-+	phys_addr_t orig_s_phys;
-+	size_t orig_s_len, orig_s_off, s_iova_off, iova_size;
-
- 	if (static_branch_unlikely(&iommu_deferred_attach_enabled) &&
- 	    iommu_deferred_attach(dev, domain))
- 		return NULL;
-
- 	min_size = alloc_sizes & -alloc_sizes;
--	if (min_size < PAGE_SIZE) {
-+	if (iovad->granule > PAGE_SIZE) {
-+		if (size < iovad->granule) {
-+			/* ensure a single contiguous allocation */
-+			min_size = ALIGN(size, PAGE_SIZE*(1U<<get_order(size)));
-+			alloc_sizes = min_size;
-+		}
-+
-+		size = PAGE_ALIGN(size);
-+	} else if (min_size < PAGE_SIZE) {
- 		min_size = PAGE_SIZE;
- 		alloc_sizes |= PAGE_SIZE;
- 	} else {
-@@ -797,13 +836,17 @@ static struct page **__iommu_dma_alloc_noncontiguous(struct device *dev,
- 	if (!pages)
- 		return NULL;
-
--	size = iova_align(iovad, size);
--	iova = iommu_dma_alloc_iova(domain, size, dev->coherent_dma_mask, dev);
-+	iova_size = iova_align(iovad, size);
-+	iova = iommu_dma_alloc_iova(domain, iova_size, dev->coherent_dma_mask, dev);
- 	if (!iova)
- 		goto out_free_pages;
-
--	if (sg_alloc_table_from_pages(sgt, pages, count, 0, size, GFP_KERNEL))
-+	/* append_table is only used to get a pointer to the last entry */
-+	if (sg_alloc_append_table_from_pages(&sgt_append, pages, count, 0,
-+					iova_size, UINT_MAX, 0, GFP_KERNEL))
- 		goto out_free_iova;
-+	memcpy(sgt, &sgt_append.sgt, sizeof(*sgt));
-+	last_sg = sgt_append.prv;
-
- 	if (!(ioprot & IOMMU_CACHE)) {
- 		struct scatterlist *sg;
-@@ -825,18 +839,59 @@ static struct page **__iommu_dma_alloc_noncontiguous(struct device *dev,
- 			arch_dma_prep_coherent(sg_page(sg), sg->length);
- 	}
-
-+	if (iovad->granule > PAGE_SIZE) {
-+		if (size < iovad->granule) {
-+			/*
-+			 * we only have a single sg list entry here that is
-+			 * likely not aligned to iovad->granule. adjust the
-+			 * entry to represent the encapsulating IOMMU page
-+			 * and then later restore everything to its original
-+			 * values, similar to the impedance matching done in
-+			 * iommu_dma_map_sg.
-+			 */
-+			orig_s_phys = sg_phys(sgt->sgl);
-+			orig_s_len = sgt->sgl->length;
-+			orig_s_off = sgt->sgl->offset;
-+			s_iova_off = iova_offset(iovad, orig_s_phys);
-+
-+			sg_set_page(sgt->sgl,
-+				pfn_to_page(PHYS_PFN(orig_s_phys - s_iova_off)),
-+				iova_align(iovad, orig_s_len + s_iova_off),
-+				sgt->sgl->offset & ~s_iova_off);
-+		} else {
-+			/*
-+			 * convince iommu_map_sg_atomic to map the last block
-+			 * even though it may be too small.
-+			 */
-+			orig_s_len = last_sg->length;
-+			last_sg->length = iova_align(iovad, last_sg->length);
-+		}
-+	}
-+
- 	ret = iommu_map_sg_atomic(domain, iova, sgt->sgl, sgt->orig_nents, ioprot);
--	if (ret < 0 || ret < size)
-+	if (ret < 0 || ret < iova_size)
- 		goto out_free_sg;
-
-+	if (iovad->granule > PAGE_SIZE) {
-+		if (size < iovad->granule) {
-+			sg_set_page(sgt->sgl,
-+				pfn_to_page(PHYS_PFN(orig_s_phys)),
-+				orig_s_len, orig_s_off);
-+
-+			iova += s_iova_off;
-+		} else {
-+			last_sg->length = orig_s_len;
-+		}
-+	}
-+
- 	sgt->sgl->dma_address = iova;
--	sgt->sgl->dma_length = size;
-+	sgt->sgl->dma_length = iova_size;
- 	return pages;
-
- out_free_sg:
- 	sg_free_table(sgt);
- out_free_iova:
--	iommu_dma_free_iova(cookie, iova, size, NULL);
-+	iommu_dma_free_iova(cookie, iova, iova_size, NULL);
- out_free_pages:
- 	__iommu_dma_free_pages(pages, count);
- 	return NULL;
-@@ -1040,8 +1124,9 @@ static int __finalise_sg(struct device *dev, struct scatterlist *sg, int nents,
- 		unsigned int s_length = sg_dma_len(s);
- 		unsigned int s_iova_len = s->length;
-
--		s->offset += s_iova_off;
--		s->length = s_length;
-+		sg_set_page(s,
-+			    pfn_to_page(PHYS_PFN(sg_phys(s) + s_iova_off)),
-+			    s_length, s_iova_off & ~PAGE_MASK);
- 		sg_dma_address(s) = DMA_MAPPING_ERROR;
- 		sg_dma_len(s) = 0;
-
-@@ -1082,13 +1167,17 @@ static int __finalise_sg(struct device *dev, struct scatterlist *sg, int nents,
- static void __invalidate_sg(struct scatterlist *sg, int nents)
- {
- 	struct scatterlist *s;
-+	phys_addr_t orig_paddr;
- 	int i;
-
- 	for_each_sg(sg, s, nents, i) {
--		if (sg_dma_address(s) != DMA_MAPPING_ERROR)
--			s->offset += sg_dma_address(s);
--		if (sg_dma_len(s))
--			s->length = sg_dma_len(s);
-+		if (sg_dma_len(s)) {
-+			orig_paddr = sg_phys(s) + sg_dma_address(s);
-+			sg_set_page(s,
-+				    pfn_to_page(PHYS_PFN(orig_paddr)),
-+				    sg_dma_len(s),
-+				    sg_dma_address(s) & ~PAGE_MASK);
-+		}
- 		sg_dma_address(s) = DMA_MAPPING_ERROR;
- 		sg_dma_len(s) = 0;
- 	}
-@@ -1166,15 +1255,16 @@ static int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg,
- 	 * stashing the unaligned parts in the as-yet-unused DMA fields.
- 	 */
- 	for_each_sg(sg, s, nents, i) {
--		size_t s_iova_off = iova_offset(iovad, s->offset);
-+		phys_addr_t s_phys = sg_phys(s);
-+		size_t s_iova_off = iova_offset(iovad, s_phys);
- 		size_t s_length = s->length;
- 		size_t pad_len = (mask - iova_len + 1) & mask;
-
- 		sg_dma_address(s) = s_iova_off;
- 		sg_dma_len(s) = s_length;
--		s->offset -= s_iova_off;
- 		s_length = iova_align(iovad, s_length + s_iova_off);
--		s->length = s_length;
-+		sg_set_page(s, pfn_to_page(PHYS_PFN(s_phys - s_iova_off)),
-+			    s_length, s->offset & ~s_iova_off);
-
- 		/*
- 		 * Due to the alignment of our single IOVA allocation, we can
-@@ -1412,9 +1502,15 @@ static int iommu_dma_get_sgtable(struct device *dev, struct sg_table *sgt,
- 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
- 		unsigned long attrs)
- {
-+	struct iommu_domain *domain = iommu_get_dma_domain(dev);
-+	struct iommu_dma_cookie *cookie = domain->iova_cookie;
-+	struct iova_domain *iovad = &cookie->iovad;
- 	struct page *page;
- 	int ret;
-
-+	if (iovad->granule > PAGE_SIZE)
-+		return -ENXIO;
-+
- 	if (is_vmalloc_addr(cpu_addr)) {
- 		struct page **pages = dma_common_find_pages(cpu_addr);
-
-diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
-index f2c45b85b9fc..0c370e486d6e 100644
---- a/drivers/iommu/iommu.c
-+++ b/drivers/iommu/iommu.c
-@@ -80,6 +80,8 @@ static struct iommu_domain *__iommu_domain_alloc(struct bus_type *bus,
- 						 unsigned type);
- static int __iommu_attach_device(struct iommu_domain *domain,
- 				 struct device *dev);
-+static void __iommu_detach_device(struct iommu_domain *domain,
-+				  struct device *dev);
- static int __iommu_attach_group(struct iommu_domain *domain,
- 				struct iommu_group *group);
- static void __iommu_detach_group(struct iommu_domain *domain,
-@@ -1976,6 +1978,24 @@ void iommu_domain_free(struct iommu_domain *domain)
- }
- EXPORT_SYMBOL_GPL(iommu_domain_free);
-
-+static int iommu_check_page_size(struct iommu_domain *domain,
-+				struct device *dev)
-+{
-+	bool trusted = !(dev_is_pci(dev) && to_pci_dev(dev)->untrusted);
-+
-+	if (!iommu_is_paging_domain(domain))
-+		return 0;
-+	if (iommu_is_large_pages_domain(domain) && trusted)
-+		return 0;
-+
-+	if (!(domain->pgsize_bitmap & (PAGE_SIZE | (PAGE_SIZE - 1)))) {
-+		pr_warn("IOMMU pages cannot exactly represent CPU pages.\n");
-+		return -EFAULT;
-+	}
-+
-+	return 0;
-+}
-+
- static int __iommu_attach_device(struct iommu_domain *domain,
- 				 struct device *dev)
- {
-@@ -1985,9 +2005,23 @@ static int __iommu_attach_device(struct iommu_domain *domain,
- 		return -ENODEV;
-
- 	ret = domain->ops->attach_dev(domain, dev);
--	if (!ret)
--		trace_attach_device_to_domain(dev);
--	return ret;
-+	if (ret)
-+		return ret;
-+
-+	/*
-+	 * Check that CPU pages can be represented by the IOVA granularity.
-+	 * This has to be done after ops->attach_dev since many IOMMU drivers
-+	 * only limit domain->pgsize_bitmap after having attached the first
-+	 * device.
-+	 */
-+	ret = iommu_check_page_size(domain, dev);
-+	if (ret) {
-+		__iommu_detach_device(domain, dev);
-+		return ret;
-+	}
-+
-+	trace_attach_device_to_domain(dev);
-+	return 0;
- }
-
- int iommu_attach_device(struct iommu_domain *domain, struct device *dev)
-diff --git a/drivers/iommu/iova.c b/drivers/iommu/iova.c
-index db77aa675145..180ce65a6789 100644
---- a/drivers/iommu/iova.c
-+++ b/drivers/iommu/iova.c
-@@ -49,10 +49,11 @@ init_iova_domain(struct iova_domain *iovad, unsigned long granule,
- {
- 	/*
- 	 * IOVA granularity will normally be equal to the smallest
--	 * supported IOMMU page size; both *must* be capable of
--	 * representing individual CPU pages exactly.
-+	 * supported IOMMU page size; while both usually are capable of
-+	 * representing individual CPU pages exactly the IOVA allocator
-+	 * supports any granularities that are an exact power of two.
- 	 */
--	BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule));
-+	BUG_ON(!is_power_of_2(granule));
-
- 	spin_lock_init(&iovad->iova_rbtree_lock);
- 	iovad->rbroot = RB_ROOT;
-diff --git a/include/linux/iommu.h b/include/linux/iommu.h
-index 9208eca4b0d1..dec2dd70a876 100644
---- a/include/linux/iommu.h
-+++ b/include/linux/iommu.h
-@@ -63,6 +63,8 @@ struct iommu_domain_geometry {
- 					      implementation              */
- #define __IOMMU_DOMAIN_PT	(1U << 2)  /* Domain is identity mapped   */
- #define __IOMMU_DOMAIN_DMA_FQ	(1U << 3)  /* DMA-API uses flush queue    */
-+#define __IOMMU_DOMAIN_LP	(1U << 4)  /* Support for PAGE_SIZE smaller
-+					      than IOMMU page size        */
-
- /*
-  * This are the possible domain-types
-@@ -82,10 +84,12 @@ struct iommu_domain_geometry {
- #define IOMMU_DOMAIN_IDENTITY	(__IOMMU_DOMAIN_PT)
- #define IOMMU_DOMAIN_UNMANAGED	(__IOMMU_DOMAIN_PAGING)
- #define IOMMU_DOMAIN_DMA	(__IOMMU_DOMAIN_PAGING |	\
--				 __IOMMU_DOMAIN_DMA_API)
-+				 __IOMMU_DOMAIN_DMA_API |       \
-+				 __IOMMU_DOMAIN_LP)
- #define IOMMU_DOMAIN_DMA_FQ	(__IOMMU_DOMAIN_PAGING |	\
- 				 __IOMMU_DOMAIN_DMA_API |	\
--				 __IOMMU_DOMAIN_DMA_FQ)
-+				 __IOMMU_DOMAIN_DMA_FQ |        \
-+				 __IOMMU_DOMAIN_LP)
-
- struct iommu_domain {
- 	unsigned type;
-@@ -102,6 +106,16 @@ static inline bool iommu_is_dma_domain(struct iommu_domain *domain)
- 	return domain->type & __IOMMU_DOMAIN_DMA_API;
- }
-
-+static inline bool iommu_is_paging_domain(struct iommu_domain *domain)
-+{
-+	return domain->type & __IOMMU_DOMAIN_PAGING;
-+}
-+
-+static inline bool iommu_is_large_pages_domain(struct iommu_domain *domain)
-+{
-+	return domain->type & __IOMMU_DOMAIN_LP;
-+}
-+
- enum iommu_cap {
- 	IOMMU_CAP_CACHE_COHERENCY,	/* IOMMU can enforce cache coherent DMA
- 					   transactions */
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/mesa-asahi-edge/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/mesa-asahi-edge/default.nix
index bb828ba4c771..179d742af7b7 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/mesa-asahi-edge/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/mesa-asahi-edge/default.nix
@@ -13,14 +13,14 @@
 }).overrideAttrs (oldAttrs: {
   # version must be the same length (i.e. no unstable or date)
   # so that system.replaceRuntimeDependencies can work
-  version = "24.0.0";
+  version = "24.1.0";
   src = fetchFromGitLab {
     # tracking: https://pagure.io/fedora-asahi/mesa/commits/asahi
     domain = "gitlab.freedesktop.org";
     owner = "asahi";
     repo = "mesa";
-    rev = "asahi-20231213";
-    hash = "sha256-hl0JtwWEXaCkhCMQJ393mzfw/eEx6m9DYNS+spQ3Vhs=";
+    rev = "asahi-20240218";
+    hash = "sha256-IMR6x7xYUOp/IBycL8RKs4lbInEh2Xfu6Kjom4S+D/s=";
   };
 
   mesonFlags =
diff --git a/modules/nixos-apple-silicon/docs/release-notes.md b/modules/nixos-apple-silicon/docs/release-notes.md
index 089017dde28e..251fe6cc9b49 100644
--- a/modules/nixos-apple-silicon/docs/release-notes.md
+++ b/modules/nixos-apple-silicon/docs/release-notes.md
@@ -2,6 +2,25 @@
 
 This file contains important information for each release.
 
+## 2024-02-26
+
+This release updates nixpkgs, the kernel, and Mesa. Thanks to oliverbestmann for
+the updates.
+
+This release also includes a patch to fix random boot hangs with recent versions
+of nixpkgs.
+
+The kernel and Mesa are now upgraded to OpenGL 4.6 compatibility. Restructurings
+and upgrades have been made in the sound support as well (in particular an
+upgrade to the `bankstown-lv2` bass enhancer), and quality should be improved.
+
+The GPU acceleration and sound upgrades require packages and features present
+only in the latest nixpkgs unstable releases. If you are using NixOS 23.11,
+please remain on an older release. This may be addressed in the future;
+contributions are welcome.
+
+Upgrading nixpkgs brings GCC 13.2 as the default system compiler.
+
 ## 2024-01-17
 
 This release updates nixpkgs.
diff --git a/modules/nixos-apple-silicon/docs/uefi-standalone.md b/modules/nixos-apple-silicon/docs/uefi-standalone.md
index e7e160a75aa3..20d926e17c91 100644
--- a/modules/nixos-apple-silicon/docs/uefi-standalone.md
+++ b/modules/nixos-apple-silicon/docs/uefi-standalone.md
@@ -1,11 +1,11 @@
-# UEFI Boot Standalone NixOS (2024-01-17)
+# UEFI Boot Standalone NixOS (2024-02-26)
 
 This guide will build and was tested with the following software:
-* Asahi Linux kernel version 6.6.0-asahi14
-* Asahi Linux's Mesa version 24.0.0_asahi-20231213-1
+* Asahi Linux kernel version 6.6.0-asahi15
+* Asahi Linux's Mesa version 24.1.0_asahi-20240218-1
 * m1n1 version v1.4.11
 * Asahi Linux's U-Boot version 2023.07.02.asahi4-1
-* Nixpkgs, as of 2024-01-15
+* Nixpkgs, as of 2024-02-26
 * macOS stub 12.3
 
 NOTE: The latest version of this guide will always be [at its home](https://github.com/tpwrules/nixos-apple-silicon/blob/main/docs/uefi-standalone.md). For more general information about Linux on Apple Silicon Macs, refer to the [Asahi Linux project](https://asahilinux.org/) and [alpha installer release](https://asahilinux.org/2022/03/asahi-linux-alpha-release/).
@@ -228,12 +228,6 @@ Add the `./apple-silicon-support` directory to the imports list and switch off t
   boot.loader.efi.canTouchEfiVariables = false;
 ```
 
-If you used the cross-compiled installer image, i.e. you downloaded the ISO from GitHub or built it on an `x86_64-linux` machine, you may add the following line to re-use the cross-compiled Asahi packages. If you don't, they will be rebuilt in the installer, which wastes time. When you update the system and they need to be rebuilt on the Mac itself, remove this line or you will get an error that an `x86_64-linux` builder is required.
-```
-  # Remove if you get an error that an x86_64-linux builder is required.
-  hardware.asahi.pkgsSystem = "x86_64-linux";
-```
-
 The configuration above is the minimum required to produce a bootable system, but you can further edit the file as desired to perform additional configuration. Uncomment the relevant options and change their values as explained in the file. Note that some advertised features may not work properly at this time. Refer to the [NixOS installation manual](https://nixos.org/manual/nixos/stable/index.html#ch-configuration) for further guidance.
 
 Various non-free non-redistributable peripheral firmware files are required to use system hardware like Wi-Fi. The Asahi Linux installer grabs these from macOS and stores them on the EFI system partition when it is created. The NixOS installer loads them from there while booting so that all hardware is available during installation. By default, the Apple Silicon support module will automatically reference the files in the EFI system partition and incorporate them into your configuration to be managed by the normal NixOS mechanisms.
@@ -246,18 +240,6 @@ Currently, the only supported way to update the peripheral firmware files is to
   # hardware.asahi.extractPeripheralFirmware = false;
 ```
 
-<details>
-  <summary>If you have apps incompatible with 16K page sizes and you need 4K page size instead...</summary>
-
-**Note:** The 4K patches are currently not updated to latest kernel version. See [this issue](https://github.com/tpwrules/nixos-apple-silicon/issues/43).
-You can choose to build the Asahi kernel with a 4K page size by enabling the appropriate option. This results in a reduction in raw compilation speed of 10-25%, but improves software compatibility in some cases (such as with Chromium/Electron and x86 emulation).
-```
-  # Build the kernel with 4K pages to improve software compatibility at
-  # the cost of performance in some cases.
-  hardware.asahi.use4KPages = true;
-```
-</details>
-
 If you want to install a desktop environment, you will have to uncomment the option to enable X11 and NetworkManager, then add an option to include your favorite desktop environment. You may also wish to include graphical packages such as `firefox` in `environment.systemPackages`. For example, to install Xfce:
 ```
   # Enable the X11 windowing system.
diff --git a/modules/nixos-apple-silicon/flake.lock b/modules/nixos-apple-silicon/flake.lock
index 66c822417ebc..65246b664331 100644
--- a/modules/nixos-apple-silicon/flake.lock
+++ b/modules/nixos-apple-silicon/flake.lock
@@ -17,17 +17,17 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1705316053,
-        "narHash": "sha256-J2Ey5mPFT8gdfL2XC0JTZvKaBw/b2pnyudEXFvl+dQM=",
+        "lastModified": 1708954320,
+        "narHash": "sha256-n3LXNMlz7ORCjfIrIUo19a844Fec2+yg7k6NspdVCxs=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "c3e128f3c0ecc1fb04aef9f72b3dcc2f6cecf370",
+        "rev": "94cda73bf2fd675de987db7c3ac81e861b892266",
         "type": "github"
       },
       "original": {
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "c3e128f3c0ecc1fb04aef9f72b3dcc2f6cecf370",
+        "rev": "94cda73bf2fd675de987db7c3ac81e861b892266",
         "type": "github"
       }
     },
diff --git a/modules/nixos-apple-silicon/flake.nix b/modules/nixos-apple-silicon/flake.nix
index f069b4eb7ec1..af65ca715bb4 100644
--- a/modules/nixos-apple-silicon/flake.nix
+++ b/modules/nixos-apple-silicon/flake.nix
@@ -5,7 +5,7 @@
     nixpkgs = {
       # https://hydra.nixos.org/jobset/mobile-nixos/unstable/evals
       # these evals have a cross-compiled stdenv available
-      url = "github:nixos/nixpkgs/c3e128f3c0ecc1fb04aef9f72b3dcc2f6cecf370";
+      url = "github:nixos/nixpkgs/94cda73bf2fd675de987db7c3ac81e861b892266";
     };
 
     rust-overlay = {
diff --git a/modules/nixos-apple-silicon/iso-configuration/installer-configuration.nix b/modules/nixos-apple-silicon/iso-configuration/installer-configuration.nix
index 0cd3ca711e77..112ce6e3cf89 100644
--- a/modules/nixos-apple-silicon/iso-configuration/installer-configuration.nix
+++ b/modules/nixos-apple-silicon/iso-configuration/installer-configuration.nix
@@ -112,7 +112,7 @@
 
   # avoids the need to cross-compile gobject introspection stuff which works
   # now but is slow and unnecessary
-  security.polkit.enable = false;
+  security.polkit.enable = lib.mkForce false;
 
   # bootspec generation is currently broken under cross-compilation
   boot.bootspec.enable = false;
diff --git a/nixpkgs/doc/languages-frameworks/python.section.md b/nixpkgs/doc/languages-frameworks/python.section.md
index d1b41d84ddc7..6634dced6eb7 100644
--- a/nixpkgs/doc/languages-frameworks/python.section.md
+++ b/nixpkgs/doc/languages-frameworks/python.section.md
@@ -175,7 +175,7 @@ following are specific to `buildPythonPackage`:
   from `build-system.requires` to `build-system`. Note that the pyproject
   format falls back to using `setuptools`, so you can use `pyproject = true`
   even if the package only has a `setup.py`. When set to `false`, you can
-  use the existing [hooks](#setup-hooks0 or provide your own logic to build the
+  use the existing [hooks](#setup-hooks) or provide your own logic to build the
   package. This can be useful for packages that don't support the pyproject
   format. When unset, the legacy `setuptools` hooks are used for backwards
   compatibility.
diff --git a/nixpkgs/nixos/modules/hardware/video/switcheroo-control.nix b/nixpkgs/nixos/modules/hardware/video/switcheroo-control.nix
index 982388f8e5f4..967120d6744a 100644
--- a/nixpkgs/nixos/modules/hardware/video/switcheroo-control.nix
+++ b/nixpkgs/nixos/modules/hardware/video/switcheroo-control.nix
@@ -1,18 +1,19 @@
 { config, pkgs, lib, ... }:
 
-with lib;
 let
-  pkg = [ pkgs.switcheroo-control ];
   cfg = config.services.switcherooControl;
 in {
   options.services.switcherooControl = {
-    enable = mkEnableOption (lib.mdDoc "switcheroo-control, a D-Bus service to check the availability of dual-GPU");
+    enable = lib.mkEnableOption "switcheroo-control, a D-Bus service to check the availability of dual-GPU";
+    package = lib.mkPackageOption pkgs "switcheroo-control" { };
   };
 
-  config = mkIf cfg.enable {
-    services.dbus.packages = pkg;
-    environment.systemPackages = pkg;
-    systemd.packages = pkg;
-    systemd.targets.multi-user.wants = [ "switcheroo-control.service" ];
+  config = lib.mkIf cfg.enable {
+    services.dbus.packages = [ cfg.package ];
+    environment.systemPackages = [ cfg.package ];
+    systemd = {
+      packages = [ cfg.package ];
+      targets.multi-user.wants = [ "switcheroo-control.service" ];
+    };
   };
 }
diff --git a/nixpkgs/nixos/modules/services/desktops/pipewire/pipewire.nix b/nixpkgs/nixos/modules/services/desktops/pipewire/pipewire.nix
index da409030b3a3..aa24c0842bab 100644
--- a/nixpkgs/nixos/modules/services/desktops/pipewire/pipewire.nix
+++ b/nixpkgs/nixos/modules/services/desktops/pipewire/pipewire.nix
@@ -1,11 +1,15 @@
-# pipewire service.
+# PipeWire service.
 { config, lib, pkgs, ... }:
 
 with lib;
 
 let
   json = pkgs.formats.json {};
-  mapToFiles = location: config: concatMapAttrs (name: value: { "pipewire/${location}.conf.d/${name}.conf".source = json.generate "${name}" value;}) config;
+  mapToFiles = location: config: concatMapAttrs (name: value: { "share/pipewire/${location}.conf.d/${name}.conf" = json.generate "${name}" value; }) config;
+  extraConfigPkgFromFiles = locations: filesSet: pkgs.runCommand "pipewire-extra-config" { } ''
+    mkdir -p ${lib.concatMapStringsSep " " (l: "$out/share/pipewire/${l}.conf.d") locations}
+    ${lib.concatMapStringsSep ";" ({name, value}: "ln -s ${value} $out/${name}") (lib.attrsToList filesSet)}
+  '';
   cfg = config.services.pipewire;
   enable32BitAlsaPlugins = cfg.alsa.support32Bit
                            && pkgs.stdenv.isx86_64
@@ -19,13 +23,48 @@ let
     mkdir -p "$out/lib"
     ln -s "${cfg.package.jack}/lib" "$out/lib/pipewire"
   '';
+
+  configPackages = cfg.configPackages;
+
+  extraConfigPkg = extraConfigPkgFromFiles
+    [ "pipewire" "client" "client-rt" "jack" "pipewire-pulse" ]
+    (
+      mapToFiles "pipewire" cfg.extraConfig.pipewire
+      // mapToFiles "client" cfg.extraConfig.client
+      // mapToFiles "client-rt" cfg.extraConfig.client-rt
+      // mapToFiles "jack" cfg.extraConfig.jack
+      // mapToFiles "pipewire-pulse" cfg.extraConfig.pipewire-pulse
+    );
+
+  configs = pkgs.buildEnv {
+    name = "pipewire-configs";
+    paths = configPackages
+      ++ [ extraConfigPkg ]
+      ++ lib.optionals cfg.wireplumber.enable cfg.wireplumber.configPackages;
+    pathsToLink = [ "/share/pipewire" ];
+  };
+
+  requiredLv2Packages = lib.flatten
+    (
+      lib.concatMap
+      (p:
+        lib.attrByPath ["passthru" "requiredLv2Packages"] [] p
+      )
+      configPackages
+    );
+
+  lv2Plugins = pkgs.buildEnv {
+    name = "pipewire-lv2-plugins";
+    paths = cfg.extraLv2Packages ++ requiredLv2Packages;
+    pathsToLink = [ "/lib/lv2" ];
+  };
 in {
   meta.maintainers = teams.freedesktop.members ++ [ lib.maintainers.k900 ];
 
   ###### interface
   options = {
     services.pipewire = {
-      enable = mkEnableOption (lib.mdDoc "pipewire service");
+      enable = mkEnableOption (lib.mdDoc "PipeWire service");
 
       package = mkPackageOption pkgs "pipewire" { };
 
@@ -33,7 +72,7 @@ in {
         default = true;
         type = types.bool;
         description = lib.mdDoc ''
-          Automatically run pipewire when connections are made to the pipewire socket.
+          Automatically run PipeWire when connections are made to the PipeWire socket.
         '';
       };
 
@@ -200,6 +239,30 @@ in {
           '';
         };
       };
+
+      configPackages = lib.mkOption {
+        type = lib.types.listOf lib.types.package;
+        default = [];
+        description = lib.mdDoc ''
+          List of packages that provide PipeWire configuration, in the form of
+          `share/pipewire/*/*.conf` files.
+        '';
+      };
+
+      extraLv2Packages = lib.mkOption {
+        type = lib.types.listOf lib.types.package;
+        default = [];
+        example = lib.literalExpression "[ pkgs.lsp-plugins ]";
+        description = lib.mdDoc ''
+          List of packages that provide LV2 plugins in `lib/lv2` that should
+          be made available to PipeWire for [filter chains][wiki-filter-chain].
+
+          Config packages have their required LV2 plugins added automatically,
+          so they don't need to be specified here.
+
+          [wiki-filter-chain]: https://docs.pipewire.org/page_module_filter_chain.html
+        '';
+      };
     };
   };
 
@@ -249,6 +312,9 @@ in {
     systemd.user.sockets.pipewire.enable = !cfg.systemWide;
     systemd.user.services.pipewire.enable = !cfg.systemWide;
 
+    systemd.services.pipewire.environment.LV2_PATH = lib.mkIf cfg.systemWide "${lv2Plugins}/lib/lv2";
+    systemd.user.services.pipewire.environment.LV2_PATH = lib.mkIf (!cfg.systemWide) "${lv2Plugins}/lib/lv2";
+
     # Mask pw-pulse if it's not wanted
     systemd.user.services.pipewire-pulse.enable = cfg.pulse.enable;
     systemd.user.sockets.pipewire-pulse.enable = cfg.pulse.enable;
@@ -283,12 +349,8 @@ in {
       "alsa/conf.d/99-pipewire-default.conf" = mkIf cfg.alsa.enable {
         source = "${cfg.package}/share/alsa/alsa.conf.d/99-pipewire-default.conf";
       };
-    }
-    // mapToFiles "pipewire" cfg.extraConfig.pipewire
-    // mapToFiles "client" cfg.extraConfig.client
-    // mapToFiles "client-rt" cfg.extraConfig.client-rt
-    // mapToFiles "jack" cfg.extraConfig.jack
-    // mapToFiles "pipewire-pulse" cfg.extraConfig.pipewire-pulse;
+      pipewire.source = "${configs}/share/pipewire";
+    };
 
     environment.sessionVariables.LD_LIBRARY_PATH =
       lib.mkIf cfg.jack.enable [ "${cfg.package.jack}/lib" ];
@@ -301,7 +363,7 @@ in {
           "audio"
           "video"
         ] ++ lib.optional config.security.rtkit.enable "rtkit";
-        description = "Pipewire system service user";
+        description = "PipeWire system service user";
         isSystemUser = true;
         home = "/var/lib/pipewire";
         createHome = true;
diff --git a/nixpkgs/nixos/modules/services/desktops/pipewire/wireplumber.nix b/nixpkgs/nixos/modules/services/desktops/pipewire/wireplumber.nix
index 95a7ece26c5d..dc4d726d7632 100644
--- a/nixpkgs/nixos/modules/services/desktops/pipewire/wireplumber.nix
+++ b/nixpkgs/nixos/modules/services/desktops/pipewire/wireplumber.nix
@@ -14,60 +14,111 @@ in
         type = lib.types.bool;
         default = config.services.pipewire.enable;
         defaultText = lib.literalExpression "config.services.pipewire.enable";
-        description = lib.mdDoc "Whether to enable Wireplumber, a modular session / policy manager for PipeWire";
+        description = lib.mdDoc "Whether to enable WirePlumber, a modular session / policy manager for PipeWire";
       };
 
       package = lib.mkOption {
         type = lib.types.package;
         default = pkgs.wireplumber;
         defaultText = lib.literalExpression "pkgs.wireplumber";
-        description = lib.mdDoc "The wireplumber derivation to use.";
+        description = lib.mdDoc "The WirePlumber derivation to use.";
+      };
+
+      configPackages = lib.mkOption {
+        type = lib.types.listOf lib.types.package;
+        default = [ ];
+        description = lib.mdDoc ''
+          List of packages that provide WirePlumber configuration, in the form of
+          `share/wireplumber/*/*.lua` files.
+        '';
       };
-    };
-  };
 
-  config = lib.mkIf cfg.enable {
-    assertions = [
-      {
-        assertion = !config.hardware.bluetooth.hsphfpd.enable;
-        message = "Using Wireplumber conflicts with hsphfpd, as it provides the same functionality. `hardware.bluetooth.hsphfpd.enable` needs be set to false";
-      }
-    ];
+      extraLv2Packages = lib.mkOption {
+        type = lib.types.listOf lib.types.package;
+        default = [];
+        example = lib.literalExpression "[ pkgs.lsp-plugins ]";
+        description = lib.mdDoc ''
+          List of packages that provide LV2 plugins in `lib/lv2` that should
+          be made available to WirePlumber for [filter chains][wiki-filter-chain].
 
-    environment.systemPackages = [ cfg.package ];
+          Config packages have their required LV2 plugins added automatically,
+          so they don't need to be specified here.
 
-    environment.etc."wireplumber/main.lua.d/80-nixos.lua" = lib.mkIf (!pwUsedForAudio) {
-      text = ''
-        -- Pipewire is not used for audio, so prevent it from grabbing audio devices
+          [wiki-filter-chain]: https://docs.pipewire.org/page_module_filter_chain.html
+        '';
+      };
+    };
+  };
+
+  config =
+    let
+      pwNotForAudioConfigPkg = pkgs.writeTextDir "share/wireplumber/main.lua.d/80-pw-not-for-audio.lua" ''
+        -- PipeWire is not used for audio, so prevent it from grabbing audio devices
         alsa_monitor.enable = function() end
       '';
-    };
-    environment.etc."wireplumber/main.lua.d/80-systemwide.lua" = lib.mkIf config.services.pipewire.systemWide {
-      text = ''
+      systemwideConfigPkg = pkgs.writeTextDir "wireplumber/main.lua.d/80-systemwide.lua" ''
         -- When running system-wide, these settings need to be disabled (they
         -- use functions that aren't available on the system dbus).
         alsa_monitor.properties["alsa.reserve"] = false
         default_access.properties["enable-flatpak-portal"] = false
       '';
-    };
-    environment.etc."wireplumber/bluetooth.lua.d/80-systemwide.lua" = lib.mkIf config.services.pipewire.systemWide {
-      text = ''
+      systemwideBluetoothConfigPkg = pkgs.writeTextDir "wireplumber/bluetooth.lua.d/80-systemwide.lua" ''
         -- When running system-wide, logind-integration needs to be disabled.
         bluez_monitor.properties["with-logind"] = false
       '';
-    };
 
-    systemd.packages = [ cfg.package ];
+      configPackages = cfg.configPackages
+          ++ lib.optional (!pwUsedForAudio) pwNotForAudioConfigPkg
+          ++ lib.optionals config.services.pipewire.systemWide [ systemwideConfigPkg systemwideBluetoothConfigPkg ];
 
-    systemd.services.wireplumber.enable = config.services.pipewire.systemWide;
-    systemd.user.services.wireplumber.enable = !config.services.pipewire.systemWide;
+      configs = pkgs.buildEnv {
+        name = "wireplumber-configs";
+        paths = configPackages;
+        pathsToLink = [ "/share/wireplumber" ];
+      };
+
+      requiredLv2Packages = lib.flatten
+        (
+          lib.concatMap
+            (p:
+              lib.attrByPath ["passthru" "requiredLv2Packages"] [] p
+            )
+            configPackages
+        );
+
+      lv2Plugins = pkgs.buildEnv {
+        name = "wireplumber-lv2-plugins";
+        paths = cfg.extraLv2Packages ++ requiredLv2Packages;
+        pathsToLink = [ "/lib/lv2" ];
+      };
+    in
+    lib.mkIf cfg.enable {
+      assertions = [
+        {
+          assertion = !config.hardware.bluetooth.hsphfpd.enable;
+          message = "Using WirePlumber conflicts with hsphfpd, as it provides the same functionality. `hardware.bluetooth.hsphfpd.enable` needs be set to false";
+        }
+      ];
+
+      environment.systemPackages = [ cfg.package ];
+
+      environment.etc.wireplumber.source = "${configs}/share/wireplumber";
 
-    systemd.services.wireplumber.wantedBy = [ "pipewire.service" ];
-    systemd.user.services.wireplumber.wantedBy = [ "pipewire.service" ];
+      systemd.packages = [ cfg.package ];
 
-    systemd.services.wireplumber.environment = lib.mkIf config.services.pipewire.systemWide {
-      # Force wireplumber to use system dbus.
-      DBUS_SESSION_BUS_ADDRESS = "unix:path=/run/dbus/system_bus_socket";
+      systemd.services.wireplumber.enable = config.services.pipewire.systemWide;
+      systemd.user.services.wireplumber.enable = !config.services.pipewire.systemWide;
+
+      systemd.services.wireplumber.wantedBy = [ "pipewire.service" ];
+      systemd.user.services.wireplumber.wantedBy = [ "pipewire.service" ];
+
+      systemd.services.wireplumber.environment = lib.mkIf config.services.pipewire.systemWide {
+        # Force WirePlumber to use system dbus.
+        DBUS_SESSION_BUS_ADDRESS = "unix:path=/run/dbus/system_bus_socket";
+        LV2_PATH = "${lv2Plugins}/lib/lv2";
+      };
+
+      systemd.user.services.wireplumber.environment.LV2_PATH =
+        lib.mkIf (!config.services.pipewire.systemWide) "${lv2Plugins}/lib/lv2";
     };
-  };
 }
diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix
index aea3b3e3488c..678bd8ea4df9 100644
--- a/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix
+++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix
@@ -3955,6 +3955,24 @@ let
         };
       };
 
+      uloco.theme-bluloco-light = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "theme-bluloco-light";
+          publisher = "uloco";
+          version = "3.7.3";
+          sha256 = "1il557x7c51ic9bjq7z431105m582kig9v2vpy3k2z3xhrbb0211";
+        };
+        postInstall = ''
+          rm -r $out/share/vscode/extensions/uloco.theme-bluloco-light/screenshots
+        '';
+        meta = {
+          description = "A fancy but yet sophisticated light designer color scheme / theme for Visual Studio Code";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=uloco.theme-bluloco-light";
+          homepage = "https://github.com/uloco/theme-bluloco-light";
+          license = lib.licenses.lgpl3;
+        };
+      };
+
       unifiedjs.vscode-mdx = buildVscodeMarketplaceExtension {
         mktplcRef = {
           name = "vscode-mdx";
diff --git a/nixpkgs/pkgs/applications/networking/browsers/microsoft-edge/default.nix b/nixpkgs/pkgs/applications/networking/browsers/microsoft-edge/default.nix
index 62fb771cd3a7..ae98d8aa44a2 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/microsoft-edge/default.nix
+++ b/nixpkgs/pkgs/applications/networking/browsers/microsoft-edge/default.nix
@@ -1,15 +1,9 @@
 {
-  stable = import ./browser.nix {
-    channel = "stable";
-    version = "121.0.2277.128";
-    revision = "1";
-    hash = "sha256-ooZzTDmddlYwWoDMqzFPfbUImT351/ptfdlxKEtI77s=";
-  };
   beta = import ./browser.nix {
     channel = "beta";
-    version = "122.0.2365.38";
+    version = "122.0.2365.52";
     revision = "1";
-    hash = "sha256-u0qk4T695LyhtfMw5929z4U8+jM2o/gbq8DFtD1PNTU=";
+    hash = "sha256-H8VTDyDY2Rm5z4cJruzMa1YorBAUL0pJuwhQ6cy4WfY=";
   };
   dev = import ./browser.nix {
     channel = "dev";
@@ -17,4 +11,10 @@
     revision = "1";
     hash = "sha256-I9PT320DJgqJYNwB0pvngyLlV+N2jaS5tOwVwwNHex0=";
   };
+  stable = import ./browser.nix {
+    channel = "stable";
+    version = "122.0.2365.52";
+    revision = "1";
+    hash = "sha256-hULyUUFhMjiareXr1zTynyknVyert45N0H4iR8woGRw=";
+  };
 }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix
index 133766d8cc0d..a900061d0667 100644
--- a/nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation rec {
   pname = "quaternion";
-  version = "0.0.96-beta4";
+  version = "0.0.96.1";
 
   src = fetchFromGitHub {
     owner = "quotient-im";
     repo = "Quaternion";
     rev = "refs/tags/${version}";
-    hash = "sha256-yItl31Ze48lRIIey+FlRLMVAkg4mHu8G1sFOceHvTJw=";
+    hash = "sha256-lRCSEb/ldVnEv6z0moU4P5rf0ssKb9Bw+4QEssLjuwI=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix b/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix
index cff31a759a2b..d3ebd6a7f29e 100644
--- a/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix
+++ b/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix
@@ -154,9 +154,14 @@ edk2.mkDerivation projectDscPath (finalAttrs: {
     )
   '';
 
+  # TODO: Usage of -bios OVMF.fd is discouraged: https://lists.katacontainers.io/pipermail/kata-dev/2021-January/001650.html
+  # We should remove the isx86-specifc block here once we're ready to update nixpkgs to stop using that and update the
+  # release notes accordingly.
   postInstall = ''
     mkdir -vp $fd/FV
     mv -v $out/FV/${fwPrefix}_{CODE,VARS}.fd $fd/FV
+  '' + lib.optionalString stdenv.hostPlatform.isx86 ''
+    mv -v $out/FV/${fwPrefix}.fd $fd/FV
   '' + lib.optionalString msVarsTemplate ''
     mv -v $out/FV/${fwPrefix}_VARS.ms.fd $fd/FV
     ln -sv $fd/FV/${fwPrefix}_CODE{,.ms}.fd
diff --git a/nixpkgs/pkgs/tools/networking/clash-meta/default.nix b/nixpkgs/pkgs/by-name/cl/clash-meta/package.nix
index 2ec32960d7fa..5ebb461a595b 100644
--- a/nixpkgs/pkgs/tools/networking/clash-meta/default.nix
+++ b/nixpkgs/pkgs/by-name/cl/clash-meta/package.nix
@@ -2,26 +2,26 @@
 , fetchFromGitHub
 , buildGoModule
 }:
+
 buildGoModule rec {
   pname = "clash-meta";
-  version = "1.16.0";
+  version = "1.18.1";
 
   src = fetchFromGitHub {
     owner = "MetaCubeX";
-    repo = "Clash.Meta";
+    repo = "mihomo";
     rev = "v${version}";
-    hash = "sha256-ORyjCYf2OPrSt/juiBk0Gf2Az4XoZipKBWWFXf8nIqE=";
+    hash = "sha256-ezOkDrpytZQdc+Txe4eUyuWY6oipn9jIrmu7aO8lNlQ=";
   };
 
-  vendorHash = "sha256-ySCmHLuMTCxBcAYo7YD8zOpUAa90PQmeLLt+uOn40Pk=";
+  vendorHash = "sha256-tvPR5kAta4MlMTwjfxwVOacRr2nVpfalbN08mfxml64=";
 
-  # Do not build testing suit
   excludedPackages = [ "./test" ];
 
   ldflags = [
     "-s"
     "-w"
-    "-X github.com/Dreamacro/clash/constant.Version=${version}"
+    "-X github.com/metacubex/mihomo/constant.Version=${version}"
   ];
 
   tags = [
@@ -32,12 +32,12 @@ buildGoModule rec {
   doCheck = false;
 
   postInstall = ''
-    mv $out/bin/clash $out/bin/clash-meta
+    mv $out/bin/mihomo $out/bin/clash-meta
   '';
 
   meta = with lib; {
-    description = "Another Clash Kernel";
-    homepage = "https://github.com/MetaCubeX/Clash.Meta";
+    description = "A rule-based tunnel in Go. Present named mihomo";
+    homepage = "https://github.com/MetaCubeX/mihomo";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ oluceps ];
     mainProgram = "clash-meta";
diff --git a/nixpkgs/pkgs/by-name/in/intune-portal/package.nix b/nixpkgs/pkgs/by-name/in/intune-portal/package.nix
index fa8e7b5871a4..8b6667867627 100644
--- a/nixpkgs/pkgs/by-name/in/intune-portal/package.nix
+++ b/nixpkgs/pkgs/by-name/in/intune-portal/package.nix
@@ -23,11 +23,11 @@
 }:
 stdenv.mkDerivation rec {
   pname = "intune-portal";
-  version = "1.2312.35-jammy";
+  version = "1.2401.21-jammy";
 
   src = fetchurl {
     url = "https://packages.microsoft.com/ubuntu/22.04/prod/pool/main/i/${pname}/${pname}_${version}_amd64.deb";
-    hash = "sha256-mgcnqj/+4ffMf4PhMW4ovCotLilyudGOpn0qqXZCmzc=";
+    hash = "sha256-BIPTVhOBzaKzZR0WhQOX2W8kDg64UWOgIVvgaw2Gckc=";
   };
 
   nativeBuildInputs = [ dpkg ];
diff --git a/nixpkgs/pkgs/by-name/ja/jasper/package.nix b/nixpkgs/pkgs/by-name/ja/jasper/package.nix
index 72a8a9aff709..42cce508a545 100644
--- a/nixpkgs/pkgs/by-name/ja/jasper/package.nix
+++ b/nixpkgs/pkgs/by-name/ja/jasper/package.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "jasper";
-  version = "4.2.0";
+  version = "4.2.1";
 
   src = fetchFromGitHub {
     owner = "jasper-software";
     repo = "jasper";
     rev = "version-${finalAttrs.version}";
-    hash = "sha256-aDeexQ+JmxRIjYAUH+x/J/Z847JasKWQNYYEpu78sHw=";
+    hash = "sha256-SE3zB+8zZuuT+W6QYTuQhM+dBgYuFzYK4a7QaquGB60=";
   };
 
   outputs = [ "out" "doc" "man" ];
diff --git a/nixpkgs/pkgs/by-name/sa/satellite/package.nix b/nixpkgs/pkgs/by-name/sa/satellite/package.nix
new file mode 100644
index 000000000000..e1ab6b934c3b
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/sa/satellite/package.nix
@@ -0,0 +1,57 @@
+{ lib
+, python3
+, fetchFromGitea
+, gobject-introspection
+, gtk3
+, libhandy
+, modemmanager
+, wrapGAppsHook
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "satellite";
+  version = "0.4.2";
+
+  pyproject = true;
+
+  src = fetchFromGitea {
+    domain ="codeberg.org";
+    owner = "tpikonen";
+    repo = "satellite";
+    rev = version;
+    hash = "sha256-VPljvbHsPpBvH//LFs1P0YiyMfQxTLHrrxqnVk261hg=";
+  };
+
+  nativeBuildInputs = [
+    gobject-introspection
+    python3.pkgs.setuptools
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    libhandy
+    modemmanager
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    gpxpy
+    pygobject3
+    pynmea2
+  ];
+
+  strictDeps = true;
+
+  meta = with lib; {
+    description = "A program for showing navigation satellite data";
+    longDescription = ''
+      Satellite is an adaptive GTK3 / libhandy application which displays global navigation satellite system (GNSS: GPS et al.) data obtained from ModemManager or gnss-share.
+      It can also save your position to a GPX-file.
+    '';
+    homepage = "https://codeberg.org/tpikonen/satellite";
+    license = licenses.gpl3Only;
+    mainProgram = "satellite";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ Luflosi ];
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/sc/scrutiny-collector/package.nix b/nixpkgs/pkgs/by-name/sc/scrutiny-collector/package.nix
index 2c1ec9efb27f..0fc1835bfa52 100644
--- a/nixpkgs/pkgs/by-name/sc/scrutiny-collector/package.nix
+++ b/nixpkgs/pkgs/by-name/sc/scrutiny-collector/package.nix
@@ -6,7 +6,7 @@
 , lib
 }:
 let
-  version = "0.7.2";
+  version = "0.7.3";
 in
 buildGoModule rec {
   inherit version;
@@ -16,7 +16,7 @@ buildGoModule rec {
     owner = "AnalogJ";
     repo = "scrutiny";
     rev = "refs/tags/v${version}";
-    hash = "sha256-UYKi+WTsasUaE6irzMAHr66k7wXyec8FXc8AWjEk0qs=";
+    hash = "sha256-S7GW8z6EWB+5vntKew0+EDVqhun+Ae2//15dSIlfoSs=";
   };
 
   subPackages = "collector/cmd/collector-metrics";
diff --git a/nixpkgs/pkgs/by-name/sc/scrutiny/package.nix b/nixpkgs/pkgs/by-name/sc/scrutiny/package.nix
index 5ca6a86e9dc1..0abe624af53d 100644
--- a/nixpkgs/pkgs/by-name/sc/scrutiny/package.nix
+++ b/nixpkgs/pkgs/by-name/sc/scrutiny/package.nix
@@ -6,13 +6,13 @@
 }:
 let
   pname = "scrutiny";
-  version = "0.7.2";
+  version = "0.7.3";
 
   src = fetchFromGitHub {
     owner = "AnalogJ";
     repo = "scrutiny";
     rev = "refs/tags/v${version}";
-    hash = "sha256-UYKi+WTsasUaE6irzMAHr66k7wXyec8FXc8AWjEk0qs=";
+    hash = "sha256-S7GW8z6EWB+5vntKew0+EDVqhun+Ae2//15dSIlfoSs=";
   };
 
   frontend = buildNpmPackage {
diff --git a/nixpkgs/pkgs/by-name/se/searxng/package.nix b/nixpkgs/pkgs/by-name/se/searxng/package.nix
index 24fd8be88478..c0d6cd63036d 100644
--- a/nixpkgs/pkgs/by-name/se/searxng/package.nix
+++ b/nixpkgs/pkgs/by-name/se/searxng/package.nix
@@ -5,13 +5,13 @@
 
 python3.pkgs.toPythonModule (python3.pkgs.buildPythonApplication rec {
   pname = "searxng";
-  version = "unstable-2023-10-31";
+  version = "0-unstable-2024-02-24";
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
-    rev = "b05a15540e1dc2dfb8e4e25aa537b2a68e713844";
-    hash = "sha256-x0PyS+A4KjbBnTpca17Wx3BQjtOHvVuWpusPPc1ULnU=";
+    owner = "searxng";
+    repo = "searxng";
+    rev = "d72fa99bd0a4d702a55188b07919ce5a764b1d6c";
+    hash = "sha256-1A7dyWrF63fSSvWP+2HrCS6H8o/4CUlqiP0KANVZHUA=";
   };
 
   postPatch = ''
@@ -20,7 +20,7 @@ python3.pkgs.toPythonModule (python3.pkgs.buildPythonApplication rec {
 
   preBuild =
     let
-      versionString = lib.concatStringsSep "." (builtins.tail (lib.splitString "-" version));
+      versionString = lib.concatStringsSep "." (builtins.tail (lib.splitString "-" (lib.removePrefix "0-" version)));
       commitAbbrev = builtins.substring 0 8 src.rev;
     in
     ''
@@ -66,7 +66,7 @@ python3.pkgs.toPythonModule (python3.pkgs.buildPythonApplication rec {
     ln -s ../${python3.sitePackages}/searx/static $out/share/
 
     # copy config schema for the limiter
-    cp searx/botdetection/limiter.toml $out/${python3.sitePackages}/searx/botdetection/limiter.toml
+    cp searx/limiter.toml $out/${python3.sitePackages}/searx/limiter.toml
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/by-name/su/supersonic/package.nix b/nixpkgs/pkgs/by-name/su/supersonic/package.nix
index 9feb440c8087..1189dc5ba61f 100644
--- a/nixpkgs/pkgs/by-name/su/supersonic/package.nix
+++ b/nixpkgs/pkgs/by-name/su/supersonic/package.nix
@@ -20,16 +20,16 @@ assert waylandSupport -> stdenv.isLinux;
 
 buildGoModule rec {
   pname = "supersonic" + lib.optionalString waylandSupport "-wayland";
-  version = "0.9.0";
+  version = "0.9.1";
 
   src = fetchFromGitHub {
     owner = "dweymouth";
     repo = "supersonic";
     rev = "v${version}";
-    hash = "sha256-QHDTbcWSEFleMsjt4BR4xt6DlqPSowUbHmi4+83c0kc=";
+    hash = "sha256-R9Bn+xFq8pBSuGX1okA3l/7ralKodKDxcpGov9diuxw=";
   };
 
-  vendorHash = "sha256-ANVkQpCnPsRueHyxRJMY5cqMZ5Q/QMVW4KS+TFYMpUQ=";
+  vendorHash = "sha256-4Un1twPfjRfLVl91GqYJsyY8GbKgYoMIsdNESpumH5M=";
 
   nativeBuildInputs = [
     copyDesktopItems
diff --git a/nixpkgs/pkgs/data/themes/nordic/default.nix b/nixpkgs/pkgs/data/themes/nordic/default.nix
index 1751575e8259..ce17fd9ffd8d 100644
--- a/nixpkgs/pkgs/data/themes/nordic/default.nix
+++ b/nixpkgs/pkgs/data/themes/nordic/default.nix
@@ -10,70 +10,70 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "nordic";
-  version = "2.2.0-unstable-2024-01-20";
+  version = "2.2.0-unstable-2024-02-20";
 
   srcs = [
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "218a1a8679fdb97aa0aa7997fdf8c5344d68fb2f";
-      hash = "sha256-a315U4HsQP1omluTJjq9U76L3ANP7uN831mCY54vZnk=";
+      rev = "58d5a8e10ae068b98a63e6de2791e289f417842d";
+      hash = "sha256-Z3e7DoakK6f+UMBr78gZ+NJPb5vuJCfDgPRYywFDYeg=";
       name = "Nordic";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "59873a54c8524adb36411d17d473eb7b7c910eac";
-      hash = "sha256-RisW5W0onNrtsSPHtFW66OdrQWOQX3uDmLiM+5ckzSY=";
+      rev = "cb7d95bd5438728f30f361a888dfb33b7f6ad28c";
+      hash = "sha256-ZWGmDiXjEt0UuALyw7cjTYgdw9kdJJKc0vkclbZkBvo=";
       name = "Nordic-standard-buttons";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "6e2b8fb8017c34344ec6b70884f09ebb44863efb";
-      hash = "sha256-B4qH8L5r16gaPS1wpiIHPyS3g/g53Xi2C6F0rcZKgWk=";
+      rev = "37b86a30ad3e048f87a689f2813aa28644035fa8";
+      hash = "sha256-+O8+30H6humVQTwgFL3uQkeo5gPYrokpAKbT56PX6YQ=";
       name = "Nordic-darker";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "2160a7bc69f55dd0b9efa64f029344256a4ef086";
-      hash = "sha256-1WdorWByZE4sXTfwsjFxvvSI0qQcAcfFoPXN5fGhEpc=";
+      rev = "926b215d14394ff043f2d2969e730759af7acd86";
+      hash = "sha256-yR0DfmUW1rr38Zbwtr7TUYL6z8vTNyoj0vEhphbZieU=";
       name = "Nordic-darker-standard-buttons";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "63e0844bc04e1500e4b0ef8031cb3812e15e12fb";
-      hash = "sha256-b0Zs2WsD913Ai8wvi7mPraFme93WZXm+7rnwhDvGuZM=";
+      rev = "1ae59d40ba8342fc14f3a55a2fb37446a8d10880";
+      hash = "sha256-tFIXPP5Ohw8atNIqvMtB7sLka+/tw+aSbjMdzKfI9r0=";
       name = "Nordic-bluish-accent";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "53e44ca5045a57903c0024197fa7a7a267432afb";
-      hash = "sha256-vF2f4PuQP0QkmPT6kR35eWYvQ9xLCYihEsobERURuBk=";
+      rev = "aaaa5dab0517f182a85a75d457da70d22e577b26";
+      hash = "sha256-J/nti2jxQ0VfTbp5WfrE0CN6Pvfg1edplL6/QPKUBzc=";
       name = "Nordic-bluish-accent-standard-buttons";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = "${pname}-polar";
-      rev = "4ec6f09782394d24d4d8cc78ac53c4692ec28985";
-      hash = "sha256-Z50ciafgfTHBahjpcVTapnsU88ioPUZ1RjggNpruJP0=";
+      rev = "733d5ea57c6ecd8209ec0a928029e28b3f54f83d";
+      hash = "sha256-y3ge0DF0SdKFjH+mZdHDpK3YG7Ng3rN0y0Er2WBC6Sc=";
       name = "Nordic-Polar";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = "${pname}-polar";
-      rev = "c6c7ee8e642a9df07f7d69ed048a6ef37a26153c";
-      hash = "sha256-e+B9oUKbPr2MKmaz+l5GTOP4iVmw24vVpS98mAxEekA=";
+      rev = "667dfe4f6e8157f30a4e0ea5dc1d17438520d6cf";
+      hash = "sha256-p7bY1r8Ik+jsIyjR75UFHw8XuiGz5LmT09txBLyZpx4=";
       name = "Nordic-Polar-standard-buttons";
     })
   ];
diff --git a/nixpkgs/pkgs/development/libraries/quarto/default.nix b/nixpkgs/pkgs/development/libraries/quarto/default.nix
index 47cfae648294..c9223aef6550 100644
--- a/nixpkgs/pkgs/development/libraries/quarto/default.nix
+++ b/nixpkgs/pkgs/development/libraries/quarto/default.nix
@@ -1,6 +1,7 @@
 { stdenv
 , lib
 , pandoc
+, typst
 , esbuild
 , deno
 , fetchurl
@@ -18,35 +19,31 @@
 
 stdenv.mkDerivation (final: {
   pname = "quarto";
-  version = "1.3.450";
+  version = "1.4.550";
   src = fetchurl {
     url = "https://github.com/quarto-dev/quarto-cli/releases/download/v${final.version}/quarto-${final.version}-linux-amd64.tar.gz";
-    sha256 = "sha256-bcj7SzEGfQxsw9P8WkcLrKurPupzwpgIGtxoE3KVwAU=";
+    sha256 = "sha256-cWHd7ZWGBdRTaSHYVa8LuTDA5gefJ5baOGERS2g6Vvg=";
   };
 
   nativeBuildInputs = [
     makeWrapper
   ];
 
-  patches = [
-    ./fix-deno-path.patch
-  ];
-
   postPatch = ''
     # Compat for Deno >=1.26
     substituteInPlace bin/quarto.js \
-      --replace 'Deno.setRaw(stdin.rid, ' 'Deno.stdin.setRaw(' \
-      --replace 'Deno.setRaw(Deno.stdin.rid, ' 'Deno.stdin.setRaw('
+      --replace-fail ']))?.trim();' ']))?.trim().split(" ")[0];'
   '';
 
   dontStrip = true;
 
   preFixup = ''
     wrapProgram $out/bin/quarto \
-      --prefix PATH : ${lib.makeBinPath [ deno ]} \
-      --prefix QUARTO_PANDOC : ${pandoc}/bin/pandoc \
-      --prefix QUARTO_ESBUILD : ${esbuild}/bin/esbuild \
-      --prefix QUARTO_DART_SASS : ${dart-sass}/bin/dart-sass \
+      --prefix QUARTO_DENO : ${lib.getExe deno} \
+      --prefix QUARTO_PANDOC : ${lib.getExe pandoc} \
+      --prefix QUARTO_ESBUILD : ${lib.getExe esbuild} \
+      --prefix QUARTO_DART_SASS : ${lib.getExe dart-sass} \
+      --prefix QUARTO_TYPST : ${lib.getExe typst} \
       ${lib.optionalString (rWrapper != null) "--prefix QUARTO_R : ${rWrapper.override { packages = [ rPackages.rmarkdown ] ++ extraRPackages; }}/bin/R"} \
       ${lib.optionalString (python3 != null) "--prefix QUARTO_PYTHON : ${python3.withPackages (ps: with ps; [ jupyter ipython ] ++ (extraPythonPackages ps))}/bin/python3"}
   '';
diff --git a/nixpkgs/pkgs/development/libraries/quarto/fix-deno-path.patch b/nixpkgs/pkgs/development/libraries/quarto/fix-deno-path.patch
deleted file mode 100644
index 895419712ad8..000000000000
--- a/nixpkgs/pkgs/development/libraries/quarto/fix-deno-path.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- a/bin/quarto
-+++ b/bin/quarto
-@@ -125,4 +125,4 @@ fi
- # Be sure to include any already defined QUARTO_DENO_OPTIONS
- QUARTO_DENO_OPTIONS="--unstable --no-config --cached-only --allow-read --allow-write --allow-run --allow-env --allow-net --allow-ffi ${QUARTO_DENO_OPTIONS}"
- 
--"${QUARTO_DENO}" ${QUARTO_ACTION} ${QUARTO_DENO_OPTIONS} ${QUARTO_DENO_EXTRA_OPTIONS} "${QUARTO_IMPORT_ARGMAP}" "${QUARTO_TARGET}" "$@"
-+deno ${QUARTO_ACTION} ${QUARTO_DENO_OPTIONS} ${QUARTO_DENO_EXTRA_OPTIONS} "${QUARTO_IMPORT_ARGMAP}" "${QUARTO_TARGET}" "$@"
diff --git a/nixpkgs/pkgs/development/misc/brev-cli/default.nix b/nixpkgs/pkgs/development/misc/brev-cli/default.nix
index 40a5d0860801..cd2b854d7955 100644
--- a/nixpkgs/pkgs/development/misc/brev-cli/default.nix
+++ b/nixpkgs/pkgs/development/misc/brev-cli/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "brev-cli";
-  version = "0.6.273";
+  version = "0.6.276";
 
   src = fetchFromGitHub {
     owner = "brevdev";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-bZaSRRFlQ67q09BkeZBqOJalnkhwir/moC10m3ugFEc=";
+    sha256 = "sha256-IAzsoKPFmhyBgd3jD6qEBav5ynQYrn8/cl6epsjrVKg=";
   };
 
   vendorHash = "sha256-IR/tgqh8rS4uN5jSOcopCutbHCKHSU9icUfRhOgu4t8=";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/mirage-fs/default.nix b/nixpkgs/pkgs/development/ocaml-modules/mirage-fs/default.nix
deleted file mode 100644
index f880a71d417c..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/mirage-fs/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib, fetchurl, buildDunePackage
-, cstruct, fmt, lwt, mirage-kv
-}:
-
-buildDunePackage rec {
-  pname = "mirage-fs";
-  version = "4.0.0";
-
-  duneVersion = "3";
-
-  src = fetchurl {
-    url = "https://github.com/mirage/mirage-fs/releases/download/v${version}/mirage-fs-v${version}.tbz";
-    hash = "sha256-PYZ2HCPuxOv4FU7EHymsa1oIZU7q8TSzzRvlngYdZ3s=";
-  };
-
-  propagatedBuildInputs = [ cstruct fmt lwt mirage-kv ];
-
-  meta = {
-    description = "MirageOS signatures for filesystem devices";
-    homepage = "https://github.com/mirage/mirage-fs";
-    license = lib.licenses.isc;
-    maintainers = [ lib.maintainers.vbgl ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-eventhub/default.nix b/nixpkgs/pkgs/development/python-modules/azure-eventhub/default.nix
index ba589b8aa5e6..3f0adab003df 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-eventhub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-eventhub/default.nix
@@ -1,23 +1,28 @@
 { lib
+, azure-core
 , buildPythonPackage
 , fetchPypi
-, azure-core
 , pythonOlder
+, setuptools
 , typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "azure-eventhub";
-  version = "5.11.5";
-  format = "setuptools";
+  version = "5.11.6";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-HDdOmQezNIPVCLTHst8p+crGM15dpaGNIYU0+UL01Uw=";
+    hash = "sha256-89Q1o/cnR64i4Jblypx2w1BTTyrZk5l9EvTO+ZMq58E=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     azure-core
     typing-extensions
diff --git a/nixpkgs/pkgs/development/python-modules/datafusion/default.nix b/nixpkgs/pkgs/development/python-modules/datafusion/default.nix
index ed25c032881b..baf905f11fa7 100644
--- a/nixpkgs/pkgs/development/python-modules/datafusion/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/datafusion/default.nix
@@ -9,6 +9,7 @@
 , protobuf
 , pyarrow
 , Security
+, SystemConfiguration
 }:
 
 let
@@ -31,7 +32,7 @@ in
 
 buildPythonPackage rec {
   pname = "datafusion";
-  version = "25.0.0";
+  version = "35.0.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
@@ -39,13 +40,13 @@ buildPythonPackage rec {
     owner = "apache";
     repo = "arrow-datafusion-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-oC+fp41a9rsdobpvShZ7sDdtYPJQQ7JLg6MFL+4Pksg=";
+    hash = "sha256-43XY7j/8x+7SCY4W8nysaeWax2nvTTHZXMmy3hSz6pI=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     name = "datafusion-cargo-deps";
     inherit src pname version;
-    hash = "sha256-0e0ZRgwcS/46mi4c2loAnBA2bsaD+/RiMh7oNg3EvHY=";
+    hash = "sha256-YWAyEMojw0bc/fu5kIZKMNPEgsAIpWqjVNodWXbgTl4=";
   };
 
   nativeBuildInputs = with rustPlatform; [
@@ -53,7 +54,11 @@ buildPythonPackage rec {
     maturinBuildHook
   ];
 
-  buildInputs = [ protobuf ] ++ lib.optionals stdenv.isDarwin [ libiconv Security ];
+  buildInputs = [ protobuf ] ++ lib.optionals stdenv.isDarwin [
+    libiconv
+    Security
+    SystemConfiguration
+  ];
 
   propagatedBuildInputs = [ pyarrow ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/enamlx/default.nix b/nixpkgs/pkgs/development/python-modules/enamlx/default.nix
index db16d913cbdb..7c90d8a4b971 100644
--- a/nixpkgs/pkgs/development/python-modules/enamlx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/enamlx/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "enamlx";
-  version = "0.6.2";
+  version = "0.6.4";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "frmdstryr";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-LHqOZ1uLWFbUeQAGKoMH9GljhRq1K4RTVWzgV/pt3g8=";
+    hash = "sha256-C3/G0bnu1EQh0elqdrpCwkFPZU4qmkUX7WRSRK9nkM4=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-securitycenter/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
index 1e0c86b61a73..83634833d4cb 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-securitycenter";
-  version = "1.26.1";
+  version = "1.27.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-oZWY7n/8638/WkIG9s/9LN4NKWSfhnrQp+9Pydq103E=";
+    hash = "sha256-ALdAT+C5LBTrSAXk6ko9KidutN5Tub+ufDAxfZsSGtk=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/oslo-db/default.nix b/nixpkgs/pkgs/development/python-modules/oslo-db/default.nix
index 0e7a5abedda5..b4dce2cc09b5 100644
--- a/nixpkgs/pkgs/development/python-modules/oslo-db/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oslo-db/default.nix
@@ -20,13 +20,13 @@
 
 buildPythonPackage rec {
   pname = "oslo-db";
-  version = "14.1.0";
+  version = "15.0.0";
   pyproject = true;
 
   src = fetchPypi {
     pname = "oslo.db";
     inherit version;
-    hash = "sha256-UFilywqwhXaGnle8K5VNdZqMvhklkTMdHPMDMvz62h8=";
+    hash = "sha256-6QJDUgX1xQtw7mNYY8i06lS9Hr4ABpXAZeMN1C2Xb/o=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/oslo-serialization/default.nix b/nixpkgs/pkgs/development/python-modules/oslo-serialization/default.nix
index 9a3677ccfd6d..1399503c0f9d 100644
--- a/nixpkgs/pkgs/development/python-modules/oslo-serialization/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oslo-serialization/default.nix
@@ -11,13 +11,13 @@
 
 buildPythonPackage rec {
   pname = "oslo-serialization";
-  version = "5.3.0";
+  version = "5.4.0";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "oslo.serialization";
     inherit version;
-    hash = "sha256-IoiY9PM7feq8dCibMrvTAqZZw5z23akEhRD5MPxPdu0=";
+    hash = "sha256-MVyzRl6ZxoXLCRuQNly3Ab7nFA4gS6Pl/C2KILTsbnY=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/phx-class-registry/default.nix b/nixpkgs/pkgs/development/python-modules/phx-class-registry/default.nix
index 465197a15618..0997f7987ada 100644
--- a/nixpkgs/pkgs/development/python-modules/phx-class-registry/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/phx-class-registry/default.nix
@@ -29,6 +29,6 @@ buildPythonPackage rec {
     description = "Factory and registry pattern for Python classes";
     homepage = "https://class-registry.readthedocs.io/en/latest/";
     license = licenses.mit;
-    maintainers = with maintainers; [ kevincox ];
+    maintainers = with maintainers; [ hrdinka tomhoule ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix
index 327ff267eebc..9abab99c0598 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-apidoc";
-  version = "0.4.0";
+  version = "0.5.0";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-/lnRWIJHKqk8Jzevvepr7bNM41y9NKpJR5CfXfFQCq0=";
+    hash = "sha256-Ze/NkiEqX4I3FfuV7gmLRYprsJpe5hfZ7T3q2XF3zVU=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/tools/backblaze-b2/default.nix b/nixpkgs/pkgs/development/tools/backblaze-b2/default.nix
index e82c32940891..708fbb23c80e 100644
--- a/nixpkgs/pkgs/development/tools/backblaze-b2/default.nix
+++ b/nixpkgs/pkgs/development/tools/backblaze-b2/default.nix
@@ -94,6 +94,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/Backblaze/B2_Command_Line_Tool";
     changelog = "https://github.com/Backblaze/B2_Command_Line_Tool/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ hrdinka kevincox tomhoule ];
+    maintainers = with maintainers; [ hrdinka tomhoule ];
   };
 }
diff --git a/nixpkgs/pkgs/development/tools/yq-go/default.nix b/nixpkgs/pkgs/development/tools/yq-go/default.nix
index effd541660ea..d05b60457a63 100644
--- a/nixpkgs/pkgs/development/tools/yq-go/default.nix
+++ b/nixpkgs/pkgs/development/tools/yq-go/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "yq-go";
-  version = "4.41.1";
+  version = "4.42.1";
 
   src = fetchFromGitHub {
     owner = "mikefarah";
     repo = "yq";
     rev = "v${version}";
-    hash = "sha256-1zYem/cvvndyrWaE8wYoxouDDnQyT+VeupFF1VkuC2w=";
+    hash = "sha256-IBEW+IiDymquBhc+nsaYHM59uhBR3o6nt62undeprdY=";
   };
 
-  vendorHash = "sha256-5jc9AQ1T4818kvAF6SU6JEdCQWt1gRJnESXRMGvqrB0=";
+  vendorHash = "sha256-Sdml4C6fTp7dnEy4a+GqwoJoGyO1TLCiJlNf5Yoy5cg=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/games/r2modman/default.nix b/nixpkgs/pkgs/games/r2modman/default.nix
index 30648d67ae67..27cb156a1fe6 100644
--- a/nixpkgs/pkgs/games/r2modman/default.nix
+++ b/nixpkgs/pkgs/games/r2modman/default.nix
@@ -14,18 +14,18 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "r2modman";
-  version = "3.1.46";
+  version = "3.1.47";
 
   src = fetchFromGitHub {
     owner = "ebkr";
     repo = "r2modmanPlus";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-Oo23U3hwkhhLRiOIikIZcnoBFmkRWMK8UECyDRohBj0=";
+    hash = "sha256-refFd/d4y8657FltEvogQVAEl48c5gtrwpuGa8vluqE=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = "${finalAttrs.src}/yarn.lock";
-    hash = "sha256-CXitb/b2tvTfrkFrFv4KP4WdmMg+1sDtC/s2u5ezDfI=";
+    hash = "sha256-1JXd1pDGEFDG+ogXbEpl4WMYXwksJJJBx20ZPykc7OM=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/hardened/patches.json b/nixpkgs/pkgs/os-specific/linux/kernel/hardened/patches.json
index f082e0cd4776..cb825a1adbac 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/hardened/patches.json
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/hardened/patches.json
@@ -2,52 +2,52 @@
     "4.19": {
         "patch": {
             "extra": "-hardened1",
-            "name": "linux-hardened-4.19.306-hardened1.patch",
-            "sha256": "0g38iy5vw9glqmqhmj5y8nnx8gbdj312yb14qnwcl21m78k63mxk",
-            "url": "https://github.com/anthraxx/linux-hardened/releases/download/4.19.306-hardened1/linux-hardened-4.19.306-hardened1.patch"
+            "name": "linux-hardened-4.19.307-hardened1.patch",
+            "sha256": "01i15w3qzwag2v4r5r5bqyk337pidhmcfif228f286cnjnqz5d7h",
+            "url": "https://github.com/anthraxx/linux-hardened/releases/download/4.19.307-hardened1/linux-hardened-4.19.307-hardened1.patch"
         },
-        "sha256": "06dy270xw4frnrc9p2qjh8chgp02fr5ll5g2b0lx9xqzlq7y86xr",
-        "version": "4.19.306"
+        "sha256": "0lp3fc7sqy48vpcl2g0n1bz7i1hp9k0nlz3i1xfh9l056ihzzvl3",
+        "version": "4.19.307"
     },
     "5.10": {
         "patch": {
             "extra": "-hardened1",
-            "name": "linux-hardened-5.10.209-hardened1.patch",
-            "sha256": "1vccxrwi8a8fz3fcjxxqbkdbfjjhzwqpcibfg0nrydcix79ixgyw",
-            "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.10.209-hardened1/linux-hardened-5.10.209-hardened1.patch"
+            "name": "linux-hardened-5.10.210-hardened1.patch",
+            "sha256": "1fdkkl303kvw9sg9lpzg83157xrl9jcl4jjli1gi2a4j0yz2479n",
+            "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.10.210-hardened1/linux-hardened-5.10.210-hardened1.patch"
         },
-        "sha256": "1mc8rssk5aypgb58jz6i2bbflfr6qh1kgqpam0k8fqvwcjnjzqj4",
-        "version": "5.10.209"
+        "sha256": "0vggj3a71awc1w803cdzrnkn88rxr7l1xh9mmdcw9hzxj1d3r9jf",
+        "version": "5.10.210"
     },
     "5.15": {
         "patch": {
             "extra": "-hardened1",
-            "name": "linux-hardened-5.15.148-hardened1.patch",
-            "sha256": "0pryxvr058fisns01w52xsfbx4aqx2ssfk9n1r575lgywp6q03fj",
-            "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.15.148-hardened1/linux-hardened-5.15.148-hardened1.patch"
+            "name": "linux-hardened-5.15.149-hardened1.patch",
+            "sha256": "1y56l5l50h673a4n2pb3i3wh494lpnlw9vvdfr6m0jr0vymldb57",
+            "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.15.149-hardened1/linux-hardened-5.15.149-hardened1.patch"
         },
-        "sha256": "1n75lrck581mppx84cds1a1l5vj05cdkp8ahpry7dx6rgz4pb1f4",
-        "version": "5.15.148"
+        "sha256": "1c01fnaghj55mkgsgddznq1zq4mswsa05rz00kmh1d3y6sd8115x",
+        "version": "5.15.149"
     },
     "5.4": {
         "patch": {
             "extra": "-hardened1",
-            "name": "linux-hardened-5.4.268-hardened1.patch",
-            "sha256": "1lz9i5iaa6pchnk1bw9dg85n82j9hvjdh8pb7vxjg05fxvwgn7jh",
-            "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.4.268-hardened1/linux-hardened-5.4.268-hardened1.patch"
+            "name": "linux-hardened-5.4.269-hardened1.patch",
+            "sha256": "06vf0mlp822i4bkpsxbyk1xjlbzabqpncy8qw9zajpjajwv87d7x",
+            "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.4.269-hardened1/linux-hardened-5.4.269-hardened1.patch"
         },
-        "sha256": "081695lgkdwlrp6gpp6pyflgh76zax1w52shys4s9zjnrfkarj5g",
-        "version": "5.4.268"
+        "sha256": "1kqqm4hpif3jy2ycnb0dfjgzyn18vqhm1i5q7d7rkisks33bwm7z",
+        "version": "5.4.269"
     },
     "6.1": {
         "patch": {
             "extra": "-hardened1",
-            "name": "linux-hardened-6.1.78-hardened1.patch",
-            "sha256": "1qgjm0j8h08qrsx79gj16dmdylfpmqq80mvlq6nipq0gvbdmcfsb",
-            "url": "https://github.com/anthraxx/linux-hardened/releases/download/6.1.78-hardened1/linux-hardened-6.1.78-hardened1.patch"
+            "name": "linux-hardened-6.1.79-hardened1.patch",
+            "sha256": "0inip6pmlwrj75vwjimkjgvh4jn6ldrq5312r02xh1i95qb0sg3a",
+            "url": "https://github.com/anthraxx/linux-hardened/releases/download/6.1.79-hardened1/linux-hardened-6.1.79-hardened1.patch"
         },
-        "sha256": "12fn23m2xwdlv6gr1s8872lk8mvigqkblvlhr54nh8rik2b6n835",
-        "version": "6.1.78"
+        "sha256": "16xkd0hcslqlcf55d4ivzhf1fkhfs5yy0m9arbax8pmm5yi9r97s",
+        "version": "6.1.79"
     },
     "6.5": {
         "patch": {
@@ -62,21 +62,21 @@
     "6.6": {
         "patch": {
             "extra": "-hardened1",
-            "name": "linux-hardened-6.6.17-hardened1.patch",
-            "sha256": "1j3xgavbi24hpvg932rs095mpf8s6dzng9g17qm3gdfclq4xk41i",
-            "url": "https://github.com/anthraxx/linux-hardened/releases/download/6.6.17-hardened1/linux-hardened-6.6.17-hardened1.patch"
+            "name": "linux-hardened-6.6.18-hardened1.patch",
+            "sha256": "0svlck53b7bd38b9b0hzgppmhm59d35r2vqv30ga85ghkvc61byn",
+            "url": "https://github.com/anthraxx/linux-hardened/releases/download/6.6.18-hardened1/linux-hardened-6.6.18-hardened1.patch"
         },
-        "sha256": "0si20m9ckir826jg40bh7sh4kwlp610rnc3gwsgs4nm7dfcm0xpf",
-        "version": "6.6.17"
+        "sha256": "07cv97l5jiakmmv35n0ganvqfr0590b02f3qb617qkx1zg2xhhsf",
+        "version": "6.6.18"
     },
     "6.7": {
         "patch": {
             "extra": "-hardened1",
-            "name": "linux-hardened-6.7.5-hardened1.patch",
-            "sha256": "0z5m37712rnnd2hy1qfgrzr09falgy1l0vx607660pblbmh8a4m1",
-            "url": "https://github.com/anthraxx/linux-hardened/releases/download/6.7.5-hardened1/linux-hardened-6.7.5-hardened1.patch"
+            "name": "linux-hardened-6.7.6-hardened1.patch",
+            "sha256": "063yrs3g0knlz37aq979jhng9k6l19873nbi1jy167xfqmpqqajr",
+            "url": "https://github.com/anthraxx/linux-hardened/releases/download/6.7.6-hardened1/linux-hardened-6.7.6-hardened1.patch"
         },
-        "sha256": "1zrralagnv9yr8qdg7lc05735691dbh92mgwfyxrq5xqc504dxi9",
-        "version": "6.7.5"
+        "sha256": "1lrp7pwnxnqyy8c2l4n4nz997039gbnssrfm8ss8kl3h2c7fr2g4",
+        "version": "6.7.6"
     }
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/xanmod-kernels.nix b/nixpkgs/pkgs/os-specific/linux/kernel/xanmod-kernels.nix
index b321e0bcd649..e94f9f7d0fb8 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.6.17";
-    hash = "sha256-WSWI3UByuD2SrcFC6El3ao0DINeG0IgtrvazDiHaIR0=";
+    version = "6.6.18";
+    hash = "sha256-WGfbCmM0fpWXQt1ThfaHn4bqZz22bNkhc9I2qeXMsws=";
     variant = "lts";
   };
 
   mainVariant = {
-    version = "6.7.5";
-    hash = "sha256-achx+rElMOdPUD0qU2TStrlJXZU71E89HVlM4tKf7WE=";
+    version = "6.7.6";
+    hash = "sha256-gg8B/i6kidgvRBOm3JiMBwP18UtVRH1ELNGQUBkDOMs=";
     variant = "main";
   };
 
diff --git a/nixpkgs/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh b/nixpkgs/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh
index 2051368a49f6..1868f6b2af1b 100755
--- a/nixpkgs/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh
+++ b/nixpkgs/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh
@@ -34,8 +34,7 @@ targetHost=
 remoteSudo=
 verboseScript=
 noFlake=
-# comma separated list of vars to preserve when using sudo
-preservedSudoVars=NIXOS_INSTALL_BOOTLOADER
+installBootloader=
 json=
 
 # log the given argument to stderr
@@ -57,10 +56,10 @@ while [ "$#" -gt 0 ]; do
         ;;
       --install-grub)
         log "$0: --install-grub deprecated, use --install-bootloader instead"
-        export NIXOS_INSTALL_BOOTLOADER=1
+        installBootloader=1
         ;;
       --install-bootloader)
-        export NIXOS_INSTALL_BOOTLOADER=1
+        installBootloader=1
         ;;
       --no-build-nix)
         buildNix=
@@ -157,8 +156,6 @@ while [ "$#" -gt 0 ]; do
     esac
 done
 
-sudoCommand=(sudo --preserve-env="$preservedSudoVars" --)
-
 if [[ -n "$SUDO_USER" ]]; then
     useSudo=1
 fi
@@ -179,7 +176,7 @@ runCmd() {
 buildHostCmd() {
     local c
     if [[ "${useSudo:-x}" = 1 ]]; then
-        c=("${sudoCommand[@]}")
+        c=("sudo")
     else
         c=()
     fi
@@ -196,7 +193,7 @@ buildHostCmd() {
 targetHostCmd() {
     local c
     if [[ "${useSudo:-x}" = 1 ]]; then
-        c=("${sudoCommand[@]}")
+        c=("sudo")
     else
         c=()
     fi
@@ -756,7 +753,7 @@ if [[ "$action" = switch || "$action" = boot || "$action" = test || "$action" =
     cmd=(
         "systemd-run"
         "-E" "LOCALE_ARCHIVE" # Will be set to new value early in switch-to-configuration script, but interpreter starts out with old value
-        "-E" "NIXOS_INSTALL_BOOTLOADER"
+        "-E" "NIXOS_INSTALL_BOOTLOADER=$installBootloader"
         "--collect"
         "--no-ask-password"
         "--pty"
@@ -774,14 +771,14 @@ if [[ "$action" = switch || "$action" = boot || "$action" = test || "$action" =
     # may be dangerous in remote access (e.g. SSH).
     if [[ -n "$NIXOS_SWITCH_USE_DIRTY_ENV" ]]; then
         log "warning: skipping systemd-run since NIXOS_SWITCH_USE_DIRTY_ENV is set. This environment variable will be ignored in the future"
-        cmd=()
+        cmd=("env" "NIXOS_INSTALL_BOOTLOADER=$installBootloader")
     elif ! targetHostSudoCmd "${cmd[@]}" true; then
         logVerbose "Skipping systemd-run to switch configuration since it is not working in target host."
         cmd=(
             "env"
             "-i"
             "LOCALE_ARCHIVE=$LOCALE_ARCHIVE"
-            "NIXOS_INSTALL_BOOTLOADER=$NIXOS_INSTALL_BOOTLOADER"
+            "NIXOS_INSTALL_BOOTLOADER=$installBootloader"
         )
     else
         logVerbose "Using systemd-run to switch configuration."
diff --git a/nixpkgs/pkgs/os-specific/linux/switcheroo-control/default.nix b/nixpkgs/pkgs/os-specific/linux/switcheroo-control/default.nix
index bb0f262a2b1c..a749168f5bc4 100644
--- a/nixpkgs/pkgs/os-specific/linux/switcheroo-control/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/switcheroo-control/default.nix
@@ -6,11 +6,10 @@
 , libgudev
 , pkg-config
 , glib
-, python3
-, gobject-introspection
+, python3Packages
 }:
 
-python3.pkgs.buildPythonApplication rec {
+python3Packages.buildPythonApplication rec {
   pname = "switcheroo-control";
   version = "2.6";
 
@@ -19,7 +18,7 @@ python3.pkgs.buildPythonApplication rec {
   src = fetchFromGitLab {
     domain = "gitlab.freedesktop.org";
     owner = "hadess";
-    repo = pname;
+    repo = "switcheroo-control";
     rev = version;
     hash = "sha256-F+5HhMxM8pcnAGmVBARKWNCL0rIEzHW/jsGHHqYZJug=";
   };
@@ -28,18 +27,16 @@ python3.pkgs.buildPythonApplication rec {
     ninja
     meson
     pkg-config
-
-    # needed for glib-compile-resources
-    glib
   ];
 
   buildInputs = [
     systemd
     libgudev
+    glib
   ];
 
   propagatedBuildInputs = [
-    python3.pkgs.pygobject3
+    python3Packages.pygobject3
   ];
 
   mesonFlags = [
diff --git a/nixpkgs/pkgs/servers/minio/default.nix b/nixpkgs/pkgs/servers/minio/default.nix
index 3cbcb21b3590..2936aa6a8736 100644
--- a/nixpkgs/pkgs/servers/minio/default.nix
+++ b/nixpkgs/pkgs/servers/minio/default.nix
@@ -21,13 +21,13 @@ let
 in
 buildGoModule rec {
   pname = "minio";
-  version = "2024-02-17T01-15-57Z";
+  version = "2024-02-24T17-11-14Z";
 
   src = fetchFromGitHub {
     owner = "minio";
     repo = "minio";
     rev = "RELEASE.${version}";
-    hash = "sha256-lgNQamHw5sI6rGy8TP62Vb5esUOivPkyWj15EOPsjkM=";
+    hash = "sha256-LD32cNKvW0mfYeXHNOqgiWXAiHjWJrorRqbQkosjaNE=";
   };
 
   vendorHash = "sha256-0EymK7jQhr+NJDg1zgWpcniV5zZ33Av6zpq0IDuWw7M=";
diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/4.4.nix b/nixpkgs/pkgs/servers/nosql/mongodb/4.4.nix
index 25298d55bdd2..933e9136aee0 100644
--- a/nixpkgs/pkgs/servers/nosql/mongodb/4.4.nix
+++ b/nixpkgs/pkgs/servers/nosql/mongodb/4.4.nix
@@ -6,8 +6,8 @@ let
   };
 in
 buildMongoDB {
-  version = "4.4.27";
-  sha256 = "sha256-HcTI/0igzCR5g8Wai5zKEuK3BjFrpRP/9GwZh5wqmtc=";
+  version = "4.4.28";
+  sha256 = "sha256-aq4dJl2FOTOhQ3bzVj0L/0CE3obE7lCx2ecjGNYC8X4=";
   patches = [
     ./forget-build-dependencies-4-4.patch
     ./fix-build-with-boost-1.79-4_4.patch
diff --git a/nixpkgs/pkgs/top-level/all-packages.nix b/nixpkgs/pkgs/top-level/all-packages.nix
index 514443fec646..85645d758c9b 100644
--- a/nixpkgs/pkgs/top-level/all-packages.nix
+++ b/nixpkgs/pkgs/top-level/all-packages.nix
@@ -4658,8 +4658,6 @@ with pkgs;
 
   clash-geoip = callPackage ../data/misc/clash-geoip { };
 
-  clash-meta = callPackage ../tools/networking/clash-meta { };
-
   clash-verge = callPackage ../applications/networking/clash-verge { };
 
   clevercsv = with python3Packages; toPythonApplication clevercsv;
diff --git a/nixpkgs/pkgs/top-level/ocaml-packages.nix b/nixpkgs/pkgs/top-level/ocaml-packages.nix
index 464554ff9808..3bdd9b4df8a9 100644
--- a/nixpkgs/pkgs/top-level/ocaml-packages.nix
+++ b/nixpkgs/pkgs/top-level/ocaml-packages.nix
@@ -1134,8 +1134,6 @@ let
 
     mirage-flow-unix = callPackage ../development/ocaml-modules/mirage-flow/unix.nix { };
 
-    mirage-fs = callPackage ../development/ocaml-modules/mirage-fs { };
-
     mirage-kv = callPackage ../development/ocaml-modules/mirage-kv { };
 
     mirage-logs = callPackage ../development/ocaml-modules/mirage-logs { };
diff --git a/nixpkgs/pkgs/top-level/python-packages.nix b/nixpkgs/pkgs/top-level/python-packages.nix
index 3bd7e9174ad6..34429a93a025 100644
--- a/nixpkgs/pkgs/top-level/python-packages.nix
+++ b/nixpkgs/pkgs/top-level/python-packages.nix
@@ -2669,7 +2669,7 @@ self: super: with self; {
   datadog = callPackage ../development/python-modules/datadog { };
 
   datafusion = callPackage ../development/python-modules/datafusion {
-    inherit (pkgs.darwin.apple_sdk.frameworks) Security;
+    inherit (pkgs.darwin.apple_sdk.frameworks) Security SystemConfiguration;
   };
 
   datamodeldict = callPackage ../development/python-modules/datamodeldict { };