--- /dev/null
+Copyright (c) 2022 The Asahi Linux contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- /dev/null
+#!/usr/bin/perl
+
+# SPDX-License-Identifier: MIT
+
+use strict;
+
+my ($identifier, $size);
+
+sub
+find_identifier_before_free_space
+{
+ my $identifier = undef;
+ my $size = undef;
+
+ for my $line (`diskutil list /dev/disk0`) {
+
+ if ($line =~ /^\s+\(free space\)\s+(\d+.\d GB)/) {
+ $size = $1;
+ $size =~ s/\s+//g;
+ last;
+ }
+
+ if ($line =~ /(disk0s\d)$/) {
+ $identifier = $1;
+ }
+ }
+
+ die if not defined $identifier;
+ die if not defined $size;
+
+ return ($identifier, $size);
+}
+
+($identifier, $size) = find_identifier_before_free_space();
+system("diskutil addPartition $identifier %EFI% LB 512MB");
+
+$identifier = undef;
+
+for my $line (`diskutil list /dev/disk0`) {
+ if ($line =~ /EFI.*(disk0s\d)/) {
+ $identifier = $1;
+ }
+}
+
+die if not defined $identifier;
+
+system("newfs_msdos /dev/$identifier");
+system("mkdir -p /Volumes/efi");
+system("mount -t msdos /dev/$identifier /Volumes/efi");
+chdir('/Volumes/efi');
+system('mkdir -p /Volumes/efi/efi/boot');
+system('curl -Lo /Volumes/efi/efi/boot/bootaa64.efi https://tg.st/u/grubaa64.efi');
+system('curl -sL tg.st/u/fwx.sh | bash');
+system('cp /tmp/linux-firmware.tar /Volumes/efi/');
+chdir('/var/root');
+system('umount /Volumes/efi');
+
+($identifier, $size) = find_identifier_before_free_space();
+system("diskutil addPartition $identifier %Linux% %noformat% $size");
+
+$identifier = undef;
+
+for my $line (`diskutil list /dev/disk0`) {
+ if ($line =~ /Linux Filesystem.*(disk0s\d)/) {
+ $identifier = $1;
+ }
+}
+
+die if not defined $identifier;
+
+system("curl -L https://tg.st/u/m1.tgz | tar -xOz | dd of=/dev/$identifier bs=8m");