53 lines
1.5 KiB
Nix
53 lines
1.5 KiB
Nix
{
|
|
version,
|
|
types,
|
|
}: {
|
|
pkgs,
|
|
package ? pkgs.neovim-unwrapped,
|
|
dependencies ? [],
|
|
dependenciesExtraArgs ? {},
|
|
runtime ? {},
|
|
viAlias ? false,
|
|
vimAlias ? false,
|
|
...
|
|
} @ config: let
|
|
inherit (builtins) map;
|
|
inherit (pkgs) callPackage;
|
|
# inherit (lib.lists) concatMap filter foldl' map optional reverseList;
|
|
# inherit (lib.attrsets) attrNames optionalAttrs;
|
|
# inherit (lib.strings) concatStringsSep fileContents hasSuffix removePrefix removeSuffix replaceStrings;
|
|
# inherit (lib.debug) traceIf traceSeq traceVal traceValSeq traceValFn;
|
|
|
|
deps = callPackage ./deps.nix {inherit dependenciesExtraArgs types;};
|
|
|
|
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;
|
|
};
|
|
extractPlugins = map extractPlugin;
|
|
|
|
customRC = let
|
|
rc = ({init ? ../lua/default_init.lua, ...}: init) runtime;
|
|
in
|
|
deps.textOrContent rc;
|
|
|
|
neovimConfig =
|
|
pkgs.neovimUtils.makeNeovimConfig {
|
|
inherit customRC;
|
|
plugins = extractPlugins plugins;
|
|
}
|
|
// {luaRcContent = customRC;};
|
|
params =
|
|
removeAttrs neovimConfig ["manifestRc" "neovimRcContent"]
|
|
// {inherit viAlias vimAlias;};
|
|
pkg = pkgs.wrapNeovimUnstable package params;
|
|
in
|
|
builtins.seq (types.mkNeovimPkgOptions config) pkg
|