Commit Graph
100 Commits
Author SHA1 Message Date
NeilClack d54637d249 Bake the channel manifest's closure instead of a pinned app version
Production builds failed CI's baseline preflight because flake.nix pinned
the app to tag 1.8 (channel.appVersion = "1.8") while the published
manifest had moved on to 1.9.

Stop pinning the app anywhere. flake.nix now fetches the channel's
published manifest at eval time (builtins.fetchurl) and bakes its
storePath verbatim, so every image carries exactly the closure RadiantWave
published to Attic and never compiles the app from source.

- flake.nix: drop the radiantwave/radiantwave-dev inputs, appInput,
  appVersion, channelVersion and baselineOutPaths; add channelAtticUrl,
  channelManifestDir and publishedApp; builders consume the published path.
- configuration.nix: wrap the published store path in a symlinkJoin so it
  can live in environment.systemPackages; add --impure to autoUpgrade
  flags and set tarball-ttl = 0 so eval reads the current manifest.
- radiantwave-updater.nix: baselinePackage (package) -> baselinePath (str),
  seeded from the exact manifest path.
- CI (build.yml): replace the version-equality preflight with a fail-fast
  check that the announced closure is in the channel's Attic; set
  tarball-ttl = 0.
- build-rpi.sh: pass --impure.
- AGENTS.md: document the manifest-driven baseline.
2026-10-07 10:28:12 -05:00
NeilClack d17def994f ci: use the same single branch-aware build workflow as dev
Replace the four per-variant prod workflows (and the leftover dev workflow)
with the shared .gitea/workflows/build.yml. Main builds on new tags or manual
dispatch; dev pushes build the dev channel. Identical file on both branches.
2026-10-04 18:04:48 -05:00
NeilClack 1ec9fd81e5 Pin moved 1.8 tag and guard the baked baseline against the published channel
build-prod-commercial.yml / build-commercial (push) Canceled after 0s
build-prod-android.yml / build-android (push) Successful in 3m44s
build-prod-kiosk.yml / build-kiosk (push) Successful in 3m39s
The radiantwave 1.8 tag was force-moved from 34c72b5 to a5a6b5b while
flake.lock still pinned the old commit, so the ISO baked a baseline that
was not the closure RadiantWave CI published to Attic. With version 1.8
overridden this could still compile RadiantWave from source instead of
substituting it.

- Update flake.lock so radiantwave?ref=refs/tags/1.8 resolves to a5a6b5b.
- Expose channelVersion/channelAtticUrl/channelManifestDir/baselineOutPaths
  from flake.nix for CI verification.
- Prod workflows: fail fast unless channel.appVersion equals the channel
  manifest version, baselineOutPaths.<system> equals the manifest storePath,
  and that store path exists in the channel's Attic cache.
2026-10-04 15:50:48 -05:00
NeilClack 6fa3c0552b Declare app version per channel and fix Android live updates
- Pin the radiantwave input to tag 1.8 and add channel.appVersion; override the package version so pure builds bake 1.8 instead of RadiantWave's 0.1.0 default.

- radiantwaveUpdaterModule gains a manifestFile arg; Raspberry Pi polls aarch64-manifest.json.

- Launch the rotated/Android kiosk through /var/lib/radiantwave/current so the live updater actually applies.

