Skip to content

πŸš€ Feature Proposal: Archinstall ↔ Archiso Deep Integration (Calamares-level Customization)Β #4431

@guidryheal-create

Description

@guidryheal-create

describe the request

🧠 Summary

The goal is to bring Calamares-level customization and UX to archinstall, by tightly integrating it with archiso.

Instead of manually defining installation configs or hardcoding menus, the installer should:

  • Auto-detect the running ISO environment
  • Extract configuration from archiso build artifacts
  • Generate a full archinstall config dynamically
  • Provide a customizable TUI experience driven by metadata (not hardcoded menus)

🎯 Objectives

1. πŸ” Auto-detect ISO Configuration

When running inside an archiso environment, archinstall should automatically detect:

  • packages.x86_64
  • Installed kernel(s)
  • Enabled services
  • Preinstalled applications
  • Default user/session config
  • Live environment behavior (e.g. Plasma, GNOME, minimal, etc.)

πŸ‘‰ This allows the installer to mirror the live ISO setup into the installed system.


2. 🧩 Dynamic Config Generation

Instead of requiring a static JSON config, archinstall should:

  • Generate a full installation config automatically from:

    • ISO metadata
    • System state
    • Optional user input (TUI)

Example:

  • Detect KDE Plasma β†’ auto-fill profile_config
  • Detect PipeWire β†’ auto-fill audio_config
  • Detect kernel β†’ auto-fill kernels
  • Detect services β†’ auto-fill services

πŸ‘‰ Result: zero-config install baseline, modifiable via TUI.


3. 🧱 Archiso Metadata Layer

Extend archiso to expose structured metadata for the installer.

Proposed additions:

  • /etc/archiso/installer.json (or similar)

  • Declarative definitions for:

    • Profiles
    • Applications
    • Services
    • Branding
    • Default behaviors

Example:

{
  "profile": "kde",
  "applications": ["firefox", "konsole"],
  "services": ["sddm", "NetworkManager"],
  "kernel": "linux-zen",
  "branding": {
    "name": "MyDistro",
    "logo": "/usr/share/mydistro/logo.png"
  }
}

πŸ‘‰ archinstall consumes this and builds menus + config dynamically.


4. 🧠 Meta-driven TUI (No Hardcoded Menus)

Replace static menu definitions with auto-generated menus:

  • Discover available modules (apps, profiles, services)

  • Use class metadata / tags to decide:

    • Visibility
    • Category
    • Menu placement

Example concept:

class KDEProfile(Profile):
    __archinstall_meta__ = {
        "category": "desktop",
        "name": "KDE Plasma",
        "default": True
    }

πŸ‘‰ The TUI builds itself from available modules.


5. 🎨 Full Branding & Custom Installer UX

Allow archiso builders to define:

  • Custom TUI layout
  • Custom steps / workflow
  • Branding (name, colors, ASCII/logo)
  • Predefined flows (minimal / advanced / OEM / gaming distro)

πŸ‘‰ This enables:

  • Distro-like installers without rewriting archinstall
  • OEM installers
  • Opinionated setups (Hyprland ISO, Dev ISO, etc.)

6. πŸ”„ Persistence-aware Installation

Use archiso context to:

  • Detect persistence setup (if any)

  • Offer migration of live environment β†’ installed system

  • Reuse:

    • User configs
    • Installed packages
    • Session state

πŸ‘‰ Makes live ISO β†’ installed system feel seamless.


7. βš™οΈ Generalized Installer Pipeline

Abstract installer steps into modular stages:

  • disk
  • base system
  • kernel
  • services
  • applications
  • profiles
  • post-install hooks

Each stage:

  • Can be extended
  • Can be overridden by archiso metadata
  • Can be toggled via TUI

🧩 Proposed Architecture

archiso
 β”œβ”€β”€ packages.x86_64
 β”œβ”€β”€ profiledef.sh
 β”œβ”€β”€ installer.json   <-- new
 └── live environment
        ↓
archinstall
 β”œβ”€β”€ detect ISO context
 β”œβ”€β”€ parse metadata
 β”œβ”€β”€ scan modules (profiles/apps)
 β”œβ”€β”€ build dynamic TUI
 β”œβ”€β”€ generate config
 └── run installer pipeline

βœ… Benefits

  • πŸ”₯ Near Calamares-level UX, but fully scriptable
  • 🧩 No need to fork archinstall for custom ISOs
  • ⚑ Zero-config installs possible
  • 🎯 Consistency between live ISO and installed system
  • πŸ›  Easier to build custom Arch-based distros
  • 🧠 Cleaner architecture (data-driven, not hardcoded)

⚠️ Challenges / Considerations

  • Backward compatibility with existing configs

  • Security (executing ISO-provided metadata)

  • Standardizing metadata format

  • Avoiding over-complexity in TUI generation

  • Clear separation between:

    • detection
    • config generation
    • execution

πŸ’‘ Future Extensions

  • Plugin system for profiles/apps
  • Remote config sources (URL-based installs)
  • GUI frontend reusing same backend (like Calamares)
  • Declarative installer pipelines

πŸ§ͺ MVP Scope

Start small:

  1. Detect archiso environment
  2. Parse a simple installer.json
  3. Auto-fill archinstall config
  4. Minimal dynamic menu (profiles + apps)

🧭 Closing Thought

This would effectively turn archinstall into a universal installer backend, while archiso becomes a distribution definition layer.

πŸ‘‰ Together, they could replace the need for tools like Calamares in many Arch-based systemsβ€”while staying fully native and scriptable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions