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
trivernis eecaa70b59
Add layout part of create_partitiosn and custom commands
2 years ago
configs/crystal Add layout part of create_partitiosn and custom commands 2 years ago
src Add layout part of create_partitiosn and custom commands 2 years ago
.gitignore Add ChrootedTask to run all tasks in a different (curently hardcoded) root 2 years ago
.gitlab-ci.yml fix: fix CI using rust:latest Dockerfile practices 2 years ago
Cargo.lock Add layout part of create_partitiosn and custom commands 2 years ago
Cargo.toml Add layout part of create_partitiosn and custom commands 2 years ago
LICENSE Manual merge 0-0 2 years ago
README.md Update README 2 years ago
build.rs Add cli 2 years ago

README.md

tourmaline

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

Usage

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>
  | distro.toml
  | config.schema.json
  | <task>
      | up.nu
      | down.nu 
  | <task>
      | up.nu
      | down.nu

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
[distro]

# Name of the distro
name = "Distro Name"

# Website of the distro
website = "https://mydistro.com"


# Configuration of the OSConfig file
[config]

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


# Task-related configuration
[tasks]

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

# 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.

Scripts

The up.nu 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 down.nu 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.

License

GPL v3

See LICENSE.