mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
This commit replaces custom lua plugins in tests with shared stub plugins from utils module. After this change the test has started to fail. Debugging this issue I found out that dependencies of plugins weren't processed. This commit improves the test assertion to detect duplicated dependencies in this case and fixes the underlying issue by also processing dependencies.
43 lines
1.4 KiB
Nix
43 lines
1.4 KiB
Nix
/*
|
|
Byte compiling of lua dependencies of normalized plugin list
|
|
|
|
Inputs: List of normalized plugins
|
|
Outputs: List of normalized plugins with all the propagatedBuildInputs byte-compiled
|
|
*/
|
|
{ lib, pkgs }:
|
|
let
|
|
builders = lib.nixvim.builders.withPkgs pkgs;
|
|
inherit (import ./utils.nix lib) mapNormalizedPlugins;
|
|
|
|
luaPackages = pkgs.neovim-unwrapped.lua.pkgs;
|
|
|
|
# Applies a function to the derivation, but only if it's a lua module,
|
|
# otherwise returns it as is
|
|
mapLuaModule = f: drv: if luaPackages.luaLib.hasLuaModule drv then f drv else drv;
|
|
|
|
# Byte-compile only lua dependencies
|
|
byteCompileDeps =
|
|
drv:
|
|
lib.pipe drv [
|
|
(
|
|
drv:
|
|
if drv.dependencies or [ ] != [ ] then
|
|
drv.overrideAttrs { dependencies = map byteCompileDeps drv.dependencies; }
|
|
else
|
|
drv
|
|
)
|
|
(
|
|
drv:
|
|
if drv.propagatedBuildInputs or [ ] != [ ] then
|
|
drv.overrideAttrs { propagatedBuildInputs = map byteCompile drv.propagatedBuildInputs; }
|
|
else
|
|
drv
|
|
)
|
|
# 'toLuaModule' updates requiredLuaModules attr
|
|
# It works without it, but update it anyway for consistency
|
|
(mapLuaModule luaPackages.toLuaModule)
|
|
];
|
|
# Byte-compile derivation (but only if it's a lua module) and its dependencies
|
|
byteCompile = drv: byteCompileDeps (mapLuaModule builders.byteCompileLuaDrv drv);
|
|
in
|
|
mapNormalizedPlugins byteCompileDeps
|