Files
omarchycn/install/orchestrator/archinstall_adapter.py
T
Ryan Hughes 2beda6abed Scaffold Python orchestrator + split install.sh / finalize.sh
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.
2026-06-04 18:34:35 -04:00

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")