Make the baked app a real store-path dependency via builtins.storePath
The previous commit wrapped the manifest's storePath string in a symlinkJoin. symlinkJoin passes its paths as a file, so a bare store-path string registered no dependency: Nix never substituted the closure and the symlinkJoin failed with 'radiantwave-9b57e48: No such file or directory'. builtins.storePath turns the published path into a real store-path dependency that Nix substitutes from the channel's Attic cache, so the app is baked and never compiled. Keep the raw string (publishedPath) for the updater's plain-string baseline pointer.
This commit is contained in:
+4
-9
@@ -1,15 +1,10 @@
|
|||||||
{ config, pkgs, radiantwaveApp, upgradeFlakeRef, radiantwavePlymouth, ... }:
|
{ config, pkgs, radiantwaveApp, upgradeFlakeRef, radiantwavePlymouth, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
# The published app is a store path with context (builtins.storePath in
|
||||||
|
# flake.nix), so Nix substitutes it from the channel's Attic cache and the
|
||||||
|
# system closure depends on it.
|
||||||
radiantApp = radiantwaveApp;
|
radiantApp = radiantwaveApp;
|
||||||
# The published app arrives as a bare store-path string (from the channel
|
|
||||||
# manifest, see flake.nix). Wrap it in a derivation built with this system's
|
|
||||||
# pkgs so it can live in environment.systemPackages; the wrapper is a symlink
|
|
||||||
# farm and the real closure is substituted from the channel's Attic cache.
|
|
||||||
radiantAppPackage = pkgs.symlinkJoin {
|
|
||||||
name = "radiantwave-published";
|
|
||||||
paths = [ radiantApp ];
|
|
||||||
};
|
|
||||||
# When the live-updater module is enabled, RadiantWave launches through the
|
# When the live-updater module is enabled, RadiantWave launches through the
|
||||||
# mutable /var/lib/radiantwave/current
|
# mutable /var/lib/radiantwave/current
|
||||||
# pointer so it can be swapped without a full nixos-rebuild. Otherwise it
|
# pointer so it can be swapped without a full nixos-rebuild. Otherwise it
|
||||||
@@ -40,7 +35,7 @@ in
|
|||||||
# Included packages
|
# Included packages
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.cage pkgs.rsync pkgs.dbus pkgs.mesa pkgs.git pkgs.tailscale pkgs.sqlite pkgs.wireplumber
|
pkgs.cage pkgs.rsync pkgs.dbus pkgs.mesa pkgs.git pkgs.tailscale pkgs.sqlite pkgs.wireplumber
|
||||||
radiantAppPackage
|
radiantApp
|
||||||
];
|
];
|
||||||
|
|
||||||
# This populates the EFI partition and tells the NUC how to start NixOS.
|
# This populates the EFI partition and tells the NUC how to start NixOS.
|
||||||
|
|||||||
@@ -93,11 +93,17 @@
|
|||||||
url = "${channelManifestDir}/${manifestFile}";
|
url = "${channelManifestDir}/${manifestFile}";
|
||||||
}));
|
}));
|
||||||
|
|
||||||
# The published closure as a plain store-path string. configuration.nix
|
# The published closure as a plain store-path string. Used for the
|
||||||
# wraps it in a symlinkJoin so it can live in environment.systemPackages
|
# updater's runtime baseline pointer (a plain string; the closure itself
|
||||||
# (a bare string there would be coerced with builtins.storePath, which
|
# is pulled in via publishedApp below).
|
||||||
# requires the closure to already be local at eval time).
|
publishedPath = manifestFile: (manifestFor manifestFile).storePath;
|
||||||
publishedApp = manifestFile: (manifestFor manifestFile).storePath;
|
|
||||||
|
# The published closure as a real store-path dependency.
|
||||||
|
# builtins.storePath makes the derivation depend on this exact path and
|
||||||
|
# substitute it from the channel's Attic cache (configured as a trusted
|
||||||
|
# substituter), so the app is never compiled from source. The closure
|
||||||
|
# itself is not fetched by this repository; RadiantWave CI publishes it.
|
||||||
|
publishedApp = manifestFile: builtins.storePath (publishedPath manifestFile);
|
||||||
|
|
||||||
# Live app-update side channel. The manifest is served by the
|
# Live app-update side channel. The manifest is served by the
|
||||||
# fileserver; closures are fetched (never built) from the channel's
|
# fileserver; closures are fetched (never built) from the channel's
|
||||||
@@ -249,7 +255,7 @@
|
|||||||
diskModule = ./disk-config.nix;
|
diskModule = ./disk-config.nix;
|
||||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git${channel.gitRef}#radiantwavekiosk";
|
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git${channel.gitRef}#radiantwavekiosk";
|
||||||
extraModules = [
|
extraModules = [
|
||||||
(radiantwaveUpdaterModule { repo = channel.atticRepo; baseline = publishedApp "manifest.json"; })
|
(radiantwaveUpdaterModule { repo = channel.atticRepo; baseline = publishedPath "manifest.json"; })
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
radiantwavekiosk-commercial = mkKioskSystem {
|
radiantwavekiosk-commercial = mkKioskSystem {
|
||||||
@@ -258,7 +264,7 @@
|
|||||||
diskModule = ./commercial-disk-config.nix;
|
diskModule = ./commercial-disk-config.nix;
|
||||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git${channel.gitRef}#radiantwavekiosk-commercial";
|
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git${channel.gitRef}#radiantwavekiosk-commercial";
|
||||||
extraModules = [
|
extraModules = [
|
||||||
(radiantwaveUpdaterModule { repo = channel.atticRepo; baseline = publishedApp "manifest.json"; })
|
(radiantwaveUpdaterModule { repo = channel.atticRepo; baseline = publishedPath "manifest.json"; })
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
# Rotated screen for android-style displays.
|
# Rotated screen for android-style displays.
|
||||||
@@ -269,7 +275,7 @@
|
|||||||
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git${channel.gitRef}#radiantwavekiosk-android";
|
upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git${channel.gitRef}#radiantwavekiosk-android";
|
||||||
extraModules = [
|
extraModules = [
|
||||||
./rotated_display.nix
|
./rotated_display.nix
|
||||||
(radiantwaveUpdaterModule { repo = channel.atticRepo; baseline = publishedApp "manifest.json"; })
|
(radiantwaveUpdaterModule { repo = channel.atticRepo; baseline = publishedPath "manifest.json"; })
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
# Raspberry Pi 5.
|
# Raspberry Pi 5.
|
||||||
@@ -279,7 +285,7 @@
|
|||||||
extraModules = [
|
extraModules = [
|
||||||
(radiantwaveUpdaterModule {
|
(radiantwaveUpdaterModule {
|
||||||
repo = channel.atticRepo;
|
repo = channel.atticRepo;
|
||||||
baseline = publishedApp "aarch64-manifest.json";
|
baseline = publishedPath "aarch64-manifest.json";
|
||||||
manifestFile = "aarch64-manifest.json";
|
manifestFile = "aarch64-manifest.json";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user