- Allow unfree in the RPi builder to match x86 and drop the impure NIXPKGS_ALLOW_UNFREE dependency.
2026-10-03 12:07:07 -05:00
NeilClack b6de748f8f Replace radiantwave-infra with IP address
Build Dev ISOs / build-dev-kiosk (push) Successful in 1m20s
Build Dev ISOs / build-dev-android (push) Successful in 1m36s
Build Dev ISOs / build-dev-commercial (push) Successful in 3m47s
2026-09-30 14:25:42 -05:00
NeilClack cac2e455ec Update output file path
Build Dev ISOs / build-dev-kiosk (push) Failing after 13s
Build Dev ISOs / build-dev-android (push) Failing after 12s
Build Dev ISOs / build-dev-commercial (push) Failing after 11s
2026-09-30 12:27:04 -05:00
NeilClack 85788ce32d Update action runner to orion-lxc
Build Dev ISOs / build-dev-kiosk (push) Failing after 1s
Build Dev ISOs / build-dev-android (push) Failing after 1s
Build Dev ISOs / build-dev-commercial (push) Failing after 1s
2026-09-30 12:04:51 -05:00
NeilClack e6138d398d Update raspberry pi builds 2026-09-30 12:04:37 -05:00
NeilClack c720c67975 Update Radiantwave 1.6
build-prod-android.yml / build-android (push) Failing after 1s
build-prod-commercial.yml / build-commercial (push) Failing after 1s
build-prod-kiosk.yml / build-kiosk (push) Failing after 2s
2026-09-11 16:03:48 -05:00
NeilClack 6e446893f3 Point main at the production RadiantWave channel and guard it in CI
build-prod-android.yml / build-android (push) Successful in 5m3s
build-prod-commercial.yml / build-commercial (push) Failing after 4m3s
build-prod-kiosk.yml / build-kiosk (push) Failing after 3m23s
The dev->main merge left the channel block in flake.nix pointing at
radiantwave-dev, so prod ISOs built from main shipped the dev app (which
versions itself by short git hash) and the updater polled the dev Attic
manifest. Restore the channel block to main values, re-pin flake.lock to
the latest radiantwave main revision, and expose channelName so the prod
build workflows can fail fast if main ever resolves to the dev channel.
2026-09-01 09:25:03 -05:00
NeilClack 0860dea6c7 Merge remote-tracking branch 'origin/main' 2026-09-01 09:24:58 -05:00
NeilClack 187581b52a Merge branch 'dev' 2026-08-28 21:00:43 -05:00
NeilClack 46cc6ef5f5 Remove temp files 2026-08-28 21:00:32 -05:00
NeilClack c18e158b69 Point dev branch at the dev RadiantWave channel
Build Dev ISOs / build-dev-kiosk (push) Successful in 4m29s
Build Dev ISOs / build-dev-android (push) Successful in 4m31s
Build Dev ISOs / build-dev-commercial (push) Successful in 4m36s
Fixes b136d17 which left the channel block on main values, so the dev
branch was building/tracking prod instead of radiantwave-dev.
2026-08-28 20:30:51 -05:00
NeilClack b136d1751b Merge -dev closures.
Build Dev ISOs / build-dev-kiosk (push) Successful in 4m55s
Build Dev ISOs / build-dev-android (push) Successful in 4m52s
Build Dev ISOs / build-dev-commercial (push) Successful in 4m53s
Consolidates 8 closures to only 4 by using a git branch selector that sets
the values for -dev variants of each closure.

