Draft: modules #1

Draft
pleshevskiy wants to merge 15 commits from modules into main
6 changed files with 29 additions and 76 deletions
Showing only changes of commit 53b281848b - Show all commits

View file

@ -208,7 +208,7 @@
buildPlugin = name: vimUtils.buildVimPlugin {
name = name;
src = getAttr name inputs;
patches = lib.optional
patches = lib.optionals
(pathExists ./patches/${name})
(map
(patchName: ./patches/${name}/${patchName})

60
lib.nix
View file

@ -1,65 +1,7 @@
{ lib, substituteAll, ... }:
let
inherit (builtins) length elemAt isList isString hasAttr getAttr;
###########################################################################
# Helpers
# Source: https://github.com/NixOS/nixpkgs/blob/d61bc96d16ca288c69b798b8e31eca64050098e3/lib/lists.nix
foldr = op: nul: list:
let
len = length list;
fold' = n:
if n == len
then nul
else op (elemAt list n) (fold' (n + 1));
in
fold' 0;
concatMap = op: list:
let
concat = (a: b: op a + b);
in
foldr concat "" list;
############################################################################
# Configs
optional = cond: val:
let
def =
if isList val then [ ]
else if isString val then ""
else null;
in
if cond then val else def;
getAttrOpt = a: s:
if hasAttr a s then getAttr a s else null;
#############################################################################
# Lua
mkLuaHeredoc = content: ''
lua << EOF
${content}
EOF
'';
mkLuaRc = contents: concatMap mkLuaHeredoc contents;
############################################################################
# Configs
readSubFile = src: params: builtins.readFile
(substituteAll (params // { inherit src; }));
in
{
inherit (lib) importJSON attrByPath;
inherit foldr concatMap;
inherit optional getAttrOpt;
inherit mkLuaHeredoc mkLuaRc;
inherit readSubFile substituteAll;
}
lib // { inherit readSubFile substituteAll; }

View file

@ -35,7 +35,7 @@ let
plugins = mergeAttrs plugins';
inherit (builtins) catAttrs readFile;
myLib = import ./lib.nix { inherit lib substituteAll; } // {
extLib = import ./lib.nix { inherit lib substituteAll; } // {
inherit (nix2lua.lib) toLua LuaNil;
};
@ -43,7 +43,7 @@ let
pluginParams = neovimPlugins // {
inherit tree-sitter plugins enableDevIcons enableTabby enableOrgMode;
themeCfg = theme;
lib = myLib;
lib = extLib;
};
callPlugin = plugin: callPackage plugin pluginParams;
@ -67,6 +67,14 @@ let
basicConfigs = map readFile [ ./config/basic.lua ];
pluginConfigs = catAttrs "luaConfig" pluginsSettings;
allConfigs = basicConfigs ++ pluginConfigs ++ [ extraLuaConfig ];
mkLuaHeredoc = content: ''
lua << EOF
${content}
EOF
'';
mkLuaRc = lib.concatMapStrings mkLuaHeredoc;
in
(wrapNeovim neovim-unwrapped {
inherit viAlias;
@ -77,13 +85,13 @@ in
withRuby = false;
configure = {
customRC = extraConfig + myLib.mkLuaRc allConfigs;
customRC = extraConfig + mkLuaRc allConfigs;
packages.myVimPackages = { start = allPlugins; };
};
}).overrideAttrs (oldAttrs: {
passthru = oldAttrs.passthru // {
nix2lua = nix2lua.lib;
inherit plugins;
inherit plugins allConfigs;
};
})

View file

@ -18,14 +18,17 @@ let
max_lines = 100;
};
tabbymlSettings = lib.toLua (lib.attrByPath [ "tabbyml" "settings" ] tabbymlDefaultSettings plugins);
tabbymlLuaConfig = lib.optional tabbymlEnable
tabbymlLuaConfig = lib.optionalString tabbymlEnable
(lib.readSubFile ./cmp-tabby.lua { inherit tabbymlSettings; });
cmpSources = lib.toLua ([
{ name = "nvim_lsp"; }
{ name = "luasnip"; }
{ name = "orgmode"; }
] ++ lib.optional tabbymlEnable [{ name = "cmp_tabby"; }]);
cmpSources = lib.toLua (
[
{ name = "nvim_lsp"; }
{ name = "luasnip"; }
{ name = "orgmode"; }
]
++ lib.optional tabbymlEnable { name = "cmp_tabby"; }
);
cmpLuaConfig = lib.readSubFile ./nvim-cmp.lua { inherit cmpSources; };
lspconfigLuaConfig = lib.readSubFile ./lspconfig.lua
@ -37,7 +40,7 @@ let
nvim-cmp # Autocompletion
cmp-nvim-lsp # LSP source for nvim-cmp
cmp-luasnip # Snippets source for nvim-cmp
] ++ lib.optional tabbymlEnable [ cmp-tabby ];
] ++ lib.optional tabbymlEnable cmp-tabby;
lspConfigServers = lib.toLua (lib.attrByPath [ "lspConfig" "servers" ] [ ] plugins);
lspSagaSettings = lib.toLua (lib.attrByPath [ "lspSaga" "settings" ] { } plugins);

View file

@ -27,10 +27,10 @@ in
{
luaConfig = themeConfig
+ (readFile (lib.substituteAll { src = ./lualine.lua; inherit lualineSettings; }))
+ (lib.optional enableTabby (readFile ./tabby-nvim.lua));
+ (lib.optionalString enableTabby (readFile ./tabby-nvim.lua));
plugins = [ theme ]
++ lualinePlugins
++ (lib.optional enableDevIcons [ nvim-web-devicons ])
++ (lib.optional enableTabby [ tabby-nvim ]);
++ (lib.optional enableDevIcons nvim-web-devicons)
++ (lib.optional enableTabby tabby-nvim);
}

View file

@ -15,7 +15,7 @@ let
orgmodeEnable = lib.attrByPath [ "orgmode" "enable" ] enableOrgMode plugins;
orgmodeSettings = lib.toLua (lib.attrByPath [ "orgmode" "settings" ] { } plugins);
orgmodeLuaConfig = lib.optional orgmodeEnable
orgmodeLuaConfig = lib.optionalString orgmodeEnable
(lib.readSubFile ./nvim-orgmode.lua { inherit orgmodeSettings; });
colorizerFiletypes = lib.toLua (lib.attrByPath [ "colorizer" "filetypes" ] lib.LuaNil plugins);
@ -28,5 +28,5 @@ in
luaConfig = hopLuaConfig + orgmodeLuaConfig + colorizerLuaConfig;
plugins = [ hop-nvim nvim-colorizer ]
++ lib.optional orgmodeEnable [ nvim-orgmode org-bullets-nvim ];
++ lib.optionals orgmodeEnable [ nvim-orgmode org-bullets-nvim ];
}