novolis-os / runtime-surface.md
Runtime surface
Minimal Debian runtime images
dotnetlinuxdebianruntimenovolis
Map of Novolis library layers to OS packages. Pure managed stacks need only the .NET runtime.
| Layer / stack | OS packages | Manifest |
|---|---|---|
| Math, Physics, Simulation, Gaming (managed) | .NET 10 runtime tarball (`dotnet-runtime-10.0` pin) | `dotnet.txt` |
| ICU / globalization | `libicu76` | `base.txt` |
| TLS | `libssl3t64`, `ca-certificates`, `zlib1g` | `base.txt` |
| Avalonia / Skia | fontconfig, freetype, X11/xcb, Wayland client, `libxkbcommon0`, fonts | `ui-graphics.txt` |
| Avalonia 3D / Silk OpenGL / Raylib | Mesa EGL/GL/GLES, `libdrm2`, `libgbm1`, `libdecor-0-0` | `ui-graphics.txt` |
| Raylib / game audio | `libasound2t64` | `audio-alsa.txt` |
| Appliance display | `cage`, `seatd`, `linux-image-amd64`, `systemd` | `appliance.txt` |
Explicitly not provided
| Need | Why absent |
|---|---|
| .NET SDK | Runtime image only |
| PulseAudio / PipeWire | ALSA is enough for Raylib; keeps the graph small |
| Desktop environment | Apps own their windows; cage covers kiosk VM |
| Windows-only voice / Inno | Host those on Windows; not Linux OS scope |
Adding a package
- Confirm a Novolis library fails without it (document the failure).
- Add the exact Debian package name to the right
manifests/*.txt. - Update this table.
- Run
Verify-PackageBudget.ps1— stay under budget and clear ofexcludes.txt.