This repository contains GitHub Actions to build MocaccinoOS ISOs.
Each flavor is composed by packages coming from multiple repositories, here is a short summary.
| Flavor | Mocaccino Micro Repository | Mocaccino Extra Repository | Mocaccino Desktop Repository | LiveCD Repository | Luet Official Repository | 
|---|---|---|---|---|---|
| Micro | ✔️ | ✔️ | ✔️ | ✔️ | |
| GNOME | ✔️ | ✔️ | ✔️ | ||
| MATE | ✔️ | ✔️ | ✔️ | ||
| KDE | ✔️ | ✔️ | ✔️ | ||
| XFCE | ✔️ | ✔️ | ✔️ | 
Each ISO has a corresponding spec that defines which packages and luet repositories are required to build the ISO.
The specs are under the spec/ folder. Here is an example:
packages:
  # Packages to be installed in the rootfs
  rootfs:
  - utils/busybox 
  # Packages to be installed in the uefi image
  uefi:
  - live/systemd-boot
  - system/mocaccino-live-boot
  # Packages to be installed in the isoimage
  isoimage:
  - live/syslinux
  - system/mocaccino-live-boot
  # Packages to be installed in the initramfs
  initramfs:
  - distro/mocaccino-initramfs
# This configuration isn't necessarly required. You can also just specify the repository to be used in the luet configuration file
repository:
  packages:
  - repository/mocaccino-micro
  - repository/mocaccino-musl-universe
  initramfs:
  - repository/mocaccino-micro
  
# Optionally, you can specify initramfs/kernel and avoid generation on-the-fly
# files must be present on /boot folder in either initramfs or rootfs
initramfs:
  kernel_file: "bzImage"
  rootfs_file: "rootfs.cpio.xz"
# Use overlayfs to mount the rootfs. If disabled, only the initramfs will be booted.
overlay: "true"
# Image prefix. If Image date is disabled is used as the full title.
image_prefix: "MocaccinoOS-Micro-0."
image_date: "true"
# Luet config to use.
# It has to contain the repositories required to install the packages defined above.
luet:
  config: conf/luet-micro.yamlEach spec defines which packages to be installed from luet repositories. A config file for each spec has to be provided and placed in conf/.
To build the iso, you need to run luet makeiso for e.g.
$> git clone https://github.com/mocaccinoOS/ci.git mocaccino-ci
$> cd mocaccino-ci
$> luet makeiso specs/micro.yamlluet makeiso can be installed with luet install extension/makeiso after Luet official repository repositories are enabled in the system.
When running it locally, you need these tools installed:
- luet
 - luet-makeiso
 - xorriso (provided by the dev-libs/libisoburn package in Gentoo/Sabayon)
 - squashfs-tools
 
e.g. the CI installs them as the following:
$> sudo apt-get install -y xorriso squashfs-tools dosfstools
$> curl https://gist.githubusercontent.com/mudler/8b8d6c53c4669f4b9f9a72d1a2b92172/raw/e9d38b8e0702e7f1ef9a5db1bfa428add12a2d24/get_luet_root.sh | sudo sh
$> sudo luet install repository/mocaccino-extra
$> sudo luet install utils/jq utils/yq