2020-05-20 00:30:53 +02:00
|
|
|
{ pkgs ? import <nixpkgs> { } }:
|
|
|
|
let
|
|
|
|
terranix = pkgs.callPackage (pkgs.fetchgit {
|
|
|
|
url = "https://github.com/mrVanDalo/terranix.git";
|
2020-11-12 23:50:09 +01:00
|
|
|
rev = "2.3.0";
|
|
|
|
sha256 = "030067h3gjc02llaa7rx5iml0ikvw6szadm0nrss2sqzshsfimm4";
|
2020-05-20 00:30:53 +02:00
|
|
|
}) { };
|
|
|
|
|
|
|
|
terraform = pkgs.writers.writeBashBin "terraform" ''
|
|
|
|
export TF_VAR_hcloud_api_token=`${pkgs.pass}/bin/pass development/hetzner.com/api-token`
|
|
|
|
${pkgs.terraform_0_12}/bin/terraform "$@"
|
|
|
|
'';
|
|
|
|
|
|
|
|
in pkgs.mkShell {
|
|
|
|
|
|
|
|
buildInputs = [
|
|
|
|
|
|
|
|
terranix
|
|
|
|
terraform
|
|
|
|
|
|
|
|
(pkgs.writers.writeBashBin "prepare" ''
|
|
|
|
set -e
|
|
|
|
set -o pipefail
|
|
|
|
${pkgs.openssh}/bin/ssh-keygen -P "" -f ${toString ./.}/sshkey
|
|
|
|
'')
|
|
|
|
|
|
|
|
(pkgs.writers.writeBashBin "build" ''
|
|
|
|
set -e
|
|
|
|
set -o pipefail
|
|
|
|
${terranix}/bin/terranix | ${pkgs.jq}/bin/jq '.' > config.tf.json
|
|
|
|
${terraform}/bin/terraform init
|
|
|
|
${terraform}/bin/terraform apply
|
|
|
|
'')
|
|
|
|
|
|
|
|
(pkgs.writers.writeBashBin "cleanup" ''
|
|
|
|
${terraform}/bin/terraform destroy
|
|
|
|
rm ${toString ./.}/config.tf.json
|
|
|
|
rm ${toString ./.}/sshkey
|
|
|
|
rm ${toString ./.}/sshkey.pub
|
|
|
|
rm ${toString ./.}/terraform.tfstate*
|
|
|
|
'')
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
}
|