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 }