diff options
Diffstat (limited to 'pkgs/applications/networking/cluster/terraform/default.nix')
-rw-r--r-- | pkgs/applications/networking/cluster/terraform/default.nix | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/pkgs/applications/networking/cluster/terraform/default.nix b/pkgs/applications/networking/cluster/terraform/default.nix index 8fd76f7df75d..efff9282bd3a 100644 --- a/pkgs/applications/networking/cluster/terraform/default.nix +++ b/pkgs/applications/networking/cluster/terraform/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, buildGoPackage, fetchpatch, fetchFromGitHub }: +{ stdenv, lib, buildEnv, buildGoPackage, fetchpatch, fetchFromGitHub, makeWrapper }: let goPackagePath = "github.com/hashicorp/terraform"; @@ -37,6 +37,36 @@ let maintainers = with maintainers; [ jgeerds zimbatm peterhoeg ]; }; } // attrs'); + + pluggable = terraform: + let + withPlugins = plugins: stdenv.mkDerivation { + name = "${terraform.name}-with-plugins"; + buildInputs = [ makeWrapper ]; + + buildCommand = '' + mkdir -p $out/bin/ + makeWrapper "${terraform.bin}/bin/terraform" "$out/bin/terraform" \ + --set NIX_TERRAFORM_PLUGIN_DIR "${buildEnv { name = "tf-plugin-env"; paths = plugins terraform.plugins; }}/bin" + ''; + + passthru = { + withPlugins = newplugins: withPlugins (x: newplugins x ++ plugins x); + + # Ouch + overrideDerivation = f: (pluggable (terraform.overrideDerivation f)).withPlugins plugins; + overrideAttrs = f: (pluggable (terraform.overrideAttrs f)).withPlugins plugins; + override = x: (pluggable (terraform.override x)).withPlugins plugins; + }; + }; + in withPlugins (_: []); + + plugins = { + aws = import providers/aws.nix { inherit stdenv lib buildGoPackage fetchFromGitHub; }; + azurerm = import providers/azurerm.nix { inherit stdenv lib buildGoPackage fetchFromGitHub; }; + google = import providers/google.nix { inherit stdenv lib buildGoPackage fetchFromGitHub; }; + kubernetes = import providers/kubernetes.nix { inherit stdenv lib buildGoPackage fetchFromGitHub; }; + }; in { terraform_0_8_5 = generic { version = "0.8.5"; @@ -55,8 +85,10 @@ in { doCheck = false; }; - terraform_0_10 = generic { + terraform_0_10 = pluggable (generic { version = "0.10.2"; sha256 = "1q7za7jcfqv914a3ynfl7hrqbgwcahgm418kivjrac6p1q26w502"; - }; + patches = [ ./provider-path.patch ]; + passthru = { inherit plugins; }; + }); } |