97331b1449669108d250b6c433bd785d71492b3a
- 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
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
- reads your yaml config
- bootstraps the target distro into a temporary rootfs
- installs your packages + ensures package manager binaries are present
- configures users, services, hostname
- installs the bootloader (GRUB)
- copies package manager binaries + GPL-2.0 licenses into ISO
- squashes the rootfs into a bootable ISO
- 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.
Languages
Python
51.3%
Shell
48.7%