ff1a94e523
The nixpkgs-unstable channel's programs.sqlite was used to identify packages producing exactly one binary, and these automatically added to their package definitions wherever possible.
80 lines
2.2 KiB
Nix
80 lines
2.2 KiB
Nix
{ lib
|
|
, stdenv
|
|
, buildGoModule
|
|
, fetchFromGitHub
|
|
, installShellFiles
|
|
, externalPlugins ? []
|
|
, vendorHash ? "sha256-tp22jj6DNnYFQhtAFW2uLo10ty//dyNqIDH2egDgbOw="
|
|
}:
|
|
|
|
let
|
|
attrsToPlugins = attrs:
|
|
builtins.map ({name, repo, version}: "${name}:${repo}") attrs;
|
|
attrsToSources = attrs:
|
|
builtins.map ({name, repo, version}: "${repo}@${version}") attrs;
|
|
in buildGoModule rec {
|
|
pname = "coredns";
|
|
version = "1.11.1";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "coredns";
|
|
repo = "coredns";
|
|
rev = "v${version}";
|
|
sha256 = "sha256-XZoRN907PXNKV2iMn51H/lt8yPxhPupNfJ49Pymdm9Y=";
|
|
};
|
|
|
|
inherit vendorHash;
|
|
|
|
nativeBuildInputs = [ installShellFiles ];
|
|
|
|
outputs = [ "out" "man" ];
|
|
|
|
# Override the go-modules fetcher derivation to fetch plugins
|
|
modBuildPhase = ''
|
|
for plugin in ${builtins.toString (attrsToPlugins externalPlugins)}; do echo $plugin >> plugin.cfg; done
|
|
for src in ${builtins.toString (attrsToSources externalPlugins)}; do go get $src; done
|
|
GOOS= GOARCH= go generate
|
|
go mod vendor
|
|
'';
|
|
|
|
modInstallPhase = ''
|
|
mv -t vendor go.mod go.sum plugin.cfg
|
|
cp -r --reflink=auto vendor "$out"
|
|
'';
|
|
|
|
preBuild = ''
|
|
chmod -R u+w vendor
|
|
mv -t . vendor/go.{mod,sum} vendor/plugin.cfg
|
|
|
|
GOOS= GOARCH= go generate
|
|
'';
|
|
|
|
postPatch = ''
|
|
substituteInPlace test/file_cname_proxy_test.go \
|
|
--replace "TestZoneExternalCNAMELookupWithProxy" \
|
|
"SkipZoneExternalCNAMELookupWithProxy"
|
|
|
|
substituteInPlace test/readme_test.go \
|
|
--replace "TestReadme" "SkipReadme"
|
|
|
|
# this test fails if any external plugins were imported.
|
|
# it's a lint rather than a test of functionality, so it's safe to disable.
|
|
substituteInPlace test/presubmit_test.go \
|
|
--replace "TestImportOrdering" "SkipImportOrdering"
|
|
'' + lib.optionalString stdenv.isDarwin ''
|
|
# loopback interface is lo0 on macos
|
|
sed -E -i 's/\blo\b/lo0/' plugin/bind/setup_test.go
|
|
'';
|
|
|
|
postInstall = ''
|
|
installManPage man/*
|
|
'';
|
|
|
|
meta = with lib; {
|
|
homepage = "https://coredns.io";
|
|
description = "A DNS server that runs middleware";
|
|
mainProgram = "coredns";
|
|
license = licenses.asl20;
|
|
maintainers = with maintainers; [ rushmorem rtreffer deltaevo ];
|
|
};
|
|
}
|