forked from pub-solar/infra
58 lines
1.5 KiB
Nix
58 lines
1.5 KiB
Nix
|
{ inputs
|
||
|
, self
|
||
|
, ...
|
||
|
}: {
|
||
|
perSystem = { config, pkgs, system, ... }:
|
||
|
let
|
||
|
terraform = pkgs.terraform;
|
||
|
|
||
|
tf-infra-dns = inputs.terranix.lib.terranixConfiguration {
|
||
|
inherit system;
|
||
|
modules = [ ./dns.nix ];
|
||
|
};
|
||
|
|
||
|
tf-infra-nodes = inputs.terranix.lib.terranixConfiguration {
|
||
|
inherit system;
|
||
|
modules = [
|
||
|
./host.nix
|
||
|
./vms.nix
|
||
|
];
|
||
|
};
|
||
|
in {
|
||
|
packages = {
|
||
|
inherit tf-infra-dns tf-infra-nodes;
|
||
|
};
|
||
|
|
||
|
apps = {
|
||
|
apply-dns = {
|
||
|
type = "app";
|
||
|
program = toString (pkgs.writers.writeBash "apply" ''
|
||
|
if [[ -e config.tf.json ]]; then rm -f config.tf.json; fi
|
||
|
cp ${tf-infra-dns} config.tf.json \
|
||
|
&& ${terraform}/bin/terraform init \
|
||
|
&& ${terraform}/bin/terraform apply
|
||
|
'');
|
||
|
};
|
||
|
apply-nodes = {
|
||
|
type = "app";
|
||
|
program = toString (pkgs.writers.writeBash "apply" ''
|
||
|
if [[ -e config.tf.json ]]; then rm -f config.tf.json; fi
|
||
|
cp ${tf-infra-nodes} config.tf.json \
|
||
|
&& ${terraform}/bin/terraform init \
|
||
|
&& ${terraform}/bin/terraform apply
|
||
|
'');
|
||
|
};
|
||
|
# nix run ".#destroy"
|
||
|
destroy-dns = {
|
||
|
type = "app";
|
||
|
program = toString (pkgs.writers.writeBash "destroy" ''
|
||
|
if [[ -e config.tf.json ]]; then rm -f config.tf.json; fi
|
||
|
cp ${tf-infra-dns} config.tf.json \
|
||
|
&& ${terraform}/bin/terraform init \
|
||
|
&& ${terraform}/bin/terraform destroy
|
||
|
'');
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|