2026-06-17 10:16:39 +03:00
2026-05-22 23:35:27 +03:00
2026-06-01 00:32:03 +03:00
2026-06-17 10:15:20 +03:00

YALI (Yet Another Linux Installer) — Rust / egui

A rewritten Pisi GNU/Linux installation tool in Rust and egui. YALI installs the system from the live environment, installs packages, and performs basic configuration. It is a modern, fast, and maintainable rewrite of the original Python/Qt version.

Features

  • 10-step installation wizard: Welcome → Location → Keyboard → Network → Disk Partitioning → Users → Bootloader → Summary → Installation → Finish
  • Two modes: Graphical interface (default) and automatic installation with answer file (--auto-install answer.toml)
  • Demo mode: Skips system checks, simulates installation (--demo)
  • Disk partitioning: Automatic (GPT/MBR) or manual, LVM and LUKS encryption support
  • Network configuration: WiFi scanning (nmcli), proxy settings
  • Bootloader: GRUB device/password/timeout settings, kernel parameters
  • Rescue mode: Chroot, GRUB reinstallation, Pisi rollback
  • OEM mode: Predefined settings for manufacturer pre-installation
  • Internationalization: Turkish and English (with rust-i18n via TOML locale files)
  • Branding system: Runtime-loadable branding.toml for logo, slides, color settings
  • Theme: Dark/light theme, atomic color management, custom gradient buttons
  • Async job queue: All installation steps run in separate tokio runtime, UI updated via mpsc channel
  • System checks: 8 pre-checks including RAM, disk space, internet, UEFI, CPU, NVMe
  • Slideshow: Custom branded slides for 9 desktop environments
  • Demo session cleanup: Removes live environment artifacts, adds production repository

Usage

# Normal installation (requires root)
sudo cargo run --release

# Demo mode (no root required)
cargo run --release -- --demo

# Automatic installation (with answer file)
sudo cargo run --release -- --auto-install answer.toml

Project Structure

├── src/
│   ├── main.rs              # Entry point, eframe App, GUI layout
│   ├── installer.rs         # InstallerStep trait, GlobalState, WelcomeStep
│   ├── funct.rs             # Shared UI helpers (form fields, language selector)
│   ├── branding.rs          # Branding.toml loader (logo, slides, theme, OEM)
│   ├── ui/
│   │   ├── theme.rs         # Colors, fonts, Visuals, section_heading, error/warning/success boxes
│   │   ├── buttons.rs       # Gradient buttons (primary, secondary, danger, etc.)
│   │   ├── combobox.rs      # ComboBox helpers (show_combo_box, selectable_value)
│   │   ├── combobox_stil.rs # ComboBox visual constants (weak_bg, border, text colors)
│   │   ├── slideshow.rs     # Auto-advancing slideshow
│   │   └── error_screen.rs  # Error screen (log viewer, copy, retry)
│   ├── steps/
│   │   ├── location.rs      # Location/timezone + date/time
│   │   ├── license.rs       # License agreement
│   │   ├── keyboard.rs      # Keyboard layout/variant selection
│   │   ├── network.rs       # Network configuration (WiFi, proxy)
│   │   ├── partition.rs     # Disk partitioning (automatic + manual + LVM)
│   │   ├── users.rs         # User account creation
│   │   ├── bootloader.rs    # GRUB configuration
│   │   ├── summary.rs       # Installation summary
│   │   ├── execution.rs     # Installation execution (progress bar, log)
│   │   ├── finish.rs        # Completion screen
│   │   ├── netinstall.rs    # Extra package group selection
│   │   └── rescue.rs        # Rescue mode (chroot, GRUB, Pisi takeback)
│   ├── jobs/mod.rs           # Async job queue and all installation jobs
│   └── autoinstall/
│       ├── mod.rs           # Answer file loading and state application
│       └── checker.rs       # System pre-checks
├── locales/
│   ├── tr.toml              # Turkish translations
│   └── en.toml              # English translations
├── assets/
│   ├── icons/               # UI icons (YALI_icon_LIGHT.svg, language-icon.svg, etc.)
│   ├── flags/               # Country flags (~250 SVG)
│   └── *.png                # Slide and logo images
├── branding.toml            # Default branding configuration
├── branding_en.toml         # English branding
├── branding_tr.toml         # Turkish branding
└── answer-example.toml      # Example answer file

Installation Workflow

  1. Welcome — Language selection, system checks, rescue mode
  2. Location / Time — Timezone selection (region/area dual ComboBox), GeoIP, NTP or manual date/time
  3. Keyboard — Layout/variant selection, search, live preview (setxkbmap)
  4. Network — WiFi scanning, connection, proxy
  5. Disk Partitioning — Automatic (guided) or manual, LVM, LUKS
  6. Users — Account creation, password strength indicator, root password, autologin
  7. Bootloader — GRUB device, timeout, password, kernel parameters
  8. Summary — Review all selections
  9. Installation — Slideshow + progress bar + live log
  10. Finish — Successful installation, reboot or return to live desktop

Dependencies

Dependency Version Purpose
eframe 0.27 (wgpu) egui framework, WebGPU backend
egui_extras 0.27 (image, file, svg) Image loading, file dialogs, SVG
image 0.24 PNG decoding
serde / toml 1.0 / 0.8 Branding and answer file serialization
zbus 4.0 D-Bus communication (COMAR)
tokio 1.0 (full) Async job queue
sysinfo 0.30 System information (RAM, disk, OS)
rust-i18n 3.1 Internationalization
chrono 0.4 Date/time operations

License

GNU General Public License v3.0

This project is developed by the Pisi GNU/Linux team.

S
Description
No description provided
Readme GPL-3.0 11 MiB
Languages
Rust 98.1%
Makefile 1.9%