@ -2,6 +2,7 @@
{ lib , stdenv , vim , vimPlugins , vim_configurable , buildEnv , writeText , writeScriptBin
, nix-prefetch-hg , nix-prefetch-git
, fetchFromGitHub , runtimeShell
, hasLuaModule
} :
/*
@ -186,7 +187,21 @@ let
nativeImpl = packages :
( let
link = ( packageName : dir : pluginPath : " l n - s f ${ pluginPath } / s h a r e / v i m - p l u g i n s / * $ o u t / p a c k / ${ packageName } / ${ dir } " ) ;
# dir is "start" or "opt"
linkLuaPlugin = plugin : packageName : dir : ''
mkdir - p $ out/pack / $ { packageName } / $ { dir } / $ { plugin . pname } /lua
ln - sf $ { plugin } /share/lua/5.1 /* $ o u t / p a c k / $ { p a c k a g e N a m e } / $ { d i r } / $ { p l u g i n . p n a m e } / l u a
ln - sf $ { plugin } / $ { plugin . pname } - $ { plugin . version } - rocks / $ { plugin . pname } / $ { plugin . version } /* $ o u t / p a c k / $ { p a c k a g e N a m e } / $ { d i r } / $ { p l u g i n . p n a m e } /
'' ;
linkVimlPlugin = pluginPath : packageName : dir :
" l n - s f ${ pluginPath } / ${ rtpPath } / * $ o u t / p a c k / ${ packageName } / ${ dir } " ;
# (builtins.trace pluginPath )
link = pluginPath : if hasLuaModule pluginPath
then linkLuaPlugin pluginPath
else linkVimlPlugin pluginPath ;
packageLinks = ( packageName : { start ? [ ] , opt ? [ ] }:
let
# `nativeImpl` expects packages to be derivations, not strings (as
@ -199,9 +214,9 @@ let
[ " m k d i r - p $ o u t / p a c k / ${ packageName } / s t a r t " ]
# To avoid confusion, even dependencies of optional plugins are added
# to `start` (except if they are explicitly listed as optional plugins).
++ ( builtins . map ( link packageName " s t a r t " ) ( lib . unique ( startWithDeps ++ depsOfOptionalPlugins ) ) )
++ ( builtins . map ( x : link x packageName " s t a r t " ) ( lib . unique ( startWithDeps ++ depsOfOptionalPlugins ) ) )
++ [ " m k d i r - p $ o u t / p a c k / ${ packageName } / o p t " ]
++ ( builtins . map ( link packageName " o p t " ) opt )
++ ( builtins . map ( x : link x packageName " o p t " ) opt )
) ;
packDir = ( packages :
stdenv . mkDerivation {
@ -217,6 +232,18 @@ let
set runtimepath ^ = $ { packDir packages }
'' ) ;
/* G e n e r a t e s a v i m r c s t r i n g
packages is an attrset with { name : { start = [ vim derivations ] ; opt = [ vim derivations ] ; }
Example :
vimrcContent {
packages = { home-manager = { start = [ vimPlugins . vim-fugitive ] ; opt = [ ] ; } ;
beforePlugins = '' ;
customRc = '' l e t m a p l e a d e r = " " '' ;
} ;
* /
vimrcContent = {
packages ? null ,
vam ? null ,