Novolis Docs
novolis-os / design.md

Design

dotnetlinuxdebianruntimenovolis

Purpose

Novolis OS is a single Debian (glibc) image for running Novolis apps — Avalonia, Raylib, headless .NET — without a desktop environment or SDK.

One profile (profiles/default.yaml) keeps UI + boot stack together so QEMU GUI works without juggling variants.

Deliverables

ArtifactRole
`novolis-os-rootfs.tar.zst`Full userspace (UI libs + kernel packages as installed)
`novolis-os.qcow2` + `boot/*`QEMU kernel-direct boot → systemd → cage → Avalonia smoke
`novolis-os.iso` / `novolis-os-uefi.img`UEFI GPT hybrid (ESP + GRUB + persistent ext4) for USB / OVMF
Podman OCI (optional)Same rootfs + console Hello entrypoint

Why Debian glibc

Official .NET Linux RIDs and Avalonia/Raylib natives target glibc.

Package policy

  • Explicit packages under manifests/*.txt, composed by profiles/default.yaml
  • mmdebstrap --variant=minbase, no APT recommends
  • Hard excludes: manifests/excludes.txt
  • Budgets: ≤80 explicit, ≤280 resolved, ≤900 MiB .tar.zst (currently ~49 explicit / ~240 resolved with GRUB EFI)

UI / boot

No GNOME/KDE. Client libs for Avalonia/Raylib; appliance path uses seatd + cage and defaults to graphical.target with HelloNovolisOsGui. Real-hardware media is UEFI-only (grub-efi-amd64); Secure Boot signing is out of scope for v1.

.NET

Runtime 10 from the official tarball (dotnet-install.sh), not Microsoft apt (Debian 13+ sqv rejects that feed’s SHA1-bound key).