about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/beam-modules/mix-release.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/beam-modules/mix-release.nix')
-rw-r--r--nixpkgs/pkgs/development/beam-modules/mix-release.nix21
1 files changed, 21 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/beam-modules/mix-release.nix b/nixpkgs/pkgs/development/beam-modules/mix-release.nix
index 0f070cce7ad3..d48dc38a4b8d 100644
--- a/nixpkgs/pkgs/development/beam-modules/mix-release.nix
+++ b/nixpkgs/pkgs/development/beam-modules/mix-release.nix
@@ -81,6 +81,27 @@ stdenv.mkDerivation (overridable // {
     # Phoenix projects for example will need compile.phoenix
     mix deps.compile --no-deps-check --skip-umbrella-children
 
+    # Symlink dependency sources. This is needed for projects that require
+    # access to the source of their dependencies. For example, Phoenix
+    # applications need javascript assets to build asset bundles.
+    ${lib.optionalString (mixNixDeps != { }) ''
+      mkdir -p deps
+
+      ${lib.concatMapStringsSep "\n" (dep: ''
+        dep_name=$(basename ${dep} | cut -d '-' -f2)
+        dep_path="deps/$dep_name"
+        if [ -d "${dep}/src" ]; then
+          ln -s ${dep}/src $dep_path
+        fi
+      '') (builtins.attrValues mixNixDeps)}
+    ''}
+
+    # Symlink deps to build root. Similar to above, but allows for mixFodDeps
+    # Phoenix projects to find javascript assets.
+    ${lib.optionalString (mixFodDeps != null) ''
+      ln -s ../deps ./
+    ''}
+
     runHook postConfigure
   '';