Skip to content

Consolidate kiosk-entryway and kiosk-gene-desk config#698

Merged
genebean merged 1 commit into
mainfrom
feat/kiosk-consolidation
Jul 20, 2026
Merged

Consolidate kiosk-entryway and kiosk-gene-desk config#698
genebean merged 1 commit into
mainfrom
feat/kiosk-consolidation

Conversation

@genebean

Copy link
Copy Markdown
Owner

Summary

  • Adds genebean.kiosk-hardware (hardware/networking/user/zram, parametrized by wirelessInterface) and genebean.services.kiosk-backups (restic disaster-recovery policy) so both kiosks share one definition instead of ~95% duplication below the chromium/cage layer already extracted in feat(genebean): extract chromium-kiosk service module #694
  • genebean.services.chromium-kiosk gains its own wirelessInterface option, explicitly wired from kiosk-hardware's value rather than implicitly derived from networking.wireless.interfaces
  • Closes a real gap: kiosk-gene-desk had no fonts configured despite rendering the same CJK/emoji-heavy dashboards as kiosk-entryway - now shared via chromium-kiosk.nix
  • kiosk-backups' paths are host-agnostic; the NixOS side auto-detects impermanence and prefixes /persist accordingly, with an assertion guarding against passing an already-prefixed path

Test plan

  • nix flake check --all-systems passes
  • --dry-activate on both hosts before any real deploy
  • Real deploy via deploy-rs to both hosts, confirmed via magic-rollback
  • Post-deploy health checks: systemctl is-system-running, cage-tty1/dbus healthy, restic timers scheduled, kiosk-gene-desk's backup paths unchanged after migrating to the new module

🤖 Generated with Claude Code

https://claude.ai/code/session_018iUoDbZzHLBGu7jD3pVGz2

Both kiosks were ~95% duplicated below the chromium/cage layer already
extracted in PR #694. Adds two new genebean modules following established
patterns:

- genebean.kiosk-hardware (top-level meta-module, same tier as
  genebean.plasma/genebean.ports - not a program or service): the
  byte-identical hardware/networking/user/zram boilerplate both hosts
  shared, parametrized by a single wirelessInterface option.
- genebean.services.kiosk-backups: the restic disaster-recovery policy
  (paths, pre-reinstall-cleanup, kiosk-restic-full-restore wiring)
  kiosk-gene-desk already had, now shared - kiosk-gene-desk migrates to
  it, kiosk-entryway gains it for the first time. Paths are host-agnostic
  (no /persist prefix); the NixOS side detects impermanence
  (environment.persistence."/persist".enable) and prefixes automatically,
  enforced by an assertion against passing an already-prefixed path.

genebean.services.chromium-kiosk gains its own wirelessInterface option
(explicitly wired from kiosk-hardware's value at each call site) instead
of implicitly deriving from networking.wireless.interfaces, avoiding two
places setting the same value.

Also closes a real gap: kiosk-gene-desk had no fonts configured at all
despite rendering the same CJK/emoji-heavy Home Assistant dashboards as
kiosk-entryway - added to chromium-kiosk.nix itself so it applies to any
host enabling the kiosk service, not just these two.

nixpkgs.overlays (the makeModulesClosure allowMissing fix) stays per-host
rather than moving into kiosk-hardware - it helps construct `pkgs` itself,
so gating it behind a home-manager-sourced cfg.enable check creates a
genuine circular dependency (confirmed via a real "infinite recursion"
eval error when first tried).

Verified via deploy-rs on both hosts: dry-activate, real deploy, and
post-deploy health checks (system running, cage-tty1/dbus healthy, restic
timers scheduled, backup paths unchanged on kiosk-gene-desk).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018iUoDbZzHLBGu7jD3pVGz2
@genebean
genebean enabled auto-merge July 20, 2026 03:23
@genebean
genebean merged commit 3afabf0 into main Jul 20, 2026
2 checks passed
@genebean
genebean deleted the feat/kiosk-consolidation branch July 20, 2026 03:51
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