|
|
|
@ -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; }; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|