Reference the 'Verifying KioskConfig builds are in the right branch' note
in Obsidian for more reference.
2026-08-28 20:15:32 -05:00
NeilClack 05bb98b107 Enable live app updater on production variants
Build Dev ISOs / build-dev-android (push) Canceled after 0s
Build Dev ISOs / build-dev-commercial (push) Canceled after 0s
Build Dev ISOs / build-dev-kiosk (push) Canceled after 1m10s
All variants now follow the same update procedure as the dev flakes;
prod variants pull the RadiantWave binary, Attic repo, and manifest
from the radiantwave channel instead of radiantwave-dev.
2026-08-28 16:37:13 -05:00
NeilClack ca89c234ab Fix updater timer not re-arming after first run
Build Dev ISOs / build-dev-kiosk (push) Successful in 4m32s
Build Dev ISOs / build-dev-commercial (push) Successful in 5m4s
Build Dev ISOs / build-dev-android (push) Successful in 5m28s
RemainAfterExit=true kept the oneshot 'active' forever, which broke the
timer's OnUnitActiveSec re-arming: the timer fired once (NEXT emptied,
Trigger n/a) and never polled again. Remove it so the service returns to
dead and the 2-min cadence keeps firing.
2026-08-28 15:59:23 -05:00
NeilClack 9a8a258228 GC-root the fetched radiantwave closure
Build Dev ISOs / build-dev-kiosk (push) Canceled after 0s
Build Dev ISOs / build-dev-android (push) Canceled after 0s
Build Dev ISOs / build-dev-commercial (push) Canceled after 0s
nix-store -r was fetching the closure without --add-root, so the swapped-in
app pointer wasn't a GC root and the running closure could be collected.
Pin it with --add-root .current-root, and root the already-current closure
on the no-op path too.
2026-08-28 15:30:20 -05:00
NeilClack 7d8cc56ba0 Fetch updater closures from cache.nixos.org as well as Attic
Build Dev ISOs / build-dev-kiosk (push) Successful in 5m1s
Build Dev ISOs / build-dev-android (push) Successful in 4m44s
Build Dev ISOs / build-dev-commercial (push) Canceled after 2m31s
nix copy --from <attic> only pulls from that single store, so nixpkgs
deps (e.g. sqlite) that Attic skips and leaves on cache.nixos.org were
missing -> 'path is not valid'. Realize the closure through the machine's
substituters so the app comes from the dev Attic and its upstream deps
resolve from cache.nixos.org, without building from source.
2026-08-28 15:25:04 -05:00
NeilClack e44626feec Update RadiantWave a9087f2
Build Dev ISOs / build-dev-kiosk (push) Successful in 5m38s
Build Dev ISOs / build-dev-android (push) Successful in 5m21s
Build Dev ISOs / build-dev-commercial (push) Successful in 5m38s
2026-08-28 13:55:59 -05:00
NeilClack 48c31d0f0c Move home systems to first build slot
Build Dev ISOs / build-dev-kiosk (push) Successful in 4m56s
Build Dev ISOs / build-dev-android (push) Successful in 4m45s
Build Dev ISOs / build-dev-commercial (push) Successful in 5m10s
2026-08-27 21:26:45 -05:00
NeilClack d661162676 Add live RadiantWave updater (dev variants)
Build Dev ISOs / build-dev-android (push) Successful in 1m48s
Build Dev ISOs / build-dev-kiosk (push) Successful in 1m37s
Build Dev ISOs / build-dev-commercial (push) Successful in 1m46s
Add a radiantwave-updater NixOS module that polls a manifest on the
fileserver and swaps the app pointer /var/lib/radiantwave/current to new
closures fetched from the dev Attic cache. Closures are fetched with
'nix copy --from', never built from source; the swap is atomic via
mv -T.

Enable it on the -dev variants only for now: the login shell launches
from /var/lib/radiantwave/current/bin/radiantwave when enabled, and from
the immutable system path otherwise, so prod behavior is unchanged. The
pointer is seeded on first boot to the baseline copy already baked into
the closure (no duplication).
2026-08-27 20:58:07 -05:00
NeilClack b8d0f59c0a Remove EDID overwrite
Build Dev ISOs / build-dev-android (push) Successful in 4m50s
Build Dev ISOs / build-dev-kiosk (push) Successful in 4m49s
Build Dev ISOs / build-dev-commercial (push) Successful in 4m45s
2026-08-26 12:30:36 -05:00
NeilClack 4e36113636 Disable EDID Override
Build Dev ISOs / build-dev-android (push) Successful in 4m53s
Build Dev ISOs / build-dev-kiosk (push) Successful in 4m51s
Build Dev ISOs / build-dev-commercial (push) Successful in 4m45s
2026-08-26 11:38:17 -05:00
NeilClack 2bf762acac Add actual EDID from Android Kiosk
Build Dev ISOs / build-dev-android (push) Successful in 5m5s
Build Dev ISOs / build-dev-kiosk (push) Successful in 4m56s
Build Dev ISOs / build-dev-commercial (push) Successful in 4m53s
2026-08-26 10:12:45 -05:00
NeilClack 46a61a8397 Remove HDMI-A-1
Build Dev ISOs / build-dev-commercial (push) Successful in 4m17s
Build Dev ISOs / build-dev-android (push) Successful in 4m23s
Build Dev ISOs / build-dev-kiosk (push) Successful in 4m56s
HDMI-A-1 refers to the HDMI port closest to the power cable.
In all models, we end up connecting HDMI to port 2.
HDMI-A-1 was likely taking over, becuase it suddenly had a valid
EDID assigned, indicating 'a monitor is connected here'
2026-08-25 22:26:00 -05:00
NeilClack c1ad4a9767 Remove archive steps...
Build Dev ISOs / build-dev-android (push) Successful in 4m41s
Build Dev ISOs / build-dev-kiosk (push) Successful in 4m34s
Build Dev ISOs / build-dev-commercial (push) Successful in 5m6s
2026-08-25 21:49:09 -05:00
NeilClack 47dc7b8964 Update dev builds to build each -dev variant
Build Dev ISOs / build-dev-kiosk (push) Failing after 3m18s
Build Dev ISOs / build-dev-android (push) Canceled after 0s
Build Dev ISOs / build-dev-commercial (push) Canceled after 2m20s
2026-08-25 21:43:20 -05:00
NeilClack dfa7320a37 Test 1 - EDID Spoofing for Android 4K
Build Dev ISO / build-dev-iso (push) Canceled after 2m40s
2026-08-25 21:40:56 -05:00
NeilClack 87fca854f4 Update radiantwave - rotated
Build Dev ISO / build-dev-iso (push) Successful in 4m13s
2026-08-25 11:31:56 -05:00
NeilClack c8298a128f Update Radiantwave 1.3
Build Dev ISO / build-dev-iso (push) Successful in 4m38s
Stretch scroller screen on vertical displays. Test 1
2026-08-25 11:00:28 -05:00
NeilClack 036c437430 Update RadiantWave 1.2
Build Dev ISO / build-dev-iso (push) Successful in 4m31s
2026-08-25 10:33:59 -05:00
NeilClack 8775fcfb24 Update workflows to run automatically on push to main
Build Dev ISO / build-dev-iso (push) Canceled after 0s
2026-08-25 08:09:26 -05:00
NeilClack f900585702 Update Radiantwave 1.2
Build Dev ISO / build-dev-iso (push) Successful in 4m51s
2026-08-25 08:01:13 -05:00
NeilClack 16b8e3aeb9 Update Radiantwave 1.1
Build Dev ISO / build-dev-iso (push) Failing after 3m37s
2026-08-25 06:59:10 -05:00
NeilClack 45b4d7aa95 Update radiantwave
Build Dev ISO / build-dev-iso (push) Successful in 4m21s
2026-08-23 21:20:38 -05:00
NeilClack bd9146e641 Allow kiosk to restart getty@tty1 via scoped polkit rule
Build Dev ISO / build-dev-iso (push) Successful in 4m23s
The RadiantWave app can now apply pending updates by restarting its own
TTY session (plain systemctl, no sudo): getty re-autologins kiosk and
the login shell relaunches cage + app from the new generation.

