A Rust library for handling disk partitioning, encryption, and installation details in Linux distribution installers.
Distinst is a Rust-based software library that handles the complex backend operations of Linux distribution installers. It abstracts low-level details like disk partitioning, encryption, and system configuration, allowing installer developers to focus on improving user interfaces. The library is specifically built for constructing reliable and maintainable Linux installers.
Linux distribution developers and teams building or maintaining graphical or command-line installer frontends, such as those for Pop!_OS or elementary OS. It is also suitable for developers creating custom installation tools that require robust disk management and system configuration.
Developers choose Distinst because it provides a reusable, robust backend that handles error-prone technical aspects like partition validation and bootloader setup, reducing implementation complexity. Its support for multiple frontends (CLI and GUI) and APIs in Rust, C, and Vala offers flexibility for diverse installer projects.
Installer Backend
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides APIs in Rust, C, and Vala, as shown in the Rust CLI example and Vala code snippet, enabling integration with diverse frontend technologies like GTK or custom tools.
Uses in-memory partition management logic to validate disk configuration changes before applying them during installation, reducing the risk of errors, as described in the Disk Partitioning section.
Supports LUKS encryption and LVM setups, allowing for complex storage scenarios common in modern Linux distributions, as highlighted in the capabilities.
Automatically configures systemd-boot or GRUB based on EFI detection, simplifying a critical part of the installation process without manual intervention.
Primarily targets elementary's GTK installer and includes a CLI; lacks a wide range of community-contributed frontends or plugins, which may restrict flexibility for broader projects.
Requires specific tools like Rust, libparted, and system packages for filesystem support, as noted in the build instructions, complicating initial setup and maintenance.
Implementors must provide their own squashfs base images and configuration scripts, adding extra steps compared to more integrated installer solutions, as mentioned in the Extracting section.