Last active
November 25, 2024 04:30
-
-
Save sielicki/2601de3ad8d8c732af80b12e36d326aa to your computer and use it in GitHub Desktop.
cuda auto update
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
lib ? (import <nixpkgs> { }).lib, | |
redistribs_raw, | |
}: | |
let | |
redistribs = (builtins.fromJSON redistribs_raw); | |
base_url = "https://developer.download.nvidia.com/compute/cuda/redist/"; | |
minVersion = "11.4.2"; | |
redistribsSufficientVersion = (builtins.filter (x: lib.strings.versionOlder minVersion x.redistrib_release) redistribs); | |
allVersions = map (x: x.redistrib_release) redistribsSufficientVersion; | |
transformOneEntry = | |
redistrib: | |
let | |
release = redistrib.redistrib_release; | |
isSystemAttr = | |
value: (builtins.isString value) || (builtins.isAttrs value && builtins.hasAttr "sha256" value); | |
extractSha256 = | |
source: | |
if (builtins.isString source) then | |
null | |
else | |
builtins.mapAttrs | |
( | |
system: value: | |
if (builtins.isString value) then | |
value | |
else if (builtins.hasAttr "sha256" value) then | |
{ | |
inherit (value) sha256; | |
url = "${base_url}${value.relative_path}"; | |
} | |
else | |
null | |
) | |
( | |
builtins.removeAttrs source [ | |
"name" | |
"version" | |
"license" | |
"license_path" | |
] | |
); | |
transformSource = | |
sourceName: source: | |
let | |
extracted = extractSha256 source; | |
in | |
( | |
if extracted == null then | |
source | |
else | |
{ | |
meta = { | |
inherit release; | |
name = source.name or null; | |
version = source.version or null; | |
license = source.license or null; | |
}; | |
systems = extracted; | |
} | |
); | |
in | |
{ | |
name = "${release}"; | |
value = (builtins.mapAttrs transformSource redistrib); | |
}; | |
allEntries = builtins.listToAttrs (map transformOneEntry redistribsSufficientVersion); | |
in | |
{ | |
data = allEntries; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env nix-shell | |
#!nix-shell -i bash -p curl ripgrep jq nixfmt-rfc-style | |
BASE_RELEASE_URL="https://developer.download.nvidia.com/compute/cuda/redist/" | |
nix eval --arg-from-file redistribs_raw \ | |
<((while read release; do | |
curl -f --silent "${BASE_RELEASE_URL}/redistrib_${release}.json" | | |
jq --arg release "$release" '. += { "redistrib_release": $release } ' | |
done < \ | |
<(curl --silent "${BASE_RELEASE_URL}" | | |
rg "^\s+<span class='file'.*>redistrib_(.*)\.json.*$" -or '$1')) | jq -s '.') \ | |
-f ./update-helper.nix data | nixfmt >releases.nix |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment