diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix')
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix | 141 |
1 files changed, 24 insertions, 117 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix index 73fc6df024e6..b7b6c8ad73b3 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix +++ b/infra/libkookie/nixpkgs/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; @@ -22,43 +39,13 @@ let passthru = data; }; - # Google is now using the vendored go modules, which works a bit differently - # and is not 100% compatible with the pre-modules vendored folders. - # - # Instead of switching to goModules which requires a goModSha256, patch the - # goPackage derivation so it can install the top-level. - patchGoModVendor = drv: - drv.overrideAttrs (attrs: { - buildFlags = "-mod=vendor"; - - # override configurePhase to not move the source into GOPATH - configurePhase = '' - export GOPATH=$NIX_BUILD_TOP/go:$GOPATH - export GOCACHE=$TMPDIR/go-cache - export GO111MODULE=on - ''; - - # just build and install into $GOPATH/bin - buildPhase = '' - go install -mod=vendor -v -p 16 . - - runHook postBuild - ''; - - # don't run the tests, they are broken in this setup - doCheck = false; - }); - # 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 = { - # Override providers that use Go modules + vendor/ folder - google = patchGoModVendor automated-providers.google; - google-beta = patchGoModVendor automated-providers.google-beta; - ibm = patchGoModVendor automated-providers.ibm; - acme = automated-providers.acme.overrideAttrs (attrs: { prePatch = attrs.prePatch or "" + '' substituteInPlace go.mod --replace terraform-providers/terraform-provider-acme getstackhead/terraform-provider-acme @@ -66,95 +53,15 @@ let ''; }); - # providers that were moved to the `hashicorp` organization, - # but haven't updated their references yet: - - # https://github.com/hashicorp/terraform-provider-archive/pull/67 - archive = automated-providers.archive.overrideAttrs (attrs: { - prePatch = attrs.prePatch or "" + '' - substituteInPlace go.mod --replace terraform-providers/terraform-provider-archive hashicorp/terraform-provider-archive - substituteInPlace main.go --replace terraform-providers/terraform-provider-archive hashicorp/terraform-provider-archive - ''; - }); - - # https://github.com/hashicorp/terraform-provider-dns/pull/101 - dns = automated-providers.dns.overrideAttrs (attrs: { - prePatch = attrs.prePatch or "" + '' - substituteInPlace go.mod --replace terraform-providers/terraform-provider-dns hashicorp/terraform-provider-dns - substituteInPlace main.go --replace terraform-providers/terraform-provider-dns hashicorp/terraform-provider-dns - ''; - }); - - # https://github.com/hashicorp/terraform-provider-external/pull/41 - external = automated-providers.external.overrideAttrs (attrs: { - prePatch = attrs.prePatch or "" + '' - substituteInPlace go.mod --replace terraform-providers/terraform-provider-external hashicorp/terraform-provider-external - substituteInPlace main.go --replace terraform-providers/terraform-provider-external hashicorp/terraform-provider-external - ''; - }); - - # https://github.com/hashicorp/terraform-provider-helm/pull/522 - helm = automated-providers.helm.overrideAttrs (attrs: { - prePatch = attrs.prePatch or "" + '' - substituteInPlace go.mod --replace terraform-providers/terraform-provider-helm hashicorp/terraform-provider-helm - substituteInPlace main.go --replace terraform-providers/terraform-provider-helm hashicorp/terraform-provider-helm - ''; - }); - - # https://github.com/hashicorp/terraform-provider-http/pull/40 - http = automated-providers.http.overrideAttrs (attrs: { - prePatch = attrs.prePatch or "" + '' - substituteInPlace go.mod --replace terraform-providers/terraform-provider-http hashicorp/terraform-provider-http - substituteInPlace main.go --replace terraform-providers/terraform-provider-http hashicorp/terraform-provider-http - ''; - }); - - # https://github.com/hashicorp/terraform-provider-local/pull/40 - local = automated-providers.local.overrideAttrs (attrs: { - prePatch = attrs.prePatch or "" + '' - substituteInPlace go.mod --replace terraform-providers/terraform-provider-local hashicorp/terraform-provider-local - substituteInPlace main.go --replace terraform-providers/terraform-provider-local hashicorp/terraform-provider-local - ''; - }); - - # https://github.com/hashicorp/terraform-provider-null/pull/43 - null = automated-providers.null.overrideAttrs (attrs: { - prePatch = attrs.prePatch or "" + '' - substituteInPlace go.mod --replace terraform-providers/terraform-provider-null hashicorp/terraform-provider-null - substituteInPlace main.go --replace terraform-providers/terraform-provider-null hashicorp/terraform-provider-null - ''; - }); - - # https://github.com/hashicorp/terraform-provider-random/pull/107 - random = automated-providers.random.overrideAttrs (attrs: { - prePatch = attrs.prePatch or "" + '' - substituteInPlace go.mod --replace terraform-providers/terraform-provider-random hashicorp/terraform-provider-random - substituteInPlace main.go --replace terraform-providers/terraform-provider-random hashicorp/terraform-provider-random - ''; - }); - - # https://github.com/hashicorp/terraform-provider-template/pull/79 - template = automated-providers.template.overrideAttrs (attrs: { - prePatch = attrs.prePatch or "" + '' - substituteInPlace go.mod --replace terraform-providers/terraform-provider-template hashicorp/terraform-provider-template - substituteInPlace main.go --replace terraform-providers/terraform-provider-template hashicorp/terraform-provider-template - ''; - }); - - # https://github.com/hashicorp/terraform-provider-tls/pull/71 - tls = automated-providers.tls.overrideAttrs (attrs: { - prePatch = attrs.prePatch or "" + '' - substituteInPlace go.mod --replace terraform-providers/terraform-provider-tls hashicorp/terraform-provider-tls - substituteInPlace main.go --replace terraform-providers/terraform-provider-tls hashicorp/terraform-provider-tls - ''; - }); - # Packages that don't fit the default model ansible = callPackage ./ansible {}; + cloudfoundry = callPackage ./cloudfoundry {}; elasticsearch = callPackage ./elasticsearch {}; gandi = callPackage ./gandi {}; + hcloud = callPackage ./hcloud {}; keycloak = callPackage ./keycloak {}; libvirt = callPackage ./libvirt {}; + linuxbox = callPackage ./linuxbox {}; lxd = callPackage ./lxd {}; shell = callPackage ./shell {}; vpsadmin = callPackage ./vpsadmin {}; |