diff options
author | Timo Kaufmann <timokau@zoho.com> | 2019-01-03 11:56:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-03 11:56:44 +0100 |
commit | e33d6364f694d8beadd8687de9e96dbd70605b24 (patch) | |
tree | 79ec9f88b196c64457133dd8ee7c8bb546fc7b15 /pkgs/misc/vim-plugins | |
parent | 27726eed82e219f1203c16d4d9b1bf6dae4a0c09 (diff) | |
parent | 801a54818387b0e44c3d1fc354c2828f5505f948 (diff) | |
download | nixlib-e33d6364f694d8beadd8687de9e96dbd70605b24.tar nixlib-e33d6364f694d8beadd8687de9e96dbd70605b24.tar.gz nixlib-e33d6364f694d8beadd8687de9e96dbd70605b24.tar.bz2 nixlib-e33d6364f694d8beadd8687de9e96dbd70605b24.tar.lz nixlib-e33d6364f694d8beadd8687de9e96dbd70605b24.tar.xz nixlib-e33d6364f694d8beadd8687de9e96dbd70605b24.tar.zst nixlib-e33d6364f694d8beadd8687de9e96dbd70605b24.zip |
Merge pull request #53240 from timokau/vim-drv-recursively
vimUtils: apply pluginToDrv recursively
Diffstat (limited to 'pkgs/misc/vim-plugins')
-rw-r--r-- | pkgs/misc/vim-plugins/vim-utils.nix | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/pkgs/misc/vim-plugins/vim-utils.nix b/pkgs/misc/vim-plugins/vim-utils.nix index 6e867dfc9661..cf5eeaec3e33 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) @@ -429,7 +427,7 @@ rec { if vam != null && vam ? knownPlugins then vam.knownPlugins else if pathogen != null && pathogen ? knownPlugins then pathogen.knownPlugins else vimPlugins; - pathogenPlugins = findDependenciesRecursively ((map pluginToDrv knownPlugins) pathogen.pluginNames); + pathogenPlugins = findDependenciesRecursively (map (pluginToDrv knownPlugins) pathogen.pluginNames); vamPlugins = findDependenciesRecursively (map (pluginToDrv knownPlugins) (lib.concatMap vamDictToNames vam.pluginDictionaries)); nonNativePlugins = (lib.optionals (pathogen != null) pathogenPlugins) ++ (lib.optionals (vam != null) vamPlugins) @@ -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" ]; } ]; |