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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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