From 31589fe918a19b09bc778ebbcd75b0ca1f445eaa Mon Sep 17 00:00:00 2001 From: Timothy Stott Date: Mon, 9 Nov 2020 22:33:46 +0000 Subject: [PATCH] terraform-providers: support providers with Go module --- .../cluster/terraform-providers/default.nix | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/cluster/terraform-providers/default.nix b/pkgs/applications/networking/cluster/terraform-providers/default.nix index 6ce7ad6092af..a66da4748c14 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/default.nix +++ b/pkgs/applications/networking/cluster/terraform-providers/default.nix @@ -1,4 +1,5 @@ { lib +, buildGoModule , buildGoPackage , fetchFromGitHub , callPackage @@ -7,7 +8,23 @@ let list = lib.importJSON ./providers.json; - toDrv = name: data: + buildWithGoModule = data: + buildGoModule { + pname = data.repo; + version = data.version; + subPackages = [ "." ]; + src = fetchFromGitHub { + inherit (data) owner repo rev sha256; + }; + vendorSha256 = data.vendorSha256 or null; + + # Terraform allow checking the provider versions, but this breaks + # if the versions are not provided via file paths. + postBuild = "mv $NIX_BUILD_TOP/go/bin/${data.repo}{,_v${data.version}}"; + passthru = data; + }; + + buildWithGoPackage = data: buildGoPackage { pname = data.repo; version = data.version; @@ -50,7 +67,9 @@ let }); # These providers are managed with the ./update-all script - automated-providers = lib.mapAttrs (toDrv) list; + automated-providers = lib.mapAttrs (_: attrs: + (if (lib.hasAttr "vendorSha256" attrs) then buildWithGoModule else buildWithGoPackage) + attrs) list; # These are the providers that don't fall in line with the default model special-providers = {