nix-community.nixvim/plugins/utils/zk.nix
2024-06-21 08:49:09 +01:00

64 lines
1.4 KiB
Nix

{
lib,
helpers,
config,
pkgs,
...
}:
with lib;
{
options.plugins.zk = {
enable = mkEnableOption "zk.nvim, a plugin to integrate with zk";
package = helpers.mkPluginPackageOption "zk.nvim" pkgs.vimPlugins.zk-nvim;
picker =
helpers.defaultNullOpts.mkEnumFirstDefault
[
"select"
"fzf"
"telescope"
]
''
it's recommended to use "telescope" or "fzf"
'';
lsp = {
config = helpers.neovim-plugin.extraOptionsOptions // {
cmd = helpers.defaultNullOpts.mkListOf types.str [
"zk"
"lsp"
] "";
name = helpers.defaultNullOpts.mkStr "zk" "";
};
autoAttach = {
enabled = helpers.defaultNullOpts.mkBool true "automatically attach buffers in a zk notebook";
filetypes = helpers.defaultNullOpts.mkListOf types.str [
"markdown"
] "matching the given filetypes";
};
};
};
config =
let
cfg = config.plugins.zk;
setupOptions = {
inherit (cfg) picker;
lsp = {
inherit (cfg.lsp) config;
auto_attach = {
inherit (cfg.lsp.autoAttach) enabled filetypes;
};
};
};
in
mkIf cfg.enable {
extraPlugins = [ cfg.package ];
extraPackages = [ pkgs.zk ];
extraConfigLua = ''
require("zk").setup(${helpers.toLuaObject setupOptions})
'';
};
}