Merge -dev closures.
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.
This commit is contained in:
@@ -55,11 +55,29 @@
|
||||
|
||||
revision = self.rev or self.dirtyRev or null;
|
||||
|
||||
# DEV/PROD CHANNEL SELECTOR — the single block that differs between the
|
||||
# `main` and `dev` branches. Everything downstream (the four configs, the
|
||||
# ISOs, the updater module) is identical on both branches and pulls from
|
||||
# this channel, so a `dev`-to-`main` merge carries your changes with it
|
||||
# automatically. There are no more `-dev` sibling configs to copy.
|
||||
#
|
||||
# main: appInput = radiantwave (main), atticRepo = "radiantwave",
|
||||
# gitRef = "" (default branch)
|
||||
# dev: appInput = radiantwave-dev, atticRepo = "radiantwave-dev",
|
||||
# gitRef = "?ref=dev"
|
||||
#
|
||||
# To flip branches, change ONLY these three values (then push/merge).
|
||||
channel = {
|
||||
appInput = radiantwave; # main
|
||||
atticRepo = "radiantwave"; # main
|
||||
gitRef = ""; # main
|
||||
};
|
||||
|
||||
# Live app-update side channel. The manifest is served by the
|
||||
# fileserver; closures are fetched (never built) from the variant's
|
||||
# Attic cache. `repo` selects the channel — "radiantwave" (prod,
|
||||
# ?ref=main) or "radiantwave-dev" (dev, ?ref=dev). All variants follow
|
||||
# this same update procedure; only the channel differs.
|
||||
# fileserver; closures are fetched (never built) from the channel's
|
||||
# Attic cache. `repo` selects the channel — "radiantwave" (main) or
|
||||
# "radiantwave-dev" (dev). All variants follow this same update
|
||||
# procedure; only the channel differs.
|
||||
radiantwaveUpdaterModule = { repo, baseline }: {
|
||||
services.radiantwaveUpdater = {
|
||||
enable = true;
|
||||
@@ -183,99 +201,58 @@
|
||||
in
|
||||
{
|
||||
packages.x86_64-linux.radiantwavekiosk = self.nixosConfigurations.radiantwavekiosk.config.system.build.toplevel;
|
||||
packages.x86_64-linux.radiantwavekiosk-dev = self.nixosConfigurations.radiantwavekiosk-dev.config.system.build.toplevel;
|
||||
packages.x86_64-linux.radiantwavekiosk-commercial = self.nixosConfigurations.radiantwavekiosk-commercial.config.system.build.toplevel;
|
||||
packages.x86_64-linux.radiantwavekiosk-commercial-dev = self.nixosConfigurations.radiantwavekiosk-commercial-dev.config.system.build.toplevel;
|
||||
packages.x86_64-linux.radiantwavekiosk-android = self.nixosConfigurations.radiantwavekiosk-android.config.system.build.toplevel;
|
||||
packages.x86_64-linux.radiantwavekiosk-android-dev = self.nixosConfigurations.radiantwavekiosk-android-dev.config.system.build.toplevel;
|
||||
packages.x86_64-linux.radiantwavekiosk-rpi = self.nixosConfigurations.radiantwavekiosk-rpi.config.system.build.toplevel;
|
||||
packages.x86_64-linux.radiantwavekiosk-rpi-dev = self.nixosConfigurations.radiantwavekiosk-rpi-dev.config.system.build.toplevel;
|
||||
|
||||
# Kiosk systems.
|
||||
# Kiosk systems — one per hardware target, no dev/prod siblings.
|
||||
#
|
||||
# Production variants consume the `radiantwave` input (?ref=main);
|
||||
# `-dev` variants consume `radiantwave-dev` (?ref=dev). All variants
|
||||
# run the same live-app updater against their channel's Attic repo and
|
||||
# manifest, and track this repo's matching branch via autoUpgrade.
|
||||
# Every config consumes the channel selected at the top of this file
|
||||
# (see `channel`): the RadiantWave app input, the Attic repo/manifest
|
||||
# it fetches live updates from, and the KioskConfig git ref it
|
||||
# auto-upgrades from. On `main` the channel is prod; on `dev` it is the
|
||||
# dev channel. Because there is exactly one config per hardware type,
|
||||
# changes made on `dev` reach prod via a plain merge — no copying.
|
||||
nixosConfigurations = {
|
||||
radiantwavekiosk = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave;
|
||||
radiantwave = channel.appInput;
|
||||
hostName = "radiantwavekiosk";
|
||||
diskModule = ./disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk";
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git${channel.gitRef}#radiantwavekiosk";
|
||||
extraModules = [
|
||||
(radiantwaveUpdaterModule { repo = "radiantwave"; baseline = radiantwave.packages.x86_64-linux.default; })
|
||||
];
|
||||
};
|
||||
radiantwavekiosk-dev = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave-dev;
|
||||
hostName = "radiantwavekiosk-dev";
|
||||
diskModule = ./disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git?ref=dev#radiantwavekiosk-dev";
|
||||
extraModules = [
|
||||
(radiantwaveUpdaterModule { repo = "radiantwave-dev"; baseline = radiantwave-dev.packages.x86_64-linux.default; })
|
||||
(radiantwaveUpdaterModule { repo = channel.atticRepo; baseline = channel.appInput.packages.x86_64-linux.default; })
|
||||
];
|
||||
};
|
||||
radiantwavekiosk-commercial = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave;
|
||||
radiantwave = channel.appInput;
|
||||
hostName = "radiantwavekiosk-commercial";
|
||||
diskModule = ./commercial-disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk-commercial";
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git${channel.gitRef}#radiantwavekiosk-commercial";
|
||||
extraModules = [
|
||||
(radiantwaveUpdaterModule { repo = "radiantwave"; baseline = radiantwave.packages.x86_64-linux.default; })
|
||||
];
|
||||
};
|
||||
radiantwavekiosk-commercial-dev = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave-dev;
|
||||
hostName = "radiantwavekiosk-commercial-dev";
|
||||
diskModule = ./commercial-disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git?ref=dev#radiantwavekiosk-commercial-dev";
|
||||
extraModules = [
|
||||
(radiantwaveUpdaterModule { repo = "radiantwave-dev"; baseline = radiantwave-dev.packages.x86_64-linux.default; })
|
||||
(radiantwaveUpdaterModule { repo = channel.atticRepo; baseline = channel.appInput.packages.x86_64-linux.default; })
|
||||
];
|
||||
};
|
||||
# Rotated screen for android-style displays.
|
||||
radiantwavekiosk-android = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave;
|
||||
radiantwave = channel.appInput;
|
||||
hostName = "radiantwavekiosk-android";
|
||||
diskModule = ./disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk-android";
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git${channel.gitRef}#radiantwavekiosk-android";
|
||||
extraModules = [
|
||||
./rotated_display.nix
|
||||
(radiantwaveUpdaterModule { repo = "radiantwave"; baseline = radiantwave.packages.x86_64-linux.default; })
|
||||
];
|
||||
};
|
||||
radiantwavekiosk-android-dev = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave-dev;
|
||||
hostName = "radiantwavekiosk-android-dev";
|
||||
diskModule = ./disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git?ref=dev#radiantwavekiosk-android-dev";
|
||||
extraModules = [
|
||||
./rotated_display.nix
|
||||
(radiantwaveUpdaterModule { repo = "radiantwave-dev"; baseline = radiantwave-dev.packages.x86_64-linux.default; })
|
||||
(radiantwaveUpdaterModule { repo = channel.atticRepo; baseline = channel.appInput.packages.x86_64-linux.default; })
|
||||
];
|
||||
};
|
||||
# Raspberry Pi 5.
|
||||
radiantwavekiosk-rpi = mkRpiKioskSystem {
|
||||
radiantwave = radiantwave;
|
||||
radiantwave = channel.appInput;
|
||||
hostName = "radiantwavekiosk-rpi";
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk-rpi";
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git${channel.gitRef}#radiantwavekiosk-rpi";
|
||||
extraModules = [
|
||||
(radiantwaveUpdaterModule { repo = "radiantwave"; baseline = radiantwave.packages.aarch64-linux.default; })
|
||||
];
|
||||
};
|
||||
radiantwavekiosk-rpi-dev = mkRpiKioskSystem {
|
||||
radiantwave = radiantwave-dev;
|
||||
hostName = "radiantwavekiosk-rpi-dev";
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git?ref=dev#radiantwavekiosk-rpi-dev";
|
||||
extraModules = [
|
||||
(radiantwaveUpdaterModule { repo = "radiantwave-dev"; baseline = radiantwave-dev.packages.aarch64-linux.default; })
|
||||
(radiantwaveUpdaterModule { repo = channel.atticRepo; baseline = channel.appInput.packages.aarch64-linux.default; })
|
||||
];
|
||||
};
|
||||
|
||||
@@ -283,6 +260,10 @@
|
||||
# Each ISO installs exactly the named system closure using that
|
||||
# system's disk layout. NVMe layouts pair with ./disk-config.nix,
|
||||
# SATA with ./commercial-disk-config.nix — don't cross them.
|
||||
# The same names build dev-flavored images when the flake is checked
|
||||
# out on the `dev` branch (the channel block above selects the dev
|
||||
# app, attic repo, and upgrade ref), so there are no separate -dev
|
||||
# ISOs.
|
||||
kiosk-iso = mkIso {
|
||||
targetConfig = "radiantwavekiosk";
|
||||
diskModule = ./disk-config.nix;
|
||||
@@ -295,18 +276,6 @@
|
||||
targetConfig = "radiantwavekiosk-android";
|
||||
diskModule = ./disk-config.nix;
|
||||
};
|
||||
dev-iso = mkIso {
|
||||
targetConfig = "radiantwavekiosk-dev";
|
||||
diskModule = ./disk-config.nix;
|
||||
};
|
||||
commercial-dev-iso = mkIso {
|
||||
targetConfig = "radiantwavekiosk-commercial-dev";
|
||||
diskModule = ./commercial-disk-config.nix;
|
||||
};
|
||||
android-dev-iso = mkIso {
|
||||
targetConfig = "radiantwavekiosk-android-dev";
|
||||
diskModule = ./disk-config.nix;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user