Files
euri-mklive/README.md
T
c-ludenberg 97331b1449 horizon: dinit services, pkg manager binaries, GPL-2.0 licenses
- real dinit service files (connmand, sddm, ntpd, chrony, sshd)
- void backend properly swaps runit for dinit with service definitions
- ISO generation finds kernel/initrd, builds proper GRUB config
- ship all package manager binaries in ISO for offline use
- LICENSES/ directory with proper GPL-2.0 plain text for xbps, pacman, apt, dnf, apk, dpkg
- backends explicitly install their own package managers
- README updated with binary inclusion and license info
2026-08-26 19:12:09 +02:00

99 lines
2.2 KiB
Markdown

# euri-mklive
universal CLI iso builder. any distro, from any distro.
build a debian iso on arch. an arch iso on fedora. an artix iso on ubuntu. doesn't matter.
## what's included in the ISO
every ISO ships with:
- **all package manager binaries** (xbps, pacman, apt, dnf, apk, dpkg — whichever the distro uses)
- **GPL-2.0 license files** for each package manager (see `LICENSES/`)
- the packages you specified in your config
- a working bootloader (GRUB)
you can use the shipped package managers offline to install/upgrade/remove packages
without an internet connection, as long as you have a local repo.
## install
```bash
pip install .
# or
pipx install .
```
## usage
```bash
# see what's supported
euri-mklive supported
# build from a config
euri-mklive build my-config.yaml -o ./output
```
## config
yaml config that defines everything:
```yaml
distro: artix # debian | ubuntu | arch | artix | void | alpine | fedora
arch: x86_64
init: dinit # dinit | openrc | runit | s6
hostname: mydistro
iso:
name: My Distro
version: "1.0"
label: MYDISTRO
users:
- name: user
shell: /bin/bash
groups: [wheel]
packages:
- linux
- plasma-desktop
- nano
- git
services:
- connmand
- sddm
```
## supported distros
| distro | bootstrap tool | init systems | package manager |
|--------|---------------|--------------|-----------------|
| debian | debootstrap | systemd | apt/dpkg |
| ubuntu | debootstrap | systemd | apt/dpkg |
| arch | pacstrap | systemd | pacman |
| artix | basestrap | openrc, runit, s6, dinit | pacman |
| void | xbps-install | runit, dinit | xbps |
| alpine | apk | openrc | apk |
| fedora | dnf | systemd | dnf |
## how it works
1. reads your yaml config
2. bootstraps the target distro into a temporary rootfs
3. installs your packages + ensures package manager binaries are present
4. configures users, services, hostname
5. installs the bootloader (GRUB)
6. copies package manager binaries + GPL-2.0 licenses into ISO
7. squashes the rootfs into a bootable ISO
8. done.
## licenses
see `LICENSES/` for the full GPL-2.0 text for each package manager shipped.
## license
euri-mklive itself is GPL-2.0. see `LICENSE`.