/ terraform / flake-module.nix
flake-module.nix
 1  {
 2    perSystem =
 3      {
 4        config,
 5        pkgs,
 6        ...
 7      }:
 8      {
 9        devShells.terraform = pkgs.mkShellNoCC {
10          packages = [
11            pkgs.sops
12            pkgs.terragrunt
13            pkgs.hurl
14            pkgs.jq
15            pkgs.yq-go
16            pkgs.just
17            pkgs.awscli2
18            pkgs.vultr-cli
19            pkgs.wrangler
20            pkgs.jtbl
21            pkgs.glow
22            config.packages.terraform
23          ];
24        };
25  
26        packages.terraform = pkgs.opentofu.withPlugins (p: [
27          p.hashicorp_aws
28          p.cloudflare_cloudflare
29          p.integrations_github
30          p.vultr_vultr
31          p.carlpett_sops
32          p.hashicorp_local
33          p.hashicorp_null
34        ]);
35  
36        packages.terraform-validate =
37          pkgs.runCommand "terraform-validate"
38            {
39              buildInputs = [ config.packages.terraform ];
40              files = pkgs.lib.fileset.toSource rec {
41                root = ./.;
42                fileset = pkgs.lib.fileset.unions [
43                  root
44                ];
45              };
46            }
47            ''
48              cp --no-preserve=mode -r $files/* .
49              tofu init -upgrade -backend=false -input=false
50              tofu validate
51              touch $out
52            '';
53      };
54  }