about summary refs log tree commit diff
path: root/pkgs/development/beam-modules/rebar3-release.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/beam-modules/rebar3-release.nix')
-rw-r--r--pkgs/development/beam-modules/rebar3-release.nix13
1 files changed, 12 insertions, 1 deletions
diff --git a/pkgs/development/beam-modules/rebar3-release.nix b/pkgs/development/beam-modules/rebar3-release.nix
index e8e2aecc460c..d2c9da6414fa 100644
--- a/pkgs/development/beam-modules/rebar3-release.nix
+++ b/pkgs/development/beam-modules/rebar3-release.nix
@@ -80,11 +80,22 @@ let
       dir=${if releaseType == "escript"
             then "bin"
             else "rel"}
-      mkdir -p "$out/$dir"
+      mkdir -p "$out/$dir" "$out/bin"
       cp -R --preserve=mode "_build/${profile}/$dir" "$out"
+      ${lib.optionalString (releaseType == "release")
+        "find $out/rel/*/bin -type f -executable -exec ln -s -t $out/bin {} \\;"}
       runHook postInstall
     '';
 
+    postInstall = ''
+      for dir in $out/rel/*/erts-*; do
+        echo "ERTS found in $dir - removing references to erlang to reduce closure size"
+        for f in $dir/bin/{erl,start}; do
+          substituteInPlace "$f" --replace "${erlang}/lib/erlang" "''${dir/\/erts-*/}"
+        done
+      done
+    '';
+
     meta = {
       inherit (erlang.meta) platforms;
     } // meta;