feat(deploy): services.bitspire.nfc.enable — declare the reader per machine
pcscd was enabled in hardware/batm3.nix and hardware/upboard.nix, which cannot express "is a reader fitted": upboard.nix is shared by sintra (HID Global OMNIKEY 5022) and tejo (nothing fitted), so tejo inherited pcscd it has no use for, while the douro — with its own hardware file — got none and wedged on every boot. Make it a machine capability instead. services.bitspire.nfc.enable owns pcscd, the two polkit rules and the wedge-recovery unit, and hands the app a BITSPIRE_NFC_ENABLED flag so it doesn't initialise nfc-pcsc at all on a machine with no reader. Per-model truth lives in nfcReaderForModel in flake.nix next to fiatCodeForModel and upgradeWindowForModel, since a shared hardware file can't answer the question. batm3 and sintra are true; douro and tejo flip to true when readers are fitted. The flag goes through the unit's Environment rather than /var/lib/bitspire/.env, because .env is only written when absent — a machine provisioned months ago would never pick up a new value.
This commit is contained in:
parent
ce80d75f95
commit
bb2ad39628
5 changed files with 137 additions and 95 deletions
16
flake.nix
16
flake.nix
|
|
@ -144,6 +144,21 @@
|
|||
sintra = "04:00 Europe/Paris";
|
||||
};
|
||||
|
||||
# Which models have a contactless (CCID) card reader fitted, for Bolt
|
||||
# Card taps. Same keying caveat as the two tables above.
|
||||
#
|
||||
# This can't live in a hardware file: hardware/upboard.nix is shared by
|
||||
# sintra (HID Global OMNIKEY 5022) and tejo (nothing fitted), so before
|
||||
# this table the tejo inherited pcscd it had no use for while the douro,
|
||||
# with its own hardware file, got none and wedged on boot — nfc-pcsc
|
||||
# busy-spins Electron's main thread when pcscd is absent (see
|
||||
# apps/machine/electron/nfc-service.ts). Flip a model to true when a
|
||||
# reader is actually fitted; douro and tejo are planned.
|
||||
nfcReaderForModel = {
|
||||
batm3 = true; # Feitian KP382
|
||||
sintra = true; # HID Global OMNIKEY 5022
|
||||
};
|
||||
|
||||
lib = nixpkgs.lib;
|
||||
|
||||
# Helper to create a live USB NixOS config for a specific machine model
|
||||
|
|
@ -200,6 +215,7 @@
|
|||
services.bitspire = {
|
||||
enable = true;
|
||||
appDir = "${atm-app}";
|
||||
nfc.enable = nfcReaderForModel.${machineModel} or false;
|
||||
};
|
||||
|
||||
# Operator TUI and CLI tools
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue