diff --git a/pkgs/development/tools/misc/chruby/default.nix b/pkgs/development/tools/misc/chruby/default.nix index 2011a2c9903..0569dc2abdf 100644 --- a/pkgs/development/tools/misc/chruby/default.nix +++ b/pkgs/development/tools/misc/chruby/default.nix @@ -1,6 +1,13 @@ -{ stdenv, lib, fetchFromGitHub }: +{ stdenv, lib, fetchFromGitHub, runCommand, rubies ? null }: -stdenv.mkDerivation rec { +let + rubiesEnv = runCommand "chruby-env" { preferLocalBuild = true; } '' + mkdir $out + ${lib.concatStrings + (lib.mapAttrsToList (name: path: "ln -s ${path} $out/${name}\n") rubies)} + ''; + +in stdenv.mkDerivation rec { name = "chruby"; src = fetchFromGitHub { @@ -10,7 +17,15 @@ stdenv.mkDerivation rec { sha256 = "1iq9milnnj3189yw02hkly2pnnh4g0vn2fxq6dfx90kldjwpwxq5"; }; - phases = [ "unpackPhase" "installPhase" "fixupPhase" ]; + phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ]; + + patches = lib.optionalString (rubies != null) [ + ./env.patch + ]; + + postPatch = lib.optionalString (rubies != null) '' + substituteInPlace share/chruby/chruby.sh --replace "@rubiesEnv@" ${rubiesEnv} + ''; installPhase = '' mkdir $out diff --git a/pkgs/development/tools/misc/chruby/env.patch b/pkgs/development/tools/misc/chruby/env.patch new file mode 100644 index 00000000000..6a4ef8b7349 --- /dev/null +++ b/pkgs/development/tools/misc/chruby/env.patch @@ -0,0 +1,12 @@ +diff --git a/share/chruby/chruby.sh b/share/chruby/chruby.sh +--- a/share/chruby/chruby.sh ++++ b/share/chruby/chruby.sh +@@ -1,7 +1,7 @@ + CHRUBY_VERSION="0.3.8" + RUBIES=() + +-for dir in "$PREFIX/opt/rubies" "$HOME/.rubies"; do ++for dir in @rubiesEnv@; do + [[ -d "$dir" && -n "$(ls -A "$dir")" ]] && RUBIES+=("$dir"/*) + done + unset dir diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e835c632d63..513431f29cf 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4270,7 +4270,7 @@ let chrpath = callPackage ../development/tools/misc/chrpath { }; - chruby = callPackage ../development/tools/misc/chruby { }; + chruby = callPackage ../development/tools/misc/chruby { rubies = null; }; "cl-launch" = callPackage ../development/tools/misc/cl-launch {};