Consolidate kiosk-entryway and kiosk-gene-desk config#698
Merged
Conversation
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
enabled auto-merge
July 20, 2026 03:23
This was referenced Jul 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
genebean.kiosk-hardware(hardware/networking/user/zram, parametrized bywirelessInterface) andgenebean.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 #694genebean.services.chromium-kioskgains its ownwirelessInterfaceoption, explicitly wired fromkiosk-hardware's value rather than implicitly derived fromnetworking.wireless.interfaceskiosk-gene-deskhad no fonts configured despite rendering the same CJK/emoji-heavy dashboards askiosk-entryway- now shared viachromium-kiosk.nixkiosk-backups' paths are host-agnostic; the NixOS side auto-detects impermanence and prefixes/persistaccordingly, with an assertion guarding against passing an already-prefixed pathTest plan
nix flake check --all-systemspasses--dry-activateon both hosts before any real deploysystemctl 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