refactor(config): rename VITE_LAMASSU_* machine-config env vars to VITE_BITSPIRE_*
MACHINE_MODEL, FIAT_CODE, VALIDATOR_DEVICE, DISPENSER_DEVICE and CASSETTES carried the old brand in their names. Renamed everywhere they are read (device.ts, electron/main.ts), written (flake.nix, mkAtmApp.nix, live.nix, provision-atm.sh, factory-reset-atm.sh) and documented (.env.example, docs/device-configuration.md). No compatibility fallback in code: the machine reads VITE_BITSPIRE_* and nothing else. The deployed .env files are the one place the old names persist — sintra's /var/lib/bitspire/.env holds all three keys today — and the machine reads MACHINE_MODEL / FIAT_CODE / CASSETTES from that file on every boot. Renaming the keys in code alone would boot a live machine on preset defaults (wrong bays, wrong fiat) at the next nightly pull. So configuration.nix gains an activation script, beside the existing lamassu→bitspire user migration, that rewrites VITE_LAMASSU_* → VITE_BITSPIRE_* in that file. Idempotent; runs before bitspire.service starts.
This commit is contained in:
parent
d569e4013e
commit
bf2b9427aa
10 changed files with 68 additions and 52 deletions
|
|
@ -6,17 +6,17 @@
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
# Machine model preset (sintra, gaia, or custom)
|
# Machine model preset (sintra, gaia, or custom)
|
||||||
VITE_LAMASSU_MACHINE_MODEL=sintra
|
VITE_BITSPIRE_MACHINE_MODEL=sintra
|
||||||
|
|
||||||
# Fiat currency code (ISO 4217)
|
# Fiat currency code (ISO 4217)
|
||||||
VITE_LAMASSU_FIAT_CODE=USD
|
VITE_BITSPIRE_FIAT_CODE=USD
|
||||||
|
|
||||||
# Custom device paths (optional - uses preset defaults if not set)
|
# Custom device paths (optional - uses preset defaults if not set)
|
||||||
# VITE_LAMASSU_VALIDATOR_DEVICE=/dev/ttyJ5
|
# VITE_BITSPIRE_VALIDATOR_DEVICE=/dev/ttyJ5
|
||||||
# VITE_LAMASSU_DISPENSER_DEVICE=/dev/ttyJ7
|
# VITE_BITSPIRE_DISPENSER_DEVICE=/dev/ttyJ7
|
||||||
|
|
||||||
# Cassette configuration (optional - JSON array)
|
# Cassette configuration (optional - JSON array)
|
||||||
# VITE_LAMASSU_CASSETTES='[{"denomination":20,"count":100}]'
|
# VITE_BITSPIRE_CASSETTES='[{"denomination":20,"count":100}]'
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# LNbits Connection (dev override — normally seed-provided) — nostr-native-transport
|
# LNbits Connection (dev override — normally seed-provided) — nostr-native-transport
|
||||||
|
|
|
||||||
|
|
@ -355,11 +355,11 @@ ipcMain.handle('get-config', () => {
|
||||||
appId: process.env.VITE_APP_ID || '',
|
appId: process.env.VITE_APP_ID || '',
|
||||||
|
|
||||||
// Hardware configuration
|
// Hardware configuration
|
||||||
machineModel: process.env.VITE_LAMASSU_MACHINE_MODEL || 'sintra',
|
machineModel: process.env.VITE_BITSPIRE_MACHINE_MODEL || 'sintra',
|
||||||
fiatCode: process.env.VITE_LAMASSU_FIAT_CODE || 'USD',
|
fiatCode: process.env.VITE_BITSPIRE_FIAT_CODE || 'USD',
|
||||||
validatorDevice: process.env.VITE_LAMASSU_VALIDATOR_DEVICE,
|
validatorDevice: process.env.VITE_BITSPIRE_VALIDATOR_DEVICE,
|
||||||
dispenserDevice: process.env.VITE_LAMASSU_DISPENSER_DEVICE,
|
dispenserDevice: process.env.VITE_BITSPIRE_DISPENSER_DEVICE,
|
||||||
cassettes: process.env.VITE_LAMASSU_CASSETTES,
|
cassettes: process.env.VITE_BITSPIRE_CASSETTES,
|
||||||
// SECURITY: In production (packaged app), mock fallback is always disabled.
|
// SECURITY: In production (packaged app), mock fallback is always disabled.
|
||||||
// Only allow it in development mode, and only when explicitly opted in via env.
|
// Only allow it in development mode, and only when explicitly opted in via env.
|
||||||
allowMockFallback: isDev && process.env.VITE_ALLOW_MOCK_FALLBACK === 'true',
|
allowMockFallback: isDev && process.env.VITE_ALLOW_MOCK_FALLBACK === 'true',
|
||||||
|
|
@ -836,7 +836,7 @@ function startCommandPoller(): void {
|
||||||
const result = await halInstance.dispenseCash(parsed.bills)
|
const result = await halInstance.dispenseCash(parsed.bills)
|
||||||
const txid = `manual-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`
|
const txid = `manual-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`
|
||||||
const totalFiatCents = parsed.bills.reduce((s, b) => s + b.denomination * b.count * 100, 0)
|
const totalFiatCents = parsed.bills.reduce((s, b) => s + b.denomination * b.count * 100, 0)
|
||||||
const fiatCode = process.env.VITE_LAMASSU_FIAT_CODE || 'USD'
|
const fiatCode = process.env.VITE_BITSPIRE_FIAT_CODE || 'USD'
|
||||||
|
|
||||||
recordTransaction({
|
recordTransaction({
|
||||||
txid,
|
txid,
|
||||||
|
|
@ -908,19 +908,19 @@ app.whenReady().then(() => {
|
||||||
if (existing.length === 0) {
|
if (existing.length === 0) {
|
||||||
let seedCassettes: { denomination: number; count: number }[] = []
|
let seedCassettes: { denomination: number; count: number }[] = []
|
||||||
|
|
||||||
// Priority 1: explicit VITE_LAMASSU_CASSETTES env var
|
// Priority 1: explicit VITE_BITSPIRE_CASSETTES env var
|
||||||
const cassettesJson = process.env.VITE_LAMASSU_CASSETTES
|
const cassettesJson = process.env.VITE_BITSPIRE_CASSETTES
|
||||||
if (cassettesJson) {
|
if (cassettesJson) {
|
||||||
try {
|
try {
|
||||||
seedCassettes = JSON.parse(cassettesJson)
|
seedCassettes = JSON.parse(cassettesJson)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn('[Electron] Failed to parse VITE_LAMASSU_CASSETTES:', e)
|
console.warn('[Electron] Failed to parse VITE_BITSPIRE_CASSETTES:', e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Priority 2: default presets per model
|
// Priority 2: default presets per model
|
||||||
if (seedCassettes.length === 0) {
|
if (seedCassettes.length === 0) {
|
||||||
const model = process.env.VITE_LAMASSU_MACHINE_MODEL || 'sintra'
|
const model = process.env.VITE_BITSPIRE_MACHINE_MODEL || 'sintra'
|
||||||
const presets: Record<string, { denomination: number; count: number }[]> = {
|
const presets: Record<string, { denomination: number; count: number }[]> = {
|
||||||
douro: [
|
douro: [
|
||||||
{ denomination: 100, count: 50 },
|
{ denomination: 100, count: 50 },
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
*
|
*
|
||||||
* Configuration priority (highest to lowest):
|
* Configuration priority (highest to lowest):
|
||||||
* 1. Runtime overrides (passed directly to functions)
|
* 1. Runtime overrides (passed directly to functions)
|
||||||
* 2. Environment variables (LAMASSU_*)
|
* 2. Environment variables (BITSPIRE_*)
|
||||||
* 3. Machine preset defaults
|
* 3. Machine preset defaults
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -143,7 +143,7 @@ export const MACHINE_PRESETS: Record<MachineModel, Omit<DeviceConfig, 'fiatCode'
|
||||||
// stable udev symlink /dev/ttyMEI (batm3.nix, serial A9YW78OC). The old
|
// stable udev symlink /dev/ttyMEI (batm3.nix, serial A9YW78OC). The old
|
||||||
// /dev/ttyACM0 default assumed a CDC-ACM BNR; this hardware enumerates as
|
// /dev/ttyACM0 default assumed a CDC-ACM BNR; this hardware enumerates as
|
||||||
// ttyUSB* instead, so ACM0 never existed and cash-in was silently
|
// ttyUSB* instead, so ACM0 never existed and cash-in was silently
|
||||||
// disabled ("[HAL] No validator"). Per-box override: VITE_LAMASSU_VALIDATOR_DEVICE.
|
// disabled ("[HAL] No validator"). Per-box override: VITE_BITSPIRE_VALIDATOR_DEVICE.
|
||||||
device: '/dev/ttyMEI',
|
device: '/dev/ttyMEI',
|
||||||
},
|
},
|
||||||
dispenser: {
|
dispenser: {
|
||||||
|
|
@ -152,7 +152,7 @@ export const MACHINE_PRESETS: Record<MachineModel, Omit<DeviceConfig, 'fiatCode'
|
||||||
// /dev/ttyF56 (batm3.nix, serial DDDLb103Y23). Avoids the raw
|
// /dev/ttyF56 (batm3.nix, serial DDDLb103Y23). Avoids the raw
|
||||||
// /dev/ttyUSB0, which is enumeration-order dependent and could point at
|
// /dev/ttyUSB0, which is enumeration-order dependent and could point at
|
||||||
// the wrong adapter after a re-plug/reboot. Per-box override:
|
// the wrong adapter after a re-plug/reboot. Per-box override:
|
||||||
// VITE_LAMASSU_DISPENSER_DEVICE.
|
// VITE_BITSPIRE_DISPENSER_DEVICE.
|
||||||
device: '/dev/ttyF56',
|
device: '/dev/ttyF56',
|
||||||
cassettes: [
|
cassettes: [
|
||||||
{ denomination: 20, count: 400 },
|
{ denomination: 20, count: 400 },
|
||||||
|
|
@ -214,31 +214,31 @@ export function getDeviceConfig(
|
||||||
* Load device configuration from environment variables
|
* Load device configuration from environment variables
|
||||||
*
|
*
|
||||||
* Supported variables:
|
* Supported variables:
|
||||||
* - LAMASSU_MACHINE_MODEL: Machine model preset (sintra, gaia, custom)
|
* - BITSPIRE_MACHINE_MODEL: Machine model preset (sintra, gaia, custom)
|
||||||
* - LAMASSU_FIAT_CODE: Fiat currency code (USD, EUR, etc.)
|
* - BITSPIRE_FIAT_CODE: Fiat currency code (USD, EUR, etc.)
|
||||||
* - LAMASSU_VALIDATOR_DEVICE: Bill validator serial device path
|
* - BITSPIRE_VALIDATOR_DEVICE: Bill validator serial device path
|
||||||
* - LAMASSU_DISPENSER_DEVICE: Bill dispenser serial device path
|
* - BITSPIRE_DISPENSER_DEVICE: Bill dispenser serial device path
|
||||||
* - LAMASSU_CASSETTES: JSON array of cassette configs
|
* - BITSPIRE_CASSETTES: JSON array of cassette configs
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
* LAMASSU_MACHINE_MODEL=sintra
|
* BITSPIRE_MACHINE_MODEL=sintra
|
||||||
* LAMASSU_FIAT_CODE=USD
|
* BITSPIRE_FIAT_CODE=USD
|
||||||
* LAMASSU_CASSETTES='[{"denomination":20,"count":100},{"denomination":50,"count":50}]'
|
* BITSPIRE_CASSETTES='[{"denomination":20,"count":100},{"denomination":50,"count":50}]'
|
||||||
*/
|
*/
|
||||||
export function loadDeviceConfigFromEnv(): DeviceConfig {
|
export function loadDeviceConfigFromEnv(): DeviceConfig {
|
||||||
const model = (import.meta.env.VITE_LAMASSU_MACHINE_MODEL as MachineModel) || 'sintra'
|
const model = (import.meta.env.VITE_BITSPIRE_MACHINE_MODEL as MachineModel) || 'sintra'
|
||||||
const fiatCode = import.meta.env.VITE_LAMASSU_FIAT_CODE || 'USD'
|
const fiatCode = import.meta.env.VITE_BITSPIRE_FIAT_CODE || 'USD'
|
||||||
|
|
||||||
const overrides: Partial<DeviceConfig> = {}
|
const overrides: Partial<DeviceConfig> = {}
|
||||||
|
|
||||||
// Validator device override (preserve validator type from preset)
|
// Validator device override (preserve validator type from preset)
|
||||||
const validatorDevice = import.meta.env.VITE_LAMASSU_VALIDATOR_DEVICE
|
const validatorDevice = import.meta.env.VITE_BITSPIRE_VALIDATOR_DEVICE
|
||||||
if (validatorDevice) {
|
if (validatorDevice) {
|
||||||
overrides.validator = { type: MACHINE_PRESETS[model].validator.type, device: validatorDevice }
|
overrides.validator = { type: MACHINE_PRESETS[model].validator.type, device: validatorDevice }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dispenser device override
|
// Dispenser device override
|
||||||
const dispenserDevice = import.meta.env.VITE_LAMASSU_DISPENSER_DEVICE
|
const dispenserDevice = import.meta.env.VITE_BITSPIRE_DISPENSER_DEVICE
|
||||||
if (dispenserDevice) {
|
if (dispenserDevice) {
|
||||||
overrides.dispenser = {
|
overrides.dispenser = {
|
||||||
type: MACHINE_PRESETS[model].dispenser.type,
|
type: MACHINE_PRESETS[model].dispenser.type,
|
||||||
|
|
@ -248,7 +248,7 @@ export function loadDeviceConfigFromEnv(): DeviceConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cassettes override (JSON)
|
// Cassettes override (JSON)
|
||||||
const cassettesJson = import.meta.env.VITE_LAMASSU_CASSETTES
|
const cassettesJson = import.meta.env.VITE_BITSPIRE_CASSETTES
|
||||||
if (cassettesJson) {
|
if (cassettesJson) {
|
||||||
try {
|
try {
|
||||||
const cassettes = JSON.parse(cassettesJson) as CassetteConfig[]
|
const cassettes = JSON.parse(cassettesJson) as CassetteConfig[]
|
||||||
|
|
@ -262,7 +262,7 @@ export function loadDeviceConfigFromEnv(): DeviceConfig {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('[Config] Failed to parse LAMASSU_CASSETTES:', e)
|
console.error('[Config] Failed to parse BITSPIRE_CASSETTES:', e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -479,6 +479,22 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# In-place rename migration: VITE_LAMASSU_* → VITE_BITSPIRE_* in the
|
||||||
|
# provisioned .env. The machine reads MACHINE_MODEL / FIAT_CODE / CASSETTES
|
||||||
|
# from this file on every boot; renaming the keys in code without renaming
|
||||||
|
# them here would boot a live machine on preset defaults (wrong bays, wrong
|
||||||
|
# fiat) at the next nightly pull. Idempotent: a migrated file has nothing
|
||||||
|
# left to match. Runs before bitspire.service starts.
|
||||||
|
system.activationScripts.bitspire-env-migration = {
|
||||||
|
deps = [ "users" ];
|
||||||
|
text = ''
|
||||||
|
if [ -f /var/lib/bitspire/.env ] && grep -q '^VITE_LAMASSU_' /var/lib/bitspire/.env; then
|
||||||
|
sed -i 's/^VITE_LAMASSU_/VITE_BITSPIRE_/' /var/lib/bitspire/.env
|
||||||
|
echo "bitspire: migrated VITE_LAMASSU_* keys in /var/lib/bitspire/.env"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
# Journal configuration
|
# Journal configuration
|
||||||
services.journald = {
|
services.journald = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,8 @@ ENV=/var/lib/bitspire/.env
|
||||||
DB=/var/lib/bitspire/state.db
|
DB=/var/lib/bitspire/state.db
|
||||||
|
|
||||||
# Preserve model + fiat from the existing .env (fall back to sintra/EUR).
|
# Preserve model + fiat from the existing .env (fall back to sintra/EUR).
|
||||||
model=$(grep -E '^VITE_LAMASSU_MACHINE_MODEL=' "$ENV" 2>/dev/null | cut -d= -f2- || true)
|
model=$(grep -E '^VITE_BITSPIRE_MACHINE_MODEL=' "$ENV" 2>/dev/null | cut -d= -f2- || true)
|
||||||
fiat=$(grep -E '^VITE_LAMASSU_FIAT_CODE=' "$ENV" 2>/dev/null | cut -d= -f2- || true)
|
fiat=$(grep -E '^VITE_BITSPIRE_FIAT_CODE=' "$ENV" 2>/dev/null | cut -d= -f2- || true)
|
||||||
model=${model:-sintra}
|
model=${model:-sintra}
|
||||||
fiat=${fiat:-EUR}
|
fiat=${fiat:-EUR}
|
||||||
|
|
||||||
|
|
@ -52,8 +52,8 @@ rm -f "$DB" "$DB-wal" "$DB-shm"
|
||||||
|
|
||||||
# Truncate .env to the minimal image-baked template.
|
# Truncate .env to the minimal image-baked template.
|
||||||
cat > "$ENV" <<EOF
|
cat > "$ENV" <<EOF
|
||||||
VITE_LAMASSU_MACHINE_MODEL=$model
|
VITE_BITSPIRE_MACHINE_MODEL=$model
|
||||||
VITE_LAMASSU_FIAT_CODE=$fiat
|
VITE_BITSPIRE_FIAT_CODE=$fiat
|
||||||
VITE_SPIRE_SEED=
|
VITE_SPIRE_SEED=
|
||||||
ELECTRON_FORCE_PROD=1
|
ELECTRON_FORCE_PROD=1
|
||||||
DISPLAY=:0
|
DISPLAY=:0
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,8 @@ let
|
||||||
# mask its source). VITE_SPIRE_SEED is written by the wizard / provision-atm.sh;
|
# mask its source). VITE_SPIRE_SEED is written by the wizard / provision-atm.sh;
|
||||||
# the dev-only VITE_ATM_PRIVATE_KEY fallback is omitted on purpose.
|
# the dev-only VITE_ATM_PRIVATE_KEY fallback is omitted on purpose.
|
||||||
envTemplate = pkgs.writeText "bitspire-env" ''
|
envTemplate = pkgs.writeText "bitspire-env" ''
|
||||||
VITE_LAMASSU_MACHINE_MODEL=${machineModel}
|
VITE_BITSPIRE_MACHINE_MODEL=${machineModel}
|
||||||
VITE_LAMASSU_FIAT_CODE=${fiatCodeForModel}
|
VITE_BITSPIRE_FIAT_CODE=${fiatCodeForModel}
|
||||||
VITE_SPIRE_SEED=
|
VITE_SPIRE_SEED=
|
||||||
ELECTRON_FORCE_PROD=1
|
ELECTRON_FORCE_PROD=1
|
||||||
DISPLAY=:0
|
DISPLAY=:0
|
||||||
|
|
|
||||||
|
|
@ -132,8 +132,8 @@ $TRANSPORT_LINES
|
||||||
$IDENTITY_LINES
|
$IDENTITY_LINES
|
||||||
|
|
||||||
# Machine configuration
|
# Machine configuration
|
||||||
VITE_LAMASSU_MACHINE_MODEL=$MODEL
|
VITE_BITSPIRE_MACHINE_MODEL=$MODEL
|
||||||
VITE_LAMASSU_FIAT_CODE=$FIAT_CODE
|
VITE_BITSPIRE_FIAT_CODE=$FIAT_CODE
|
||||||
|
|
||||||
# Force production mode
|
# Force production mode
|
||||||
ELECTRON_FORCE_PROD=1
|
ELECTRON_FORCE_PROD=1
|
||||||
|
|
|
||||||
|
|
@ -48,24 +48,24 @@ All configuration can be overridden via environment variables. For Vite/Electron
|
||||||
|
|
||||||
| Variable | Description | Default |
|
| Variable | Description | Default |
|
||||||
| ------------------------------- | ---------------------------- | ------------- |
|
| ------------------------------- | ---------------------------- | ------------- |
|
||||||
| `VITE_LAMASSU_MACHINE_MODEL` | Machine preset | `sintra` |
|
| `VITE_BITSPIRE_MACHINE_MODEL` | Machine preset | `sintra` |
|
||||||
| `VITE_LAMASSU_FIAT_CODE` | Fiat currency (ISO 4217) | `USD` |
|
| `VITE_BITSPIRE_FIAT_CODE` | Fiat currency (ISO 4217) | `USD` |
|
||||||
| `VITE_LAMASSU_VALIDATOR_DEVICE` | Validator serial device path | (from preset) |
|
| `VITE_BITSPIRE_VALIDATOR_DEVICE` | Validator serial device path | (from preset) |
|
||||||
| `VITE_LAMASSU_DISPENSER_DEVICE` | Dispenser serial device path | (from preset) |
|
| `VITE_BITSPIRE_DISPENSER_DEVICE` | Dispenser serial device path | (from preset) |
|
||||||
| `VITE_LAMASSU_CASSETTES` | JSON array of cassettes | (from preset) |
|
| `VITE_BITSPIRE_CASSETTES` | JSON array of cassettes | (from preset) |
|
||||||
|
|
||||||
### Example: Custom Cassette Configuration
|
### Example: Custom Cassette Configuration
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Two cassettes: $20 bills (100 count) and $50 bills (50 count)
|
# Two cassettes: $20 bills (100 count) and $50 bills (50 count)
|
||||||
export VITE_LAMASSU_CASSETTES='[{"denomination":20,"count":100},{"denomination":50,"count":50}]'
|
export VITE_BITSPIRE_CASSETTES='[{"denomination":20,"count":100},{"denomination":50,"count":50}]'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Example: Custom Device Paths
|
### Example: Custom Device Paths
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export VITE_LAMASSU_VALIDATOR_DEVICE="/dev/ttyUSB0"
|
export VITE_BITSPIRE_VALIDATOR_DEVICE="/dev/ttyUSB0"
|
||||||
export VITE_LAMASSU_DISPENSER_DEVICE="/dev/ttyUSB1"
|
export VITE_BITSPIRE_DISPENSER_DEVICE="/dev/ttyUSB1"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Cassette Configuration
|
## Cassette Configuration
|
||||||
|
|
|
||||||
|
|
@ -335,8 +335,8 @@
|
||||||
mkdir -p /var/lib/bitspire
|
mkdir -p /var/lib/bitspire
|
||||||
if [ ! -f /var/lib/bitspire/.env ]; then
|
if [ ! -f /var/lib/bitspire/.env ]; then
|
||||||
cp ${pkgs.writeText "bitspire-env-default" (''
|
cp ${pkgs.writeText "bitspire-env-default" (''
|
||||||
VITE_LAMASSU_MACHINE_MODEL=${machineModel}
|
VITE_BITSPIRE_MACHINE_MODEL=${machineModel}
|
||||||
VITE_LAMASSU_FIAT_CODE=${fiatCode}
|
VITE_BITSPIRE_FIAT_CODE=${fiatCode}
|
||||||
VITE_SPIRE_SEED=
|
VITE_SPIRE_SEED=
|
||||||
ELECTRON_FORCE_PROD=1
|
ELECTRON_FORCE_PROD=1
|
||||||
DISPLAY=:0
|
DISPLAY=:0
|
||||||
|
|
|
||||||
|
|
@ -67,8 +67,8 @@ pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||||
env = {
|
env = {
|
||||||
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||||
# Vite compile-time variables (baked into the frontend bundle)
|
# Vite compile-time variables (baked into the frontend bundle)
|
||||||
VITE_LAMASSU_MACHINE_MODEL = model;
|
VITE_BITSPIRE_MACHINE_MODEL = model;
|
||||||
VITE_LAMASSU_FIAT_CODE = fiatCode;
|
VITE_BITSPIRE_FIAT_CODE = fiatCode;
|
||||||
};
|
};
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue