1{
2 lib,
3 stdenv,
4 fetchurl,
5 autoPatchelfHook,
6 makeWrapper,
7 installShellFiles,
8}:
9
10let
11 data = import ./data.nix { };
12in
13stdenv.mkDerivation {
14 pname = "pulumi";
15 inherit (data) version;
16
17 postUnpack = ''
18 mv pulumi-* pulumi
19 '';
20
21 srcs = map fetchurl data.pulumiPkgs.${stdenv.hostPlatform.system};
22
23 installPhase = ''
24 install -D -t $out/bin/ *
25 ''
26 + lib.optionalString stdenv.hostPlatform.isLinux ''
27 wrapProgram $out/bin/pulumi --set LD_LIBRARY_PATH "${lib.getLib stdenv.cc.cc}/lib"
28 ''
29 + ''
30 installShellCompletion --cmd pulumi \
31 --bash <($out/bin/pulumi completion bash) \
32 --fish <($out/bin/pulumi completion fish) \
33 --zsh <($out/bin/pulumi completion zsh)
34 '';
35
36 nativeBuildInputs = [
37 installShellFiles
38 ]
39 ++ lib.optionals stdenv.hostPlatform.isLinux [
40 autoPatchelfHook
41 makeWrapper
42 ];
43 buildInputs = [ stdenv.cc.cc.libgcc or null ];
44
45 meta = with lib; {
46 homepage = "https://pulumi.io/";
47 description = "Pulumi is a cloud development platform that makes creating cloud programs easy and productive";
48 sourceProvenance = with sourceTypes; [ binaryNativeCode ];
49 license = with licenses; [ asl20 ];
50 platforms = builtins.attrNames data.pulumiPkgs;
51 maintainers = with maintainers; [
52 ghuntley
53 peterromfeldhk
54 jlesquembre
55 cpcloud
56 wrbbz
57 ];
58 hydraPlatforms = [ ]; # Hydra fails with "Output limit exceeded"
59 };
60}