{ungoogled-,}chromium,chromedriver: 130.0.6723.58 -> 130.0.6723.69 (#351519)
[NixPkgs.git] / pkgs / servers / dns / coredns / default.nix
blob3cda1b6cf1dc200d62fd3f9361b1a23a55d31eb9
1 { lib
2 , stdenv
3 , buildGoModule
4 , fetchFromGitHub
5 , installShellFiles
6 , nixosTests
7 , externalPlugins ? []
8 , vendorHash ? "sha256-mp+0/DQTNsgAZTnLqcQq1HVLAfKr5vUGYSZlIvM7KpE="
9 }:
11 let
12   attrsToPlugins = attrs:
13     builtins.map ({name, repo, version}: "${name}:${repo}") attrs;
14   attrsToSources = attrs:
15     builtins.map ({name, repo, version}: "${repo}@${version}") attrs;
16 in buildGoModule rec {
17   pname = "coredns";
18   version = "1.11.3";
20   src = fetchFromGitHub {
21     owner = "coredns";
22     repo = "coredns";
23     rev = "v${version}";
24     sha256 = "sha256-8LZMS1rAqEZ8k1IWSRkQ2O650oqHLP0P31T8oUeE4fw=";
25   };
27   inherit vendorHash;
29   nativeBuildInputs = [ installShellFiles ];
31   outputs = [ "out" "man" ];
33   # Override the go-modules fetcher derivation to fetch plugins
34   modBuildPhase = ''
35     for plugin in ${builtins.toString (attrsToPlugins externalPlugins)}; do echo $plugin >> plugin.cfg; done
36     for src in ${builtins.toString (attrsToSources externalPlugins)}; do go get $src; done
37     GOOS= GOARCH= go generate
38     go mod vendor
39   '';
41   modInstallPhase = ''
42     mv -t vendor go.mod go.sum plugin.cfg
43     cp -r --reflink=auto vendor "$out"
44   '';
46   preBuild = ''
47     chmod -R u+w vendor
48     mv -t . vendor/go.{mod,sum} vendor/plugin.cfg
50     GOOS= GOARCH= go generate
51   '';
53   postPatch = ''
54     substituteInPlace test/file_cname_proxy_test.go \
55       --replace "TestZoneExternalCNAMELookupWithProxy" \
56                 "SkipZoneExternalCNAMELookupWithProxy"
58     substituteInPlace test/readme_test.go \
59       --replace "TestReadme" "SkipReadme"
61     # this test fails if any external plugins were imported.
62     # it's a lint rather than a test of functionality, so it's safe to disable.
63     substituteInPlace test/presubmit_test.go \
64       --replace "TestImportOrdering" "SkipImportOrdering"
65   '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
66     # loopback interface is lo0 on macos
67     sed -E -i 's/\blo\b/lo0/' plugin/bind/setup_test.go
69     # test is apparently outdated but only exhibits this on darwin
70     substituteInPlace test/corefile_test.go \
71       --replace "TestCorefile1" "SkipCorefile1"
72   '';
74   postInstall = ''
75     installManPage man/*
76   '';
78   passthru.tests = {
79     kubernetes-single-node = nixosTests.kubernetes.dns-single-node;
80     kubernetes-multi-node = nixosTests.kubernetes.dns-multi-node;
81   };
83   meta = with lib; {
84     homepage = "https://coredns.io";
85     description = "DNS server that runs middleware";
86     mainProgram = "coredns";
87     license = licenses.asl20;
88     maintainers = with maintainers; [ rushmorem rtreffer deltaevo ];
89   };