Skip to main content

index

The TunaOS niri installer, screen by screen

Rendered in CI from the real QML — see the walkthrough.

Quickshell/QML + Go installer for TunaOS, modeled on DankMaterialShell's architecture. Runs on the Niri scrollable-tiling Wayland compositor.

Architecture​

tuna-installer-niri/
├── ui/ # Quickshell QML wizard and theme
├── installer/ # Go backend, offline detection, readiness, and tests
├── flatpak/ # Flatpak manifest for the packaged installer
├── tests/ # Headless GUI capture and parity-report tooling
├── docs/gui-walkthrough.md # CI-generated screen-by-screen walkthrough
└── DESIGN.md # Interaction and visual design specification

Build​

Go backend​

cd installer
go build -o tuna-installer-niri .
./tuna-installer-niri discover-disks # list block devices
./tuna-installer-niri install '{...}' # run fisherman with a JSON recipe

QML frontend​

Requires Quickshell:

quickshell ui/installer.qml

Workflow​

  1. Welcome — intro screen
  2. Disk Selection — calls tuna-installer-niri discover-disks, renders lsblk -J output
  3. Encryption — offers supported LUKS and TPM-backed choices
  4. Confirm — summary with hostname input
  5. Install Progress — streams the Go backend's output
  6. Done — success/failure

DBus Integration​

For tighter QML ↔ Go integration (future), expose the backend as a DBus service:

  • Service: org.tunaos.Installer
  • Object: /org/tunaos/Installer
  • Methods: DiscoverDisks(), StartInstall(disk, hostname), PollOutput(), PollStatus()

License​

GPL-3.0-only

Offline installs​

tuna-installer-niri detect reports the live-ISO image and embedded OCI stores as JSON; the QML layer uses it to offer "install this system, no download" and passes stores as additionalImageStores.

Testing​

Go Backend Unit Tests​

cd installer
go test ./...

Headless UI Screenshot Capture & Verification​

The installer UI can be rendered and tested headlessly without running a full Wayland/Quickshell compositor:

pip install PyQt6
python3 tests/gui/capture-screens.py docs/screenshots

Contributing​

Please see CONTRIBUTING.md for development workflows, testing requirements, and guidelines.

Development​

cd installer && go build -o tuna-installer-backend .
TUNA_BACKEND=$PWD/tuna-installer-backend quickshell -p ../ui/installer.qml

Flatpak​

flatpak-builder --user --install --force-clean build flatpak/org.tunaos.InstallerNiri.json
flatpak run org.tunaos.InstallerNiri