neovim: simplify plugin config schema

This commit is contained in:
2024-08-26 13:37:34 +00:00
parent 0787a3a50e
commit 3c9ff16108

View File

@@ -3,11 +3,21 @@ moduleArgs@{ config, lib, pkgs, ... }:
let
inherit (builtins) map;
inherit (lib) concatMapStrings mkIf optionalString;
# this structure roughly mirrors home-manager's `programs.neovim.plugins` option
plugins = import ./plugins.nix moduleArgs;
plugin-packages = map (p: p.plugin) plugins;
plugin-config-viml = concatMapStrings (p: optionalString (p.type or "" == "viml") p.config) plugins;
plugin-config-lua = concatMapStrings (p: optionalString (p.type or "" == "lua") p.config) plugins;
plugin-configs = concatMapStrings (p:
optionalString
(p ? config) (
if (p.type or "") == "viml" then
p.config
else
''
lua <<EOF
${p.config}
EOF
''
)
) plugins;
in
{
sane.programs.neovim = {
@@ -36,13 +46,8 @@ in
customRC = ''
${builtins.readFile ./vimrc}
""""" PLUGIN CONFIG (vim)
${plugin-config-viml}
""""" PLUGIN CONFIG (lua)
lua <<EOF
${plugin-config-lua}
EOF
""""" PLUGIN CONFIG
${plugin-configs}
'';
};
neovim-unwrapped' = with pkgs; (neovim-unwrapped.override {