fetchFromRadicle: init

This commit is contained in:
Defelo
2025-08-17 03:34:56 +02:00
parent 5e2cc45271
commit 0f4642c796
4 changed files with 67 additions and 0 deletions

View File

@@ -896,6 +896,24 @@ If `fetchSubmodules` is `true`, `fetchFromSourcehut` uses `fetchgit`
or `fetchhg` with `fetchSubmodules` or `fetchSubrepos` set to `true`, or `fetchhg` with `fetchSubmodules` or `fetchSubrepos` set to `true`,
respectively. Otherwise, the fetcher uses `fetchzip`. respectively. Otherwise, the fetcher uses `fetchzip`.
## `fetchFromRadicle` {#fetchfromradicle}
This is used with Radicle repositories. The arguments expected are similar to `fetchgit`.
Requires a `seed` argument (e.g. `seed.radicle.xyz` or `rosa.radicle.xyz`) and a `repo` argument
(the repository id *without* the `rad:` prefix). Also accepts an optional `node` argument which
contains the id of the node from which to fetch the specified ref. If `node` is `null` (the
default), a canonical ref is fetched instead.
```nix
fetchFromRadicle {
seed = "seed.radicle.xyz";
repo = "z3gqcJUoA1n9HaHKufZs5FCSGazv5"; # heartwood
tag = "releases/1.3.0";
hash = "sha256-4o88BWKGGOjCIQy7anvzbA/kPOO+ZsLMzXJhE61odjw=";
}
```
## `requireFile` {#requirefile} ## `requireFile` {#requirefile}
`requireFile` allows requesting files that cannot be fetched automatically, but whose content is known. `requireFile` allows requesting files that cannot be fetched automatically, but whose content is known.

View File

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

View File

@@ -0,0 +1,44 @@
{ lib, fetchgit }:
lib.makeOverridable (
{
seed,
repo,
node ? null,
rev ? null,
tag ? null,
...
}@args:
assert lib.assertMsg (lib.xor (tag != null) (
rev != null
)) "fetchFromRadicle requires one of either `rev` or `tag` to be provided (not both).";
let
namespacePrefix = lib.optionalString (node != null) "refs/namespaces/${node}/";
rev' = if tag != null then "refs/tags/${tag}" else rev;
in
fetchgit (
{
url = "https://${seed}/${repo}.git";
rev = "${namespacePrefix}${rev'}";
}
// removeAttrs args [
"seed"
"repo"
"node"
"rev"
"tag"
]
)
// {
inherit
seed
repo
node
rev
tag
;
}
)

View File

@@ -697,6 +697,8 @@ with pkgs;
fetchFromRepoOrCz = callPackage ../build-support/fetchrepoorcz { }; fetchFromRepoOrCz = callPackage ../build-support/fetchrepoorcz { };
fetchFromRadicle = callPackage ../build-support/fetchradicle { };
fetchgx = callPackage ../build-support/fetchgx { }; fetchgx = callPackage ../build-support/fetchgx { };
fetchPypi = callPackage ../build-support/fetchpypi { }; fetchPypi = callPackage ../build-support/fetchpypi { };