about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorsunder <evenquantity@gmail.com>2024-04-03 20:59:22 +0300
committerPeter Hoeg <peter@hoeg.com>2024-04-19 01:38:55 -0700
commit9c1f3b305a16581259888edc12adbd18bef01ba8 (patch)
tree12a947a909110abef1d5532f3366f1ffeaa035d6 /pkgs
parenta0692d3b21b4da1f041839884195a33fbbd3c5e7 (diff)
buildCrystalPackage: add copyShardDeps flag
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/compilers/crystal/build-package.nix6
1 files changed, 5 insertions, 1 deletions
diff --git a/pkgs/development/compilers/crystal/build-package.nix b/pkgs/development/compilers/crystal/build-package.nix
index cb5869392b6b9..536ad3acda7b5 100644
--- a/pkgs/development/compilers/crystal/build-package.nix
+++ b/pkgs/development/compilers/crystal/build-package.nix
@@ -26,6 +26,9 @@
   # The default `crystal build` options can be overridden with { foo.options = [ "--optionname" ]; }
 , crystalBinaries ? { }
 , enableParallelBuilding ? true
+  # Copy all shards dependencies instead of symlinking and add write permissions
+  # to make environment more local-like
+, copyShardDeps ? false
 , ...
 }@args:
 
@@ -78,7 +81,8 @@ stdenv.mkDerivation (mkDerivationArgs // {
       ++ lib.optional (lockFile != null) "cp ${lockFile} ./shard.lock"
       ++ lib.optionals (shardsFile != null) [
         "test -e lib || mkdir lib"
-        "for d in ${crystalLib}/*; do ln -s $d lib/; done"
+        (if copyShardDeps then "for d in ${crystalLib}/*; do cp -r $d/ lib/; done; chmod -R +w lib/"
+          else "for d in ${crystalLib}/*; do ln -s $d lib/; done")
         "cp shard.lock lib/.shards.info"
       ]
       ++ [ "runHook postConfigure" ]