Also drop the cleanRadiantFiles activation script.
2026-08-23 17:54:01 -05:00
NeilClack 9b0036b4da Update RadiantWave ef723b2
Build Dev ISO / build-dev-iso (push) Successful in 4m48s
2026-08-23 17:33:57 -05:00
NeilClack d26cec2a53 fix: broken whitespace guard in archive-images.sh
Build Dev ISO / build-dev-iso (push) Successful in 4m19s
The case bracket expression [\ space\'\"] listed the letters s,p,a,c,e
as a character set instead of matching whitespace, rejecting every normal
path. Use the POSIX [[:space:]] class.
2026-08-23 15:55:05 -05:00
NeilClack 2e862c13a8 fix: replace fragile ssh archive one-liners with tools/archive-images.sh
Build Dev ISO / build-dev-iso (push) Failing after 3m18s
The inline find -exec broke through the double shell hop (the remote
shell consumed the ; separator). The script pipes its payload to remote
bash via stdin, tolerates zero matches, and fails loudly on missing
directories or failed moves.
2026-08-23 15:45:11 -05:00
NeilClack 84ec13b1f9 ci: restore dev ISO workflow, auto-build on dev push, use Attic
Build Dev ISO / build-dev-iso (push) Failing after 3m19s
2026-08-23 15:22:34 -05:00
NeilClack 588f0e4aa1 ci: pull closures from Attic caches in prod builds 2026-08-23 15:22:34 -05:00
NeilClack 46384e6cf7 Fix attic upload
build-dev / nix-build (push) Failing after 1s
2026-08-23 15:07:22 -05:00
NeilClack 6951d35310 fix: make manual dev checkout work (fetch all branch tips, drop bad cd) 2026-08-23 14:53:32 -05:00
NeilClack 7778da3867 fix: tolerate empty archive globs; clone dispatched ref in dev workflow 2026-08-23 14:49:44 -05:00
NeilClack 59e9f7ce29 Update RadiantWave and add Attic cache 2026-08-23 14:18:48 -05:00
NeilClack 3ec72c8479 Bring radiantwave up to date + dev 2026-08-23 11:24:47 -05:00
NeilClack 20d91df9eb Revert RadiantWave for testing the new update configuration 2026-08-23 11:23:21 -05:00
NeilClack 65a6b256f9 Fix dev/prod split and dev ISOs; consolidate zero-touch installer
- Wire -dev variants to the radiantwave-dev input (?ref=dev); prod keeps main
- Fix android-dev upgradeFlakeRef (was upgrading into production config)
- Parameterize one installer module (zero-touch-installer.nix); replace the
  four near-duplicate ISO configs; mkIso pairs each ISO with its closure +
  disk layout, fixing commercial-dev/android-dev ISO eval errors
- Add missing packages outputs (commercial-dev, android-dev, rpi, rpi-dev)
- Set networking.hostName + system.configurationRevision per variant
- Remove gitea access token and dead netrc/JWT config (repos are public)
- Drop flake.lock update step from CI (lock updates are manual)
- Refresh AGENTS.md: variants/ISO tables, facter report procedure, gotchas
2026-08-23 09:58:46 -05:00
NeilClack 64b2a9cfc4 Shrink splash screen 2026-08-23 08:20:10 -05:00
NeilClack 875f3da03d Add tools 2026-08-22 17:07:54 -05:00
NeilClack 9965e30152 Fix git urls 2026-08-22 17:07:47 -05:00
NeilClack a01c3d5521 Update RadiantWave 2026-08-22 16:29:56 -05:00
NeilClack 33c9ceefb0 Update RadiantWave
Enables the naming of audio files by editing audio file names in new_checksums.md5
2026-08-21 10:04:40 -05:00
NeilClack c9743de7bb Update RadiantWave 2026-08-21 09:54:11 -05:00
NeilClack 6ddf004e95 Update RadiantWave to remove WiFi Gate 2026-08-18 23:39:22 -04:00
NeilClack 439e646170 Remove archive command 2026-08-18 23:02:32 -04:00
NeilClack f8cb1746af Release RadiantWave (C++) 2026-08-18 04:44:58 -05:00
NeilClack a4f4d17d6e Add archive step to prod workflows; rename radiantwave-iso to radiantwave-home 2026-08-17 22:51:11 -05:00
NeilClack e7a5ffa290 Update Radiantwave to ec6b766 2026-08-17 22:47:16 -05:00
NeilClack 553b06ea92 Fix closure naming' 2026-08-17 22:45:18 -05:00
NeilClack 8e8da490e4 Update radiantwave reference and add dev variants to all images 2026-08-17 22:44:14 -05:00
NeilClack 75cce42de5 Add cleanup command for fileserver 2026-08-17 22:23:37 -05:00
NeilClack 572ab76100 Add name 2026-08-17 22:13:01 -05:00
NeilClack d37c794be4 Fix repository pointers 2026-08-17 22:08:47 -05:00
NeilClack b26081046e Update RadiantWave
build-dev.yml / update-and-build (push) Canceled after 0s
2026-08-17 21:35:20 -05:00
NeilClack 87367dab04 Temporarily remove healthcheck
build-dev.yml / update-and-build (push) Canceled after 1m40s
Healthcheck may be failing for reasons not related to a bad binary, preventing a good binary from booting.
2026-08-17 19:53:06 -05:00
NeilClack 0a35c97379 Remove user password 2026-08-17 19:49:15 -05:00
NeilClack 2fb99175f7 Re-size Plymouth image to 1920x1080 2026-08-17 19:49:01 -05:00
NeilClack 02cde0fabb fix: wait for Wayland compositor before rotating display, add logging
build-dev.yml / update-and-build (push) Canceled after 0s
2026-08-17 14:00:14 -05:00
NeilClack 143119477f ci: split prod builds into separate manually-triggered workflows
build-dev.yml / update-and-build (push) Canceled after 3m26s
2026-08-17 13:57:14 -05:00
NeilClack b584016db2 Remove unused build steps 2026-08-17 13:36:37 -05:00
NeilClack e09758a70e fix: switch radiantwave inputs to SSH for legacy Go repo
build-dev.yml / update-and-build (push) Failing after 4m9s
2026-08-17 12:54:06 -05:00
NeilClack 14463ad99b Just make RadiantWave-Legacy public
build-dev.yml / update-and-build (push) Failing after 9s
For now, to get builds working.
2026-08-17 12:52:11 -05:00
NeilClack 027d1a628f Update token
build-dev.yml / update-and-build (push) Failing after 8s
2026-08-17 12:50:20 -05:00
NeilClack fb2f861258 Revert back to Legacy Radiant Wave
build-dev.yml / update-and-build (push) Failing after 10s
2026-08-17 12:48:22 -05:00
NeilClack 974a610518 Update dev images to new radiantwave
build-dev.yml / update-and-build (push) Failing after 4m34s
2026-08-17 12:43:57 -05:00
NeilClack c71b5ebc84 fix: use SSH clone instead of actions/checkout
build-dev.yml / update-and-build (push) Failing after 3m12s
2026-08-17 12:18:31 -05:00
NeilClack 6656c44de4 fix: disable persist-credentials on checkout (public repo)
build-dev.yml / update-and-build (push) Failing after 28s
2026-08-17 12:17:34 -05:00
NeilClack 2788d27fdc fix: remove checkout token (repo is public)
build-dev.yml / update-and-build (push) Failing after 32s
2026-08-17 12:13:59 -05:00
NeilClack 72a564c9ef fix: add checkout token, adjust workflow triggers
build-dev.yml / update-and-build (push) Failing after 1s
2026-08-17 12:13:40 -05:00
NeilClack 2185792cf4 fix: use actions/checkout@v4 (v6 does not exist)
build-prod.yml / update-and-build (push) Canceled after 16s
2026-08-17 12:11:58 -05:00
NeilClack 3b9c501aa8 Fix actions URLs
build-prod.yml / update-and-build (push) Canceled after 6s
2026-08-17 12:07:10 -05:00
NeilClack 2abdfa2b9b revert upgradeFlakeRef URLs to KioskConfig to match renamed repo
build-prod.yml / update-and-build (push) Canceled after 0s
2026-08-17 11:02:19 -05:00
NeilClack 0cb1337f18 add radiantwave-legacy input with auth token, update flake.lock 2026-08-17 10:57:16 -05:00
NeilClack 50176d8fd5 repoint production to radiantwave-legacy, dev to radiantwave (ref=main)
- Replace radiantwave-dev input with radiantwave-legacy
- Production configs (kiosk, commercial, android, rpi) now use radiantwave-legacy
- Dev configs (kiosk-dev, commercial-dev, rpi-dev) now use radiantwave (ref=main)
- Fix KioskConfig -> kioskconfig case mismatch in all upgradeFlakeRef URLs
2026-08-17 10:51:05 -05:00
NeilClack 06c2a7cd0a Add plan to migrate to DRM
build-prod.yml / update-and-build (push) Canceled after 0s
2026-08-17 10:44:36 -05:00
NeilClack 240be2540f Update Radiantwave
build-prod.yml / update-and-build (push) Canceled after 0s
2026-08-08 01:44:03 -05:00
NeilClack e3120f27c2 Pull back from radiantwave-cpp-dev to radiantwave-dev 2026-08-08 00:02:09 -05:00
NeilClack 8abb028c82 fix wpctl volume pinning 2026-08-07 23:58:25 -05:00
NeilClack 1e0380a8c4 remove automated builds, favoring intentional builds 2026-08-07 23:58:02 -05:00
NeilClack 4580319f19 Update radiantwave-dev 2026-08-07 22:17:52 -05:00
NeilClack 42b68842ff Fix various small issues 2026-08-07 22:17:24 -05:00
NeilClack 835e1b0f0c Remove gitea authentication setup 2026-08-07 20:41:09 -05:00
NeilClack 2e3d88b57d Update Plymount dontUnpack = true; 2026-08-07 17:47:04 -05:00
NeilClack e0a95e015c Attempt Gitea auth 2026-08-07 17:41:24 -05:00
NeilClack 06f02d49b9 update radiantwave to radiatnwave-dev 2026-08-07 17:39:26 -05:00
NeilClack 8d388eda13 Update iso name 2026-08-07 17:36:38 -05:00
NeilClack d0ecc74dc8 Rebuild build-dev.yml workflow based on build-prod.yml 2026-08-07 17:35:38 -05:00
NeilClack 50a1f3e99d Update repository location 2026-08-07 17:19:04 -05:00