This monolithic commit represents a comprehensive overhaul of the application,
transitioning from a Docker-OSX based system image creator to a sophisticated
macOS USB Installer creation tool using `corpnewt/gibMacOS.py`. It also
incorporates significant research and implementation for hardware compatibility,
especially for NVIDIA GPUs on newer macOS via OpenCore Legacy Patcher (OCLP)
preparation, and substantial UI/UX enhancements.
**Core Architectural Changes:**
1. **Installer-Based Workflow with `gibMacOS`:**
- `main_app.py`: Completely refactored. All Docker dependencies, UI components,
and related logic have been removed.
- I introduced a way to download official macOS installer assets
directly from Apple via `gibMacOS.py`. The UI now reflects a two-step process:
1. Download macOS Assets, 2. Create USB Installer.
- The USB writing process now consumes `macos_download_path` from `gibMacOS`.
2. **Platform-Specific USB Writer Modules (`usb_writer_*.py`) Refactored:**
- **`usb_writer_linux.py`:** Creates a comprehensive macOS installer.
- Uses `sgdisk` for GPT partitioning (EFI FAT32, Main HFS+).
- Employs `7z` to extract BaseSystem HFS image from downloaded assets.
- Writes BaseSystem image to USB via `dd`.
- Copies essential installer files (`BaseSystem.dmg`/`.chunklist`,
`InstallInfo.plist`, `InstallAssistant.pkg`/`InstallESD.dmg`,
`AppleDiagnostics.dmg`, `boot.efi`) to standard locations within a
created `Install macOS [VersionName].app` structure on the USB.
- Sets up OpenCore EFI from `EFI_template_installer`, including
conditional `config.plist` enhancement via `plist_modifier.py`.
- Includes logic to emit determinate `rsync` progress (though UI display
in `main_app.py` was blocked by difficulties).
- **`usb_writer_macos.py`:** Mirrors Linux writer functionality using native
macOS tools (`diskutil`, `hdiutil`, `7z`, `dd`, `rsync`/`cp`, `bless`).
Creates a full installer with custom OpenCore EFI.
- **`usb_writer_windows.py`:**
- Automates EFI partition setup (`diskpart`) and OpenCore EFI placement
(from template + `plist_modifier.py`, using `robocopy`).
- Extracts BaseSystem HFS image using `7z`.
- Provides detailed, enhanced guidance for you to manually:
1. Write the `BaseSystem.hfs` to the main USB partition using
"dd for Windows" (includes disk number, path, partition info).
2. Copy other installer assets to the HFS+ partition using
third-party tools or another OS.
3. **`plist_modifier.py` (OpenCore `config.plist` Enhancement):**
- Expanded hardware mappings for Intel Alder Lake iGPUs (including headless
logic if dGPU detected), audio codecs (prioritizing detected names), and
Ethernet kexts.
- Refined NVIDIA GTX 970 (Maxwell) `boot-args` logic:
- `nvda_drv=1` for High Sierra.
- For Mojave+: `amfi_get_out_of_my_way=0x1` (OCLP prep), and `nv_disable=1`
if an iGPU is present and primary; otherwise, no `nv_disable=1` to allow
GTX 970 VESA boot.
- Creates a `config.plist.backup` before modifications.
4. **`linux_hardware_info.py` (Hardware Detection - Linux Host):**
- Added `get_audio_codecs()` to detect audio codec names from `/proc/asound/`,
improving `layout-id` accuracy for `plist_modifier.py`.
5. **`EFI_template_installer`:**
- `config-template.plist` significantly improved with robust, generic defaults
for modern systems (Alder Lake friendly) and for `plist_modifier.py`.
- Directory structure for kexts, drivers, ACPI defined with placeholders.
6. **UI/UX Enhancements (`main_app.py`):**
- Status bar features a QTimer-driven text-based spinner for active operations.
- Implemented determinate `QProgressBar` for `gibMacOS` downloads.
- Centralized UI state management (`_set_ui_busy`, `update_all_button_states`).
- Improved lifecycle and error/completion signal handling.
- Privilege checks implemented before USB writing.
- Windows USB detection improved using PowerShell/WMI to populate a selectable list.
7. **Documentation (`README.md`):**
- Completely rewritten with "Skyscope" branding and project vision.
- Details the new `gibMacOS`-based installer workflow.
* Explains the NVIDIA GPU support strategy (guiding you to OCLP for
post-install acceleration on newer macOS).
* Comprehensive prerequisites (including `gibMacOS.py` setup, `7z`, platform
tools like `hfsprogs` and `apfs-fuse` build info for Debian).
* Updated usage instructions and current limitations.
* Version updated to 1.1.0.
**Known Issue/Stuck Point:**
- Persistent difficulties prevented the full integration of determinate `rsync`
progress display in `main_app.py`. While `usb_writer_linux.py` emits the
data, I could not reliably update `main_app.py` to use it for the progress bar.
This change represents a foundational shift to a more flexible and direct
method of macOS installer creation and incorporates many advanced configuration
and usability features.