about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/networking/cluster/terraform-providers
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/networking/cluster/terraform-providers')
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix11
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/hcloud/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/linuxbox/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.json1106
-rwxr-xr-xnixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all-providers22
-rwxr-xr-xnixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-provider179
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vercel/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vpsadmin/default.nix29
15 files changed, 1684 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix
new file mode 100644
index 000000000000..b8e3c1540e94
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix
@@ -0,0 +1,26 @@
+{ lib, fetchFromGitHub, buildGoPackage }:
+buildGoPackage rec {
+  pname = "terraform-provider-ansible";
+  version = "1.0.3";
+
+  goPackagePath = "github.com/nbering/terraform-provider-ansible";
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "nbering";
+    repo = "terraform-provider-ansible";
+    rev = "v${version}";
+    sha256 = "0dqi9ym0xvnz3h73cmd1vf6k2qwfhxvj1mcakkpmsd4cpxq4l6pr";
+  };
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postBuild = "mv go/bin/terraform-provider-ansible{,_v${version}}";
+
+  meta = with lib; {
+    description = "A Terraform provider serving as an interop layer for an Ansible dynamic inventory script.";
+    homepage = "https://github.com/nbering/terraform-provider-ansible";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ uskudnik ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix
new file mode 100644
index 000000000000..dc49f24afa59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix
@@ -0,0 +1,11 @@
+[
+  {
+    goPackagePath = "github.com/hashicorp/terraform";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/terraform";
+      rev = "v0.12.5";
+      sha256 = "0p064rhaanwx4szs8hv6mdqad8d2bgfd94h2la11j58xbsxc7hap";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix
new file mode 100644
index 000000000000..1ee986d20303
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "terraform-provider-cloudfoundry";
+  version = "0.12.6";
+
+  src = fetchFromGitHub {
+    owner = "cloudfoundry-community";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0n5ybpzk6zkrnd9vpmbjlkm8fdp7nbfr046wih0jk72pmiyrcygi";
+  };
+
+  vendorSha256 = "01lfsd9aw9w3kr1a2a5b7ac6d8jaij83lhxl4y4qsnjlqk86fbxq";
+
+  # needs a running cloudfoundry
+  doCheck = false;
+
+  postInstall = "mv $out/bin/terraform-provider-cloudfoundry{,_v${version}}";
+
+  passthru = { provider-source-address = "registry.terraform.io/cloudfoundry-community/cloudfoundry"; };
+
+  meta = with lib; {
+    homepage = "https://github.com/cloudfoundry-community/terraform-provider-cloudfoundry";
+    description = "Terraform provider for cloudfoundry";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ ris ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix
new file mode 100644
index 000000000000..d88602d75bae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix
@@ -0,0 +1,67 @@
+{ lib
+, buildGoModule
+, buildGoPackage
+, fetchFromGitHub
+, callPackage
+}:
+let
+  list = lib.importJSON ./providers.json;
+
+  buildWithGoModule = data:
+    buildGoModule {
+      pname = data.repo;
+      version = data.version;
+      subPackages = [ "." ];
+      src = fetchFromGitHub {
+        inherit (data) owner repo rev sha256;
+      };
+      vendorSha256 = data.vendorSha256 or null;
+
+      # Terraform allow checking the provider versions, but this breaks
+      # if the versions are not provided via file paths.
+      postBuild = "mv $NIX_BUILD_TOP/go/bin/${data.repo}{,_v${data.version}}";
+      passthru = data;
+    };
+
+  buildWithGoPackage = data:
+    buildGoPackage {
+      pname = data.repo;
+      version = data.version;
+      goPackagePath = "github.com/${data.owner}/${data.repo}";
+      subPackages = [ "." ];
+      src = fetchFromGitHub {
+        inherit (data) owner repo rev sha256;
+      };
+      # Terraform allow checking the provider versions, but this breaks
+      # if the versions are not provided via file paths.
+      postBuild = "mv $NIX_BUILD_TOP/go/bin/${data.repo}{,_v${data.version}}";
+      passthru = data;
+    };
+
+  # These providers are managed with the ./update-all script
+  automated-providers = lib.mapAttrs (_: attrs:
+    (if (lib.hasAttr "vendorSha256" attrs) then buildWithGoModule else buildWithGoPackage)
+      attrs) list;
+
+  # These are the providers that don't fall in line with the default model
+  special-providers = {
+    acme = automated-providers.acme.overrideAttrs (attrs: {
+      prePatch = attrs.prePatch or "" + ''
+        substituteInPlace go.mod --replace terraform-providers/terraform-provider-acme getstackhead/terraform-provider-acme
+        substituteInPlace main.go --replace terraform-providers/terraform-provider-acme getstackhead/terraform-provider-acme
+      '';
+    });
+
+    # Packages that don't fit the default model
+    ansible = callPackage ./ansible {};
+    cloudfoundry = callPackage ./cloudfoundry {};
+    gandi = callPackage ./gandi {};
+    hcloud = callPackage ./hcloud {};
+    libvirt = callPackage ./libvirt {};
+    linuxbox = callPackage ./linuxbox {};
+    lxd = callPackage ./lxd {};
+    vpsadmin = callPackage ./vpsadmin {};
+    vercel = callPackage ./vercel {};
+  };
+in
+  automated-providers // special-providers
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix
new file mode 100644
index 000000000000..13afa8d3818a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix
@@ -0,0 +1,26 @@
+{ lib, fetchFromGitHub, buildGoPackage }:
+buildGoPackage rec {
+  pname = "terraform-provider-gandi";
+  version = "1.0.0";
+
+  goPackagePath = "github.com/tiramiseb/terraform-provider-gandi";
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "tiramiseb";
+    repo = "terraform-provider-gandi";
+    rev = "v${version}";
+    sha256 = "0byydpqsimvnk11bh9iz8zlxbsmsk65w55pvkp18vjzqrhf4kyfv";
+  };
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postBuild = "mv go/bin/terraform-provider-gandi{,_v${version}}";
+
+  meta = with lib; {
+    description = "Terraform provider for the Gandi LiveDNS service.";
+    homepage = "https://github.com/tiramiseb/terraform-provider-gandi";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ manveru ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix
new file mode 100644
index 000000000000..3d4a3547502d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix
@@ -0,0 +1,21 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/hashicorp/terraform";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/terraform";
+      rev = "27b720113ed5143a870ec151b3b7c9d955a09bc0";
+      sha256 = "1f0hwdf2z68p0ll3pgrx949h09q52gcfaxap0zz52m7px98sfab4";
+    };
+  }
+  {
+    goPackagePath = "github.com/tiramiseb/go-gandi-livedns";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tiramiseb/go-gandi-livedns";
+      rev = "4773a84f8ee7365ed21edc6cd0602aaf93e94e59";
+      sha256 = "1i8s7yclrkhf974vs2splh5symzk0ym54px0bc216bq4ifzkwkqc";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/hcloud/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/hcloud/default.nix
new file mode 100644
index 000000000000..f9a848669344
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/hcloud/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "terraform-provider-hcloud";
+  version = "1.22.0";
+
+  src = fetchFromGitHub {
+    owner = "hetznercloud";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1h4kplrmpsbwa0nq3zyqa0cnvhv1s5avdrjyf1k1f2z6b6h4gynf";
+  };
+
+  vendorSha256 = "070p34g0ca55rmfdwf1l53yr8vyhmm5sb8hm8q036n066yp03yfs";
+
+  # Spends an awful time in other test folders, apparently tries to reach
+  # opencensus and fails.
+  checkPhase = ''
+    pushd hcloud
+    go test -v
+    popd
+  '';
+
+  postInstall = "mv $out/bin/terraform-provider-hcloud{,_v${version}}";
+
+  meta = with lib; {
+    homepage = "https://github.com/cloudfoundry-community/terraform-provider-cloudfoundry";
+    description = "Terraform provider for cloudfoundry";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ ris ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix
new file mode 100644
index 000000000000..ed2409ead9a3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix
@@ -0,0 +1,60 @@
+{ lib, buildGoPackage, fetchFromGitHub, fetchpatch, libvirt, pkg-config, makeWrapper, cdrtools }:
+
+# USAGE:
+# install the following package globally or in nix-shell:
+#
+#   (terraform.withPlugins (p: [p.libvirt]))
+#
+# configuration.nix:
+#
+#   virtualisation.libvirtd.enable = true;
+#
+# terraform-provider-libvirt does not manage pools at the moment:
+#
+#   $ virsh --connect "qemu:///system" pool-define-as default dir - - - - /var/lib/libvirt/images
+#   $ virsh --connect "qemu:///system" pool-start default
+#
+# pick an example from (i.e ubuntu):
+# https://github.com/dmacvicar/terraform-provider-libvirt/tree/master/examples
+
+buildGoPackage rec {
+  pname = "terraform-provider-libvirt";
+  version = "0.6.3";
+
+  goPackagePath = "github.com/dmacvicar/terraform-provider-libvirt";
+
+  patches = [
+    (fetchpatch {
+      name = "base_volume_copy.patch";
+      url = "https://github.com/cyril-s/terraform-provider-libvirt/commit/52df264e8a28c40ce26e2b614ee3daea882931c3.patch";
+      sha256 = "1fg7ii2fi4c93hl41nhcncy9bpw3avbh6yiq99p1vkf87hhrw72n";
+    })
+  ];
+
+  src = fetchFromGitHub {
+    owner = "dmacvicar";
+    repo = "terraform-provider-libvirt";
+    rev = "v${version}";
+    sha256 = "0ak2lpnv6h0i7lzfcggd90jpfhvsasdr6nflkflk2drlcpalggj9";
+  };
+
+  nativeBuildInputs = [ pkg-config makeWrapper ];
+
+  buildInputs = [ libvirt ];
+
+  # mkisofs needed to create ISOs holding cloud-init data,
+  # and wrapped to terraform via deecb4c1aab780047d79978c636eeb879dd68630
+  propagatedBuildInputs = [ cdrtools ];
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postBuild = "mv go/bin/terraform-provider-libvirt{,_v${version}}";
+
+  meta = with lib; {
+    homepage = "https://github.com/dmacvicar/terraform-provider-libvirt";
+    description = "Terraform provider for libvirt";
+    platforms = platforms.linux;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ mic92 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/linuxbox/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/linuxbox/default.nix
new file mode 100644
index 000000000000..4f8c44aad3f1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/linuxbox/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "terraform-provider-linuxbox";
+  version = "0.3.11";
+
+  src = fetchFromGitHub {
+    owner = "numtide";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1sxb2iv4dl0rw3v1r7k5dfkyh14nmp19cprqafhb7ncarmvawq39";
+  };
+
+  vendorSha256 = "16hp0pv1qpvr34ac1syjci39csvyj3c748inllypjwx76q6rwp7k";
+
+  postInstall = "mv $out/bin/terraform-provider-linuxbox{,_v${version}}";
+
+  passthru.provider-source-address = "registry.terraform.io/numtide/linuxbox";
+
+  meta = with lib; {
+    homepage = "https://github.com/numtide/terraform-provider-linuxbox";
+    description = "Basic building block for Seed DevOps";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ zimbatm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix
new file mode 100644
index 000000000000..ab3d07a7f47b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "terraform-provider-lxd";
+  version = "1.5.0";
+
+  src = fetchFromGitHub {
+    owner = "sl1pm4t";
+    repo = "terraform-provider-lxd";
+    rev = "v${version}";
+    sha256 = "sha256-ikI8LQ6qawdeUSb1Ee03H409DQw2M4QtsIxAESxXNRI=";
+  };
+
+  vendorSha256 = "sha256-IjpC7bFodqdrqVUEQdZBc6N8py5+t2kRYvcQiPr7CHc=";
+
+  doCheck = false;
+
+  postBuild = "mv ../go/bin/terraform-provider-lxd{,_v${version}}";
+
+  meta = with lib; {
+    homepage = "https://github.com/sl1pm4t/terraform-provider-lxd";
+    description = "Terraform provider for lxd";
+    platforms = platforms.linux;
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ gila ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.json b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.json
new file mode 100644
index 000000000000..33fba6e5a0fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.json
@@ -0,0 +1,1106 @@
+{
+  "aci": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-aci",
+    "rev": "v0.2.3",
+    "sha256": "0sk0pp178w03fhsb65b9mpim1l4wqfnv9r9x64kiapjnvfb1rz3j",
+    "version": "0.2.3"
+  },
+  "acme": {
+    "owner": "getstackhead",
+    "provider-source-address": "registry.terraform.io/getstackhead/acme",
+    "repo": "terraform-provider-acme",
+    "rev": "v1.5.0-patched",
+    "sha256": "1wdrjpd3l0xadsa3lqhsc9c57g8x2qkwb76q824sk8za1a7lapii",
+    "version": "1.5.0-patched"
+  },
+  "akamai": {
+    "owner": "terraform-providers",
+    "provider-source-address": "registry.terraform.io/akamai/akamai",
+    "repo": "terraform-provider-akamai",
+    "rev": "v0.7.1",
+    "sha256": "0mg81147yz0m24xqljpw6v0ayhvb4fwf6qwaj7ii34hy2gjwv405",
+    "version": "0.7.1"
+  },
+  "alicloud": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-alicloud",
+    "rev": "v1.86.0",
+    "sha256": "1hbv9ah7fd173sapwgsbg7790piwxw9zx90wfj5vz5b96ggbg28d",
+    "version": "1.86.0"
+  },
+  "archive": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/archive",
+    "repo": "terraform-provider-archive",
+    "rev": "v2.0.0",
+    "sha256": "1d5n379zyjp2srg43g78a8h33qwcpkfkj7c35idvbyydi35vzlpl",
+    "vendorSha256": null,
+    "version": "2.0.0"
+  },
+  "arukas": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-arukas",
+    "rev": "v1.1.0",
+    "sha256": "1akl9fzgm5qv01vz18xjzyqjnlxw699qq4x8vr96j16l1zf10h99",
+    "version": "1.1.0"
+  },
+  "auth0": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-auth0",
+    "rev": "v0.11.0",
+    "sha256": "1dkcgzvvwmw5z5q4146jk0gj5b1zrv51vvkhhjd8qh9ipinipn97",
+    "version": "0.11.0"
+  },
+  "avi": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-avi",
+    "rev": "v0.2.2",
+    "sha256": "0dgpjg6iw21vfcn4i0x6x1l329a09wrd2jwghrjigwlq68wd835d",
+    "version": "0.2.2"
+  },
+  "aviatrix": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-aviatrix",
+    "rev": "v2.14.1",
+    "sha256": "137z7fgy5gp9n9fdvllyjh3nkbalrs2giqljfldbllymhvrv7xgr",
+    "version": "2.14.1"
+  },
+  "aws": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/aws",
+    "repo": "terraform-provider-aws",
+    "rev": "v3.27.0",
+    "sha256": "0hn55mpg64bibf10m7x7wpfkipvlm8q4avgqcf0rf8rmprwvdlxd",
+    "vendorSha256": "0ph106bqsy988s20adf6gyc5jfvvy9zsj74lkbciwx7mvw5f514s",
+    "version": "3.27.0"
+  },
+  "azuread": {
+    "owner": "terraform-providers",
+    "provider-source-address": "registry.terraform.io/hashicorp/azuread",
+    "repo": "terraform-provider-azuread",
+    "rev": "v0.10.0",
+    "sha256": "0i9xrsqgh1024189hihm2nqrcy2pcyf1bwxnamwmwph5cas6hfb3",
+    "version": "0.10.0"
+  },
+  "azurerm": {
+    "owner": "terraform-providers",
+    "provider-source-address": "registry.terraform.io/hashicorp/azurerm",
+    "repo": "terraform-provider-azurerm",
+    "rev": "v2.13.0",
+    "sha256": "0aj19vy1flpb2233rxaypjcfimjr1wfqri1m3p15dy1r108q84r7",
+    "version": "2.13.0"
+  },
+  "azurestack": {
+    "owner": "terraform-providers",
+    "provider-source-address": "registry.terraform.io/hashicorp/azurestack",
+    "repo": "terraform-provider-azurestack",
+    "rev": "v0.9.0",
+    "sha256": "1msm7jwzry0vmas3l68h6p0migrsm6d18zpxcncv197m8xbvg324",
+    "version": "0.9.0"
+  },
+  "baiducloud": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-baiducloud",
+    "rev": "v1.2.0",
+    "sha256": "1s2vk4vjni5nc50pdw60pm0grrf835xy551i6d4cmfxkkpqx3f6f",
+    "version": "1.2.0"
+  },
+  "bigip": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-bigip",
+    "rev": "v1.2.0",
+    "sha256": "0z0l4j8sn8yf6kw5sbyhp6s0046f738lsm650skcspqa5f63mbd9",
+    "version": "1.2.0"
+  },
+  "bitbucket": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-bitbucket",
+    "rev": "v1.2.0",
+    "sha256": "11n4wpvmaab164g6k077n9dbdbhd5lwl7pxpha5492ks468nd95b",
+    "version": "1.2.0"
+  },
+  "brightbox": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-brightbox",
+    "rev": "v1.3.0",
+    "sha256": "127l1ic70fkcqr0h23qhbpl1j2mzp44p9593x8jl936xz4ll8l70",
+    "version": "1.3.0"
+  },
+  "checkpoint": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-checkpoint",
+    "rev": "v1.0.2",
+    "sha256": "0zypjcg1z8fkz31lfhysxx42lpw8ak4aqgdis6rxzqbnkk491fjp",
+    "version": "1.0.2"
+  },
+  "chef": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-chef",
+    "rev": "v0.2.0",
+    "sha256": "0ihn4706fflmf0585w22l7arzxsa9biq4cgh8nlhlp5y0zy934ns",
+    "version": "0.2.0"
+  },
+  "cherryservers": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-cherryservers",
+    "rev": "v1.0.0",
+    "sha256": "1z6ai6q8aw38kiy8x13rp0dsvb4jk40cv8pk5c069q15m4jab8lh",
+    "version": "1.0.0"
+  },
+  "ciscoasa": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-ciscoasa",
+    "rev": "v1.2.0",
+    "sha256": "033pgy42qwjpmjyzylpml7sfzd6dvvybs56cid1f6sm4ykmxbal7",
+    "version": "1.2.0"
+  },
+  "clc": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-clc",
+    "rev": "v0.1.0",
+    "sha256": "0gvsjnwk6xkgxai1gxsjf0hsjxbv8d8jg5hq8yd3hjhc6785fgnf",
+    "version": "0.1.0"
+  },
+  "cloudflare": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-cloudflare",
+    "rev": "v2.7.0",
+    "sha256": "1r18lxhfi2sd42ja4bzxbkf5bli8iljrpqbgdcn1a7rcf44vnxa2",
+    "version": "2.7.0"
+  },
+  "cloudinit": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/cloudinit",
+    "repo": "terraform-provider-cloudinit",
+    "rev": "v1.0.0",
+    "sha256": "0i926f4xkfydd2bxmim69xrvi9ymn1vrc66zl117axzsmy9200zx",
+    "version": "1.0.0"
+  },
+  "cloudscale": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-cloudscale",
+    "rev": "v2.1.2",
+    "sha256": "052pa17a77fkmhvygfgmpz87xlc08qvz1apzc2scg2449xfdv7zb",
+    "version": "2.1.2"
+  },
+  "cloudstack": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-cloudstack",
+    "rev": "v0.3.0",
+    "sha256": "0zmyww6z3j839ydlmv254hr8gcsixng4lcvmiwkhxb3hj1nw8hcw",
+    "version": "0.3.0"
+  },
+  "cobbler": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-cobbler",
+    "rev": "v1.1.0",
+    "sha256": "08ljqibfi6alpvv8f7pzvjl2k4w6br6g6ac755x4xw4ycrr24xw9",
+    "version": "1.1.0"
+  },
+  "cohesity": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-cohesity",
+    "rev": "v0.1.0",
+    "sha256": "1yifipjf51n8q9xyqcmc4zjpszmpyzb330f4zas81hahjml78hgx",
+    "version": "0.1.0"
+  },
+  "constellix": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-constellix",
+    "rev": "v0.1.0",
+    "sha256": "14y0v8ilbrjj0aymrw50fkz2mihnwyv83z8a9f8dh399s8l624w1",
+    "version": "0.1.0"
+  },
+  "consul": {
+    "owner": "terraform-providers",
+    "provider-source-address": "registry.terraform.io/hashicorp/consul",
+    "repo": "terraform-provider-consul",
+    "rev": "v2.8.0",
+    "sha256": "1brd0fp9ksc3x8cygxm0k2q1sh4v5x89298pnidg6xirn41lvcr4",
+    "version": "2.8.0"
+  },
+  "ct": {
+    "owner": "poseidon",
+    "repo": "terraform-provider-ct",
+    "rev": "v0.6.1",
+    "sha256": "0hh3hvi8lwb0h8x9viz5p991w94gn7354nw95b51rdmir9qi2x89",
+    "version": "0.6.1"
+  },
+  "datadog": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-datadog",
+    "rev": "v2.7.0",
+    "sha256": "0cq11cjcm2nlszqhsrj425mk8dp0h5ljrrn7jplrbffp8g6wvadd",
+    "version": "2.7.0"
+  },
+  "digitalocean": {
+    "owner": "digitalocean",
+    "provider-source-address": "registry.terraform.io/digitalocean/digitalocean",
+    "repo": "terraform-provider-digitalocean",
+    "rev": "v2.2.0",
+    "sha256": "14v9sh2qqdflzzp5mvkr7hd5c21hch8b8shxiwm0ar4qgdxq3wfy",
+    "vendorSha256": null,
+    "version": "2.2.0"
+  },
+  "dme": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-dme",
+    "rev": "v0.1.0",
+    "sha256": "1ipqw1sbx0i9rhxawsysrqxvf10z8ra2y86xwd4iz0f12x9drblv",
+    "version": "0.1.0"
+  },
+  "dns": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/dns",
+    "repo": "terraform-provider-dns",
+    "rev": "v3.0.0",
+    "sha256": "160dbmg7xg7iyc70f66dphyiysrdbscwya2n28idi8wp5rjx8bid",
+    "vendorSha256": null,
+    "version": "3.0.0"
+  },
+  "dnsimple": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-dnsimple",
+    "rev": "v0.4.0",
+    "sha256": "1f1cpfa30frghp4yxp9n313yaf2mm1hnjq4kzmn6n9210prab9h1",
+    "version": "0.4.0"
+  },
+  "docker": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-docker",
+    "rev": "v2.7.1",
+    "sha256": "1jqnlc3dfy354yjdkj8iyxv0vamyxgmwxmhjim11alwzwjafbv9s",
+    "version": "2.7.1"
+  },
+  "dome9": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-dome9",
+    "rev": "v1.19.0",
+    "sha256": "190q74aaa1v7n7pqcri8kib0g0d4njf9dzm3cygyzmsjs3pxj1lc",
+    "version": "1.19.0"
+  },
+  "dyn": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-dyn",
+    "rev": "v1.2.0",
+    "sha256": "1a3kxmbib2y0nl7gnxknbhsflj5kfknxnm3gjxxrb2h5d2kvqy48",
+    "version": "1.2.0"
+  },
+  "elasticsearch": {
+    "owner": "phillbaker",
+    "provider-source-address": "registry.terraform.io/phillbaker/elasticsearch",
+    "repo": "terraform-provider-elasticsearch",
+    "rev": "v1.5.2",
+    "sha256": "1yfmlqab2jb679gbns04sdcjfihzsa0dfp7blhfk3v5zhgv1g7ys",
+    "vendorSha256": "15m9aqb2lqjv6g3k46zyha2m118wpbjrh4ap1bfps0fcxn20qvr5",
+    "version": "1.5.2"
+  },
+  "exoscale": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-exoscale",
+    "rev": "v0.16.2",
+    "sha256": "102z4v3shk0as76v90151j4c6p93wy16m1hzzk1yp50dlc8ffsks",
+    "version": "0.16.2"
+  },
+  "external": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/external",
+    "repo": "terraform-provider-external",
+    "rev": "v2.0.0",
+    "sha256": "16wciz08gicicsirij2ql0gy8dg0372jjsqmaigkl2n07mqz2b6a",
+    "vendorSha256": null,
+    "version": "2.0.0"
+  },
+  "fastly": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-fastly",
+    "rev": "v0.16.1",
+    "sha256": "1pjrcw03a86xgkzcx778f7kk79svv8csy05b7qi0m5x77zy4pws7",
+    "version": "0.16.1"
+  },
+  "flexibleengine": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-flexibleengine",
+    "rev": "v1.12.1",
+    "sha256": "0klxi40dd3a4dp7gjsjjwh6zv2m94hh6mk5m9g0dyhvn0r28w5j2",
+    "version": "1.12.1"
+  },
+  "fortios": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-fortios",
+    "rev": "v1.2.0",
+    "sha256": "0sqp23pyldxjkfw33xn5l5fqs4vn00kkfhy9wnl690wn0cwmldbx",
+    "version": "1.2.0"
+  },
+  "genymotion": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-genymotion",
+    "rev": "v1.1.0",
+    "sha256": "02jpr3cm7rrf810c69sr6lcxzvxpnf7icc5z80gnvg67wwfg4ph4",
+    "version": "1.1.0"
+  },
+  "github": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-github",
+    "rev": "v3.1.0",
+    "sha256": "1xl4fd1lfbn1vnrdmg2xljnv8hy6rmf0iv7g8pzbnzbvj2pi7w3b",
+    "version": "3.1.0"
+  },
+  "gitlab": {
+    "owner": "gitlabhq",
+    "provider-source-address": "registry.terraform.io/gitlabhq/gitlab",
+    "repo": "terraform-provider-gitlab",
+    "rev": "v3.4.0",
+    "sha256": "03k3xjhxw70n00dvwd0fkdshff9hnicrah6rm6zqmksb4mb7wji3",
+    "version": "3.4.0"
+  },
+  "google": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/google",
+    "repo": "terraform-provider-google",
+    "rev": "v3.62.0",
+    "sha256": "0x0qp8nk88667hvlpgxrdjsgirw8iwv85gn3k9xb37a3lw7xs4qz",
+    "vendorSha256": "0w6aavj1c4blpvsy00vz4dcj8rnxx6a586b16lqp6s1flqmlqrbi",
+    "version": "3.62.0"
+  },
+  "google-beta": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/google-beta",
+    "repo": "terraform-provider-google-beta",
+    "rev": "v3.47.0",
+    "sha256": "1nk0bg2q7dg65rn3j5pkdjv07x0gs7bkv1bpfvlhi9p4fzx9g4by",
+    "vendorSha256": "0c2q4d2khsi3v9b659q1kmncnlshv4px6ch99jpcymwqg3xrxda2",
+    "version": "3.47.0"
+  },
+  "grafana": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-grafana",
+    "rev": "v1.5.0",
+    "sha256": "0zy3bqgpxymp2zygaxzllk1ysdankwxa1sy1djfgr4fs2nlggkwi",
+    "version": "1.5.0"
+  },
+  "gridscale": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-gridscale",
+    "rev": "v1.6.0",
+    "sha256": "00l3cwvyyjk0n3j535qfj3bsf1s5l07786gnxycj0f8vz3a06bcq",
+    "version": "1.6.0"
+  },
+  "hedvig": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-hedvig",
+    "rev": "v1.1.1",
+    "sha256": "1gd26jm9frn52hy2vm5sv003lbai5sjgdign6akhjmw5sdsmfr05",
+    "version": "1.1.1"
+  },
+  "helm": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/helm",
+    "repo": "terraform-provider-helm",
+    "rev": "v2.0.2",
+    "sha256": "119zvlkwa7ygwsjxxdl7z8cqb0c4m6gy21356jnsasf4c3557rrb",
+    "vendorSha256": null,
+    "version": "2.0.2"
+  },
+  "heroku": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-heroku",
+    "rev": "v2.4.1",
+    "sha256": "10dacnd0y8q952s53n5myy08slw349pbfddjz63wcblcjyhvq0df",
+    "version": "2.4.1"
+  },
+  "http": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/http",
+    "repo": "terraform-provider-http",
+    "rev": "v2.0.0",
+    "sha256": "0x6a9qf819g16dj9inyvhwff67xy0ixyy70ck56lkidrldara444",
+    "vendorSha256": null,
+    "version": "2.0.0"
+  },
+  "huaweicloud": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-huaweicloud",
+    "rev": "v1.14.0",
+    "sha256": "10g5xl3pspzmj0bjzqbw3br4k7kh2jplph06f7sz2zg9dncl4h5z",
+    "version": "1.14.0"
+  },
+  "huaweicloudstack": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-huaweicloudstack",
+    "rev": "v1.2.0",
+    "sha256": "0jhx9rap4128j8sfkvpp8lbdmvdba0rkd3nxvy38wr3n18m7v1xg",
+    "version": "1.2.0"
+  },
+  "ibm": {
+    "owner": "IBM-Cloud",
+    "provider-source-address": "registry.terraform.io/IBM-Cloud/ibm",
+    "repo": "terraform-provider-ibm",
+    "rev": "v1.14.0",
+    "sha256": "1r3y7r0mnbzd7xk6d5f7pvysl3p8vl5i5phya89dfwrk2x9xyw21",
+    "vendorSha256": null,
+    "version": "1.14.0"
+  },
+  "icinga2": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-icinga2",
+    "rev": "v0.3.0",
+    "sha256": "0xwjxb84glhp9viqykziwanj696w2prq4r7k0565k0w3qiaz440v",
+    "version": "0.3.0"
+  },
+  "ignition": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-ignition",
+    "rev": "v1.2.1",
+    "sha256": "0wd29iw0a5w7ykgs9m1mmi0bw5z9dl4z640qyz64x8rlh5hl1wql",
+    "version": "1.2.1"
+  },
+  "incapsula": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-incapsula",
+    "rev": "v2.1.0",
+    "sha256": "12zw2m7j52rszfawywbiv9rgv976h1w6bp98012qn45d4ap2kvzy",
+    "version": "2.1.0"
+  },
+  "influxdb": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-influxdb",
+    "rev": "v1.3.0",
+    "sha256": "19af40g8hgz2rdz6523v0fs71ww7qdlf2mh5j9vb7pfzriqwa5k9",
+    "version": "1.3.0"
+  },
+  "infoblox": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-infoblox",
+    "rev": "v1.0.0",
+    "sha256": "0p95y5w3fzddygmsjc0j60z0f4aazvy5iwbwszj0i8gs42qhda2f",
+    "version": "1.0.0"
+  },
+  "jdcloud": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-jdcloud",
+    "rev": "v1.1.0",
+    "sha256": "04vz0m3z9rfw2hp0h3jhn625r2v37b319krznvhqylqzksv39dzf",
+    "version": "1.1.0"
+  },
+  "kafka": {
+    "owner": "Mongey",
+    "provider-source-address": "registry.terraform.io/Mongey/kafka",
+    "repo": "terraform-provider-kafka",
+    "rev": "v0.2.12",
+    "sha256": "0jm592chliiph5643rymzpwnlcq7q6bpwg2h86x5qmbzbiyqsi83",
+    "vendorSha256": "08wg16g4mvn6kl8xwn89195a826cb132ijvrgf32c6p7zp4lgmjd",
+    "version": "0.2.12"
+  },
+  "keycloak": {
+    "owner": "mrparkers",
+    "repo": "terraform-provider-keycloak",
+    "rev": "v3.0.0",
+    "sha256": "1q9vzmj9c7mznv6al58d3rs5kk1fh28k1qccx46hcbk82z52da3a",
+    "vendorSha256": "0kh6lljvqd577s19gx0fmfsmx9wm3ikla3jz16lbwwb8ahbqcw1f",
+    "version": "3.0.0"
+  },
+  "ksyun": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-ksyun",
+    "rev": "v1.0.0",
+    "sha256": "1vcx612bz2p0rjsrx11j6fdc0f0q2jm5m3xl94wrpx9jjb7aczvc",
+    "version": "1.0.0"
+  },
+  "kubernetes": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/kubernetes",
+    "repo": "terraform-provider-kubernetes",
+    "rev": "v2.0.2",
+    "sha256": "129aylw6hxa44syfnb0kkkihwvlaa6d1jnxrcbwkql6xxhn9zizf",
+    "vendorSha256": null,
+    "version": "2.0.2"
+  },
+  "kubernetes-alpha": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/kubernetes-alpha",
+    "repo": "terraform-provider-kubernetes-alpha",
+    "rev": "v0.3.2",
+    "sha256": "0lgh42fvfwvj6cw8i7800k016ay4babqiz38q0y7apq4s7vs62sb",
+    "vendorSha256": null,
+    "version": "0.3.2"
+  },
+  "launchdarkly": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-launchdarkly",
+    "rev": "v1.3.2",
+    "sha256": "0vgkivzbf6hcl9by6l0whpwidva7zmmgdabkshjjk0npl2cj8f9n",
+    "version": "1.3.2"
+  },
+  "librato": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-librato",
+    "rev": "v0.1.0",
+    "sha256": "0bxadwj5s7bvc4vlymn3w6qckf14hz82r7q98w2nh55sqr52d923",
+    "version": "0.1.0"
+  },
+  "linode": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-linode",
+    "rev": "v1.12.3",
+    "sha256": "17hnm7wivd75psap2qdmlnmmlf964s7jf4jrfgsm6njx32wwwfpp",
+    "version": "1.12.3"
+  },
+  "local": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/local",
+    "repo": "terraform-provider-local",
+    "rev": "v2.0.0",
+    "sha256": "0c1mk63lh3qmj8pl80lyvvsgyg4gg7673abr8cfxrj45635h74z5",
+    "vendorSha256": null,
+    "version": "2.0.0"
+  },
+  "logentries": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-logentries",
+    "rev": "v1.0.0",
+    "sha256": "04xprkb9zwdjyzmsdf10bgmn8sa8q7jw0izz8lw0cc9hag97qgbq",
+    "version": "1.0.0"
+  },
+  "logicmonitor": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-logicmonitor",
+    "rev": "v1.3.0",
+    "sha256": "00d8qx95cxaif636dyh935nv9nn6lmb1ybxy7n4myy9g80y50ap1",
+    "version": "1.3.0"
+  },
+  "mailgun": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-mailgun",
+    "rev": "v0.4.1",
+    "sha256": "1l76pg4hmww9zg2n4rkhm5dwjh42fxri6d41ih1bf670krkxwsmz",
+    "version": "0.4.1"
+  },
+  "matchbox": {
+    "owner": "poseidon",
+    "repo": "terraform-provider-matchbox",
+    "rev": "v0.3.0",
+    "sha256": "1nq7k8qa7rv8xyryjigwpwcwvj1sw85c4j46rkfdv70b6js25jz3",
+    "version": "0.3.0"
+  },
+  "metalcloud": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-metalcloud",
+    "rev": "v2.2.0",
+    "sha256": "0xii9gk96srzi9y4pbvlx2cvwypll4igvk89f9qrg18qrw72ags3",
+    "version": "2.2.0"
+  },
+  "mongodbatlas": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-mongodbatlas",
+    "rev": "v0.5.1",
+    "sha256": "0sl5yd1bqj79f7pj49aqh7l3fvdrbf8r7a4g7cv15qbc8g3lr1dh",
+    "version": "0.5.1"
+  },
+  "mysql": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-mysql",
+    "rev": "v1.9.0",
+    "sha256": "14gxxki3jhncv3s2x828ns2vgmf2xxzigdyp9b54mbkw5rnv1k2g",
+    "version": "1.9.0"
+  },
+  "ncloud": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-ncloud",
+    "rev": "v1.2.0",
+    "sha256": "1h2fr0ss58dr3ypqj6kw90iyji6s83sz2i85vhs5z2adjbk7h8va",
+    "version": "1.2.0"
+  },
+  "netlify": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-netlify",
+    "rev": "v0.4.0",
+    "sha256": "07xds84k2vgpvn2cy3id7hmzg57sz2603zs4msn3ysxmi28lmqyg",
+    "version": "0.4.0"
+  },
+  "newrelic": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-newrelic",
+    "rev": "v1.19.0",
+    "sha256": "0nmbgw4qyzsw8kxi7p8dy4j1lkxcz7qfs56qsvwf2w07y4qm382p",
+    "version": "1.19.0"
+  },
+  "nixos": {
+    "owner": "tweag",
+    "repo": "terraform-provider-nixos",
+    "rev": "v0.0.1",
+    "sha256": "00vz6qjq1pk39iqg4356b8g3c6slla9jifkv2knk46gc9q93q0lf",
+    "version": "0.0.1"
+  },
+  "nomad": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-nomad",
+    "rev": "v1.4.5",
+    "sha256": "1sccm4mspjn92ky6nscsrmbb573mx53wzsvvapsf2p4119h9s30i",
+    "version": "1.4.5"
+  },
+  "ns1": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-ns1",
+    "rev": "v1.8.3",
+    "sha256": "18mq6r8sw2jjvngay0zyvzlfiln8c0xb8hcrl2wcmnpqv2iinbkl",
+    "version": "1.8.3"
+  },
+  "nsxt": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-nsxt",
+    "rev": "v2.0.0",
+    "sha256": "0fka793r0c06sz8vlxk0z7vbm6kab5xzk39r5pznkq34004r17sl",
+    "version": "2.0.0"
+  },
+  "null": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/null",
+    "repo": "terraform-provider-null",
+    "rev": "v3.0.0",
+    "sha256": "0r1kvsc96922i85hdvf1pk8aicxjr6bc69gc63qi21hrl0jpvr7r",
+    "vendorSha256": null,
+    "version": "3.0.0"
+  },
+  "nutanix": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-nutanix",
+    "rev": "v1.0.2",
+    "sha256": "17sgsxsh8minirks08c6gz52cf7ndn220sx4xzi6bq64yi6qw2yc",
+    "version": "1.0.2"
+  },
+  "oci": {
+    "owner": "terraform-providers",
+    "provider-source-address": "registry.terraform.io/hashicorp/oci",
+    "repo": "terraform-provider-oci",
+    "rev": "v3.79.0",
+    "sha256": "11n2v537zniiv5xvhpypqrm09my8zybirvq4ly94hp69v73xj89c",
+    "version": "3.79.0"
+  },
+  "okta": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-okta",
+    "rev": "v3.3.0",
+    "sha256": "1z557z1yagp2caf85hmcr6sddax9a5h47jja17082qmmr1qy0i07",
+    "version": "3.3.0"
+  },
+  "oktaasa": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-oktaasa",
+    "rev": "v1.0.0",
+    "sha256": "093d5r8dz8gryk8qp5var2qrrgkvs1gwgw3zqpxry9xc5cpn30w0",
+    "version": "1.0.0"
+  },
+  "oneandone": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-oneandone",
+    "rev": "v1.3.0",
+    "sha256": "0c412nqg3k17124i51nn3ffra6gcll904h37h7hyvz97cdblcncn",
+    "version": "1.3.0"
+  },
+  "opc": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-opc",
+    "rev": "v1.4.0",
+    "sha256": "1yl8bbh4pf94wlmna294zcawylr9hiaix82wr321g9wb0vi3d5l8",
+    "version": "1.4.0"
+  },
+  "opennebula": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-opennebula",
+    "rev": "v0.1.1",
+    "sha256": "048cqd89fz5xpji1w8ylg75nbzzcx1c5n89y1k0ra8d3g2208yb2",
+    "version": "0.1.1"
+  },
+  "openstack": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-openstack",
+    "rev": "v1.28.0",
+    "sha256": "1g2nxv312ddvkgpph17m9sh4zmy5ddj8gqwnfb3frbfbbamrgar6",
+    "version": "1.28.0"
+  },
+  "opentelekomcloud": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-opentelekomcloud",
+    "rev": "v1.17.1",
+    "sha256": "1d4w35hpvxy5wkb6n9wrh2nfcsy0xgk6d4jbk4sy7dn44w3nkqbg",
+    "version": "1.17.1"
+  },
+  "opsgenie": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-opsgenie",
+    "rev": "v0.3.4",
+    "sha256": "11pbkhn7yhz2mfa01ikn7rdajl28zwxfq9g9qdf9lvkdrv88gwh0",
+    "version": "0.3.4"
+  },
+  "oraclepaas": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-oraclepaas",
+    "rev": "v1.5.3",
+    "sha256": "0xb03b5jgm06rgrllib6zj1nkh54zv2mqjnyfflgnazpf4c1ia15",
+    "version": "1.5.3"
+  },
+  "ovh": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-ovh",
+    "rev": "v0.8.0",
+    "sha256": "1ww4ng8w5hm50rbxd83xzbkq8qsn04dqwpdjhs587v9d0x2vwrf1",
+    "version": "0.8.0"
+  },
+  "packet": {
+    "owner": "packethost",
+    "repo": "terraform-provider-packet",
+    "rev": "v3.2.0",
+    "sha256": "sha256-YIv4OPRbR00YTVwz0iJ/y6qTbj50nsi5ylrWEx1kZck=",
+    "version": "3.2.0"
+  },
+  "pagerduty": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-pagerduty",
+    "rev": "v1.7.2",
+    "sha256": "1a8g8rpn52wibrxhnvhlda7ja38vw9aadgdc8nbj7zs50x4aj3ic",
+    "version": "1.7.2"
+  },
+  "panos": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-panos",
+    "rev": "v1.6.2",
+    "sha256": "1qy6jynv61zhvq16s8jkwjhxz7r65cmk9k37ahh07pbhdx707mz5",
+    "version": "1.6.2"
+  },
+  "pass": {
+    "owner": "camptocamp",
+    "repo": "terraform-provider-pass",
+    "rev": "1.2.1",
+    "sha256": "1hf5mvgz5ycp7shiy8px205d9kwswfjmclg7mlh9a55bkraffahk",
+    "version": "1.2.1"
+  },
+  "postgresql": {
+    "owner": "cyrilgdn",
+    "provider-source-address": "registry.terraform.io/cyrilgdn/postgresql",
+    "repo": "terraform-provider-postgresql",
+    "rev": "v1.8.1",
+    "sha256": "07qaiy3vmz179am1qrxwvrk7xpraaa8g0hf49bj54pw7nkrmaixq",
+    "vendorSha256": null,
+    "version": "1.8.1"
+  },
+  "powerdns": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-powerdns",
+    "rev": "v1.4.0",
+    "sha256": "1mfcj32v66w5gnzbrdkampydl3m9f1155vcdw8l1f2nba59irkgw",
+    "version": "1.4.0"
+  },
+  "profitbricks": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-profitbricks",
+    "rev": "v1.5.2",
+    "sha256": "0gass4gzv8axlzn5rgg35nqvd61q82k041r0sr6x6pv6j8v1ixln",
+    "version": "1.5.2"
+  },
+  "pureport": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-pureport",
+    "rev": "v1.1.8",
+    "sha256": "02vmqwjz5m5hj4zghwicjp27dxvc4qsiwj4gjsi66w6djdqnh4h1",
+    "version": "1.1.8"
+  },
+  "rabbitmq": {
+    "owner": "cyrilgdn",
+    "provider-source-address": "registry.terraform.io/cyrilgdn/rabbitmq",
+    "repo": "terraform-provider-rabbitmq",
+    "rev": "v1.5.1",
+    "sha256": "1yxvhzrp63wv5zbzj3ma2745g1marpj32b5h41ha27h0i42498ky",
+    "vendorSha256": null,
+    "version": "1.5.1"
+  },
+  "rancher": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-rancher",
+    "rev": "v1.5.0",
+    "sha256": "0yhv9ahj6ajspgnl2f77gpyd6klq44dyl74lvl10bx6yy56abi2m",
+    "version": "1.5.0"
+  },
+  "rancher2": {
+    "owner": "rancher",
+    "provider-source-address": "registry.terraform.io/hashicorp/rancher2",
+    "repo": "terraform-provider-rancher2",
+    "rev": "v1.13.0",
+    "sha256": "0xczv9qsviryiw95yd6cl1nnb0daxs971fm733gfvwm36jvmyr89",
+    "vendorSha256": "0apy6qbmshfj4pzz9nqdhyk6h7l9qwrccz30q8ljl928pj49q04c",
+    "version": "1.13.0"
+  },
+  "random": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/random",
+    "repo": "terraform-provider-random",
+    "rev": "v3.0.0",
+    "sha256": "00dkpcri9ckp0kxwgh3p8175cyd44m8z13cb013pm4mrr61n4wq9",
+    "vendorSha256": null,
+    "version": "3.0.0"
+  },
+  "rightscale": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-rightscale",
+    "rev": "v1.3.1",
+    "sha256": "0abwxaghrxpahpsk6kd02fjh0rhck4xsdrzcpv629yh8ip9rzcaj",
+    "version": "1.3.1"
+  },
+  "rundeck": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-rundeck",
+    "rev": "v0.4.0",
+    "sha256": "1x131djsny8w84yf7w2il33wlc3ysy3k399dziii2lmq4h8sgrpr",
+    "version": "0.4.0"
+  },
+  "runscope": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-runscope",
+    "rev": "v0.6.0",
+    "sha256": "1fsph2cnyvzdwa5hwdjabfk4azmc3x8a7afpwpawxfdvqhgpr595",
+    "version": "0.6.0"
+  },
+  "scaleway": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-scaleway",
+    "rev": "v1.15.0",
+    "sha256": "0bdhjrml14f5z4spkl7l305g0vdzpgama7ahngws8jhvl8yfa208",
+    "version": "1.15.0"
+  },
+  "secret": {
+    "owner": "tweag",
+    "repo": "terraform-provider-secret",
+    "rev": "v1.1.1",
+    "sha256": "1pr0amzgv1i1lxniqlx8spdb73q522l7pm8a4m25hwy1kwby37sd",
+    "version": "1.1.1"
+  },
+  "segment": {
+    "owner": "ajbosco",
+    "repo": "terraform-provider-segment",
+    "rev": "v0.2.0",
+    "sha256": "0ic5b9djhnb1bs2bz3zdprgy3r55dng09xgc4d9l9fyp85g2amaz",
+    "version": "0.2.0"
+  },
+  "selectel": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-selectel",
+    "rev": "v3.3.0",
+    "sha256": "1fs96qd2b4glk8hhn5m9r04ap679g0kf3nnhjx1a2idqwrv71gcl",
+    "version": "3.3.0"
+  },
+  "shell": {
+    "owner": "scottwinkler",
+    "provider-source-address": "registry.terraform.io/scottwinkler/shell",
+    "repo": "terraform-provider-shell",
+    "rev": "v1.6.0",
+    "sha256": "0jxb30vw93ibnwz8nfqapac7p9r2famzvsf2h4nfbmhkm6mpan4l",
+    "vendorSha256": "1p2ja6cw3dl7mx41svri6frjpgb9pxsrl7sq0rk1d3sviw0f88sg",
+    "version": "1.6.0"
+  },
+  "signalfx": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-signalfx",
+    "rev": "v4.23.0",
+    "sha256": "1v3whvqb6nilfvw4c0xziq6yrlkl96d2cya094c7bd7wp9hzif1l",
+    "version": "4.23.0"
+  },
+  "skytap": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-skytap",
+    "rev": "v0.14.1",
+    "sha256": "0ygsdkv7czyhsjsx1q57rmmcl8x66d65yarhg40hlng5c7xpi52g",
+    "version": "0.14.1"
+  },
+  "softlayer": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-softlayer",
+    "rev": "v0.0.1",
+    "sha256": "1xcg5zm2n1pc3l7ng94k589r7ykv6fxsmr5qn9xmmpdf912rdnfq",
+    "version": "0.0.1"
+  },
+  "sops": {
+    "owner": "carlpett",
+    "repo": "terraform-provider-sops",
+    "rev": "v0.5.1",
+    "sha256": "1x32w1qw46rwa8bjhkfn6ybr1dkbdqk0prlm0bnwn3gvvj0hc7kh",
+    "version": "0.5.1"
+  },
+  "spotinst": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-spotinst",
+    "rev": "v1.17.0",
+    "sha256": "0pmbr2xdqrzkd66zv4gpyxzahs7p2m2xl5qyvqpg0apxn91z3ra7",
+    "version": "1.17.0"
+  },
+  "stackpath": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-stackpath",
+    "rev": "v1.3.0",
+    "sha256": "0gsr903v6fngaxm2r5h53g9yc3jpx2zccqq07rhzm9jbsfb6rlzn",
+    "version": "1.3.0"
+  },
+  "statuscake": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-statuscake",
+    "rev": "v1.0.0",
+    "sha256": "1x295va6c72465cxps0kx3rrb7s9aip2cniy6icsg1b2yrsb9b26",
+    "version": "1.0.0"
+  },
+  "sumologic": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-sumologic",
+    "rev": "v2.0.3",
+    "sha256": "0d7xsfdfs6dj02bh90bhwsa2jgxf84df3pqmsjlmxvpv65dv4vs8",
+    "version": "2.0.3"
+  },
+  "telefonicaopencloud": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-telefonicaopencloud",
+    "rev": "v1.0.0",
+    "sha256": "1761wkjz3d2458xl7855lxklyxgyk05fddh92rp6975y0ca6xa5m",
+    "version": "1.0.0"
+  },
+  "template": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/template",
+    "repo": "terraform-provider-template",
+    "rev": "v2.2.0",
+    "sha256": "12pn1i06jz4xl50md94yfdggg3pg5bv1viwf35izizm5rnyksyv2",
+    "vendorSha256": null,
+    "version": "2.2.0"
+  },
+  "tencentcloud": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-tencentcloud",
+    "rev": "v1.36.0",
+    "sha256": "1sqynm0g1al5hnxzccv8iiqcgd07ys0g828f3xfw53b6f5vzbhfr",
+    "version": "1.36.0"
+  },
+  "terraform": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-terraform",
+    "rev": "v1.0.2",
+    "sha256": "1aj6g6l68n9kqmxfjlkwwxnac7fhha6wrmvsw4yylf0qyssww75v",
+    "version": "1.0.2"
+  },
+  "tfe": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-tfe",
+    "rev": "v0.18.0",
+    "sha256": "1cl83afm00fflsd3skynjvncid3r74fkxfznrs1v8qypcg1j79g1",
+    "version": "0.18.0"
+  },
+  "time": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/time",
+    "repo": "terraform-provider-time",
+    "rev": "v0.6.0",
+    "sha256": "0fb81hisjicib9rzbn51jqfrchyjd3hzq98adnf22cbra8wlnxlm",
+    "version": "0.6.0"
+  },
+  "tls": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/tls",
+    "repo": "terraform-provider-tls",
+    "rev": "v3.0.0",
+    "sha256": "1p9d5wrr4xwf2i930zlcarm1zl8ysj3nyc6rrbhpxk04kr6ap0wz",
+    "vendorSha256": null,
+    "version": "3.0.0"
+  },
+  "triton": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-triton",
+    "rev": "v0.7.0",
+    "sha256": "14wbdm2rlmjld9y7iizdinhk1fnx5s8fgjgd3jcs1b4g126s0pl0",
+    "version": "0.7.0"
+  },
+  "turbot": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-turbot",
+    "rev": "v1.3.0",
+    "sha256": "0z56s3kmx84raiwiny9jing8ac9msfd5vk8va24k8czwj2v5gb0f",
+    "version": "1.3.0"
+  },
+  "ucloud": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-ucloud",
+    "rev": "v1.20.0",
+    "sha256": "1s3xgdrngiy7slxwk5cmhij681yyfvc8185yig7jmrm21q2981f6",
+    "version": "1.20.0"
+  },
+  "ultradns": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-ultradns",
+    "rev": "v0.1.0",
+    "sha256": "0bq2y6bxdax7qnmq6vxh8pz9sqy1r3m05dv7q5dbv2xvba1b88hj",
+    "version": "0.1.0"
+  },
+  "vault": {
+    "owner": "terraform-providers",
+    "provider-source-address": "registry.terraform.io/hashicorp/vault",
+    "repo": "terraform-provider-vault",
+    "rev": "v2.11.0",
+    "sha256": "1yzakc7jp0rs9axnfdqw409asrbjhq0qa7xn4xzpi7m94g1ii12d",
+    "version": "2.11.0"
+  },
+  "vcd": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-vcd",
+    "rev": "v2.8.0",
+    "sha256": "0myj5a9mrh7vg6h3gk5f0wsdp6832nz0z10h184107sdchpv253n",
+    "version": "2.8.0"
+  },
+  "venafi": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-venafi",
+    "rev": "v0.9.2",
+    "sha256": "06nk5c7lxs8fc04sz97lc3yk1zk1b9phkzw6fj9fnmpgaak87bj9",
+    "version": "0.9.2"
+  },
+  "vra7": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-vra7",
+    "rev": "v1.0.1",
+    "sha256": "0qmldgxmrv840c5rbmskdf4f9g4v52gg9v7magm6j2w2g0dp1022",
+    "version": "1.0.1"
+  },
+  "vsphere": {
+    "owner": "hashicorp",
+    "provider-source-address": "registry.terraform.io/hashicorp/vsphere",
+    "repo": "terraform-provider-vsphere",
+    "rev": "v1.24.3",
+    "sha256": "1sc60x3r4nb48p8yb7778fpk78acq808jzcd5ijnwxqakccml5kl",
+    "vendorSha256": null,
+    "version": "1.24.3"
+  },
+  "vthunder": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-vthunder",
+    "rev": "v0.1.0",
+    "sha256": "1mw55g0kjgp300p6y4s8wc91fgfxjm0cbszfzgbc8ca4b00j8cc2",
+    "version": "0.1.0"
+  },
+  "vultr": {
+    "owner": "vultr",
+    "repo": "terraform-provider-vultr",
+    "rev": "v2.1.3",
+    "sha256": "sha256-fvqkzg3j2TYAMbPc8Ifh35sBe0D76LYH6Ut5Ugdyexg=",
+    "version": "2.1.3"
+  },
+  "wavefront": {
+    "owner": "terraform-providers",
+    "repo": "terraform-provider-wavefront",
+    "rev": "v2.3.0",
+    "sha256": "0aci96852bd4y8bi9y68p550jiji0c69kiw4zhf9qfld0sjz44j2",
+    "version": "2.3.0"
+  },
+  "yandex": {
+    "owner": "yandex-cloud",
+    "repo": "terraform-provider-yandex",
+    "rev": "v0.54.0",
+    "sha256": "0q9m7520zl7q1liri6x849xjp221wbc9l2w6dj19mmgfwspqv02l",
+    "vendorSha256": "0rzldsb8gyhvnsd26wg9byqngzzj64pi86v2hb4i63rlfmnn77xi",
+    "version": "0.54.0"
+  }
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all-providers b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all-providers
new file mode 100755
index 000000000000..052c56742c5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all-providers
@@ -0,0 +1,22 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p jq
+# shellcheck shell=bash
+
+# Update all providers which have specified provider source address
+set -euo pipefail
+
+providers=$(
+  jq -r 'to_entries
+  | map_values(.value + { alias: .key })
+  | .[]
+  | select(."provider-source-address"?)
+  | .alias' providers.json
+)
+
+echo "Will update providers:"
+echo "$providers"
+
+for provider in $providers; do
+  echo "Updating $provider"
+  ./update-provider "$provider"
+done
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-provider b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-provider
new file mode 100755
index 000000000000..f97bbce83faa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-provider
@@ -0,0 +1,179 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -I nixpkgs=../../../../.. -i bash -p coreutils curl jq moreutils nix
+# shellcheck shell=bash
+# vim: ft=sh
+#
+# Update a terraform provider to the latest version advertised at the
+# provider source address.
+#
+set -euo pipefail
+
+show_usage() {
+  cat <<DOC
+Usage: ./update-provider [--force] [--vendor] [<owner>/]<provider>
+
+Update a single provider in the providers.json inventory file.
+
+For example to update 'terraform-providers.aws' run:
+
+    ./update-provider aws
+
+If the provider is not in the list already, use the form '<owner>/<provider>'
+to add the provider to the list:
+
+    ./update-provider hetznercloud/hcloud
+
+Options:
+
+  * --force: Force the update even if the version matches.
+  * --vendor: Switch from go package to go modules with vendor.
+  * --vendor-sha256 <sha256>: Override the SHA256 or "null".
+DOC
+}
+
+force=
+provider=
+vendor=
+vendorSha256=
+
+while [[ $# -gt 0 ]]; do
+  case "$1" in
+  -h | --help)
+    show_usage
+    exit
+    ;;
+  --force)
+    force=1
+    shift
+    ;;
+  --vendor)
+    force=1
+    vendor=1
+    shift
+    ;;
+  --vendor-sha256)
+    force=1
+    vendorSha256=$2
+    shift 2
+    ;;
+  *)
+    if [[ -n "$provider" ]]; then
+      echo "ERROR: provider name was passed two times: '$provider' and '$1'"
+      echo "Use --help for more info"
+      exit 1
+    fi
+    provider=$1
+    shift
+  esac
+done
+
+if [[ -z "$provider" ]]; then
+  echo "ERROR: No providers specified!"
+  echo
+  show_usage
+  exit 1
+fi
+
+provider_name=$(basename "$provider")
+
+# Usage: read_attr <key>
+read_attr() {
+  jq -r ".\"$provider_name\".\"$1\"" providers.json
+}
+
+# Usage: update_attr <key> <value>
+update_attr() {
+  if [[ "$2" == "null" ]]; then
+    jq -S ".\"$provider_name\".\"$1\" = null" providers.json | sponge providers.json
+  else
+    jq -S ".\"$provider_name\".\"$1\" = \"$2\"" providers.json | sponge providers.json
+  fi
+}
+
+prefetch_github() {
+  # of a given owner, repo and rev, fetch the tarball and return the output of
+  # `nix-prefetch-url`
+  local owner=$1
+  local repo=$2
+  local rev=$3
+  nix-prefetch-url --unpack "https://github.com/$owner/$repo/archive/$rev.tar.gz"
+}
+
+old_source_address="$(read_attr provider-source-address)"
+old_vendor_sha256=$(read_attr vendorSha256)
+old_version=$(read_attr version)
+
+if [[ $provider =~ ^[^/]+/[^/]+$ ]]; then
+  source_address=registry.terraform.io/$provider
+else
+  source_address=$old_source_address
+fi
+if [[ "$source_address" == "null" ]]; then
+  echo "Could not find the source address for provider: $provider"
+  exit 1
+fi
+update_attr "provider-source-address" "$source_address"
+
+# The provider source address (used inside Terraform `required_providers` block) is
+# used to compute the registry API endpoint
+#
+# registry.terraform.io/hashicorp/aws (provider source address)
+# registry.terraform.io/providers/hashicorp/aws (provider URL for the website)
+# registry.terraform.io/v1/providers/hashicorp/aws (provider URL for the JSON API)
+registry_response=$(curl -s https://"${source_address/\///v1/providers/}")
+
+version="$(jq -r '.version' <<< "$registry_response")"
+if [[ "$old_version" = "$version" && "$force" != 1 && -z "$vendorSha256" && "$old_vendor_sha256" != "$vendorSha256" ]]; then
+  echo "$provider_name is already at version $version"
+  exit
+fi
+update_attr version "$version"
+
+provider_source_url="$(jq -r '.source' <<< "$registry_response")"
+
+org="$(echo "$provider_source_url" | cut -d '/' -f 4)"
+update_attr owner "$org"
+repo="$(echo "$provider_source_url" | cut -d '/' -f 5)"
+update_attr repo "$repo"
+rev="$(jq -r '.tag' <<< "$registry_response")"
+update_attr rev "$rev"
+sha256=$(prefetch_github "$org" "$repo" "$rev")
+update_attr sha256 "$sha256"
+
+repo_root=$(git rev-parse --show-toplevel)
+
+if [[ -z "$vendorSha256" ]]; then
+  if [[ "$old_vendor_sha256" == null ]]; then
+    vendorSha256=null
+  elif [[ -n "$old_vendor_sha256" || "$vendor" = 1 ]]; then
+    echo "=== Calculating vendorSha256 ==="
+    update_attr vendorSha256 "0000000000000000000000000000000000000000000000000000000000000000"
+    # Hackish way to find out the desired sha256. First build, then extract the
+    # error message from the logs.
+    set +e
+    nix-build --no-out-link "$repo_root" -A "terraform-providers.$provider_name.go-modules" 2>vendor_log.txt
+    set -e
+    logs=$(< vendor_log.txt)
+    if ! [[ $logs =~ got:\ +([^\ ]+) ]]; then
+      echo "ERROR: could not find new hash in output:"
+      cat vendor_log.txt
+      rm -f vendor_log.txt
+      exit 1
+    fi
+    rm -f vendor_log.txt
+    # trim the results in case it they have a sha256: prefix or contain more than one line
+    vendorSha256=$(echo "${BASH_REMATCH[1]#sha256:}" | head -n 1)
+    # Deal with nix unstable
+    if [[ $vendorSha256 = sha256-* ]]; then
+      vendorSha256=$(nix to-base32 "$vendorSha256")
+    fi
+  fi
+fi
+
+if [[ -n "$vendorSha256" ]]; then
+  update_attr vendorSha256 "$vendorSha256"
+fi
+
+# Check that the provider builds
+echo "=== Building terraform-providers.$provider_name ==="
+nix-build "$repo_root" -A "terraform-providers.$provider_name"
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vercel/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vercel/default.nix
new file mode 100644
index 000000000000..f37d1ac5d87a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vercel/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "terraform-provider-vercel";
+  version = "2.1.0";
+
+  src = fetchFromGitHub {
+    owner = "ondrejsika";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "06lskp3mmax7g0lchq6jaxavycj7snkhip9madzqkr552qvz5cgw";
+  };
+
+  vendorSha256 = "0s0kf1v2217q9hfmc7r2yybcfk33k566dfvs2jiq63kyjnadhb0k";
+
+  postInstall = "mv $out/bin/terraform-provider-vercel{,_v${version}}";
+
+  meta = with lib; {
+    homepage = "https://github.com/ondrejsika/terraform-provider-vercel";
+    description = "Terraform provider for Vercel";
+    maintainers = with maintainers; [ mmahut ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vpsadmin/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vpsadmin/default.nix
new file mode 100644
index 000000000000..93401dfc635b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/vpsadmin/default.nix
@@ -0,0 +1,29 @@
+{ lib, fetchFromGitHub, buildGoModule }:
+buildGoModule rec {
+  pname = "terraform-provider-vpsadmin";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "vpsfreecz";
+    repo = "terraform-provider-vpsadmin";
+    rev = "v${version}";
+    sha256 = "1vny6w9arbbra04bjjafisaswinm93ic1phy59l0g78sqf6x3a7v";
+  };
+
+  vendorSha256 = "0j90fnzba23mwf9bzf9w5h0hszkl3h61p5i780s9v9c0hbzhbqsh";
+
+  doCheck = false;
+
+  subPackages = [ "." ];
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postInstall = "mv $out/bin/${pname}{,_v${version}}";
+
+  meta = with lib; {
+    description = "Terraform provider for vpsAdmin";
+    homepage = "https://github.com/vpsfreecz/terraform-provider-vpsadmin";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ zimbatm ];
+  };
+}