summary refs log tree commit diff
path: root/pkgs/development/ruby-modules/bundled-common/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/ruby-modules/bundled-common/default.nix')
-rw-r--r--pkgs/development/ruby-modules/bundled-common/default.nix24
1 files changed, 20 insertions, 4 deletions
diff --git a/pkgs/development/ruby-modules/bundled-common/default.nix b/pkgs/development/ruby-modules/bundled-common/default.nix
index 6e7bd7a898b..09eb36a247a 100644
--- a/pkgs/development/ruby-modules/bundled-common/default.nix
+++ b/pkgs/development/ruby-modules/bundled-common/default.nix
@@ -5,8 +5,8 @@
 }@defs:
 
 {
-  name
-, pname ? name
+  name ? null
+, pname ? null
 , mainGemName ? null
 , gemdir ? null
 , gemfile ? null
@@ -22,6 +22,8 @@
 , ...
 }@args:
 
+assert name == null -> pname != null;
+
 with  import ./functions.nix { inherit lib gemConfig; };
 
 let
@@ -43,6 +45,20 @@ let
 
   gems = lib.flip lib.mapAttrs configuredGemset (name: attrs: buildGem name attrs);
 
+  name' = if name != null then
+    name
+  else
+    let
+      gem = gems."${pname}";
+      version = gem.version;
+    in
+      "${pname}-${version}";
+
+  pname' = if pname != null then
+    pname
+  else
+    name;
+
   copyIfBundledByPath = { bundledByPath ? false, ...}@main:
   (if bundledByPath then
       assert gemFiles.gemdir != null; "cp -a ${gemFiles.gemdir}/* $out/"
@@ -78,9 +94,9 @@ let
   envPaths = lib.attrValues gems ++ lib.optional (!hasBundler) bundler;
 
   basicEnv = buildEnv {
-    inherit ignoreCollisions;
+    inherit  ignoreCollisions;
 
-    name = if name == null then pname else name;
+    name = name';
 
     paths = envPaths;
     pathsToLink = [ "/lib" ];