nixpkgs/pkgs/development/tools/heroku/default.nix

75 lines
2 KiB
Nix
Raw Normal View History

{ stdenv, fetchurl, bash, buildFHSUserEnv, makeWrapper, writeTextFile
, nodejs-6_x, postgresql, ruby }:
2015-03-24 10:03:07 +00:00
with stdenv.lib;
2015-03-24 10:03:07 +00:00
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;
2015-03-24 10:03:07 +00:00
};
in writeTextFile {
name = "heroku-${version}";
destination = "/bin/heroku";
executable = true;
text = ''
#!${bash}/bin/bash -e
${fhsEnv}/bin/heroku-fhs-env ${heroku}/bin/heroku
2015-03-24 10:03:07 +00:00
'';
}