Files
nix-config/packages/proton-cachyos/default.nix
2026-01-21 12:53:13 -06:00

99 lines
2.6 KiB
Nix

{
callPackage,
stdenvNoCC,
lib,
fetchurl,
fetchzip,
pkgs,
# Repo metadata
owner ? "CachyOS",
repo ? "proton-cachyos",
# 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",
}:
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
{
fetcher = fetchzip;
input = "$src/*.tar.xz";
}
else
{
fetcher = fetchurl;
input = "$src";
};
in
stdenvNoCC.mkDerivation {
name = repo;
version = "${base}.${release}";
src = intake.fetcher {
inherit url;
hash = selected.sources.proton.hash;
};
buildCommand = ''
mkdir -p $out/bin
tar -C $out/bin --strip=1 -x -f ${intake.input}
''
# Allow to keep the same name between updates
+ lib.strings.optionalString (toolTitle != null) ''
sed -i -r 's|"${toolPattern}"|"${toolTitle}"|' $out/bin/compatibilitytool.vdf
'';
passthru =
if withUpdateScript then
{
updateScript = callPackage ./update.nix {
inherit
tarballPrefix
tarballSuffix
releasePrefix
releaseSuffix
owner
repo
;
# Prefer explicit variant, otherwise use defaultVariant from the spec
variant = if variant != null then variant else (versionSpec.defaultVariant or "cachyos");
};
}
else
{ };
meta = with lib; {
inherit homepage;
description = "Compatibility tool for Steam Play based on Wine and additional components (patched and built by ${owner})";
license = licenses.bsd3;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [
pedrohlc
];
};
}