about summary refs log tree commit diff
path: root/pkgs/development/tools/heroku/default.nix
blob: e78c7a7ff9a53149756842f5ebbae6eff8660564 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
{ stdenv, fetchurl, bash, buildFHSUserEnv, makeWrapper, writeTextFile
, nodejs-6_x, postgresql, ruby }:

with stdenv.lib;

let
  version = "3.43.12";
  bin_ver = "5.4.7-8dc2c80";

  arch = {
    "x86_64-linux" = "linux-amd64";
  }."${stdenv.system}" or (throw "system ${stdenv.system} not supported");

  sha256 = {
    "x86_64-linux" = "0iqjxkdw53dvy54ahmr9yijlxrp5nbikh9z7iss93z753cgxdl06";
  }."${stdenv.system}" or (throw "system ${stdenv.system} not supported");

  fhsEnv = buildFHSUserEnv {
    name = "heroku-fhs-env";
  };

  heroku = stdenv.mkDerivation rec {
    inherit version;
    name = "heroku";

    meta = {
      homepage = "https://toolbelt.heroku.com";
      description = "Everything you need to get started using Heroku";
      maintainers = with maintainers; [ aflatter mirdhyn ];
      license = licenses.mit;
      platforms = with platforms; unix;
    };

    src = fetchurl {
      url = "https://s3.amazonaws.com/assets.heroku.com/heroku-client/heroku-client-${version}.tgz";
      sha256 = "1z7z8sl2hkrc8rdvx3h00fbcrxs827xlfp6fji0ap97a6jc0v9x4";
    };

    bin = fetchurl {
      url = "https://cli-assets.heroku.com/branches/stable/${bin_ver}/heroku-v${bin_ver}-${arch}.tar.gz";
      inherit sha256;
    };

    installPhase = ''
      cli=$out/share/heroku/cli
      mkdir -p $cli

      tar xzf $src -C $out --strip-components=1
      tar xzf $bin -C $cli --strip-components=1

      wrapProgram $out/bin/heroku \
        --set HEROKU_NODE_PATH ${nodejs-6_x}/bin/node \
        --set XDG_DATA_HOME    $out/share \
        --set XDG_DATA_DIRS    $out/share

      # When https://github.com/NixOS/patchelf/issues/66 is fixed, reinstate this and dump the fhsuserenv
      #patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
      #  $cli/bin/heroku
    '';

    buildInputs = [ fhsEnv ruby postgresql makeWrapper ];

    doUnpack = false;
  };

in writeTextFile {
  name = "heroku-${version}";
  destination = "/bin/heroku";
  executable = true;
  text = ''
    #!${bash}/bin/bash -e
    ${fhsEnv}/bin/heroku-fhs-env ${heroku}/bin/heroku
  '';
}