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:
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:
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:
π 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:
- Detect
archiso environment
- Parse a simple
installer.json
- Auto-fill
archinstall config
- 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.
describe the request
π§ Summary
The goal is to bring Calamares-level customization and UX to
archinstall, by tightly integrating it witharchiso.Instead of manually defining installation configs or hardcoding menus, the installer should:
archinstallconfig dynamicallyπ― Objectives
1. π Auto-detect ISO Configuration
When running inside an
archisoenvironment,archinstallshould automatically detect:packages.x86_64π 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,
archinstallshould:Generate a full installation config automatically from:
Example:
profile_configaudio_configkernelsservicesπ Result: zero-config install baseline, modifiable via TUI.
3. π§± Archiso Metadata Layer
Extend
archisoto expose structured metadata for the installer.Proposed additions:
/etc/archiso/installer.json(or similar)Declarative definitions for:
Example:
{ "profile": "kde", "applications": ["firefox", "konsole"], "services": ["sddm", "NetworkManager"], "kernel": "linux-zen", "branding": { "name": "MyDistro", "logo": "/usr/share/mydistro/logo.png" } }π
archinstallconsumes 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:
Example concept:
π The TUI builds itself from available modules.
5. π¨ Full Branding & Custom Installer UX
Allow archiso builders to define:
π This enables:
archinstall6. π Persistence-aware Installation
Use archiso context to:
Detect persistence setup (if any)
Offer migration of live environment β installed system
Reuse:
π Makes live ISO β installed system feel seamless.
7. βοΈ Generalized Installer Pipeline
Abstract installer steps into modular stages:
Each stage:
π§© Proposed Architecture
β Benefits
archinstallfor custom ISOsBackward compatibility with existing configs
Security (executing ISO-provided metadata)
Standardizing metadata format
Avoiding over-complexity in TUI generation
Clear separation between:
π‘ Future Extensions
π§ͺ MVP Scope
Start small:
archisoenvironmentinstaller.jsonarchinstallconfigπ§ Closing Thought
This would effectively turn
archinstallinto a universal installer backend, whilearchisobecomes 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.