nix-community.nixvim/plugins/utils/zk.nix

62 lines
1.4 KiB
Nix
Raw Normal View History

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