wip
This commit is contained in:
		
							parent
							
								
									c66f8ef8d4
								
							
						
					
					
						commit
						a3f59d1e0e
					
				@ -89,7 +89,7 @@ in {
 | 
			
		||||
    # todo vulkan in chrome
 | 
			
		||||
    # todo video encoding in chrome
 | 
			
		||||
    hardware.opengl = {
 | 
			
		||||
      enable = de.enableAcceleration;
 | 
			
		||||
      enable = cfg.enableAcceleration;
 | 
			
		||||
      extraPackages = with pkgs; [
 | 
			
		||||
        intel-media-driver # LIBVA_DRIVER_NAME=iHD
 | 
			
		||||
        vaapiIntel         # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
 | 
			
		||||
 | 
			
		||||
@ -31,8 +31,8 @@ in {
 | 
			
		||||
 | 
			
		||||
  config = lib.mkIf cfg.enable {
 | 
			
		||||
    # vulkan
 | 
			
		||||
   hardware.opengl.driSupport = de.enableAcceleration;
 | 
			
		||||
   hardware.opengl.driSupport32Bit = de.enableAcceleration;
 | 
			
		||||
   hardware.opengl.driSupport = cfg.enableAcceleration;
 | 
			
		||||
   hardware.opengl.driSupport32Bit = cfg.enableAcceleration;
 | 
			
		||||
 | 
			
		||||
    # Applications
 | 
			
		||||
    users.users.googlebot.packages = with pkgs; [
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										32
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										32
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							@ -7,11 +7,11 @@
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1652712410,
 | 
			
		||||
        "narHash": "sha256-hMJ2TqLt0DleEnQFGUHK9sV2aAzJPU8pZeiZoqRozbE=",
 | 
			
		||||
        "lastModified": 1665870395,
 | 
			
		||||
        "narHash": "sha256-Tsbqb27LDNxOoPLh0gw2hIb6L/6Ow/6lIBvqcHzEKBI=",
 | 
			
		||||
        "owner": "ryantm",
 | 
			
		||||
        "repo": "agenix",
 | 
			
		||||
        "rev": "7e5e58b98c3dcbf497543ff6f22591552ebfe65b",
 | 
			
		||||
        "rev": "a630400067c6d03c9b3e0455347dc8559db14288",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
@ -100,11 +100,11 @@
 | 
			
		||||
    },
 | 
			
		||||
    "flake-utils": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1653893745,
 | 
			
		||||
        "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
 | 
			
		||||
        "lastModified": 1667395993,
 | 
			
		||||
        "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
 | 
			
		||||
        "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
@ -136,17 +136,17 @@
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1655456688,
 | 
			
		||||
        "narHash": "sha256-j2trI5gv2fnHdfUQFBy957avCPxxzCqE8R+TOYHPSRE=",
 | 
			
		||||
        "lastModified": 1668994630,
 | 
			
		||||
        "narHash": "sha256-1lqx6HLyw6fMNX/hXrrETG1vMvZRGm2XVC9O/Jt0T6c=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "d17a56d90ecbd1b8fc908d49598fb854ef188461",
 | 
			
		||||
        "rev": "af50806f7c6ab40df3e6b239099e8f8385f6c78b",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "ref": "nixos-22.05",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "af50806f7c6ab40df3e6b239099e8f8385f6c78b",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
@ -167,11 +167,11 @@
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs-unstable": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1649408932,
 | 
			
		||||
        "narHash": "sha256-JhTW1OtS5fACcRXLqcTTQyYO5vLkO+bceCqeRms13SY=",
 | 
			
		||||
        "lastModified": 1669411043,
 | 
			
		||||
        "narHash": "sha256-LfPd3+EY+jaIHTRIEOUtHXuanxm59YKgUacmSzaqMLc=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "42948b300670223ca8286aaf916bc381f66a5313",
 | 
			
		||||
        "rev": "5dc7114b7b256d217fe7752f1614be2514e61bb8",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
@ -246,11 +246,11 @@
 | 
			
		||||
        "utils": "utils"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1655214255,
 | 
			
		||||
        "narHash": "sha256-hgFF2X9mxFieekDh2VoVAtgwuM6XeAwzvb53yakmjTg=",
 | 
			
		||||
        "lastModified": 1655930346,
 | 
			
		||||
        "narHash": "sha256-ht56HHOzEhjeIgAv5ZNFjSVX/in1YlUs0HG9c1EUXTM=",
 | 
			
		||||
        "owner": "simple-nixos-mailserver",
 | 
			
		||||
        "repo": "nixos-mailserver",
 | 
			
		||||
        "rev": "a48082c79cff8f3b314ba4f95f4ae87ca7d4d068",
 | 
			
		||||
        "rev": "f535d8123c4761b2ed8138f3d202ea710a334a1d",
 | 
			
		||||
        "type": "gitlab"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.05";
 | 
			
		||||
    nixpkgs.url = "github:NixOS/nixpkgs/af50806f7c6ab40df3e6b239099e8f8385f6c78b";
 | 
			
		||||
    nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
 | 
			
		||||
 | 
			
		||||
    flake-utils.url = "github:numtide/flake-utils";
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,7 @@
 | 
			
		||||
  networking.hostName = "nat";
 | 
			
		||||
 | 
			
		||||
  de.enable = true;
 | 
			
		||||
  de.enableAcceleration = false;
 | 
			
		||||
  de.touchpad.enable = true;
 | 
			
		||||
 | 
			
		||||
  # nixpkgs.overlays = [
 | 
			
		||||
 | 
			
		||||
@ -11,13 +11,18 @@
 | 
			
		||||
  efi.enable = true;
 | 
			
		||||
 | 
			
		||||
  # 4k kernel for m1
 | 
			
		||||
  boot.kernelBuildIs16K = false;
 | 
			
		||||
  hardware.asahi.use4KPages = false;
 | 
			
		||||
 | 
			
		||||
  boot.initrd.availableKernelModules = [ "usb_storage" ];
 | 
			
		||||
  boot.initrd.kernelModules = [ "dm-snapshot" ];
 | 
			
		||||
  boot.kernelModules = [ ];
 | 
			
		||||
  boot.extraModulePackages = [ ];
 | 
			
		||||
 | 
			
		||||
  # fix keys
 | 
			
		||||
  boot.extraModprobeConfig = ''
 | 
			
		||||
    options hid-apple swap_fn_leftctrl=1 swap_opt_cmd=1
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  boot.initrd.luks.devices."enc-pv" = {
 | 
			
		||||
    device = "/dev/nvme0n1p5";
 | 
			
		||||
    allowDiscards = true;
 | 
			
		||||
 | 
			
		||||
@ -1,31 +0,0 @@
 | 
			
		||||
diff --git a/asahi_firmware/update.py b/asahi_firmware/update.py
 | 
			
		||||
index 8d4c480..7d89353 100644
 | 
			
		||||
--- a/asahi_firmware/update.py
 | 
			
		||||
+++ b/asahi_firmware/update.py
 | 
			
		||||
@@ -30,7 +30,7 @@ def update_firmware(source, dest, manifest):
 | 
			
		||||
 
 | 
			
		||||
     pkg.save_manifest(manifest)
 | 
			
		||||
 
 | 
			
		||||
-if __name__ == "__main__":
 | 
			
		||||
+def main():
 | 
			
		||||
     import argparse
 | 
			
		||||
     import logging
 | 
			
		||||
     logging.basicConfig()
 | 
			
		||||
@@ -46,3 +46,7 @@ if __name__ == "__main__":
 | 
			
		||||
     args = parser.parse_args()
 | 
			
		||||
 
 | 
			
		||||
     update_firmware(args.source, args.dest, args.manifest)
 | 
			
		||||
+
 | 
			
		||||
+if __name__ == "__main__":
 | 
			
		||||
+   main()
 | 
			
		||||
+
 | 
			
		||||
diff --git a/setup.py b/setup.py
 | 
			
		||||
index 45ada19..1b371ba 100644
 | 
			
		||||
--- a/setup.py
 | 
			
		||||
+++ b/setup.py
 | 
			
		||||
@@ -9,4 +9,5 @@ setup(name='asahi_firmware',
 | 
			
		||||
       author_email='marcan@marcan.st',
 | 
			
		||||
       url='https://github.com/AsahiLinux/asahi-installer/',
 | 
			
		||||
       packages=['asahi_firmware'],
 | 
			
		||||
+      entry_points={"console_scripts": ["asahi-fwextract = asahi_firmware.update:main"]}
 | 
			
		||||
      )
 | 
			
		||||
@ -1,24 +1,29 @@
 | 
			
		||||
{ lib
 | 
			
		||||
, python3
 | 
			
		||||
, python3Packages
 | 
			
		||||
, fetchFromGitHub
 | 
			
		||||
, makeBinaryWrapper
 | 
			
		||||
, gzip
 | 
			
		||||
, gnutar
 | 
			
		||||
, lzfse
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
python3.pkgs.buildPythonApplication rec {
 | 
			
		||||
python3Packages.buildPythonApplication rec {
 | 
			
		||||
  pname = "asahi-fwextract";
 | 
			
		||||
  version = "0.4pre2";
 | 
			
		||||
  version = "0.5pre10";
 | 
			
		||||
 | 
			
		||||
  # tracking version: https://github.com/AsahiLinux/PKGBUILDs/blob/main/asahi-fwextract/PKGBUILD
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "AsahiLinux";
 | 
			
		||||
    repo = "asahi-installer";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    hash = "sha256-RqvD2hNjKMlUg+oY1woUN5zpN+1Y/TrBQbokNgdeCW4=";
 | 
			
		||||
    hash = "sha256-93dTRrNNo7yilSGpSNjXir+DhQe29DeoZHXusrk9PN8=";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  patches = [
 | 
			
		||||
    ./add_entry_point.patch
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ python3.pkgs.setuptools makeBinaryWrapper ];
 | 
			
		||||
}
 | 
			
		||||
  postPatch = ''
 | 
			
		||||
    substituteInPlace asahi_firmware/img4.py \
 | 
			
		||||
      --replace 'liblzfse.so' '${lzfse}/lib/liblzfse.so'
 | 
			
		||||
    substituteInPlace asahi_firmware/update.py \
 | 
			
		||||
      --replace '"tar"' '"${gnutar}/bin/tar"' \
 | 
			
		||||
      --replace '"xf"' '"-x", "-I", "${gzip}/bin/gzip", "-f"'
 | 
			
		||||
  '';
 | 
			
		||||
}
 | 
			
		||||
@ -1,18 +1,12 @@
 | 
			
		||||
{ config, pkgs, lib, ... }:
 | 
			
		||||
let
 | 
			
		||||
  buildPkgs = if config.boot.kernelBuildIsCross then
 | 
			
		||||
    import (pkgs.path) {
 | 
			
		||||
      system = "x86_64-linux";
 | 
			
		||||
      crossSystem.system = "aarch64-linux";
 | 
			
		||||
    }
 | 
			
		||||
  else pkgs;
 | 
			
		||||
 | 
			
		||||
  bootM1n1 = buildPkgs.callPackage ../m1n1 {
 | 
			
		||||
  bootM1n1 = config.hardware.asahi.pkgs.callPackage ../m1n1 {
 | 
			
		||||
    isRelease = true;
 | 
			
		||||
    withTools = false;
 | 
			
		||||
    customLogo = config.boot.m1n1CustomLogo;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  bootUBoot = buildPkgs.callPackage ../u-boot {
 | 
			
		||||
  bootUBoot = config.hardware.asahi.pkgs.callPackage ../u-boot {
 | 
			
		||||
    m1n1 = bootM1n1;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@ -34,23 +28,26 @@ in {
 | 
			
		||||
 | 
			
		||||
    # ensure the installer has m1n1 in the image
 | 
			
		||||
    system.extraDependencies = lib.mkForce [ bootM1n1 bootUBoot ];
 | 
			
		||||
 | 
			
		||||
    # give the user the utilities to re-extract the firmware if necessary
 | 
			
		||||
    environment.systemPackages = [
 | 
			
		||||
      (buildPkgs.callPackage ../asahi-fwextract {})
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    # system.extraDependencies = [ boot ];
 | 
			
		||||
    # system.extraDependencies = lib.mkForce [ boot ];
 | 
			
		||||
    system.build.m1n1 = bootFiles."m1n1/boot.bin";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  options.boot.m1n1ExtraOptions = lib.mkOption {
 | 
			
		||||
    type = lib.types.str;
 | 
			
		||||
    default = "";
 | 
			
		||||
    description = ''
 | 
			
		||||
      Append extra options to the m1n1 boot binary. Might be useful for fixing
 | 
			
		||||
      display problems on Mac minis.
 | 
			
		||||
      https://github.com/AsahiLinux/m1n1/issues/159
 | 
			
		||||
    '';
 | 
			
		||||
  options.boot = {
 | 
			
		||||
    m1n1ExtraOptions = lib.mkOption {
 | 
			
		||||
      type = lib.types.str;
 | 
			
		||||
      default = "";
 | 
			
		||||
      description = ''
 | 
			
		||||
        Append extra options to the m1n1 boot binary. Might be useful for fixing
 | 
			
		||||
        display problems on Mac minis.
 | 
			
		||||
        https://github.com/AsahiLinux/m1n1/issues/159
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    m1n1CustomLogo = lib.mkOption {
 | 
			
		||||
      type = lib.types.nullOr lib.types.path;
 | 
			
		||||
      default = null;
 | 
			
		||||
      description = ''
 | 
			
		||||
        Custom logo to build into m1n1. The path must point to a 256x256 PNG.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
@ -1,8 +1,40 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
{ config, pkgs, lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./kernel
 | 
			
		||||
    ./firmware
 | 
			
		||||
    ./peripheral-firmware
 | 
			
		||||
    ./boot-m1n1
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  config = {
 | 
			
		||||
    hardware.asahi.pkgs = if config.hardware.asahi.pkgsSystem != "aarch64-linux"
 | 
			
		||||
    then import (pkgs.path) {
 | 
			
		||||
        system = config.hardware.asahi.pkgsSystem;
 | 
			
		||||
        crossSystem.system = "aarch64-linux";
 | 
			
		||||
      }
 | 
			
		||||
    else pkgs;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  options.hardware.asahi = {
 | 
			
		||||
    pkgsSystem = lib.mkOption {
 | 
			
		||||
      type = lib.types.str;
 | 
			
		||||
      default = "aarch64-linux";
 | 
			
		||||
      description = ''
 | 
			
		||||
        System architecture that should be used to build the major Asahi
 | 
			
		||||
        packages, if not the default aarch64-linux. This allows installing from
 | 
			
		||||
        a cross-built ISO without rebuilding them during installation.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    pkgs = lib.mkOption {
 | 
			
		||||
      type = lib.types.raw;
 | 
			
		||||
      description = ''
 | 
			
		||||
        Package set used to build the major Asahi packages. Defaults to the
 | 
			
		||||
        ambient set if not cross-built, otherwise re-imports the ambient set
 | 
			
		||||
        with the system defined by `hardware.asahi.pkgsSystem`.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,18 +0,0 @@
 | 
			
		||||
{ config, pkgs, lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  hardware.firmware = [
 | 
			
		||||
    (pkgs.stdenvNoCC.mkDerivation {
 | 
			
		||||
      name = "firmware";
 | 
			
		||||
      buildCommand = ''
 | 
			
		||||
        mkdir -p $out/lib/firmware
 | 
			
		||||
        FIRMWARE=`echo ${./.}/*firmware*.tar`
 | 
			
		||||
        if [ -e "$FIRMWARE" ]; then
 | 
			
		||||
          tar xf "$FIRMWARE" -C $out/lib/firmware
 | 
			
		||||
        else
 | 
			
		||||
          # stop nixos infra from breaking when it doesn't have any firmware
 | 
			
		||||
          touch $out/lib/firmware/.dummy
 | 
			
		||||
        fi
 | 
			
		||||
      '';
 | 
			
		||||
    })
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
From 1c60b7662b82d7d5d54aca1cd24f9517a8c4595f Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Thomas Watson <twatson52@icloud.com>
 | 
			
		||||
Date: Thu, 24 Nov 2022 11:00:43 -0600
 | 
			
		||||
Subject: [PATCH] drivers/usb/dwc3: remove apple dr_mode check
 | 
			
		||||
 | 
			
		||||
This check prevents the driver from probing with old device trees.
 | 
			
		||||
Allegedly this check is incorrect anyway as the dr_mode should default
 | 
			
		||||
to OTG but this is not true at the time of the check.
 | 
			
		||||
---
 | 
			
		||||
 drivers/usb/dwc3/core.c | 3 +--
 | 
			
		||||
 1 file changed, 1 insertion(+), 2 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
 | 
			
		||||
index 1d88119cdbb8..b92401c1ee0c 100644
 | 
			
		||||
--- a/drivers/usb/dwc3/core.c
 | 
			
		||||
+++ b/drivers/usb/dwc3/core.c
 | 
			
		||||
@@ -1882,8 +1882,7 @@ static int dwc3_probe(struct platform_device *pdev)
 | 
			
		||||
 		}
 | 
			
		||||
 
 | 
			
		||||
 		if (of_device_is_compatible(dev->of_node, "apple,dwc3")) {
 | 
			
		||||
-			if (!IS_ENABLED(CONFIG_USB_ROLE_SWITCH) ||
 | 
			
		||||
-			    dwc->dr_mode != USB_DR_MODE_OTG) {
 | 
			
		||||
+			if (!IS_ENABLED(CONFIG_USB_ROLE_SWITCH)) {
 | 
			
		||||
 				dev_err(dev,
 | 
			
		||||
 				    "Apple DWC3 requires role switch support.\n"
 | 
			
		||||
 				    );
 | 
			
		||||
-- 
 | 
			
		||||
2.17.1
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -10,4 +10,4 @@ index a1eb6572ecd2..b94fbd9b3d70 100644
 | 
			
		||||
+	default ARM64_16K_PAGES
 | 
			
		||||
 	help
 | 
			
		||||
 	  Page size (translation granule) configuration.
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
@ -3,9 +3,8 @@
 | 
			
		||||
{ config, pkgs, lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  config = {
 | 
			
		||||
    boot.kernelPackages = pkgs.callPackage ./package.nix {
 | 
			
		||||
      crossBuild = config.boot.kernelBuildIsCross;
 | 
			
		||||
      _16KBuild = config.boot.kernelBuildIs16K;
 | 
			
		||||
    boot.kernelPackages = config.hardware.asahi.pkgs.callPackage ./package.nix {
 | 
			
		||||
      _4KBuild = config.hardware.asahi.use4KPages;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    # we definitely want to use CONFIG_ENERGY_MODEL, and
 | 
			
		||||
@ -13,10 +12,42 @@
 | 
			
		||||
    # source: https://www.kernel.org/doc/html/latest/scheduler/sched-energy.html
 | 
			
		||||
    powerManagement.cpuFreqGovernor = lib.mkOverride 800 "schedutil";
 | 
			
		||||
 | 
			
		||||
    # our kernel config is weird and doesn't really have any modules
 | 
			
		||||
    # remove?
 | 
			
		||||
    # boot.initrd.availableKernelModules = lib.mkForce [];
 | 
			
		||||
    boot.initrd.availableKernelModules = lib.mkForce [ "dm_crypt" ];
 | 
			
		||||
    boot.initrd.includeDefaultModules = false;
 | 
			
		||||
    boot.initrd.availableKernelModules = [
 | 
			
		||||
      # list of initrd modules stolen from
 | 
			
		||||
      # https://github.com/AsahiLinux/asahi-scripts/blob/e4d6151a7dcb63ae5e3779c3cf57362eb37d908a/initcpio/install/asahi
 | 
			
		||||
      "apple-mailbox"
 | 
			
		||||
      "nvme_apple"
 | 
			
		||||
      "pinctrl-apple-gpio"
 | 
			
		||||
      "macsmc"
 | 
			
		||||
      "macsmc-rtkit"
 | 
			
		||||
      "i2c-apple"
 | 
			
		||||
      "tps6598x"
 | 
			
		||||
      "apple-dart"
 | 
			
		||||
      "dwc3"
 | 
			
		||||
      "dwc3-of-simple"
 | 
			
		||||
      "xhci-pci"
 | 
			
		||||
      "pcie-apple"
 | 
			
		||||
      "gpio_macsmc"
 | 
			
		||||
      "spi-apple"
 | 
			
		||||
      "spi-hid-apple"
 | 
			
		||||
      "spi-hid-apple-of"
 | 
			
		||||
      "rtc-macsmc"
 | 
			
		||||
      "simple-mfd-spmi"
 | 
			
		||||
      "spmi-apple-controller"
 | 
			
		||||
      "nvmem_spmi_mfd"
 | 
			
		||||
      "apple-dockchannel"
 | 
			
		||||
      "dockchannel-hid"
 | 
			
		||||
      "apple-rtkit-helper"
 | 
			
		||||
      "dm_crypt"
 | 
			
		||||
 | 
			
		||||
      # additional stuff necessary to boot off USB for the installer
 | 
			
		||||
      # and if the initrd (i.e. stage 1) goes wrong
 | 
			
		||||
      "usb-storage"
 | 
			
		||||
      "xhci-plat-hcd"
 | 
			
		||||
      "usbhid"
 | 
			
		||||
      "hid_generic"
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    boot.kernelParams = [
 | 
			
		||||
      "earlycon"
 | 
			
		||||
@ -45,18 +76,23 @@
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  options.boot.kernelBuildIsCross = lib.mkOption {
 | 
			
		||||
  imports = [
 | 
			
		||||
    (lib.mkRemovedOptionModule [ "boot" "kernelBuildIsCross" ] ''
 | 
			
		||||
      If it should still be true (which is unlikely), replace it
 | 
			
		||||
      with 'hardware.asahi.pkgsSystem = "x86_64-linux"'. Otherwise, delete it.
 | 
			
		||||
    '')
 | 
			
		||||
 | 
			
		||||
    (lib.mkRemovedOptionModule [ "boot" "kernelBuildIs16K" ] ''
 | 
			
		||||
      Replaced with 'hardware.asahi.use4KPages' which defaults to false.
 | 
			
		||||
    '')
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.hardware.asahi.use4KPages = lib.mkOption {
 | 
			
		||||
    type = lib.types.bool;
 | 
			
		||||
    default = false;
 | 
			
		||||
    description = "Set that the Asahi Linux kernel should be cross-compiled.";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  options.boot.kernelBuildIs16K = lib.mkOption {
 | 
			
		||||
    type = lib.types.bool;
 | 
			
		||||
    default = true;
 | 
			
		||||
    description = ''
 | 
			
		||||
      Set that the Asahi Linux kernel should be built with 16K pages and various
 | 
			
		||||
      software patched to be compatible. Some software may still be broken.
 | 
			
		||||
      Build the Asahi Linux kernel with 4K pages to improve compatibility in
 | 
			
		||||
      some cases at the cost of performance in others.
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
@ -1,14 +1,10 @@
 | 
			
		||||
{ pkgs, crossBuild ? false, _16KBuild ? false }: let
 | 
			
		||||
  buildPkgs = if crossBuild then
 | 
			
		||||
    import (pkgs.path) {
 | 
			
		||||
      system = "x86_64-linux";
 | 
			
		||||
      crossSystem.system = "aarch64-linux";
 | 
			
		||||
    }
 | 
			
		||||
  else pkgs;
 | 
			
		||||
{ pkgs, _4KBuild ? false }: let
 | 
			
		||||
  localPkgs =
 | 
			
		||||
    # we do this so the config can be read on any system and not affect
 | 
			
		||||
    # the output hash
 | 
			
		||||
    if builtins ? currentSystem then import (pkgs.path) { system = builtins.currentSystem; }
 | 
			
		||||
    else pkgs;
 | 
			
		||||
 | 
			
		||||
  # we do this so the config can be read on any system and not affect
 | 
			
		||||
  # the output hash
 | 
			
		||||
  localPkgs = import (pkgs.path) { system = "aarch64-linux"; };
 | 
			
		||||
  readConfig = configfile: import (localPkgs.runCommand "config.nix" {} ''
 | 
			
		||||
    echo "{" > "$out"
 | 
			
		||||
    while IFS='=' read key val; do
 | 
			
		||||
@ -23,28 +19,35 @@
 | 
			
		||||
    linuxKernel.manualConfig rec {
 | 
			
		||||
      inherit stdenv lib;
 | 
			
		||||
 | 
			
		||||
      version = "5.19.0-rc7-asahi";
 | 
			
		||||
      version = "6.1.0-rc6-asahi";
 | 
			
		||||
      modDirVersion = version;
 | 
			
		||||
 | 
			
		||||
      src = fetchFromGitHub {
 | 
			
		||||
        # tracking branch: https://github.com/AsahiLinux/linux/tree/asahi
 | 
			
		||||
        # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/stable/linux-asahi/PKGBUILD
 | 
			
		||||
        owner = "AsahiLinux";
 | 
			
		||||
        repo = "linux";
 | 
			
		||||
        rev = "c7d02d6615a5fb4afefd3084fce93d86e5fb184d";
 | 
			
		||||
        hash = "sha256-sed405+6L5U7S+Na2DNLGPNTNf3tv96LjK3CimeRjNU=";
 | 
			
		||||
        rev = "asahi-6.1-rc6-5";
 | 
			
		||||
        hash = "sha256-HHPfAtNh5wR0TCsEYuMdSbp55p1IVhF07tg4dlfgXk0=";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      kernelPatches = [
 | 
			
		||||
      ] ++ lib.optionals (!_16KBuild) [
 | 
			
		||||
        # sven says this is okay since our kernel config supports it, and that
 | 
			
		||||
        # it will be fixed at some point to not be necessary. but this allows
 | 
			
		||||
        # new kernels to get USB up with old device trees
 | 
			
		||||
        { name = "0001-drivers-usb-dwc3-remove-apple-dr_mode-check";
 | 
			
		||||
          patch = ./0001-drivers-usb-dwc3-remove-apple-dr_mode-check.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;
 | 
			
		||||
        }
 | 
			
		||||
      ] ++ lib.optionals _16KBuild [
 | 
			
		||||
        # patch the kernel to set the default size to 16k 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
 | 
			
		||||
      ] ++ 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;
 | 
			
		||||
        }
 | 
			
		||||
@ -53,15 +56,8 @@
 | 
			
		||||
      configfile = ./config;
 | 
			
		||||
      config = readConfig configfile;
 | 
			
		||||
 | 
			
		||||
      extraMeta.branch = "5.19";
 | 
			
		||||
      extraMeta.branch = "6.1";
 | 
			
		||||
    } // (args.argsOverride or {});
 | 
			
		||||
 | 
			
		||||
  linux_asahi = (buildPkgs.callPackage linux_asahi_pkg { }).overrideAttrs (o: {
 | 
			
		||||
    # use 5.19 suitable randstruct seed patch
 | 
			
		||||
    # to be removed when https://github.com/NixOS/nixpkgs/pull/180750 is
 | 
			
		||||
    # accepted and percolates through
 | 
			
		||||
    patches = (builtins.filter
 | 
			
		||||
      (v: (pkgs.lib.hasInfix "randstruct" (builtins.path { path = v; })) != true)
 | 
			
		||||
      o.patches) ++ [ ./randstruct-provide-seed-5.19.patch ];
 | 
			
		||||
  });
 | 
			
		||||
in buildPkgs.recurseIntoAttrs (buildPkgs.linuxPackagesFor linux_asahi)
 | 
			
		||||
  linux_asahi = (pkgs.callPackage linux_asahi_pkg { });
 | 
			
		||||
in pkgs.recurseIntoAttrs (pkgs.linuxPackagesFor linux_asahi)
 | 
			
		||||
@ -1,13 +0,0 @@
 | 
			
		||||
diff --git a/scripts/gen-randstruct-seed.sh b/scripts/gen-randstruct-seed.sh
 | 
			
		||||
index 61017b36c464..7bb494dd2e18 100755
 | 
			
		||||
--- a/scripts/gen-randstruct-seed.sh
 | 
			
		||||
+++ b/scripts/gen-randstruct-seed.sh
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
 #!/bin/sh
 | 
			
		||||
 # SPDX-License-Identifier: GPL-2.0
 | 
			
		||||
 
 | 
			
		||||
-SEED=$(od -A n -t x8 -N 32 /dev/urandom | tr -d ' \n')
 | 
			
		||||
+SEED="NIXOS_RANDSTRUCT_SEED"
 | 
			
		||||
 echo "$SEED" > "$1"
 | 
			
		||||
 HASH=$(echo -n "$SEED" | sha256sum | cut -d" " -f1)
 | 
			
		||||
 echo "#define RANDSTRUCT_HASHED_SEED \"$HASH\"" > "$2"
 | 
			
		||||
@ -446,4 +446,4 @@ index 9208eca4b0d1..dec2dd70a876 100644
 | 
			
		||||
+
 | 
			
		||||
 enum iommu_cap {
 | 
			
		||||
 	IOMMU_CAP_CACHE_COHERENCY,	/* IOMMU can enforce cache coherent DMA
 | 
			
		||||
 					   transactions */
 | 
			
		||||
 					   transactions */
 | 
			
		||||
@ -4,10 +4,12 @@
 | 
			
		||||
, pkgsCross
 | 
			
		||||
, python3
 | 
			
		||||
, dtc
 | 
			
		||||
, imagemagick
 | 
			
		||||
, isRelease ? false
 | 
			
		||||
, withTools ? true
 | 
			
		||||
, withChainloading ? false
 | 
			
		||||
, rust-bin ? null
 | 
			
		||||
, customLogo ? null
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
assert withChainloading -> rust-bin != null;
 | 
			
		||||
@ -23,14 +25,14 @@ let
 | 
			
		||||
  });
 | 
			
		||||
in stdenv.mkDerivation rec {
 | 
			
		||||
  pname = "m1n1";
 | 
			
		||||
  version = "1.1.3";
 | 
			
		||||
  version = "1.1.8";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    # tracking branch: https://github.com/AsahiLinux/m1n1/tree/main
 | 
			
		||||
    # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/stable/m1n1/PKGBUILD
 | 
			
		||||
    owner = "AsahiLinux";
 | 
			
		||||
    repo = "m1n1";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    hash = "sha256-S2HLBLmgER0ZZJ5Q4EX2f1KDxnol0yCDrloDMJaLwBE=";
 | 
			
		||||
    hash = "sha256-4Ykh+EzOCRtZQD1upUDJpi5ikMOCnxLwvLWajtMo7LU=";
 | 
			
		||||
    fetchSubmodules = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@ -41,7 +43,8 @@ in stdenv.mkDerivation rec {
 | 
			
		||||
  nativeBuildInputs = [
 | 
			
		||||
    dtc
 | 
			
		||||
    pkgsCross.aarch64-multiplatform.buildPackages.gcc
 | 
			
		||||
  ] ++ lib.optional withChainloading rustenv;
 | 
			
		||||
  ] ++ lib.optional withChainloading rustenv
 | 
			
		||||
    ++ lib.optional (customLogo != null) imagemagick;
 | 
			
		||||
 | 
			
		||||
  postPatch = ''
 | 
			
		||||
    substituteInPlace proxyclient/m1n1/asm.py \
 | 
			
		||||
@ -49,9 +52,21 @@ in stdenv.mkDerivation rec {
 | 
			
		||||
      --replace 'TOOLCHAIN = ""' 'TOOLCHAIN = "'$out'/toolchain-bin/"'
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  preConfigure = lib.optionalString (customLogo != null) ''
 | 
			
		||||
    pushd data &>/dev/null
 | 
			
		||||
    ln -fs ${customLogo} bootlogo_256.png
 | 
			
		||||
    if [[ "$(magick identify bootlogo_256.png)" != 'bootlogo_256.png PNG 256x256'* ]]; then
 | 
			
		||||
      echo "Custom logo is not a 256x256 PNG"
 | 
			
		||||
      exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    rm bootlogo_128.png
 | 
			
		||||
    convert bootlogo_256.png -resize 128x128 bootlogo_128.png
 | 
			
		||||
    ./makelogo.sh
 | 
			
		||||
    popd &>/dev/null
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    runHook preInstall
 | 
			
		||||
 | 
			
		||||
    mkdir -p $out/build
 | 
			
		||||
    cp build/m1n1.macho $out/build
 | 
			
		||||
    cp build/m1n1.bin $out/build
 | 
			
		||||
@ -59,7 +74,6 @@ in stdenv.mkDerivation rec {
 | 
			
		||||
    mkdir -p $out/{bin,script,toolchain-bin}
 | 
			
		||||
    cp -r proxyclient $out/script
 | 
			
		||||
    cp -r tools $out/script
 | 
			
		||||
 | 
			
		||||
    for toolpath in $out/script/proxyclient/tools/*.py; do
 | 
			
		||||
      tool=$(basename $toolpath .py)
 | 
			
		||||
      script=$out/bin/m1n1-$tool
 | 
			
		||||
@ -69,17 +83,14 @@ ${pyenv}/bin/python $toolpath "\$@"
 | 
			
		||||
EOF
 | 
			
		||||
      chmod +x $script
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    GCC=${pkgsCross.aarch64-multiplatform.buildPackages.gcc}
 | 
			
		||||
    BINUTILS=${pkgsCross.aarch64-multiplatform.buildPackages.binutils}
 | 
			
		||||
    REAL_BINUTILS=$(grep -o '/nix/store/[^ ]*binutils[^ ]*' $BINUTILS/nix-support/propagated-user-env-packages)
 | 
			
		||||
 | 
			
		||||
    BINUTILS=${pkgsCross.aarch64-multiplatform.buildPackages.binutils-unwrapped}
 | 
			
		||||
    ln -s $GCC/bin/*-gcc $out/toolchain-bin/
 | 
			
		||||
    ln -s $GCC/bin/*-ld $out/toolchain-bin/
 | 
			
		||||
    ln -s $REAL_BINUTILS/bin/*-objcopy $out/toolchain-bin/
 | 
			
		||||
    ln -s $REAL_BINUTILS/bin/*-objdump $out/toolchain-bin/
 | 
			
		||||
    ln -s $REAL_BINUTILS/bin/*-nm $out/toolchain-bin/
 | 
			
		||||
    ln -s $BINUTILS/bin/*-objcopy $out/toolchain-bin/
 | 
			
		||||
    ln -s $BINUTILS/bin/*-objdump $out/toolchain-bin/
 | 
			
		||||
    ln -s $GCC/bin/*-nm $out/toolchain-bin/
 | 
			
		||||
  '') + ''
 | 
			
		||||
    runHook postInstall
 | 
			
		||||
  '';
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								machines/nat/m1-support/peripheral-firmware/all_firmware.tar.gz
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								machines/nat/m1-support/peripheral-firmware/all_firmware.tar.gz
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										70
									
								
								machines/nat/m1-support/peripheral-firmware/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								machines/nat/m1-support/peripheral-firmware/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,70 @@
 | 
			
		||||
{ config, pkgs, lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  config = {
 | 
			
		||||
    assertions = lib.mkIf config.hardware.asahi.extractPeripheralFirmware [
 | 
			
		||||
      { assertion = config.hardware.asahi.peripheralFirmwareDirectory != null;
 | 
			
		||||
        message = ''
 | 
			
		||||
          Asahi peripheral firmware extraction is enabled but the firmware
 | 
			
		||||
          location appears incorrect.
 | 
			
		||||
        '';
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    hardware.firmware = let
 | 
			
		||||
      asahi-fwextract = pkgs.callPackage ../asahi-fwextract {};
 | 
			
		||||
    in lib.mkIf ((config.hardware.asahi.peripheralFirmwareDirectory != null)
 | 
			
		||||
        && config.hardware.asahi.extractPeripheralFirmware) [
 | 
			
		||||
      (pkgs.stdenv.mkDerivation {
 | 
			
		||||
        name = "asahi-peripheral-firmware";
 | 
			
		||||
 | 
			
		||||
        nativeBuildInputs = [ asahi-fwextract pkgs.cpio ];
 | 
			
		||||
 | 
			
		||||
        buildCommand = ''
 | 
			
		||||
          mkdir extracted
 | 
			
		||||
          asahi-fwextract ${/. + config.hardware.asahi.peripheralFirmwareDirectory} extracted
 | 
			
		||||
          mkdir -p $out/lib/firmware
 | 
			
		||||
          cat extracted/firmware.cpio | cpio -id --quiet --no-absolute-filenames
 | 
			
		||||
          mv vendorfw/* $out/lib/firmware
 | 
			
		||||
        '';
 | 
			
		||||
      })
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  options.hardware.asahi = {
 | 
			
		||||
    extractPeripheralFirmware = lib.mkOption {
 | 
			
		||||
      type = lib.types.bool;
 | 
			
		||||
      default = true;
 | 
			
		||||
      description = ''
 | 
			
		||||
        Automatically extract the non-free non-redistributable peripheral
 | 
			
		||||
        firmware necessary for features like Wi-Fi.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    peripheralFirmwareDirectory = lib.mkOption {
 | 
			
		||||
      type = lib.types.nullOr lib.types.path;
 | 
			
		||||
      default = let
 | 
			
		||||
        paths = [
 | 
			
		||||
          # path when the system is operating normally
 | 
			
		||||
          "/boot/asahi"
 | 
			
		||||
          # path when the system is mounted in the installer
 | 
			
		||||
          "/mnt/boot/asahi"
 | 
			
		||||
          ./.
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        validPaths = (builtins.filter
 | 
			
		||||
          (p: builtins.pathExists (p + "/all_firmware.tar.gz"))
 | 
			
		||||
          paths) ++ [ null ];
 | 
			
		||||
      in builtins.elemAt validPaths 0;
 | 
			
		||||
      description = ''
 | 
			
		||||
        Path to the directory containing the non-free non-redistributable
 | 
			
		||||
        peripheral firmware necessary for features like Wi-Fi. Ordinarily, this
 | 
			
		||||
        will automatically point to the appropriate location on the ESP. Flake
 | 
			
		||||
        users and those interested in maximum purity will want to copy those
 | 
			
		||||
        files elsewhere and specify this manually.
 | 
			
		||||
        Currently, this consists of the files `all-firmware.tar.gz` and
 | 
			
		||||
        `kernelcache*`. The official Asahi Linux installer places these files
 | 
			
		||||
        in the `asahi` directory of the EFI system partition when creating it.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								machines/nat/m1-support/peripheral-firmware/kernelcache.release.mac13g
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								machines/nat/m1-support/peripheral-firmware/kernelcache.release.mac13g
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							@ -1,16 +1,21 @@
 | 
			
		||||
{ lib
 | 
			
		||||
, fetchFromGitHub
 | 
			
		||||
, pkgs
 | 
			
		||||
, pkgsCross
 | 
			
		||||
, m1n1
 | 
			
		||||
}: (pkgsCross.aarch64-multiplatform.buildUBoot rec {
 | 
			
		||||
}: let
 | 
			
		||||
  # u-boot's buildInputs get a different hash and don't build right if we try to
 | 
			
		||||
  # cross-build for aarch64 on itself for whatever reason
 | 
			
		||||
  buildPkgs = if pkgs.stdenv.system == "aarch64-linux" then pkgs else pkgsCross.aarch64-multiplatform;
 | 
			
		||||
in (buildPkgs.buildUBoot rec {
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    # tracking branch: https://github.com/AsahiLinux/u-boot/tree/releng/installer-release
 | 
			
		||||
    # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/stable/uboot-asahi/PKGBUILD
 | 
			
		||||
    owner = "AsahiLinux";
 | 
			
		||||
    repo = "u-boot";
 | 
			
		||||
    rev = "300817d324f73c30c998a10435d5d830b58df894";
 | 
			
		||||
    hash = "sha256-6q4l1gHAlaGM7ktlCBmehb/ZNvmpt1eah6tTdsQJfxM=";
 | 
			
		||||
    rev = "asahi-v2022.10-1";
 | 
			
		||||
    hash = "sha256-/dtTJ+GxC2GFlqduAa2WWPGwktLjM7tUKus6/aUyPNQ=";
 | 
			
		||||
  };
 | 
			
		||||
  version = "unstable-2022-07-11";
 | 
			
		||||
  version = "2022.10.asahi1-1";
 | 
			
		||||
 | 
			
		||||
  defconfig = "apple_m1_defconfig";
 | 
			
		||||
  extraMeta.platforms = [ "aarch64-linux" ];
 | 
			
		||||
@ -32,4 +37,4 @@
 | 
			
		||||
    cat ${m1n1}/build/m1n1.macho arch/arm/dts/t[68]*.dtb u-boot-nodtb.bin.gz > m1n1-u-boot.macho
 | 
			
		||||
    cat ${m1n1}/build/m1n1.bin arch/arm/dts/t[68]*.dtb u-boot-nodtb.bin.gz > m1n1-u-boot.bin
 | 
			
		||||
  '';
 | 
			
		||||
})
 | 
			
		||||
})
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user