bulk versions.json

This commit is contained in:
mjallen18
2026-01-21 12:53:13 -06:00
parent 7cc4e8c99e
commit 2b9908e760
52 changed files with 1033 additions and 335 deletions

View File

@@ -4,24 +4,39 @@
lib,
fetchurl,
fetchzip,
# Required
versionFilename ? "cachyos-v4-version.json",
pkgs,
# Repo metadata
owner ? "CachyOS",
repo ? "proton-cachyos",
# Optional
# Behavior
withUpdateScript ? true,
# Variant selection (null -> use defaultVariant from version.json)
variant ? null,
# Packaging/customization knobs
toolTitle ? null,
toolPattern ? "proton-.*",
tarballPrefix ? "proton-",
tarballSuffix ? "-x86_64_v4.tar.xz",
releasePrefix ? "cachyos-",
releaseSuffix ? "-slr",
version ? lib.trivial.importJSON ./${versionFilename},
releaseVersion ? "${releasePrefix}${version.base}-${version.release}${releaseSuffix}",
homepage ? "https://github.com/${owner}/${repo}",
url ? "${homepage}/releases/download/${releaseVersion}/${tarballPrefix}${releaseVersion}${tarballSuffix}",
}:
let
inherit (lib.trivial) importJSON;
# Load unified version spec and select the desired variant
versionSpec = importJSON ./version.json;
versioning = import ../../lib/versioning.nix { inherit lib pkgs; };
selected = versioning.selectVariant versionSpec variant null;
vars = selected.variables or {};
base = vars.base;
release = vars.release;
# Derived values for the current variant
releaseVersion = "${releasePrefix}${base}-${release}${releaseSuffix}";
homepage = "https://github.com/${owner}/${repo}";
url = "${homepage}/releases/download/${releaseVersion}/${tarballPrefix}${releaseVersion}${tarballSuffix}";
# Choose fetcher based on file type
intake =
if lib.strings.hasSuffix ".zip" url then
{
@@ -36,11 +51,11 @@ let
in
stdenvNoCC.mkDerivation {
name = repo;
version = "${version.base}.${version.release}";
version = "${base}.${release}";
src = intake.fetcher {
inherit url;
inherit (version) hash;
hash = selected.sources.proton.hash;
};
buildCommand = ''
@@ -61,10 +76,11 @@ stdenvNoCC.mkDerivation {
tarballSuffix
releasePrefix
releaseSuffix
versionFilename
owner
repo
;
# Prefer explicit variant, otherwise use defaultVariant from the spec
variant = if variant != null then variant else (versionSpec.defaultVariant or "cachyos");
};
}
else