Fix dev/prod split and dev ISOs; consolidate zero-touch installer
- Wire -dev variants to the radiantwave-dev input (?ref=dev); prod keeps main - Fix android-dev upgradeFlakeRef (was upgrading into production config) - Parameterize one installer module (zero-touch-installer.nix); replace the four near-duplicate ISO configs; mkIso pairs each ISO with its closure + disk layout, fixing commercial-dev/android-dev ISO eval errors - Add missing packages outputs (commercial-dev, android-dev, rpi, rpi-dev) - Set networking.hostName + system.configurationRevision per variant - Remove gitea access token and dead netrc/JWT config (repos are public) - Drop flake.lock update step from CI (lock updates are manual) - Refresh AGENTS.md: variants/ISO tables, facter report procedure, gotchas
This commit is contained in:
@@ -53,7 +53,16 @@
|
||||
'';
|
||||
};
|
||||
|
||||
mkKioskSystem = { system, radiantwave, upgradeFlakeRef, extraModules ? [], diskModule, extraSpecialArgs ? {}}:
|
||||
revision = self.rev or self.dirtyRev or null;
|
||||
|
||||
mkKioskSystem = {
|
||||
system,
|
||||
radiantwave,
|
||||
upgradeFlakeRef,
|
||||
hostName,
|
||||
diskModule,
|
||||
extraModules ? [],
|
||||
}:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
|
||||
@@ -61,20 +70,35 @@
|
||||
inherit radiantwave;
|
||||
inherit upgradeFlakeRef;
|
||||
inherit radiantwavePlymouth;
|
||||
} // extraSpecialArgs;
|
||||
};
|
||||
|
||||
modules = [
|
||||
{ nixpkgs.config.allowUnfree = true; }
|
||||
{
|
||||
networking.hostName = hostName;
|
||||
system.configurationRevision = revision;
|
||||
}
|
||||
./configuration.nix
|
||||
disko.nixosModules.disko
|
||||
diskModule
|
||||
diskModule
|
||||
nixos-facter-modules.nixosModules.facter
|
||||
# Hardware facter report. This is a NUC 14 report currently
|
||||
# applied to every x86 variant (including commercial SATA
|
||||
# hardware). To use per-model reports: generate them on each
|
||||
# hardware target (procedure in AGENTS.md), commit them as
|
||||
# facter-<model>.json, and select per variant here, e.g.:
|
||||
# { facter.reportPath = ./facter-commercial.json; }
|
||||
{ facter.reportPath = ./facter.json; }
|
||||
radiantwave.nixosModules.default
|
||||
] ++ extraModules;
|
||||
};
|
||||
|
||||
mkRpiKioskSystem = { radiantwave, upgradeFlakeRef, extraModules ? [] }:
|
||||
mkRpiKioskSystem = {
|
||||
radiantwave,
|
||||
upgradeFlakeRef,
|
||||
hostName,
|
||||
extraModules ? [],
|
||||
}:
|
||||
nixos-raspberrypi.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit radiantwave upgradeFlakeRef;
|
||||
@@ -94,6 +118,9 @@
|
||||
./configuration.nix
|
||||
radiantwave.nixosModules.default
|
||||
{
|
||||
networking.hostName = hostName;
|
||||
system.configurationRevision = revision;
|
||||
|
||||
boot.loader.systemd-boot.enable = nixpkgs.lib.mkForce false;
|
||||
boot.loader.efi.canTouchEfiVariables = nixpkgs.lib.mkForce false;
|
||||
boot.loader.raspberry-pi.bootloader = "kernel";
|
||||
@@ -107,211 +134,138 @@
|
||||
}
|
||||
] ++ extraModules;
|
||||
};
|
||||
|
||||
# Zero-touch USB installer image. `targetConfig` names the kiosk system
|
||||
# to install: the closure comes from the packages output below and the
|
||||
# partitioning script from the paired disk module, so the ISO always
|
||||
# installs the matching system for its hardware.
|
||||
mkIso = { targetConfig, diskModule }:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
inherit self;
|
||||
};
|
||||
|
||||
modules = [
|
||||
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
|
||||
disko.nixosModules.disko
|
||||
(import ./zero-touch-installer.nix { inherit targetConfig; })
|
||||
diskModule
|
||||
({ pkgs, ... }: {
|
||||
environment.systemPackages = [
|
||||
disko.packages.${system}.default
|
||||
];
|
||||
isoImage.storeContents = [
|
||||
self.packages.x86_64-linux.${targetConfig}
|
||||
];
|
||||
environment.etc."disko-config.nix".source = diskModule;
|
||||
})
|
||||
];
|
||||
};
|
||||
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;
|
||||
# Kiosk
|
||||
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.
|
||||
#
|
||||
# Production variants consume the `radiantwave` input (?ref=main);
|
||||
# `-dev` variants consume `radiantwave-dev` (?ref=dev) and track the
|
||||
# dev branch of this repo via their autoUpgrade flake refs.
|
||||
nixosConfigurations = {
|
||||
radiantwavekiosk = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave;
|
||||
hostName = "radiantwavekiosk";
|
||||
diskModule = ./disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk";
|
||||
extraModules = [];
|
||||
};
|
||||
# Kiosk-dev
|
||||
radiantwavekiosk-dev = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave;
|
||||
radiantwave = radiantwave-dev;
|
||||
hostName = "radiantwavekiosk-dev";
|
||||
diskModule = ./disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git?ref=dev#radiantwavekiosk-dev";
|
||||
extraModules = [];
|
||||
};
|
||||
# Commercial
|
||||
radiantwavekiosk-commercial = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave;
|
||||
hostName = "radiantwavekiosk-commercial";
|
||||
diskModule = ./commercial-disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk-commercial";
|
||||
extraModules = [];
|
||||
};
|
||||
# Commercial-dev
|
||||
radiantwavekiosk-commercial-dev = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave;
|
||||
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 = [];
|
||||
};
|
||||
# Kiosk - rotated screen for android displays
|
||||
# Rotated screen for android-style displays.
|
||||
radiantwavekiosk-android = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave;
|
||||
hostName = "radiantwavekiosk-android";
|
||||
diskModule = ./disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk-android";
|
||||
extraModules = [./rotated_display.nix ];
|
||||
extraModules = [./rotated_display.nix];
|
||||
};
|
||||
# Kiosk-dev - rotated screen for android displays
|
||||
radiantwavekiosk-android-dev = mkKioskSystem {
|
||||
system = "x86_64-linux";
|
||||
radiantwave = radiantwave;
|
||||
radiantwave = radiantwave-dev;
|
||||
hostName = "radiantwavekiosk-android-dev";
|
||||
diskModule = ./disk-config.nix;
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk-android";
|
||||
extraModules = [./rotated_display.nix ];
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git?ref=dev#radiantwavekiosk-android-dev";
|
||||
extraModules = [./rotated_display.nix];
|
||||
};
|
||||
# Raspberry pi 5
|
||||
# Raspberry Pi 5.
|
||||
radiantwavekiosk-rpi = mkRpiKioskSystem {
|
||||
radiantwave = radiantwave;
|
||||
hostName = "radiantwavekiosk-rpi";
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk-rpi";
|
||||
};
|
||||
# Raspberry pi 5 dev
|
||||
radiantwavekiosk-rpi-dev = mkRpiKioskSystem {
|
||||
radiantwave = radiantwave;
|
||||
radiantwave = radiantwave-dev;
|
||||
hostName = "radiantwavekiosk-rpi-dev";
|
||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git?ref=dev#radiantwavekiosk-rpi-dev";
|
||||
};
|
||||
|
||||
# === USB Images ===
|
||||
# Kiosk ISO
|
||||
kiosk-iso = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
inherit self;
|
||||
};
|
||||
modules = [
|
||||
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
|
||||
disko.nixosModules.disko
|
||||
./iso-config.nix
|
||||
./disk-config.nix
|
||||
({ pkgs, ... }: {
|
||||
environment.systemPackages = [
|
||||
disko.packages.${system}.default
|
||||
];
|
||||
isoImage.storeContents = [
|
||||
self.packages.x86_64-linux.radiantwavekiosk
|
||||
];
|
||||
environment.etc."disko-config.nix".source = ./disk-config.nix;
|
||||
})
|
||||
];
|
||||
# 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.
|
||||
kiosk-iso = mkIso {
|
||||
targetConfig = "radiantwavekiosk";
|
||||
diskModule = ./disk-config.nix;
|
||||
};
|
||||
# Commercial iso
|
||||
commercial-iso = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
inherit self;
|
||||
};
|
||||
modules = [
|
||||
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
|
||||
disko.nixosModules.disko
|
||||
./commercial-iso-config.nix
|
||||
./commercial-disk-config.nix
|
||||
({ pkgs, ... }: {
|
||||
environment.systemPackages = [
|
||||
disko.packages.${system}.default
|
||||
];
|
||||
isoImage.storeContents = [
|
||||
self.packages.x86_64-linux.radiantwavekiosk-commercial
|
||||
];
|
||||
environment.etc."disko-config.nix".source = ./commercial-disk-config.nix;
|
||||
})
|
||||
];
|
||||
commercial-iso = mkIso {
|
||||
targetConfig = "radiantwavekiosk-commercial";
|
||||
diskModule = ./commercial-disk-config.nix;
|
||||
};
|
||||
# kiosk rotated screen ISO
|
||||
android-iso = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
inherit self;
|
||||
};
|
||||
modules = [
|
||||
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
|
||||
disko.nixosModules.disko
|
||||
./android-iso.nix
|
||||
./disk-config.nix
|
||||
({ pkgs, ... }: {
|
||||
environment.systemPackages = [
|
||||
disko.packages.${system}.default
|
||||
];
|
||||
isoImage.storeContents = [
|
||||
self.packages.x86_64-linux.radiantwavekiosk-android
|
||||
];
|
||||
environment.etc."disko-config.nix".source = ./disk-config.nix;
|
||||
})
|
||||
];
|
||||
android-iso = mkIso {
|
||||
targetConfig = "radiantwavekiosk-android";
|
||||
diskModule = ./disk-config.nix;
|
||||
};
|
||||
# Kiosk iso development branch
|
||||
dev-iso = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
inherit self;
|
||||
};
|
||||
modules = [
|
||||
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
|
||||
disko.nixosModules.disko
|
||||
./dev-iso.nix
|
||||
./disk-config.nix
|
||||
({ pkgs, ... }: {
|
||||
environment.systemPackages = [
|
||||
disko.packages.${system}.default
|
||||
];
|
||||
isoImage.storeContents = [
|
||||
self.packages.x86_64-linux.radiantwavekiosk-dev
|
||||
];
|
||||
environment.etc."disko-config.nix".source = ./disk-config.nix;
|
||||
})
|
||||
];
|
||||
dev-iso = mkIso {
|
||||
targetConfig = "radiantwavekiosk-dev";
|
||||
diskModule = ./disk-config.nix;
|
||||
};
|
||||
# Kiosk iso development branch
|
||||
commercial-dev-iso = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
inherit self;
|
||||
};
|
||||
modules = [
|
||||
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
|
||||
disko.nixosModules.disko
|
||||
./dev-iso.nix
|
||||
./disk-config.nix
|
||||
({ pkgs, ... }: {
|
||||
environment.systemPackages = [
|
||||
disko.packages.${system}.default
|
||||
];
|
||||
isoImage.storeContents = [
|
||||
self.packages.x86_64-linux.radiantwavekiosk-commercial-dev
|
||||
];
|
||||
environment.etc."disko-config.nix".source = ./commercial-disk-config.nix;
|
||||
})
|
||||
];
|
||||
commercial-dev-iso = mkIso {
|
||||
targetConfig = "radiantwavekiosk-commercial-dev";
|
||||
diskModule = ./commercial-disk-config.nix;
|
||||
};
|
||||
# Kiosk-dev rotated display iso
|
||||
android-dev-iso = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
inherit self;
|
||||
};
|
||||
modules = [
|
||||
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
|
||||
disko.nixosModules.disko
|
||||
./dev-iso.nix
|
||||
./disk-config.nix
|
||||
({ pkgs, ... }: {
|
||||
environment.systemPackages = [
|
||||
disko.packages.${system}.default
|
||||
];
|
||||
isoImage.storeContents = [
|
||||
self.packages.x86_64-linux.radiantwavekiosk-android-dev
|
||||
];
|
||||
environment.etc."disko-config.nix".source = ./disk-config.nix;
|
||||
})
|
||||
];
|
||||
android-dev-iso = mkIso {
|
||||
targetConfig = "radiantwavekiosk-android-dev";
|
||||
diskModule = ./disk-config.nix;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user