feat: apply new module format to terminal plugins

This commit is contained in:
NotAShelf 2023-02-27 22:28:37 +03:00
commit cbf1490308
No known key found for this signature in database
GPG key ID: 5B5C8895F28445F1
4 changed files with 31 additions and 15 deletions

View file

@ -0,0 +1,37 @@
{
pkgs,
config,
lib,
...
}:
with lib;
with builtins; let
cfg = config.vim.terminal.toggleterm;
in {
config = mkIf cfg.enable {
vim.startPlugins = [
"toggleterm-nvim"
];
vim.luaConfigRC.toggleterm = nvim.dag.entryAnywhere ''
require("toggleterm").setup({
open_mapping = [[<c-t>]],
direction = '${toString cfg.direction}',
-- TODO: this should probably be turned into a module that uses the lua function if and only if the user has not set it
size = function(term)
if term.direction == "horizontal" then
return 15
elseif term.direction == "vertical" then
return vim.o.columns * 0.4
end
end,
winbar = {
enabled = '${toString cfg.enable_winbar}',
name_formatter = function(term) -- term: Terminal
return term.name
end
},
})
'';
};
}

View file

@ -0,0 +1,6 @@
_: {
imports = [
./toggleterm.nix
./config.nix
];
}

View file

@ -0,0 +1,24 @@
{
pkgs,
config,
lib,
...
}:
with lib;
with builtins; let
cfg = config.vim.terminal.toggleterm;
in {
options.vim.terminal.toggleterm = {
enable = mkEnableOption "Enable toggleterm as a replacement to built-in terminal command";
direction = mkOption {
type = types.enum ["horizontal" "vertical" "tab" "float"];
default = "horizontal";
description = "Direction of the terminal";
};
enable_winbar = mkOption {
type = types.bool;
default = false;
description = "Enable winbar";
};
};
}