fetchRadiclePatch: init

This commit is contained in:
Defelo 2025-08-30 15:05:40 +02:00
parent 8bb4e10098
commit c2ec9234e8
No known key found for this signature in database
GPG key ID: 2A05272471204DD3
4 changed files with 62 additions and 0 deletions

View file

@ -914,6 +914,21 @@ fetchFromRadicle {
}
```
## `fetchRadiclePatch` {#fetchradiclepatch}
`fetchRadiclePatch` works very similarly to `fetchFromRadicle` with almost the same arguments
expected. However, instead of a `rev` or `tag` argument, a `revision` argument is expected, which
contains the full revision id of the Radicle patch to fetch.
```nix
fetchRadiclePatch {
seed = "rosa.radicle.xyz";
repo = "z4V1sjrXqjvFdnCUbxPFqd5p4DtH5"; # radicle-explorer
revision = "d97d872386c70607beda2fb3fc2e60449e0f4ce4"; # patch: d77e064
hash = "sha256-ttnNqj0lhlSP6BGzEhhUOejKkkPruM9yMwA5p9Di4bk=";
}
```
## `requireFile` {#requirefile}
`requireFile` allows requesting files that cannot be fetched automatically, but whose content is known.

View file

@ -1669,6 +1669,9 @@
"fetchfromradicle": [
"index.html#fetchfromradicle"
],
"fetchradiclepatch": [
"index.html#fetchradiclepatch"
],
"requirefile": [
"index.html#requirefile"
],

View file

@ -0,0 +1,43 @@
{
fetchFromRadicle,
jq,
lib,
}:
lib.makeOverridable (
{
revision,
postFetch ? "",
nativeBuildInputs ? [ ],
...
}@args:
assert lib.assertMsg (
!args ? rev && !args ? tag
) "fetchRadiclePatch does not accept `rev` or `tag` arguments.";
fetchFromRadicle (
{
nativeBuildInputs = [ jq ] ++ nativeBuildInputs;
rev = revision;
leaveDotGit = true;
postFetch = ''
{ read -r head; read -r base; } < <(jq -r '.oid, .base' $out/0)
git -C $out fetch --depth=1 "$url" "$base" "$head"
git -C $out diff "$base" "$head" > patch
rm -r $out
mv patch $out
${postFetch}
'';
}
// removeAttrs args [
"revision"
"postFetch"
"nativeBuildInputs"
"leaveDotGit"
]
)
// {
inherit revision;
}
)

View file

@ -702,6 +702,7 @@ with pkgs;
fetchFromRepoOrCz = callPackage ../build-support/fetchrepoorcz { };
fetchFromRadicle = callPackage ../build-support/fetchradicle { };
fetchRadiclePatch = callPackage ../build-support/fetchradiclepatch { };
fetchgx = callPackage ../build-support/fetchgx { };