Skip to content

feat(iso): add Gamescope session and systemd user units#3

Open
Count-I wants to merge 1 commit into
mainfrom
feature/gamescope-session
Open

feat(iso): add Gamescope session and systemd user units#3
Count-I wants to merge 1 commit into
mainfrom
feature/gamescope-session

Conversation

@Count-I
Copy link
Copy Markdown
Owner

@Count-I Count-I commented May 14, 2026

Summary

Define el conjunto completo de systemd units para la capa de sesión de MinecrarchOS. Implementa el boot flow definido en docs/session-model.md:

autologin → gamescope-session → minecrarch-shell → services

Files

  • gamescope-session.service — lanza Gamescope --fullscreen con el shell como child; StartLimitBurst=3 para prevenir boot loops
  • minecrarch-shell.serviceRequires=modpack-manager, arranca después de logging + modpack-manager en D-Bus
  • minecrarch-modpack-manager.serviceType=dbus con BusName; systemd espera hasta que el servicio se registra en el bus
  • minecrarch-logging.service — arranca primero (solo depende de dbus)
  • minecrarch-overlay.service — no-crítico, After=logging
  • minecrarch-updater.service — no-crítico, After=logging, RestartSec=5s
  • default.target.wants/gamescope-session.service — symlink de autostart
  • getty@tty1.service.d/autologin.conf — autologin para usuario minecrarch

Startup ordering (per docs/session-model.md)

logging → [modpack-manager, overlay, updater] en paralelo → shell

ADR references

ADR-0005 (Gamescope como compositor de sesión), ADR-0006 (sin DE), ADR-0009 (shell como capa de orquestación)

Creates the complete systemd unit set for the MinecrarchOS session layer.
These units define the boot flow:
  autologin → gamescope-session → minecrarch-shell → services

iso/airootfs/etc/systemd/user/:
- gamescope-session.service: launches Gamescope --fullscreen with
  minecrarch-shell as child; RestartSec=3s, StartLimitBurst=3 to
  prevent boot loops on repeated Gamescope failures
- minecrarch-shell.service: Requires=modpack-manager, starts after
  logging + modpack-manager are on D-Bus
- minecrarch-modpack-manager.service: Type=dbus with BusName so
  systemd knows the service is ready when it registers on the bus
- minecrarch-logging.service: starts first (no After= other than dbus)
- minecrarch-overlay.service: non-critical, After=logging
- minecrarch-updater.service: non-critical, After=logging, RestartSec=5s
- default.target.wants/gamescope-session.service: symlink for autostart

iso/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf:
- autologin for 'minecrarch' user; double ExecStart= pattern clears
  the default before setting the autologin variant (systemd override
  convention)

Service startup order per docs/session-model.md:
  logging → [modpack-manager, overlay, updater] in parallel → shell

ADR-0005 (Gamescope), ADR-0006 (no DE), ADR-0009 (shell orchestration)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant