vim-plugins: Add infrastructure for python[3]Dependencies.

This allows vim plugins to specify python dependencies required at
runtime, and they will be added to the python environment.
This commit is contained in:
Evan Danaher
2017-02-27 12:27:45 -05:00
parent 6018cf4a69
commit dcab427908
3 changed files with 26 additions and 8 deletions

View File

@@ -150,6 +150,10 @@ vim_with_plugins can be installed like any other application within Nix.
let
inherit (stdenv) lib;
toNames = x:
if builtins.isString x then [x]
else (lib.optional (x ? name) x.name)
++ (x.names or []);
findDependenciesRecursively = {knownPlugins, names}:
let depsOf = name: (builtins.getAttr name knownPlugins).dependencies or [];
@@ -211,11 +215,6 @@ let
(let
knownPlugins = vam.knownPlugins or vimPlugins;
toNames = x:
if builtins.isString x then [x]
else (lib.optional (x ? name) x.name)
++ (x.names or []);
names = findDependenciesRecursively { inherit knownPlugins; names = lib.concatMap toNames vam.pluginDictionaries; };
# Vim almost reads JSON, so eventually JSON support should be added to Nix
@@ -412,6 +411,19 @@ rec {
configurePhase =":";
} // a);
requiredPlugins = {
knownPlugins ? vimPlugins,
vam ? null,
pathogen ? null, ...
}:
let
pathogenNames = map (name: knownPlugins.${name}) (findDependenciesRecursively { inherit knownPlugins; names = pathogen.pluginNames; });
vamNames = findDependenciesRecursively { inherit knownPlugins; names = lib.concatMap toNames vam.pluginDictionaries; };
names = (lib.optionals (pathogen != null) pathogenNames) ++
(lib.optionals (vam != null) vamNames);
in
map (name: knownPlugins.${name}) names;
# test cases:
test_vim_with_vim_addon_nix_using_vam = vim_configurable.customize {
name = "vim-with-vim-addon-nix-using-vam";
@@ -427,5 +439,4 @@ rec {
name = "vim-with-vim-addon-nix";
vimrcConfig.packages.myVimPackage.start = with vimPlugins; [ vim-addon-nix ];
};
}