terranix: init
Adds simple `nix run .#apply` & `nix run .#destroy` which renders the configuration file and let Terraform drive it. Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
This commit is contained in:
parent
403bb2d625
commit
28b4492214
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
||||||
result
|
result
|
||||||
.gcroots
|
.gcroots
|
||||||
|
config.tf.json
|
||||||
|
|
102
flake.lock
102
flake.lock
|
@ -23,6 +23,38 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"bats-assert": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1636059754,
|
||||||
|
"narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=",
|
||||||
|
"owner": "bats-core",
|
||||||
|
"repo": "bats-assert",
|
||||||
|
"rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "bats-core",
|
||||||
|
"repo": "bats-assert",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bats-support": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1548869839,
|
||||||
|
"narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=",
|
||||||
|
"owner": "bats-core",
|
||||||
|
"repo": "bats-support",
|
||||||
|
"rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "bats-core",
|
||||||
|
"repo": "bats-support",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"colmena": {
|
"colmena": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
|
@ -115,6 +147,21 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1634851050,
|
||||||
|
"narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "c91f3de5adaf1de973b797ef7485e441a65b8935",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -230,6 +277,21 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1636823747,
|
||||||
|
"narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"pre-commit-hooks": {
|
"pre-commit-hooks": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -255,7 +317,8 @@
|
||||||
"hydra",
|
"hydra",
|
||||||
"nix"
|
"nix"
|
||||||
],
|
],
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs",
|
||||||
|
"terranix": "terranix"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stable": {
|
"stable": {
|
||||||
|
@ -288,6 +351,43 @@
|
||||||
"repo": "default",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"terranix": {
|
||||||
|
"inputs": {
|
||||||
|
"bats-assert": "bats-assert",
|
||||||
|
"bats-support": "bats-support",
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"terranix-examples": "terranix-examples"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1695406838,
|
||||||
|
"narHash": "sha256-xiUfVD6rtsVWFotVtUW3Q1nQh4obKzgvpN1wqZuGXvM=",
|
||||||
|
"owner": "terranix",
|
||||||
|
"repo": "terranix",
|
||||||
|
"rev": "fc9077ca02ab5681935dbf0ecd725c4d889b9275",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "terranix",
|
||||||
|
"repo": "terranix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"terranix-examples": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1636300201,
|
||||||
|
"narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=",
|
||||||
|
"owner": "terranix",
|
||||||
|
"repo": "terranix-examples",
|
||||||
|
"rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "terranix",
|
||||||
|
"repo": "terranix-examples",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
44
flake.nix
44
flake.nix
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
|
terranix.url = "github:terranix/terranix";
|
||||||
|
|
||||||
agenix.url = "github:ryantm/agenix";
|
agenix.url = "github:ryantm/agenix";
|
||||||
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
@ -16,10 +17,49 @@
|
||||||
lix.follows = "hydra/nix";
|
lix.follows = "hydra/nix";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { nixpkgs, ... } @ inputs: {
|
outputs = { self, nixpkgs, terranix, ... } @ inputs:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
localSystem = system;
|
||||||
|
overlays = [
|
||||||
|
inputs.hydra.overlays.default
|
||||||
|
inputs.lix.overlays.default
|
||||||
|
];
|
||||||
|
};
|
||||||
|
lib = pkgs.lib;
|
||||||
|
terraform = pkgs.opentofu;
|
||||||
|
terraformCfg = terranix.lib.terranixConfiguration {
|
||||||
|
inherit system;
|
||||||
|
modules = [ ];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
apps.${system} = {
|
||||||
|
apply = {
|
||||||
|
type = "app";
|
||||||
|
program = toString (pkgs.writers.writeBash "apply" ''
|
||||||
|
if [[ -e config.tf.json ]]; then rm -f config.tf.json; fi
|
||||||
|
cp ${terraformCfg} config.tf.json \
|
||||||
|
&& ${lib.getExe terraform} init \
|
||||||
|
&& ${lib.getExe terraform} apply
|
||||||
|
'');
|
||||||
|
};
|
||||||
|
# nix run ".#destroy"
|
||||||
|
destroy = {
|
||||||
|
type = "app";
|
||||||
|
program = toString (pkgs.writers.writeBash "destroy" ''
|
||||||
|
if [[ -e config.tf.json ]]; then rm -f config.tf.json; fi
|
||||||
|
cp ${terraformCfg} config.tf.json \
|
||||||
|
&& ${lib.getExe terraform} init \
|
||||||
|
&& ${lib.getExe terraform} destroy
|
||||||
|
'');
|
||||||
|
};
|
||||||
|
};
|
||||||
|
defaultApp.${system} = self.apps.${system}.apply;
|
||||||
colmena = {
|
colmena = {
|
||||||
meta.nixpkgs = import nixpkgs {
|
meta.nixpkgs = import nixpkgs {
|
||||||
system = "x86_64-linux";
|
localSystem = system;
|
||||||
overlays = [
|
overlays = [
|
||||||
inputs.hydra.overlays.default
|
inputs.hydra.overlays.default
|
||||||
inputs.lix.overlays.default
|
inputs.lix.overlays.default
|
||||||
|
|
Loading…
Reference in a new issue