Tourmaline is a (planned) agnostic, asynchronous and awesome installer framework
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Julius Riegel 5c6ea5e9a4 Merge branch 'finetune-chrooting' into 'main'
Fineune some aspect of chrooting (and test this thing)

See merge request crystal/software/tourmaline!2
9 months ago
configs/crystal Add the actual task to test if chrooting works (bootloaders) 9 months ago
src Add install base and kernels step 9 months ago
.gitignore Add ChrootedTask to run all tasks in a different (curently hardcoded) root 1 year ago
.gitlab-ci.yml fix: fix CI using rust:latest Dockerfile practices 11 months ago
Cargo.lock Add layout part of create_partitiosn and custom commands 9 months ago
Cargo.toml Add layout part of create_partitiosn and custom commands 9 months ago
LICENSE Manual merge 0-0 1 year ago Update README 1 year ago Add cli 1 year ago


Tourmaline is a (planned) agnostic, asynchronous and awesome installer framework


Just run cargo run -- help or trm help for now.

Distro Config

Scripts and config files for all supported distros are stored in the config folder of this repository. Each distro has its own folder with several subfolders corresponding to all integration tasks.

  | distro.toml
  | config.schema.json
  | <task>
  | <task>

Distro config

The distro.toml file contains config options of the distro and allows one to define additional tasks to perform on install. The basic schema of this config file looks like this:

# Distro metadata

# Name of the distro
name = "Distro Name"

# Website of the distro
website = ""

# Configuration of the OSConfig file

# Reference to the JSON Schema describing the config extension of that distro
#[default: "config.schema.json"]
schema = "config.schema.json"

# Task-related configuration

# The key correspons to the name of the task on the file system.
# In this case the scripts `custom-task/` and `custom-task/` must
# exist in the distro's config folder

# The key inside the extended config that is used to pass the config
# value to this task
# If this key is empty no value is passed to the task
# [default: none]
config_key = "enable_flatpak"

# If set to true, the task will be skipped if the value of the task's config 
# (indexed by config_key) is null or false. This setting is ignored when
# no config_key is defined for this task
# [default: false]
skip_on_false = true

# The order in which the task(s) should be executed. Note that
# custom tasks alsways get executed after the base task.
# [default: usize::MAX]
order = 10

Config Schema

The config schema describing the extended OSConfig for that distro can be configured in the distro.toml and defaults to config.schema.json. This file is a JSON Schema describing the additional fields required in the config. Make sure to mark required values as such so that the config get's properly validated.


The scripts contain the required steps to apply the change described by the task. This can include installing packages, creating configuration files and starting systemd units.

The scripts contain the steps to revert the change applied by a task. These scripts will later be used to offer functionalities like reinstalling grub or changing installed kernels.

A script can declare a global variable let run_in_chroot = true to be executed inside the new root.


GPL v3