aboutsummaryrefslogtreecommitdiff
path: root/flake
diff options
context:
space:
mode:
Diffstat (limited to 'flake')
-rw-r--r--flake/overlays.nix23
-rw-r--r--flake/terraform.nix40
2 files changed, 62 insertions, 1 deletions
diff --git a/flake/overlays.nix b/flake/overlays.nix
index 1eecfcf..2f9100d 100644
--- a/flake/overlays.nix
+++ b/flake/overlays.nix
@@ -1,4 +1,9 @@
-{ inputs, self, ... }:
+{
+ inputs,
+ self,
+ config,
+ ...
+}:
{
flake.overlays.default = _final: prev: {
@@ -8,6 +13,17 @@
perSystem =
{ system, ... }:
+ let
+ mkTerraformCfg =
+ modules:
+ inputs.terranix.lib.terranixConfiguration {
+ inherit system;
+ extraArgs = {
+ inherit (config.flake) nixosConfigurations;
+ };
+ inherit modules;
+ };
+ in
{
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
@@ -18,6 +34,11 @@
inputs.nur.overlays.default
inputs.my-go-tools.overlays.default
self.overlays.default
+ (_self: _super: {
+ adminTerraformCfg = mkTerraformCfg [
+ "${self}/terraform/admin"
+ ];
+ })
];
};
};
diff --git a/flake/terraform.nix b/flake/terraform.nix
new file mode 100644
index 0000000..23cc6d3
--- /dev/null
+++ b/flake/terraform.nix
@@ -0,0 +1,40 @@
+{ lib, ... }:
+{
+ perSystem =
+ { pkgs, ... }:
+ let
+ mkTfWrapper =
+ {
+ tfPlugins,
+ cfg,
+ }:
+ let
+ pkg = pkgs.opentofu.withPlugins tfPlugins;
+ in
+ {
+ type = "app";
+ program = toString (
+ pkgs.writers.writeBash "tf" ''
+ set -xeuo pipefail
+ ln -snf ${cfg} config.tf.json
+ exec ${lib.getExe pkg} "$@"
+ ''
+ );
+ };
+ in
+ {
+ apps = {
+ tf = mkTfWrapper {
+ cfg = pkgs.adminTerraformCfg;
+ tfPlugins = p: [
+ p.cloudflare
+ p.digitalocean
+ p.external
+ p.google
+ p.null
+ p.random
+ ];
+ };
+ };
+ };
+}