about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix6
-rw-r--r--apple-silicon-support/packages/linux-asahi/default.nix17
-rw-r--r--apple-silicon-support/packages/linux-asahi/rust-bindgen-version.patch14
-rw-r--r--apple-silicon-support/packages/linux-asahi/rustc-1.73.0-fix.patch232
-rw-r--r--apple-silicon-support/packages/m1n1/default.nix6
-rw-r--r--apple-silicon-support/packages/mesa-asahi-edge/default.nix20
-rw-r--r--apple-silicon-support/packages/mesa-asahi-edge/opencl.patch84
-rw-r--r--apple-silicon-support/packages/uboot-asahi/default.nix8
-rw-r--r--flake.lock8
-rw-r--r--flake.nix2
-rw-r--r--iso-configuration/installer-configuration.nix8
11 files changed, 125 insertions, 280 deletions
diff --git a/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix b/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix
index bb34f19f4f9c..ac9d15e36d4e 100644
--- a/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix
+++ b/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix
@@ -3,14 +3,14 @@
 , alsa-ucm-conf }:
 
 (alsa-ucm-conf.overrideAttrs (oldAttrs: rec {
-  version = "3";
+  version = "5";
 
   src_asahi = fetchFromGitHub {
-    # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/alsa-ucm-conf-asahi/PKGBUILD
+    # tracking: https://src.fedoraproject.org/rpms/alsa-ucm-asahi
     owner = "AsahiLinux";
     repo = "alsa-ucm-conf-asahi";
     rev = "v${version}";
-    hash = "sha256-TCCT0AJx0SdnTzzBaV94zuD2hrPqvk+9vTTuEQmpJjc=";
+    hash = "sha256-daUNz5oUrPfSMO0Tqq/WbtiLHMOtPeQQlI+juGrhTxw=";
   };
   
   postInstall = oldAttrs.postInstall or "" + ''
diff --git a/apple-silicon-support/packages/linux-asahi/default.nix b/apple-silicon-support/packages/linux-asahi/default.nix
index 90dcd563ee49..a582aac81b8f 100644
--- a/apple-silicon-support/packages/linux-asahi/default.nix
+++ b/apple-silicon-support/packages/linux-asahi/default.nix
@@ -88,26 +88,19 @@ let
     (linuxKernel.manualConfig rec {
       inherit stdenv lib;
 
-      version = "6.5.0-asahi";
+      version = "6.6.0-asahi";
       modDirVersion = version;
-      extraMeta.branch = "6.5";
+      extraMeta.branch = "6.6";
 
       src = fetchFromGitHub {
-        # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/linux-asahi/PKGBUILD
+        # tracking: https://github.com/AsahiLinux/linux/tree/asahi-wip (w/ fedora verification)
         owner = "AsahiLinux";
         repo = "linux";
-        rev = "asahi-6.5-15";
-        hash = "sha256-Rruk/Nrw425XerZjgDJ4PJ3c63CCycch1qz7vFxHPCE=";
+        rev = "asahi-6.6-14";
+        hash = "sha256-+ydX2XXIbcVfq27WC68EPP8n3bf+WD5fDG7FBq3QJi4=";
       };
 
       kernelPatches = [
-        { name = "rust-bindgen-version";
-          patch = ./rust-bindgen-version.patch;
-        }
-      ] ++ lib.optionals (rustAtLeast "1.73.0") [
-        { name = "rustc-1.73.0";
-          patch = ./rustc-1.73.0-fix.patch;
-        }
       ] ++ lib.optionals _4KBuild [
         # thanks to Sven Peter
         # https://lore.kernel.org/linux-iommu/20211019163737.46269-1-sven@svenpeter.dev/
diff --git a/apple-silicon-support/packages/linux-asahi/rust-bindgen-version.patch b/apple-silicon-support/packages/linux-asahi/rust-bindgen-version.patch
deleted file mode 100644
index 695cb2ceaeff..000000000000
--- a/apple-silicon-support/packages/linux-asahi/rust-bindgen-version.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/scripts/rust_is_available.sh b/scripts/rust_is_available.sh
-index aebbf1913..b7b0a4abc 100755
---- a/scripts/rust_is_available.sh
-+++ b/scripts/rust_is_available.sh
-@@ -102,8 +102,7 @@ fi
- # Check that the `libclang` used by the Rust bindings generator is suitable.
- bindgen_libclang_version=$( \
- 	LC_ALL=C "$BINDGEN" $(dirname $0)/rust_is_available_bindgen_libclang.h 2>&1 >/dev/null \
--		| grep -F 'clang version ' \
--		| grep -oE '[0-9]+\.[0-9]+\.[0-9]+' \
-+		| grep -oP 'clang version \K[0-9]+\.[0-9]+\.[0-9]+' \
- 		| head -n 1 \
- )
- bindgen_libclang_min_version=$($min_tool_version llvm)
diff --git a/apple-silicon-support/packages/linux-asahi/rustc-1.73.0-fix.patch b/apple-silicon-support/packages/linux-asahi/rustc-1.73.0-fix.patch
deleted file mode 100644
index 3db8b5860ea3..000000000000
--- a/apple-silicon-support/packages/linux-asahi/rustc-1.73.0-fix.patch
+++ /dev/null
@@ -1,232 +0,0 @@
-diff --git a/rust/alloc/lib.rs b/rust/alloc/lib.rs
-index 49d643c3af6a..9107881810e4 100644
---- a/rust/alloc/lib.rs
-+++ b/rust/alloc/lib.rs
-@@ -138,7 +138,6 @@
- #![feature(nonnull_slice_from_raw_parts)]
- #![feature(pattern)]
- #![feature(pointer_byte_offsets)]
--#![feature(provide_any)]
- #![feature(ptr_internals)]
- #![feature(ptr_metadata)]
- #![feature(ptr_sub_ptr)]
-diff --git a/rust/kernel/driver.rs b/rust/kernel/driver.rs
-index e59f163d8ff3..35f27ba8894e 100644
---- a/rust/kernel/driver.rs
-+++ b/rust/kernel/driver.rs
-@@ -108,68 +108,35 @@ fn drop(&mut self) {
-     }
- }
- 
--/// Conversion from a device id to a raw device id.
--///
--/// This is meant to be implemented by buses/subsystems so that they can use [`IdTable`] to
--/// guarantee (at compile-time) zero-termination of device id tables provided by drivers.
--///
--/// # Safety
--///
--/// Implementers must ensure that:
--///   - [`RawDeviceId::ZERO`] is actually a zeroed-out version of the raw device id.
--///   - [`RawDeviceId::to_rawid`] stores `offset` in the context/data field of the raw device id so
--///     that buses can recover the pointer to the data.
--#[const_trait]
--pub unsafe trait RawDeviceId {
--    /// The raw type that holds the device id.
--    ///
--    /// Id tables created from [`Self`] are going to hold this type in its zero-terminated array.
--    type RawType: Copy;
--
--    /// A zeroed-out representation of the raw device id.
--    ///
--    /// Id tables created from [`Self`] use [`Self::ZERO`] as the sentinel to indicate the end of
--    /// the table.
--    const ZERO: Self::RawType;
--
--    /// Converts an id into a raw id.
--    ///
--    /// `offset` is the offset from the memory location where the raw device id is stored to the
--    /// location where its associated context information is stored. Implementations must store
--    /// this in the appropriate context/data field of the raw type.
--    fn to_rawid(&self, offset: isize) -> Self::RawType;
--}
- 
- /// A zero-terminated device id array.
- #[derive(Copy, Clone)]
- #[repr(C)]
--pub struct IdArrayIds<T: RawDeviceId, const N: usize> {
--    ids: [T::RawType; N],
--    sentinel: T::RawType,
-+pub struct IdArrayIds<const N: usize> {
-+    ids: [bindings::of_device_id; N],
-+    sentinel: bindings::of_device_id,
- }
- 
--unsafe impl<T: RawDeviceId, const N: usize> Sync for IdArrayIds<T, N> {}
-+unsafe impl<const N: usize> Sync for IdArrayIds<N> {}
- 
- /// A zero-terminated device id array, followed by context data.
- #[repr(C)]
--pub struct IdArray<T: RawDeviceId, U, const N: usize> {
--    ids: IdArrayIds<T, N>,
-+pub struct IdArray<U, const N: usize> {
-+    ids: IdArrayIds<N>,
-     id_infos: [Option<U>; N],
- }
- 
--impl<T: RawDeviceId, U, const N: usize> IdArray<T, U, N> {
-+impl<U, const N: usize> IdArray<U, N> {
-     /// Creates a new instance of the array.
-     ///
-     /// The contents are derived from the given identifiers and context information.
--    pub const fn new(ids: [T; N], infos: [Option<U>; N]) -> Self
-+    pub const fn new(ids: [crate::of::DeviceId; N], infos: [Option<U>; N]) -> Self
-     where
--        T: ~const RawDeviceId + Copy,
--        T::RawType: Copy + Clone,
-     {
-         let mut array = Self {
-             ids: IdArrayIds {
--                ids: [T::ZERO; N],
--                sentinel: T::ZERO,
-+                ids: [crate::of::DEVICEID_ZERO; N],
-+                sentinel: crate::of::DEVICEID_ZERO,
-             },
-             id_infos: infos,
-         };
-@@ -191,7 +158,7 @@ impl<T: RawDeviceId, U, const N: usize> IdArray<T, U, N> {
-     /// Returns an `IdTable` backed by `self`.
-     ///
-     /// This is used to essentially erase the array size.
--    pub const fn as_table(&self) -> IdTable<'_, T, U> {
-+    pub const fn as_table(&self) -> IdTable<'_, U> {
-         IdTable {
-             first: &self.ids.ids[0],
-             _p: PhantomData,
-@@ -204,10 +171,7 @@ pub const fn count(&self) -> usize {
-     }
- 
-     /// Returns the inner IdArrayIds array, without the context data.
--    pub const fn as_ids(&self) -> IdArrayIds<T, N>
--    where
--        T: ~const RawDeviceId + Copy,
--    {
-+    pub const fn as_ids(&self) -> IdArrayIds<N> {
-         self.ids
-     }
- }
-@@ -216,13 +180,13 @@ pub const fn as_ids(&self) -> IdArrayIds<T, N>
- ///
- /// The table is guaranteed to be zero-terminated and to be followed by an array of context data of
- /// type `Option<U>`.
--pub struct IdTable<'a, T: RawDeviceId, U> {
--    first: &'a T::RawType,
-+pub struct IdTable<'a, U> {
-+    first: &'a bindings::of_device_id,
-     _p: PhantomData<&'a U>,
- }
- 
--impl<T: RawDeviceId, U> AsRef<T::RawType> for IdTable<'_, T, U> {
--    fn as_ref(&self) -> &T::RawType {
-+impl<U> AsRef<bindings::of_device_id> for IdTable<'_, U> {
-+    fn as_ref(&self) -> &bindings::of_device_id {
-         self.first
-     }
- }
-@@ -364,11 +328,11 @@ macro_rules! second_item {
- /// ```
- #[macro_export]
- macro_rules! define_id_array {
--    ($table_name:ident, $id_type:ty, $data_type:ty, [ $($t:tt)* ]) => {
-+    ($table_name:ident, $data_type:ty, [ $($t:tt)* ]) => {
-         const $table_name:
--            $crate::driver::IdArray<$id_type, $data_type, { $crate::count_paren_items!($($t)*) }> =
-+            $crate::driver::IdArray<$data_type, { $crate::count_paren_items!($($t)*) }> =
-                 $crate::driver::IdArray::new(
--                    $crate::first_item!($id_type, $($t)*), $crate::second_item!($($t)*));
-+                    $crate::first_item!(crate::of::DeviceId, $($t)*), $crate::second_item!($($t)*));
-     };
- }
- 
-@@ -388,8 +352,8 @@ macro_rules! define_id_array {
- /// ```
- #[macro_export]
- macro_rules! driver_id_table {
--    ($table_name:ident, $id_type:ty, $data_type:ty, $target:expr) => {
--        const $table_name: Option<$crate::driver::IdTable<'static, $id_type, $data_type>> =
-+    ($table_name:ident, $data_type:ty, $target:expr) => {
-+        const $table_name: Option<$crate::driver::IdTable<'static, $data_type>> =
-             Some($target.as_table());
-     };
- }
-@@ -412,7 +376,7 @@ macro_rules! driver_id_table {
- macro_rules! module_id_table {
-     ($item_name:ident, $table_type:literal, $id_type:ty, $table_name:ident) => {
-         #[export_name = concat!("__mod_", $table_type, "__", stringify!($table_name), "_device_table")]
--        static $item_name: $crate::driver::IdArrayIds<$id_type, { $table_name.count() }> =
-+        static $item_name: $crate::driver::IdArrayIds<{ $table_name.count() }> =
-             $table_name.as_ids();
-     };
- }
-diff --git a/rust/kernel/of.rs b/rust/kernel/of.rs
-index a27621b57fbb..0e2a52ee49da 100644
---- a/rust/kernel/of.rs
-+++ b/rust/kernel/of.rs
-@@ -46,7 +46,7 @@ pub enum DeviceId {
- #[macro_export]
- macro_rules! define_of_id_table {
-     ($name:ident, $data_type:ty, $($t:tt)*) => {
--        $crate::define_id_array!($name, $crate::of::DeviceId, $data_type, $($t)*);
-+        $crate::define_id_array!($name, $data_type, $($t)*);
-     };
- }
- 
-@@ -56,7 +56,6 @@ macro_rules! driver_of_id_table {
-     ($name:expr) => {
-         $crate::driver_id_table!(
-             OF_DEVICE_ID_TABLE,
--            $crate::of::DeviceId,
-             Self::IdInfo,
-             $name
-         );
-@@ -72,19 +71,18 @@ macro_rules! module_of_id_table {
-     };
- }
- 
-+pub const DEVICEID_ZERO: bindings::of_device_id = bindings::of_device_id {
-+    name: [0; 32],
-+    type_: [0; 32],
-+    compatible: [0; 128],
-+    data: core::ptr::null(),
-+};
- // SAFETY: `ZERO` is all zeroed-out and `to_rawid` stores `offset` in `of_device_id::data`.
--unsafe impl const driver::RawDeviceId for DeviceId {
--    type RawType = bindings::of_device_id;
--    const ZERO: Self::RawType = bindings::of_device_id {
--        name: [0; 32],
--        type_: [0; 32],
--        compatible: [0; 128],
--        data: core::ptr::null(),
--    };
-+impl DeviceId {
- 
--    fn to_rawid(&self, offset: isize) -> Self::RawType {
-+    pub const fn to_rawid(&self, offset: isize) -> bindings::of_device_id {
-         let DeviceId::Compatible(compatible) = self;
--        let mut id = Self::ZERO;
-+        let mut id = DEVICEID_ZERO;
-         let mut i = 0;
-         while i < compatible.len() {
-             // If `compatible` does not fit in `id.compatible`, an "index out of bounds" build time
-diff --git a/rust/kernel/platform.rs b/rust/kernel/platform.rs
-index d42ae1cbaf9e..7281351a2b8a 100644
---- a/rust/kernel/platform.rs
-+++ b/rust/kernel/platform.rs
-@@ -140,7 +140,7 @@ pub trait Driver {
-     type IdInfo: 'static = ();
- 
-     /// The table of device ids supported by the driver.
--    const OF_DEVICE_ID_TABLE: Option<driver::IdTable<'static, of::DeviceId, Self::IdInfo>> = None;
-+    const OF_DEVICE_ID_TABLE: Option<driver::IdTable<'static, Self::IdInfo>> = None;
- 
-     /// Platform driver probe.
-     ///
diff --git a/apple-silicon-support/packages/m1n1/default.nix b/apple-silicon-support/packages/m1n1/default.nix
index 7955f47ab435..86a8bcdf8bc8 100644
--- a/apple-silicon-support/packages/m1n1/default.nix
+++ b/apple-silicon-support/packages/m1n1/default.nix
@@ -25,14 +25,14 @@ let
   });
 in stdenv.mkDerivation rec {
   pname = "m1n1";
-  version = "1.4.2";
+  version = "1.4.11";
 
   src = fetchFromGitHub {
-    # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/m1n1/PKGBUILD
+    # tracking: https://src.fedoraproject.org/rpms/m1n1
     owner = "AsahiLinux";
     repo = "m1n1";
     rev = "v${version}";
-    hash = "sha256-zPHLlhXUIX6MV2pnDkuSg4Pz8gB4YOZiaa8MuLasgPY=";
+    hash = "sha256-1lWI9tcOxgrcfaPfdSF+xRE9qofhNR3SQiA4h86VVeE=";
     fetchSubmodules = true;
   };
 
diff --git a/apple-silicon-support/packages/mesa-asahi-edge/default.nix b/apple-silicon-support/packages/mesa-asahi-edge/default.nix
index 0e1b60315cb2..b6b330ef8b4f 100644
--- a/apple-silicon-support/packages/mesa-asahi-edge/default.nix
+++ b/apple-silicon-support/packages/mesa-asahi-edge/default.nix
@@ -1,22 +1,26 @@
 { lib
 , fetchFromGitLab
-, mesa }:
+, mesa
+, llvmPackages
+}:
 
 (mesa.override {
   galliumDrivers = [ "swrast" "asahi" ];
   vulkanDrivers = [ "swrast" ];
   enableGalliumNine = false;
+  # libclc and other OpenCL components are needed for geometry shader support on Apple Silicon
+  enableOpenCL = true;
 }).overrideAttrs (oldAttrs: {
   # version must be the same length (i.e. no unstable or date)
   # so that system.replaceRuntimeDependencies can work
-  version = "23.3.0";
+  version = "24.0.0";
   src = fetchFromGitLab {
-    # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/mesa-asahi-edge/PKGBUILD
+    # tracking: https://pagure.io/fedora-asahi/mesa/commits/asahi
     domain = "gitlab.freedesktop.org";
     owner = "asahi";
     repo = "mesa";
-    rev = "asahi-20230904";
-    hash = "sha256-hBfXzV8U9fm3cR4KMIl64ypioEeofH3BDl/jZQPLKQg=";
+    rev = "asahi-20231213";
+    hash = "sha256-hl0JtwWEXaCkhCMQJ393mzfw/eEx6m9DYNS+spQ3Vhs=";
   };
 
   mesonFlags =
@@ -34,8 +38,10 @@
       "-Dlmsensors=disabled"
     ];
 
-  # replace disk cache path patch with one tweaked slightly to apply to this version
+  # replace patches with ones tweaked slightly to apply to this version
   patches = lib.forEach oldAttrs.patches
     (p: if lib.hasSuffix "disk_cache-include-dri-driver-path-in-cache-key.patch" p
-      then ./disk_cache-include-dri-driver-path-in-cache-key.patch else p);
+      then ./disk_cache-include-dri-driver-path-in-cache-key.patch else
+      (if lib.hasSuffix "opencl.patch" p
+      then ./opencl.patch else p));
 })
diff --git a/apple-silicon-support/packages/mesa-asahi-edge/opencl.patch b/apple-silicon-support/packages/mesa-asahi-edge/opencl.patch
new file mode 100644
index 000000000000..2957bb987854
--- /dev/null
+++ b/apple-silicon-support/packages/mesa-asahi-edge/opencl.patch
@@ -0,0 +1,84 @@
+From bbd0f154183e4d26a14bb005f6afc636629c201e Mon Sep 17 00:00:00 2001
+From: Thomas Watson <twatson52@icloud.com>
+Date: Sat, 16 Dec 2023 20:46:51 -0600
+Subject: [PATCH] opencl.patch from nixpkgs
+ f416128e90ac75bec060e8b9435fe9c38423c036
+
+---
+ meson.build                             | 2 +-
+ meson_options.txt                       | 6 ++++++
+ src/gallium/targets/opencl/meson.build  | 6 +++---
+ src/gallium/targets/rusticl/meson.build | 3 +--
+ 4 files changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 552ff196aa8..9e10156b875 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1829,7 +1829,7 @@ endif
+ 
+ dep_clang = null_dep
+ if with_clc
+-  llvm_libdir = dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir')
++  llvm_libdir = get_option('clang-libdir')
+ 
+   dep_clang = cpp.find_library('clang-cpp', dirs : llvm_libdir, required : false)
+ 
+diff --git a/meson_options.txt b/meson_options.txt
+index c76fa6d3382..d2021f55634 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -1,6 +1,12 @@
+ # Copyright © 2017-2019 Intel Corporation
+ # SPDX-License-Identifier: MIT
+ 
++option(
++  'clang-libdir',
++  type : 'string',
++  value : '',
++  description : 'Locations to search for clang libraries.'
++)
+ option(
+   'platforms',
+   type : 'array',
+diff --git a/src/gallium/targets/opencl/meson.build b/src/gallium/targets/opencl/meson.build
+index 7c14135898e..cbcd67cc443 100644
+--- a/src/gallium/targets/opencl/meson.build
++++ b/src/gallium/targets/opencl/meson.build
+@@ -39,7 +39,8 @@ if dep_llvm.version().version_compare('>=10.0.0')
+   polly_isl_dep = cpp.find_library('PollyISL', dirs : llvm_libdir, required : false)
+ endif
+ 
+-dep_clang = cpp.find_library('clang-cpp', dirs : llvm_libdir, required : false)
++clang_libdir = get_option('clang-libdir')
++dep_clang = cpp.find_library('clang-cpp', dirs : clang_libdir, required : false)
+ 
+ # meson will return clang-cpp from system dirs if it's not found in llvm_libdir
+ linker_rpath_arg = '-Wl,--rpath=@0@'.format(llvm_libdir)
+@@ -123,8 +124,7 @@ if with_opencl_icd
+     configuration : _config,
+     input : 'mesa.icd.in',
+     output : 'mesa.icd',
+-    install : true,
+-    install_tag : 'runtime',
++    install : false,
+     install_dir : join_paths(get_option('sysconfdir'), 'OpenCL', 'vendors'),
+   )
+ 
+diff --git a/src/gallium/targets/rusticl/meson.build b/src/gallium/targets/rusticl/meson.build
+index b2963fe6dfa..2f784bdccd4 100644
+--- a/src/gallium/targets/rusticl/meson.build
++++ b/src/gallium/targets/rusticl/meson.build
+@@ -76,8 +76,7 @@ configure_file(
+   configuration : _config,
+   input : 'rusticl.icd.in',
+   output : 'rusticl.icd',
+-  install : true,
+-  install_tag : 'runtime',
++  install : false,
+   install_dir : join_paths(get_option('sysconfdir'), 'OpenCL', 'vendors'),
+ )
+ 
+-- 
+2.40.1
+
diff --git a/apple-silicon-support/packages/uboot-asahi/default.nix b/apple-silicon-support/packages/uboot-asahi/default.nix
index 908aff32b1ae..c3bf0847973f 100644
--- a/apple-silicon-support/packages/uboot-asahi/default.nix
+++ b/apple-silicon-support/packages/uboot-asahi/default.nix
@@ -6,13 +6,13 @@
 
 (buildUBoot rec {
   src = fetchFromGitHub {
-    # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/uboot-asahi/PKGBUILD
+    # tracking: https://pagure.io/fedora-asahi/uboot-tools/commits/main
     owner = "AsahiLinux";
     repo = "u-boot";
-    rev = "asahi-v2023.07.02-3";
-    hash = "sha256-a7iNawyq7K6jhiVzu5x8mllF3olTP+jQRXGGSsoKINI=";
+    rev = "asahi-v2023.07.02-4";
+    hash = "sha256-M4qkEyNgwV2AKSr5VzPGfhHo1kGy8Tw8TfyP36cgYjc=";
   };
-  version = "2023.07.02.asahi3-1";
+  version = "2023.07.02.asahi4-1";
 
   defconfig = "apple_m1_defconfig";
   extraMeta.platforms = [ "aarch64-linux" ];
diff --git a/flake.lock b/flake.lock
index 1670b54e21dd..14e9ea6b16b7 100644
--- a/flake.lock
+++ b/flake.lock
@@ -17,17 +17,17 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1700419998,
-        "narHash": "sha256-aXh4adx9x9RlRMSykzR+bY8AOVjcwMEJO1ZeQROwbcE=",
+        "lastModified": 1702830618,
+        "narHash": "sha256-lvhwIvRwhOLgzbRuYkqHy4M5cQHYs4ktL6/hyuBS6II=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "12a0ade5e458984675b9789a4b260ebabdd2d1ab",
+        "rev": "91a00709aebb3602f172a0bf47ba1ef013e34835",
         "type": "github"
       },
       "original": {
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "12a0ade5e458984675b9789a4b260ebabdd2d1ab",
+        "rev": "91a00709aebb3602f172a0bf47ba1ef013e34835",
         "type": "github"
       }
     },
diff --git a/flake.nix b/flake.nix
index 93d0752435c9..cb6e1724ae38 100644
--- a/flake.nix
+++ b/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/12a0ade5e458984675b9789a4b260ebabdd2d1ab";
+      url = "github:nixos/nixpkgs/91a00709aebb3602f172a0bf47ba1ef013e34835";
     };
 
     rust-overlay = {
diff --git a/iso-configuration/installer-configuration.nix b/iso-configuration/installer-configuration.nix
index 0cd3ca711e77..39c9ae90efcf 100644
--- a/iso-configuration/installer-configuration.nix
+++ b/iso-configuration/installer-configuration.nix
@@ -107,6 +107,14 @@
       util-linux = prev.util-linux.override {
         translateManpages = false;
       };
+
+      # documentation cross-compilation is currently broken
+      # https://github.com/NixOS/nixpkgs/pull/275078
+      btrfs-progs = prev.btrfs-progs.overrideAttrs (old: {
+        configureFlags = (old.configureFlags or []) ++ [
+          "--disable-documentation"
+        ];
+      });
     })
   ];