c-ludenberg e0c78f476d fix licenses: XBPS is BSD-2-Clause, Pacman is ISC, not all GPL-2.0
- XBPS: BSD-2-Clause (verified from source)
- Pacman: ISC (verified from source)
- APT: GPL-2.0+
- DNF: GPL-2.0+
- APK: GPL-2.0
- dpkg: GPL-2.0+ (debian/copyright)
2026-08-26 19:14:37 +02:00
2026-08-26 19:03:51 +02:00

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

pip install .
# or
pipx install .

usage

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

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.

S
Description
Universal CLI ISO builder — any distro, from any distro
Readme GPL-2.0
14 MiB
Languages
Python 51.3%
Shell 48.7%