This commit is contained in:
mjallen18
2026-03-24 08:52:01 -05:00
parent cd6ea07e88
commit 0ffbeaaea1
20 changed files with 56 additions and 32 deletions

View File

@@ -94,14 +94,14 @@ let
# Decide fetcher for URL type based on optional extra.unpack hint.
useFetchZip = comp: comp ? extra && comp.extra ? unpack && comp.extra.unpack == "zip";
# Build a single src from a rendered component spec.
mkSrcFromRendered =
comp:
# Build a single src from a rendered component spec, using the given pkgs for fetchers.
mkSrcFromRendered' =
pkgs': comp:
let
fetcher = if comp ? fetcher then comp.fetcher else "none";
in
if fetcher == "github" then
pkgs.fetchFromGitHub (
pkgs'.fetchFromGitHub (
{
owner = comp.owner;
repo = comp.repo;
@@ -113,7 +113,7 @@ let
// lib.optionalAttrs (comp ? name) { name = comp.name; }
)
else if fetcher == "git" then
pkgs.fetchgit {
pkgs'.fetchgit {
url = comp.url;
rev = comp.rev;
fetchSubmodules = if comp ? submodules then comp.submodules else false;
@@ -124,7 +124,7 @@ let
url = if comp ? url then comp.url else comp.urlTemplate;
in
if useFetchZip comp then
pkgs.fetchzip (
pkgs'.fetchzip (
{
inherit url;
hash = comp.hash;
@@ -132,12 +132,12 @@ let
// lib.optionalAttrs (comp ? extra && comp.extra ? stripRoot) { stripRoot = comp.extra.stripRoot; }
)
else
pkgs.fetchurl {
pkgs'.fetchurl {
inherit url;
hash = comp.hash;
}
else if fetcher == "pypi" then
pkgs.python3Packages.fetchPypi {
pkgs'.python3Packages.fetchPypi {
pname = comp.name;
version = comp.version;
hash = comp.hash;
@@ -146,6 +146,10 @@ let
# fetcher == "none": pass-through (e.g., linux version/hash consumed by custom logic)
comp;
# Build a single src from a rendered component spec using the default (lib-level) pkgs.
# Deprecated: prefer mkSrcFromRendered' with an explicit pkgs argument.
mkSrcFromRendered = mkSrcFromRendered' pkgs;
in
rec {
/*
@@ -181,30 +185,33 @@ rec {
/*
Render a component with variables and then build its src (or pass-through for fetcher "none").
Prefer using mkAllSources, which handles rendering for all components.
pkgs: the nixpkgs instance to use for fetchers (must match the target system).
*/
mkSrc =
comp: variables:
pkgs': comp: variables:
let
rendered = renderValue comp variables;
in
mkSrcFromRendered rendered;
mkSrcFromRendered' pkgs' rendered;
/*
Produce an attrset of all sources for a selected spec:
mkAllSources selected
mkAllSources pkgs selected
Where:
pkgs: the nixpkgs instance to use for fetchers (must match the target system).
selected = selectVariant spec variantName system
Returns:
{ componentName = src | renderedComp (for "none"); ... }
*/
mkAllSources =
selected:
pkgs': selected:
mapAttrs (
_name: comp:
if comp ? fetcher && comp.fetcher == "none" then
renderValue comp selected.variables
else
mkSrc (renderValue comp selected.variables) selected.variables
mkSrc pkgs' (renderValue comp selected.variables) selected.variables
) selected.sources;
# Expose deepMerge for convenience (right-biased).

View File

@@ -2,6 +2,7 @@
stdenv,
lib,
namespace,
pkgs,
MODEL ? "5",
DEBUG ? "0",
TFA_FLAGS ? "",
@@ -12,7 +13,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
fw = selected.sources.fw;
in
stdenv.mkDerivation {

View File

@@ -24,6 +24,7 @@
fuseSupport ? false,
udevCheckHook,
namespace,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -31,7 +32,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
in
stdenv.mkDerivation (finalAttrs: {
pname = "bcachefs-tools";

View File

@@ -8,6 +8,7 @@
fetchNpmDeps,
requireFile,
stdenv,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -15,7 +16,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
inherit (selected.variables) version;
# These three packages are published exclusively to GitHub Packages

View File

@@ -3,6 +3,7 @@
namespace,
nodejs,
stdenv,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -10,7 +11,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
inherit (selected.variables) version;
in
stdenv.mkDerivation {

View File

@@ -4,6 +4,7 @@
namespace,
nodejs,
stdenv,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -11,7 +12,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
inherit (selected.variables) version;
in
stdenv.mkDerivation {

View File

@@ -23,7 +23,7 @@ let
version = "stable202511";
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec (if MODEL == "5" then "mjallen" else null) null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
edk2Src = sources.edk2;

View File

@@ -14,6 +14,7 @@
freetype,
namespace,
system,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -21,7 +22,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
# cargoHash is stored alongside the source in version.json so the TUI can update it
cargoHash = selected.sources.librepods.cargoHash;
in

View File

@@ -8,6 +8,7 @@
python3,
libpulseaudio,
namespace,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -15,7 +16,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
in
stdenv.mkDerivation {
pname = "librepods";

View File

@@ -2,6 +2,7 @@
lib,
namespace,
appimageTools,
pkgs,
...
}:
let
@@ -10,7 +11,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
moondeck-buddy = selected.sources.moondeck-buddy;
in
appimageTools.wrapType2 {

View File

@@ -9,6 +9,7 @@
systemd,
withVoutDrm ? true,
namespace,
pkgs,
}:
let
@@ -18,7 +19,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
vars = selected.variables or { };
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
extraVersion = vars.extraVersion or "rpi";
# https://github.com/jc-kynesim/rpi-ffmpeg/tree/test/7.1.2/main

View File

@@ -4,6 +4,7 @@
cmake,
pkg-config,
namespace,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -11,7 +12,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
in
stdenv.mkDerivation (_finalAttrs: {
pname = "libraspberrypi";

View File

@@ -3,6 +3,7 @@
stdenv,
lib,
buildLinux,
pkgs,
rpiVersion ? 5,
namespace,
kernelVersion ? "stable",
@@ -16,7 +17,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec kernelVersion null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
modDirVersion = selected.variables.modDirVersion;
tag = kernelVersion; # sources.tag;

View File

@@ -2,6 +2,7 @@
lib,
stdenvNoCC,
namespace,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -9,7 +10,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
in
stdenvNoCC.mkDerivation {

View File

@@ -2,6 +2,7 @@
lib,
stdenvNoCC,
namespace,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -10,7 +11,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
vars = selected.variables or { };
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
in
stdenvNoCC.mkDerivation {

View File

@@ -6,6 +6,7 @@
cmake,
dtc,
namespace,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -13,7 +14,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
in
stdenv.mkDerivation (_finalAttrs: {
pname = "raspberrypi-utils";

View File

@@ -2,6 +2,7 @@
lib,
stdenvNoCC,
namespace,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -10,7 +11,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
vars = selected.variables or { };
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
in
stdenvNoCC.mkDerivation {
# NOTE: this should be updated with linux_rpi

View File

@@ -2,6 +2,7 @@
lib,
stdenvNoCC,
namespace,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -10,7 +11,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
vars = selected.variables or { };
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
in
stdenvNoCC.mkDerivation rec {
pname = "uefi-rpi4";

View File

@@ -2,6 +2,7 @@
lib,
stdenvNoCC,
namespace,
pkgs,
}:
let
inherit (lib.trivial) importJSON;
@@ -10,7 +11,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
vars = selected.variables or { };
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
defaultConfig = ''
EOF

View File

@@ -12,7 +12,7 @@ let
versionSpec = importJSON ./version.json;
selected = selectVariant versionSpec null null;
vars = selected.variables or { };
sources = mkAllSources selected;
sources = mkAllSources pkgs selected;
in
vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {