about summary refs log tree commit diff
path: root/pkgs/misc
diff options
context:
space:
mode:
authorTimo Kaufmann <timokau@zoho.com>2019-01-02 22:12:27 +0100
committerTimo Kaufmann <timokau@zoho.com>2019-01-02 22:12:27 +0100
commitf38363387e2e9290293a3db620aee6d198becac3 (patch)
tree31f6c3d9d3a208048e4b7b5b43fda0cffe8bb410 /pkgs/misc
parent3820041ffda11da1c24a941c31e9fd2e6d9f774d (diff)
downloadnixlib-f38363387e2e9290293a3db620aee6d198becac3.tar
nixlib-f38363387e2e9290293a3db620aee6d198becac3.tar.gz
nixlib-f38363387e2e9290293a3db620aee6d198becac3.tar.bz2
nixlib-f38363387e2e9290293a3db620aee6d198becac3.tar.lz
nixlib-f38363387e2e9290293a3db620aee6d198becac3.tar.xz
nixlib-f38363387e2e9290293a3db620aee6d198becac3.tar.zst
nixlib-f38363387e2e9290293a3db620aee6d198becac3.zip
vimUtils: apply pluginToDrv recursively
This is necessary to handle plugin dependencies which also may be
strings.
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/vim-plugins/vim-utils.nix33
1 files changed, 16 insertions, 17 deletions
diff --git a/pkgs/misc/vim-plugins/vim-utils.nix b/pkgs/misc/vim-plugins/vim-utils.nix
index 6e867dfc9661..437cff52f82b 100644
--- a/pkgs/misc/vim-plugins/vim-utils.nix
+++ b/pkgs/misc/vim-plugins/vim-utils.nix
@@ -152,15 +152,21 @@ vim_with_plugins can be installed like any other application within Nix.
 let
   inherit (stdenv) lib;
 
-  # make sure a plugin is a derivation. If plugin already is a derivation, this
-  # is a no-op. If it is a string, it is looked up in knownPlugins.
+  # make sure a plugin is a derivation and its dependencies are derivations. If
+  # plugin already is a derivation, this is a no-op. If it is a string, it is
+  # looked up in knownPlugins.
   pluginToDrv = knownPlugins: plugin:
-    if builtins.isString plugin then
-      # make sure `pname` is set to that we are able to convert the derivation
-      # back to a string.
-      ( knownPlugins.${plugin} // { pname = plugin; })
-    else
-      plugin;
+  let
+    drv =
+      if builtins.isString plugin then
+        # make sure `pname` is set to that we are able to convert the derivation
+        # back to a string.
+        ( knownPlugins.${plugin} // { pname = plugin; })
+      else
+        plugin;
+  in
+    # make sure all the dependencies of the plugin are also derivations
+    drv // { dependencies = map (pluginToDrv knownPlugins) (drv.dependencies or []); };
 
   # transitive closure of plugin dependencies (plugin needs to be a derivation)
   transitiveClosure = plugin:
@@ -170,14 +176,6 @@ let
 
   findDependenciesRecursively = plugins: lib.concatMap transitiveClosure plugins;
 
-  attrnamesToPlugins = { knownPlugins, names }:
-    map (name: if builtins.isString name then knownPlugins.${name} else name) knownPlugins;
-
-  pluginToAttrname = plugin:
-    plugin.pname;
-
-  pluginsToAttrnames = plugins: map pluginToAttrname plugins;
-
   vamDictToNames = x:
       if builtins.isString x then [x]
       else (lib.optional (x ? name) x.name)
@@ -482,7 +480,8 @@ rec {
             rev = "4c596548216b7c19971f8fc94e38ef1a2b55fee6";
             sha256 = "0f1cpnp1nxb4i5hgymjn2yn3k1jwkqmlgw1g02sq270lavp2dzs9";
           };
-          dependencies = [];
+          # make sure string dependencies are handled
+          dependencies = [ "vim-nix" ];
         };
       });
     vimrcConfig.vam.pluginDictionaries = [ { names = [ "vim-trailing-whitespace" ]; } ];