Fix automatic dependency retrival

This commit is contained in:
2024-12-25 22:27:32 +01:00
parent 325237fcc5
commit b79ac69312
2 changed files with 38 additions and 26 deletions
+1 -1
View File
@@ -111,7 +111,7 @@
pkgs = nixpkgs.legacyPackages.${system};
in rec {
default = nvim;
nvim = import ./nvim (inputs // { inherit pkgs; });
nvim = import ./nvim (inputs // { inherit pkgs; lib = nixpkgs.lib; });
});
};
}
+37 -25
View File
@@ -18,48 +18,60 @@
withNodeJs ? false,
withSqlite ? false,
}: let
normalize = optional: p: let
defaultPlugin = {
plugin = null;
config = null;
inherit optional;
};
in
defaultPlugin
// (
if (p ? plugin)
then p
else {plugin = p;}
);
builder = (import ./bytecompile.nix) {inherit pkgs lib;};
pack = (import ./pack.nix) {inherit pkgs lib;};
nvim = builder.byteCompileVim package;
removeDependencies = p: p // {plugin = p.plugin.overrideAttrs (prev: prev // {dependencies = [];});};
pluginPack = let
normalize = optional: p: let
defaultPlugin = {
plugin = null;
config = null;
inherit optional;
};
in
defaultPlugin
// (
if (p ? plugin)
then p
else {plugin = p;}
);
start = map (p: lib.pipe p [(normalize false) removeDependencies builder.byteCompile]) plugins.start;
opts = map (p: lib.pipe p [(normalize true) removeDependencies builder.byteCompile]) plugins.opts;
startPacked = pack.packPlugins start;
removeDependencies = p: p // {plugin = removeAttrs p.plugin ["dependencies"];};
pluginPack = lib.pipe ([startPacked] ++ opts) [
pkgs.neovimUtils.normalizedPluginsToVimPackage
(p: {packages = p;})
pkgs.neovimUtils.packDir
];
preparePlugin = p:
lib.pipe p [
removeDependencies
builder.byteCompile
];
withDeps = p: [p] ++ builtins.concatMap withDeps (map (normalize false) (p.plugin.dependencies or []));
preparePlugins = ps: map preparePlugin (lib.unique (builtins.concatMap withDeps ps));
allPlugs = (map (normalize false) plugins.start) ++ (map (normalize true) plugins.opts);
partitioned = builtins.partition (p: p.optional) (preparePlugins allPlugs);
start = [(pack.packPlugins partitioned.wrong)];
opts = partitioned.right;
in
lib.pipe (start ++ opts) [
pkgs.neovimUtils.normalizedPluginsToVimPackage
(p: {packages = p;})
pkgs.neovimUtils.packDir
];
initLua =
# lua
''
vim.opt.rtp = {
"${config}",
"${pluginPack}",
"${pluginPack}/pack/packages/start/vimplugin-plugin-pack",
vim.env.VIMRUNTIME,
"${config}/after",
}
vim.opt.packpath = {
"${pluginPack}",
"${pluginPack}/pack/packages/opts",
vim.env.VIMRUNTIME,
}