about summary refs log tree commit diff
path: root/pkgs/tools/admin/pulumi-packages
diff options
context:
space:
mode:
authorVincent Haupert <mail@vincent-haupert.de>2022-10-18 14:39:31 +0200
committerVincent Haupert <mail@vincent-haupert.de>2022-11-06 12:58:55 +0100
commit0412ead84e62ee28b58d634a0958d4eab5067124 (patch)
treead2b60d0de90c218e30b1589c401c1b3992137c9 /pkgs/tools/admin/pulumi-packages
parent35657c42623f858deff6f3a9990224e47a0884a0 (diff)
pulumiPackages: add base package derivation
Diffstat (limited to 'pkgs/tools/admin/pulumi-packages')
-rw-r--r--pkgs/tools/admin/pulumi-packages/base.nix75
1 files changed, 75 insertions, 0 deletions
diff --git a/pkgs/tools/admin/pulumi-packages/base.nix b/pkgs/tools/admin/pulumi-packages/base.nix
new file mode 100644
index 0000000000000..c14b6ec32ac5a
--- /dev/null
+++ b/pkgs/tools/admin/pulumi-packages/base.nix
@@ -0,0 +1,75 @@
+{ buildGoModule
+, fetchFromGitHub
+}:
+let
+  mkBasePackage =
+    { pname
+    , src
+    , version
+    , vendorHash
+    , cmd
+    , extraLdflags
+    , ...
+    }@args: buildGoModule (rec {
+      inherit pname src vendorHash version;
+
+      sourceRoot = "${src.name}/provider";
+
+      subPackages = [ "cmd/${cmd}" ];
+
+      doCheck = false;
+
+      ldflags = [
+        "-s"
+        "-w"
+      ] ++ extraLdflags;
+    } // args);
+in
+{ owner
+, repo
+, rev
+, version
+, hash
+, vendorHash
+, cmdGen
+, cmdRes
+, extraLdflags
+, meta
+, fetchSubmodules ? false
+, ...
+}@args:
+let
+  src = fetchFromGitHub {
+    name = "source-${repo}-${rev}";
+    inherit owner repo rev hash fetchSubmodules;
+  };
+
+  pulumi-gen = mkBasePackage rec {
+    inherit src version vendorHash extraLdflags;
+
+    cmd = cmdGen;
+    pname = cmdGen;
+  };
+in
+mkBasePackage ({
+  inherit meta src version vendorHash extraLdflags;
+
+  pname = repo;
+
+  nativeBuildInputs = [
+    pulumi-gen
+  ];
+
+  cmd = cmdRes;
+
+  postConfigure = ''
+    pushd ..
+
+    chmod +w sdk/
+    ${cmdGen} schema
+
+    popd
+
+    VERSION=v${version} go generate cmd/${cmdRes}/main.go
+  '';
+} // args)