From b0871193334578450165337d3e1fc607e65076d0 Mon Sep 17 00:00:00 2001 From: LeMarsu Date: Wed, 29 May 2024 23:15:31 +0200 Subject: [PATCH] refactor: plugin normalization --- lib/deps.nix | 27 ++++++++++++++++----------- lib/lua.nix | 3 +-- lib/mkNeovimPkg.nix | 11 +++++++---- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/lib/deps.nix b/lib/deps.nix index ad4f67a..048119b 100644 --- a/lib/deps.nix +++ b/lib/deps.nix @@ -18,6 +18,9 @@ enabled = true; init = null; config = null; + dependencies = []; + lazy = false; + cmd = []; }; remotePluginToNeovimPlugin = p: @@ -29,7 +32,7 @@ withPluginDefaults = dep: defaultPlugin // dep; normalizePlugin = d: let dep = types.dependency d; - p = + plugin = if ! dep ? plugin then {plugin = dep;} else let @@ -38,8 +41,13 @@ if attrNames plugin == ["name" "src"] then {plugin = remotePluginToNeovimPlugin plugin;} else dep; + p = withPluginDefaults plugin; in - withPluginDefaults p; + p + // rec { + hasCommands = p.cmd != []; + lazy = p.lazy || hasCommands; + }; normalizeOrImportPlugin = dep: if isPath dep @@ -96,9 +104,6 @@ if plugin ? pname then plugin.pname else plugin.name; - hasDeps = plugin ? dependencies && plugin.dependencies != []; - isLazy = plugin ? lazy && plugin.lazy || hasCommands; - hasCommands = plugin ? cmd; name = pluginName plugin.plugin; in memo @@ -107,21 +112,21 @@ {name = pluginName plugin.plugin;} // (mkTypeFn "init") // (mkTypeFn "config") - // (optionalAttrs hasDeps { + // (optionalAttrs (plugin.dependencies != []) { dependencies = map pluginName plugin.dependencies; - } - // (optionalAttrs isLazy { + }) + // (optionalAttrs plugin.lazy { lazy = true; - })) - // (optionalAttrs hasCommands { + }) + // (optionalAttrs plugin.hasCommands { inherit (plugin) cmd; }); }; pluginsLuaDef = plugins: lua.nix2lua (foldl' pluginLuaDef {} plugins); in { + inherit normalizePlugin; inherit normalizePlugins; inherit mkSlothFlakePlugin; inherit mkRuntimePlugin; inherit textOrContent; - inherit pluginsLuaDef; } diff --git a/lib/lua.nix b/lib/lua.nix index 3cfc225..5455d1e 100644 --- a/lib/lua.nix +++ b/lib/lua.nix @@ -1,5 +1,4 @@ -{lib, ...}: let - inherit (lib.strings) removeSuffix; +{...}: let inherit (builtins) match isNull typeOf concatStringsSep attrNames concatMap; commaJoin = concatStringsSep ", "; diff --git a/lib/mkNeovimPkg.nix b/lib/mkNeovimPkg.nix index 3068115..50fbbb2 100644 --- a/lib/mkNeovimPkg.nix +++ b/lib/mkNeovimPkg.nix @@ -18,13 +18,16 @@ deps = callPackage ./deps.nix {inherit dependenciesExtraArgs types;}; - sloth-flake.plugin = deps.mkSlothFlakePlugin version plugins; - runtimePlugin.plugin = deps.mkRuntimePlugin runtime; - plugins = deps.normalizePlugins (dependencies ++ [runtimePlugin sloth-flake]); + normalizedPlugins = deps.normalizePlugins dependencies; + sloth-flake = deps.mkSlothFlakePlugin version normalizedPlugins; + runtimePlugin = deps.mkRuntimePlugin runtime; + plugins = + normalizedPlugins + ++ (deps.normalizePlugins [runtimePlugin sloth-flake]); extractPlugin = p: { inherit (p) plugin; - optional = p ? lazy && p.lazy || p ? cmd; + optional = p.lazy; }; extractPlugins = map extractPlugin;