biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / servers / dns / ncdns / default.nix
blob37d4b596d244dcc3493790c8aea628b36c330c9c
1 { lib
2 , buildGoModule
3 , fetchFromGitHub
4 , nixosTests
5 , libcap
6 }:
8 let
10   # ncdns source
11   ncdns = fetchFromGitHub {
12     owner = "namecoin";
13     repo = "ncdns";
14     rev = "5adda8d4726d389597df432eb2e17eac1677cea2";
15     sha256 = "sha256-Q/RrUTY4WfrByvQv1eCX29DQNf2vSIR29msmhgS73xk=";
16   };
18   # script to patch the crypto/x509 package
19   x509 = fetchFromGitHub {
20     owner = "namecoin";
21     repo = "x509-compressed";
22     rev = "2e30a62a69dac54a977410f283308df232a5d244";
23     sha256 = "sha256-/Bd1gYjguj8AiKHyiaIKT+Y3R7kq5gLZlJhY9g/xFXk=";
24     # ncdns must be put in a subdirectory for this to work.
25     postFetch = ''
26       cp -r --no-preserve=mode "${ncdns}" "$out/ncdns"
27     '';
28   };
32 buildGoModule {
33   pname = "ncdns";
34   version = "unstable-2022-10-07";
36   src = x509;
38   vendorHash = "sha256-ENtTnDsz5WhRz1kiqnWQ5vyEpZtgi7ZeYvksffgW78k=";
40   # Override the goModules fetcher derivation to apply
41   # upstream's patch of the crypto/x509 library.
42   modBuildPhase = ''
43     go mod init github.com/namecoin/x509-compressed
44     go generate ./...
45     go mod tidy
47     cd ncdns
48     go mod init github.com/namecoin/ncdns
49     go mod edit \
50       -replace github.com/coreos/go-systemd=github.com/coreos/go-systemd/v22@latest \
51       -replace github.com/namecoin/x509-compressed=$NIX_BUILD_TOP/source
52     go mod tidy
53   '';
55   # Copy over the lockfiles as well, because the source
56   # doesn't contain it. The fixed-output derivation is
57   # probably not reproducible anyway.
58   modInstallPhase = ''
59     mv -t vendor go.mod go.sum
60     cp -r --reflink=auto vendor "$out"
61   '';
63   buildInputs = [ libcap ];
65   # The fetcher derivation must run with a different
66   # $sourceRoot, but buildGoModule doesn't allow that,
67   # so we use this ugly hack.
68   unpackPhase = ''
69     runHook preUnpack
71     unpackFile "$src"
72     sourceRoot=$PWD/source/ncdns
73     chmod -R u+w -- "$sourceRoot"
74     cd $sourceRoot
76     runHook postUnpack
77   '';
79   # Same as above: can't use `patches` because that would
80   # be also applied to the fetcher derivation, thus failing.
81   patchPhase = ''
82     runHook prePatch
83     patch -p1 < ${./fix-tpl-path.patch}
84     runHook postPatch
85   '';
87   preBuild = ''
88     chmod -R u+w vendor
89     mv -t . vendor/go.{mod,sum}
90   '';
92   preCheck = ''
93     # needed to run the ncdns test suite
94     ln -s $PWD/vendor ../../go/src
95   '';
97   postInstall = ''
98     mkdir -p "$out/share"
99     cp -r _doc "$out/share/doc"
100     cp -r _tpl "$out/share/tpl"
101   '';
103   passthru.tests.ncdns = nixosTests.ncdns;
105   meta = with lib; {
106     description = "Namecoin to DNS bridge daemon";
107     homepage = "https://github.com/namecoin/ncdns";
108     license = licenses.gpl3Plus;
109     maintainers = with maintainers; [ rnhmjoj ];
110   };