diff --git a/.gitignore b/.gitignore index 5346b91..6898a32 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ latest *.egg-info build dist +*.xcuserstate +*/.DS_Store +*.xcuserstate diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.pbxproj b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.pbxproj new file mode 100644 index 0000000..43a1c04 --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.pbxproj @@ -0,0 +1,344 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 58B934612895E6B300250F03 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58B934602895E6B300250F03 /* AppDelegate.swift */; }; + 58B934632895E6B300250F03 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58B934622895E6B300250F03 /* ViewController.swift */; }; + 58B934652895E6B400250F03 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 58B934642895E6B400250F03 /* Assets.xcassets */; }; + 58B934682895E6B400250F03 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 58B934662895E6B400250F03 /* Main.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 58B9345D2895E6B300250F03 /* Asahi Linux Installer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Asahi Linux Installer.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 58B934602895E6B300250F03 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 58B934622895E6B300250F03 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 58B934642895E6B400250F03 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 58B934672895E6B400250F03 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 58B934692895E6B400250F03 /* Asahi_Linux_Installer.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Asahi_Linux_Installer.entitlements; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 58B9345A2895E6B300250F03 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 58B934542895E6B300250F03 = { + isa = PBXGroup; + children = ( + 58B9345F2895E6B300250F03 /* Asahi Linux Installer */, + 58B9345E2895E6B300250F03 /* Products */, + ); + sourceTree = ""; + }; + 58B9345E2895E6B300250F03 /* Products */ = { + isa = PBXGroup; + children = ( + 58B9345D2895E6B300250F03 /* Asahi Linux Installer.app */, + ); + name = Products; + sourceTree = ""; + }; + 58B9345F2895E6B300250F03 /* Asahi Linux Installer */ = { + isa = PBXGroup; + children = ( + 58B934602895E6B300250F03 /* AppDelegate.swift */, + 58B934622895E6B300250F03 /* ViewController.swift */, + 58B934642895E6B400250F03 /* Assets.xcassets */, + 58B934662895E6B400250F03 /* Main.storyboard */, + 58B934692895E6B400250F03 /* Asahi_Linux_Installer.entitlements */, + ); + path = "Asahi Linux Installer"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 58B9345C2895E6B300250F03 /* Asahi Linux Installer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 58B9346C2895E6B400250F03 /* Build configuration list for PBXNativeTarget "Asahi Linux Installer" */; + buildPhases = ( + 58B934592895E6B300250F03 /* Sources */, + 58B9345A2895E6B300250F03 /* Frameworks */, + 58B9345B2895E6B300250F03 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Asahi Linux Installer"; + productName = "Asahi Linux Installer"; + productReference = 58B9345D2895E6B300250F03 /* Asahi Linux Installer.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 58B934552895E6B300250F03 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1400; + LastUpgradeCheck = 1400; + TargetAttributes = { + 58B9345C2895E6B300250F03 = { + CreatedOnToolsVersion = 14.0; + }; + }; + }; + buildConfigurationList = 58B934582895E6B300250F03 /* Build configuration list for PBXProject "Asahi Linux Installer" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 58B934542895E6B300250F03; + productRefGroup = 58B9345E2895E6B300250F03 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 58B9345C2895E6B300250F03 /* Asahi Linux Installer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 58B9345B2895E6B300250F03 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 58B934652895E6B400250F03 /* Assets.xcassets in Resources */, + 58B934682895E6B400250F03 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 58B934592895E6B300250F03 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 58B934632895E6B300250F03 /* ViewController.swift in Sources */, + 58B934612895E6B300250F03 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 58B934662895E6B400250F03 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 58B934672895E6B400250F03 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 58B9346A2895E6B400250F03 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 58B9346B2895E6B400250F03 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 58B9346D2895E6B400250F03 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "Asahi Linux Installer/Asahi_Linux_Installer.entitlements"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = YSM3XS594R; + ENABLE_HARDENED_RUNTIME = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INFOPLIST_KEY_NSMainStoryboardFile = Main; + INFOPLIST_KEY_NSPrincipalClass = NSApplication; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.multiTouchFX.Asahi-Linux-Installer"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 58B9346E2895E6B400250F03 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "Asahi Linux Installer/Asahi_Linux_Installer.entitlements"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = YSM3XS594R; + ENABLE_HARDENED_RUNTIME = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INFOPLIST_KEY_NSMainStoryboardFile = Main; + INFOPLIST_KEY_NSPrincipalClass = NSApplication; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.multiTouchFX.Asahi-Linux-Installer"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 58B934582895E6B300250F03 /* Build configuration list for PBXProject "Asahi Linux Installer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58B9346A2895E6B400250F03 /* Debug */, + 58B9346B2895E6B400250F03 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58B9346C2895E6B400250F03 /* Build configuration list for PBXNativeTarget "Asahi Linux Installer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58B9346D2895E6B400250F03 /* Debug */, + 58B9346E2895E6B400250F03 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 58B934552895E6B300250F03 /* Project object */; +} diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/xcuserdata/mdn.xcuserdatad/UserInterfaceState.xcuserstate b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/xcuserdata/mdn.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..b0f84a8 Binary files /dev/null and b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/xcuserdata/mdn.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/xcuserdata/mdnich.xcuserdatad/UserInterfaceState.xcuserstate b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/xcuserdata/mdnich.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..6f3f10b Binary files /dev/null and b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/project.xcworkspace/xcuserdata/mdnich.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/xcuserdata/mdn.xcuserdatad/xcschemes/xcschememanagement.plist b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/xcuserdata/mdn.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..b5c72e0 --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/xcuserdata/mdn.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Asahi Linux Installer.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/xcuserdata/mdnich.xcuserdatad/xcschemes/xcschememanagement.plist b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/xcuserdata/mdnich.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..b5c72e0 --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer.xcodeproj/xcuserdata/mdnich.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Asahi Linux Installer.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer/AppDelegate.swift b/GUI/Asahi Linux Installer/Asahi Linux Installer/AppDelegate.swift new file mode 100644 index 0000000..ca9294c --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer/AppDelegate.swift @@ -0,0 +1,30 @@ +// +// AppDelegate.swift +// Asahi Linux Installer +// +// Created by Marc Nich on 7/30/22. +// + +import Cocoa + +@main +class AppDelegate: NSObject, NSApplicationDelegate { + + + + + func applicationDidFinishLaunching(_ aNotification: Notification) { + // Insert code here to initialize your application + } + + func applicationWillTerminate(_ aNotification: Notification) { + // Insert code here to tear down your application + } + + func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } + + +} + diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer/Asahi_Linux_Installer.entitlements b/GUI/Asahi Linux Installer/Asahi Linux Installer/Asahi_Linux_Installer.entitlements new file mode 100644 index 0000000..0c67376 --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer/Asahi_Linux_Installer.entitlements @@ -0,0 +1,5 @@ + + + + + diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/AccentColor.colorset/Contents.json b/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/AppIcon.appiconset/Contents.json b/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..3f00db4 --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/Asahi.imageset/Contents.json b/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/Asahi.imageset/Contents.json new file mode 100644 index 0000000..1abe14b --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/Asahi.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "output-onlinepngtools.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/Asahi.imageset/output-onlinepngtools.png b/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/Asahi.imageset/output-onlinepngtools.png new file mode 100644 index 0000000..8509ea1 Binary files /dev/null and b/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/Asahi.imageset/output-onlinepngtools.png differ diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/Contents.json b/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer/Base.lproj/Main.storyboard b/GUI/Asahi Linux Installer/Asahi Linux Installer/Base.lproj/Main.storyboard new file mode 100644 index 0000000..08d96e0 --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer/Base.lproj/Main.storyboard @@ -0,0 +1,818 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GUI/Asahi Linux Installer/Asahi Linux Installer/ViewController.swift b/GUI/Asahi Linux Installer/Asahi Linux Installer/ViewController.swift new file mode 100644 index 0000000..4a28c1c --- /dev/null +++ b/GUI/Asahi Linux Installer/Asahi Linux Installer/ViewController.swift @@ -0,0 +1,26 @@ +// +// ViewController.swift +// Asahi Linux Installer +// +// Created by Marc Nich on 7/30/22. +// + +import Cocoa + +class ViewController: NSViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + override var representedObject: Any? { + didSet { + // Update the view, if already loaded. + } + } + + +} + diff --git a/README.md b/README.md index 802cb83..d01a8b6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,141 @@ # Asahi Linux installer -TODO: document +This Installer is intended for the currently alpha [Asahi Linux](https://asahilinux.org) distribution, aimed at running Linux on M1 and future Apple Silicon. + +Currently working is a command line interface with a GUI version on the way. + +## Usage + +To use the command line interface, run +```bash +curl https://alx.sh | sh +``` + +To use the experimental GUI, navigate to the releases and download the .app.zip file, or for latest build go to GUI/Asahi Linux Installer.app. + +To build yourself, open GUI/Asahi Linux Installer in Xcode and build. + +## Requirements + +- M1, M1 Pro, or M1 Max machine (Mac Studio excluded) +- macOS 12.3 or later, logged in as an admin user +- At least 53GB of free disk space (Desktop install) +- You need 15GB for Asahi Linux Desktop, but macOS itself needs a lot of free space for system updates to work, so the installer will expect you to leave 38GB of extra slack in macOS by default to avoid shooting yourself in the foot. For example, if you have 60GB of free space, you will be able to shrink macOS by up to 22GB by default, freeing up 22GB for the new Linux install and leaving 38GB of remaining free space in the macOS partition. If you want to disable this check, enable expert mode when prompted. +- A working internet connection: The installer will download 700MB ~ 4GB of data, depending on the OS you select. +- If you use Time Machine, you may find that you do not have enough free space. This is caused by local Time Machine snapshots taking up the “free” space in your volume. You can learn how to delete these to truly free up space here. + +## Process + +First of all, for the full info see the [blog post](https://asahilinux.org/2022/03/asahi-linux-alpha-release/), from where the following information is taken. + +The installer is designed to be as self-explanatory as possible. You will see a series of prompts that guide you through resizing your macOS partition (if necessary) and installing your new OS. We expect users to install Linux alongside macOS at this point. The installer will not delete or affect your macOS installation, other than performing a live resize. + +Once the first stage of the installation is done, you will have to reboot into 1TR mode (One True recoveryOS) in order to finish the install. Read the instructions that the installer prints carefully! Simply rebooting into the new OS won’t work until this is done. You need to fully shut down your machine, then boot by holding down the power button until you see “Entering startup options”, choose your new OS in the boot selector menu, and follow the prompts. + +The installer provides these OS options: + +**Asahi Linux Desktop** + +A customized remix of Arch Linux ARM that comes with a full Plasma desktop and all the basic packages to get you started with a desktop environment. It includes a graphical first-boot set-up wizard, so you won’t have to dig around to change your settings or create your first user. No root password by default; use sudo to become root. + +**Asahi Linux Minimal (Arch Linux ARM)** + +A vanilla Arch Linux ARM environment, with only the minimal support packages to integrate with the boot process and hardware on Apple Silicon machines. Arch users will feel right at home! + +Log in as root/root or alarm/alarm. Don’t forget to change both passwords! SSH is disabled by default for security reasons, so you’ll have to enable it manually. + +**UEFI environment only (m1n1 + U-Boot + ESP)** + +No distribution, just a minimal UEFI boot environment. With this, you can boot an OS installer from a USB drive and install whatever you want (as long as it supports these machines, of course)! + + +## What works + +All M1, M1 Pro, and M1 Max devices are supported except for the Mac Studio. + +- Wi-Fi +- USB2 (Thunderbolt ports) +- USB3 (Mac Mini Type A ports) +- Screen (no GPU) +- NVMe +- Lid switch +- Power button +- Built-in display (framebuffer only) +- Built-in keyboard/touchpad +- Display backlight on/off +- Battery information / charge control +- RTC +- Ethernet (desktops) +- SD card reader (M1 Pro/Max) +- CPU frequency switching + + +M1 machines only (no Pro/Max): + +- Headphones jack (might be flaky) + +Mac Mini only: + +- HDMI output + +Not yet, but coming soon: + +- USB3 +- Speakers +- Display controller (backlight brightness control, V-Sync, proper DPMS) + +## What doesn’t work: + +Everything else, but notably: + +- DisplayPort +- Thunderbolt +- HDMI on the MacBooks +- Bluetooth +- GPU acceleration +- Video codec acceleration +- Neural Engine +- CPU deep idle +- Sleep mode +- Camera +- Touch Bar + - Note: on the 13" MacBook Pro, you can use Fn + the number row keys (1-9, 0, and the next two) as F1..F12 in lieu of the Touch Bar. + +## Known bugs + +- If Wi-Fi doesn’t work, try toggling it off and on in the network management menu +- If the headphones jack doesn’t work or only one channel works, try rebooting. There’s a flakiness issue. + +## Known broken applications + +The Asahi Linux kernel is compiled to use 16K pages. This both performs better, and is required with our kernel branch right now in order to work properly with the M1’s IOMMUs. Unfortunately, some Linux software has problems running with 16K pages. Most notably: + +- Emacs (fix committed, not released) +- Anything using jemalloc (e.g. Rust installed via the official Arch repositories) +- Anything using libunwind (fix committed, not released) + +Hopefully this release will help motivate upstream projects to fix these issues and properly support all ARM64 page sizes (64K, 16K, and 4K). 16K provides a significant performance improvement of up to 20% or so under some workloads, so it’s worth it. + +There is a category of software that will likely never support 16K page sizes: certain emulators and compatibility layers, including FEX. Android is also affected, in case someone wants to try running it natively some day. For users of these tools, we will provide 4K page size kernels in the future, once the kernel changes that make this possible are ready for upstreaming. + +## Further information + +Visit our docs wiki for more information! We could use more people working on documentation, so feel free to contribute too! Note that, since things have been moving very quickly, some of the docs may be out of date. + +### Recommended reading: + +[“When will Asahi Linux be done?"](https://github.com/AsahiLinux/docs/wiki/%22When-will-Asahi-Linux-be-done%3F%22) +[Introduction to Apple Silicon](https://github.com/AsahiLinux/docs/wiki/Introduction-to-Apple-Silicon) +[Open OS Ecosystem on Apple Silicon Macs](https://github.com/AsahiLinux/docs/wiki/Open-OS-Ecosystem-on-Apple-Silicon-Macs) +[m1n1:User Guide](https://github.com/AsahiLinux/docs/wiki/m1n1%3AUser-Guide) + +If you’re a developer or reverse engineer, we have some really cool toys: + +[SW:Hypervisor](https://github.com/AsahiLinux/docs/wiki/SW:Hypervisor) + +And if you’re bored: + +[Trivia](https://github.com/AsahiLinux/docs/wiki/Trivia) ## License @@ -14,3 +149,5 @@ This installer vendors [python-asn1](https://github.com/andrivet/python-asn1), w `./build.sh` +(README contributed to by @MDNich) +