Chunk 1 of the C3 refactor: replace the two-pass install model (archinstall CLI + custom shell dance + chroot bash installer) with a single Python orchestrator that owns phase ordering, using archinstall as a library subsystem. Splits the bash entry point into two: - install.sh: online entry point. Ensures omarchy runtime + base.packages are installed/up to date, then exec's finalize.sh. - finalize.sh: the in-target portion (preflight + packaging + config + login + post-install). Called by install.sh (online) AND by the orchestrator after arch-chroot -u $USER (offline). Adds the orchestrator skeleton under install/orchestrator/: - main.py: entry point, builds + runs the phase list - context.py: InstallContext (parsed configurator JSON + invocation paths) - phases.py: phase state machine (logging + state.json + error wrapping) - phases_impl.py: stubbed phase implementations (filled in by chunks 2-6) - archinstall_adapter.py: thin compat wall around archinstall lib imports (only this module imports from archinstall.*) - ui.py: gum subprocess wrappers so the orchestrator keeps the same styled-terminal UX as the bash installer Updates bin/omarchy-install to dispatch: - --config <json> in args → python -m orchestrator.main (ISO install) - anything else → bash install.sh (online rerun on installed system) Concrete phase logic lands in subsequent chunks. All phases currently raise NotImplementedError; the orchestrator imports cleanly and --help works as a smoke check.
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
"""Thin compatibility wall around the archinstall Python library.
|
|
|
|
ONLY this module imports from archinstall. Everything else uses these functions.
|
|
If archinstall's API churns, the blast radius is contained here.
|
|
|
|
Tested against archinstall 4.3 (Python 3.14).
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
# Phase 2 will populate this module. For now we declare the contract so the
|
|
# rest of the orchestrator can be wired up against the eventual surface area.
|
|
|
|
|
|
def prepare_live() -> None:
|
|
"""pacman-key init/populate, mount checks, etc. Currently a no-op stub."""
|
|
raise NotImplementedError("populated in Chunk 2")
|
|
|
|
|
|
def cleanup_disk() -> None:
|
|
raise NotImplementedError("populated in Chunk 2")
|
|
|
|
|
|
def create_partitions_and_mounts(install_ctx) -> None:
|
|
raise NotImplementedError("populated in Chunk 2")
|
|
|
|
|
|
def install_base_system(install_ctx) -> None:
|
|
raise NotImplementedError("populated in Chunk 2")
|
|
|
|
|
|
def install_limine_bootloader(install_ctx) -> None:
|
|
raise NotImplementedError("populated in Chunk 2")
|
|
|
|
|
|
def create_users(install_ctx) -> None:
|
|
raise NotImplementedError("populated in Chunk 2")
|