Skip to content

Latest commit

 

History

History
99 lines (71 loc) · 4.39 KB

File metadata and controls

99 lines (71 loc) · 4.39 KB

Configuration file (TOML)

The installer can save and load configuration as TOML for reproducible installs, sharing presets, and automation-oriented workflows.

  • In-app: Save and load from the TUI works today.
  • CLI: The --config flag is not implemented yet; loading from the command line is planned.

Repository examples:

[mirrors].regions entries must match a line from reflector --list-countries exactly (including spacing); mirror counts change when the upstream list changes, so re-copy that line from the ISO if a preset no longer loads a region.

Minimal illustrative schema (may omit fields your build defaults). For a working desktop install, include [experience.desktop_env_packages] for each selected desktop (see the configs/examples files); otherwise the saved package list for that environment may be empty after load.

additional_packages = []

[locales]
keyboard_layout = "us"
locale_language = "en_US.UTF-8"
locale_encoding = "UTF-8"

[mirrors]
regions = ["United States          US   189"]
optional_repos = ["multilib"]
custom_servers = []
custom_repos = []

[disks]
mode = "Best-effort partition layout"
# Optional: "flat" | "standard" | "extended" — btrfs subvolumes for automatic btrfs root (defaults to flat if omitted)
# btrfs_subvolume_preset = "flat"

[disk_encryption]
encryption_type = "None"

[swap]
enabled = true

[bootloader]
kind = "systemd-boot"

[system]
hostname = "archlinux"
automatic_time_sync = true
timezone = "Europe/London"

[experience]
mode = "Desktop"
desktop_envs = ["KDE Plasma"]
# login_manager = "sddm"
# login_manager_user_set = false

[audio]
kind = "pipewire"

[kernels]
selected = ["linux", "linux-lts"]

[network]
mode = "NetworkManager"

[unified_kernel_images]
enabled = false

# Optional: define users (password_hash optional — see note below)
[[users]]
username = "myuser"
is_sudo = true

# Optional: additional packages
#[[additional_packages]]
#repo = "extra"
#name = "firefox"
#version = ""
#description = "Web browser"

Field names and sections follow the types in src/app/config/types.rs and I/O in src/app/config/io.rs.

Passwords: Install validation uses the plaintext root password and user passwords from the TUI, not hashes. Optional system.root_password_hash and [[users]].password_hash (SHA256 hex) are produced when you Save so the file avoids storing raw passwords; shared presets can omit them entirely.

Loading example presets in the TUI

When you select Load Configuration in the TUI, a popup lists the current archinstall-rs.config.toml plus all bundled example presets. Select one and press Enter to apply it.

The installer discovers example .toml files using these directories (first match wins):

Source Path
ARCHINSTALL_RS_EXAMPLES env var directory of .toml files
ARCHINSTALL_RS_REPO env var {value}/configs/examples
Next to binary {parent(current_exe)}/configs/examples
Walk up from cwd ancestor configs/examples directory

When installed via install.sh, the script extracts the bundled config-examples.tar.gz next to the binary so presets are discovered automatically. When running from a cloned repository (cargo run or the binary anywhere inside the repo tree), the cwd ancestor walk finds configs/examples at the repo root.