summaryrefslogtreecommitdiffstats
path: root/pkgs/build-support/fetch9front/default.nix
blob: 1ddc5eba04ec736c78f95590d69e80c602f3c0cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
{
  fetchgit,
  fetchzip,
  lib,
}:

lib.makeOverridable (
  {
    owner,
    repo,
    rev,
    domain ? "git.9front.org",
    name ? "source",
    leaveDotGit ? false,
    deepClone ? false,
    ... # For hash agility
  }@args:

  let
    passthruAttrs = removeAttrs args [
      "domain"
      "owner"
      "repo"
      "rev"
      "leaveDotGit"
      "deepClone"
    ];

    useFetchGit = leaveDotGit || deepClone;
    fetcher = if useFetchGit then fetchgit else fetchzip;

    gitRepoUrl = "git://${domain}/${owner}/${repo}";

    fetcherArgs =
      (
        if useFetchGit then
          {
            # git9 does not support shallow fetches
            inherit rev leaveDotGit;
            url = gitRepoUrl;
          }
        else
          {
            url = "https://${domain}/${owner}/${repo}/${rev}/snap.tar.gz";

            passthru = {
              inherit gitRepoUrl;
            };
          }
      )
      // passthruAttrs
      // {
        inherit name;
      };
  in

  fetcher fetcherArgs // { inherit rev; }
)