Files
bluejay-infra/apps/fc-divoom-tv-pi
Andrew Stoltz 5bdedfc5ae divoom: add pi deploy artifact manifests
Add source-controlled Puppet/Hiera contracts for edge2 Divoom-as-DM-device without replacing the live flowercore-divoom systemd deployment.

Add Divoom TV Pi HDMI systemd/Puppet deployment artifacts, LF shell-script guardrails, and focused lint coverage for the additive non-K8s deploy shape.

Co-Authored-By: Codex <codex@openai.com>
2026-06-02 21:45:27 -05:00
..

FlowerCore Divoom TV Pi HDMI

Source-controlled deploy shape for the native FlowerCore.Divoom.Tv Avalonia HDMI renderer on a Raspberry Pi connected to a TV.

This is a Puppet/systemd appliance bundle, not a Kubernetes application. It mirrors the existing fc-signage-pi-player pattern: bluejay-infra carries the systemd units, scripts, Hiera shape, and Puppet profile source that FlowerCore.Puppet vendors and installs.

Scope

  • Launch the future FlowerCore.Divoom.Tv linux-arm64 self-contained payload from /opt/flowercore/divoom-tv/FlowerCore.Divoom.Tv.
  • Prefer cage as the Wayland fullscreen compositor, with direct app launch as a fallback for development images.
  • Restart the app after HDMI hotplug with a 2 second DRM settle delay.
  • Keep all runtime state local: /var/lib/fc-divoom-tv and /var/log/fc-divoom-tv.
  • Avoid CDN/runtime fetches; the app renders the in-house Divoom scene catalog locally.

Artifact Map

Path Use
systemd/flowercore-divoom-tv.service Fullscreen Avalonia HDMI app service.
systemd/flowercore-divoom-tv-hdmi.service HDMI hotplug responder service.
systemd/99-flowercore-divoom-tv-hdmi.rules DRM udev hotplug rule.
scripts/flowercore-divoom-tv-prelaunch.sh Preflight checks and local directory creation.
scripts/flowercore-divoom-tv-launch.sh Cage-first fullscreen launcher.
scripts/flowercore-divoom-tv-hdmi-respond.sh Hotplug settle and restart script.
puppet/profile/pi/service/divoom_tv.pp Puppet profile shape to vendor into FlowerCore.Puppet.
hiera/example-divoom-tv-pi.iamworkin.lan.yaml Example node Hiera for a Divoom TV Pi.

Rollout Notes

  1. Build FlowerCore.Divoom.Tv with dotnet.exe publish -c Release -r linux-arm64 --self-contained.
  2. Stage the payload to /opt/flowercore/divoom-tv/ through the standard noc1 jump path and avoid /tmp for unprivileged Pi scratch.
  3. Vendor the profile and static files into FlowerCore.Puppet.
  4. Run Puppet noop, then apply on the target Pi.
  5. Prove deployment with systemctl is-active flowercore-divoom-tv.service, journal lines showing frames presented, and a visible HDMI display check.