format c_
parent
00e7a15b19
commit
29e5db764d
39
c_.nix
39
c_.nix
|
@ -1,6 +1,7 @@
|
||||||
# a small helper that only builds on top of builtins functions
|
# a small helper that only builds on top of builtins functions
|
||||||
{ src }@inputs:
|
{ src }@inputs:
|
||||||
builtins // (let
|
builtins // (
|
||||||
|
let
|
||||||
formatSecondsSinceEpoch = t:
|
formatSecondsSinceEpoch = t:
|
||||||
let
|
let
|
||||||
rem = x: y: x - x / y * y;
|
rem = x: y: x - x / y * y;
|
||||||
|
@ -23,7 +24,8 @@ m = mp + (if mp < 10 then 3 else -9);
|
||||||
y' = y + (if m <= 2 then 1 else 0);
|
y' = y + (if m <= 2 then 1 else 0);
|
||||||
|
|
||||||
pad = s: if builtins.stringLength s < 2 then "0" + s else s;
|
pad = s: if builtins.stringLength s < 2 then "0" + s else s;
|
||||||
in "${toString y'}${pad (toString m)}${pad (toString d)}${pad (toString hours)}"
|
in
|
||||||
|
"${toString y'}${pad (toString m)}${pad (toString d)}${pad (toString hours)}"
|
||||||
+ "${pad (toString minutes)}${pad (toString seconds)}";
|
+ "${pad (toString minutes)}${pad (toString seconds)}";
|
||||||
|
|
||||||
fetchTree =
|
fetchTree =
|
||||||
|
@ -39,10 +41,13 @@ fetchTree =
|
||||||
, lastModified ? 0
|
, lastModified ? 0
|
||||||
}@info:
|
}@info:
|
||||||
if info.type == "github" then
|
if info.type == "github" then
|
||||||
{ outPath =
|
{
|
||||||
|
outPath =
|
||||||
fetchTarball
|
fetchTarball
|
||||||
({ url = "https://api.${info.host or "github.com"}/repos/"
|
({
|
||||||
+ "${info.owner}/${info.repo}/tarball/${info.rev}"; }
|
url = "https://api.${info.host or "github.com"}/repos/"
|
||||||
|
+ "${info.owner}/${info.repo}/tarball/${info.rev}";
|
||||||
|
}
|
||||||
// (if info ? narHash then { sha256 = info.narHash; } else { })
|
// (if info ? narHash then { sha256 = info.narHash; } else { })
|
||||||
);
|
);
|
||||||
rev = info.rev;
|
rev = info.rev;
|
||||||
|
@ -52,7 +57,8 @@ if info.type == "github" then
|
||||||
narHash = info.narHash;
|
narHash = info.narHash;
|
||||||
}
|
}
|
||||||
else if info.type == "git" then
|
else if info.type == "git" then
|
||||||
{ outPath =
|
{
|
||||||
|
outPath =
|
||||||
builtins.fetchGit
|
builtins.fetchGit
|
||||||
({ url = info.url; }
|
({ url = info.url; }
|
||||||
// (if info ? rev then { inherit (info) rev; } else { })
|
// (if info ? rev then { inherit (info) rev; } else { })
|
||||||
|
@ -65,25 +71,28 @@ else if info.type == "git" then
|
||||||
} // (if info ? rev then {
|
} // (if info ? rev then {
|
||||||
rev = info.rev;
|
rev = info.rev;
|
||||||
shortRev = builtins.substring 0 7 info.rev;
|
shortRev = builtins.substring 0 7 info.rev;
|
||||||
} else {
|
} else { })
|
||||||
})
|
|
||||||
else if info.type == "path" then
|
else if info.type == "path" then
|
||||||
{ outPath = builtins.path {
|
{
|
||||||
path = if builtins.substring 0 1 info.path != "/"
|
outPath = builtins.path {
|
||||||
|
path =
|
||||||
|
if builtins.substring 0 1 info.path != "/"
|
||||||
then src + ("/" + info.path) # make this absolute path by prepending ./
|
then src + ("/" + info.path) # make this absolute path by prepending ./
|
||||||
else info.path; # it's already an absolute path
|
else info.path; # it's already an absolute path
|
||||||
};
|
};
|
||||||
narHash = info.narHash;
|
narHash = info.narHash;
|
||||||
}
|
}
|
||||||
else if info.type == "tarball" then
|
else if info.type == "tarball" then
|
||||||
{ outPath =
|
{
|
||||||
|
outPath =
|
||||||
fetchTarball
|
fetchTarball
|
||||||
({ inherit (info) url; }
|
({ inherit (info) url; }
|
||||||
// (if info ? narHash then { sha256 = info.narHash; } else { })
|
// (if info ? narHash then { sha256 = info.narHash; } else { })
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else if info.type == "gitlab" then
|
else if info.type == "gitlab" then
|
||||||
{ inherit (info) rev narHash lastModified;
|
{
|
||||||
|
inherit (info) rev narHash lastModified;
|
||||||
outPath =
|
outPath =
|
||||||
fetchTarball
|
fetchTarball
|
||||||
({ url = "https://${info.host or "gitlab.com"}/api/v4/projects/${info.owner}%2F${info.repo}/repository/archive.tar.gz?sha=${info.rev}"; }
|
({ url = "https://${info.host or "gitlab.com"}/api/v4/projects/${info.owner}%2F${info.repo}/repository/archive.tar.gz?sha=${info.rev}"; }
|
||||||
|
@ -94,7 +103,9 @@ else if info.type == "gitlab" then
|
||||||
else
|
else
|
||||||
# FIXME: add Mercurial, tarball inputs.
|
# FIXME: add Mercurial, tarball inputs.
|
||||||
throw "flake input has unsupported input type '${info.type}'";
|
throw "flake input has unsupported input type '${info.type}'";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
inherit fetchTree;
|
inherit fetchTree;
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue