feat: TabNine and Copilot assistants

This commit is contained in:
NotAShelf 2023-02-06 04:14:01 +03:00
parent 7d1558c387
commit 78d3ae31d1
No known key found for this signature in database
GPG key ID: 5B5C8895F28445F1
7 changed files with 112 additions and 1 deletions

View file

@ -208,6 +208,22 @@
"type": "github" "type": "github"
} }
}, },
"copilot-lua": {
"flake": false,
"locked": {
"lastModified": 1675346663,
"narHash": "sha256-+a286iUK7UijcbRLb8gXwmDFZAf1gYupS5f9EHB+dxU=",
"owner": "zbirenbaum",
"repo": "copilot.lua",
"rev": "a54e7b11a2c6efc9ddd3f42e56cf7d9eed1a9683",
"type": "github"
},
"original": {
"owner": "zbirenbaum",
"repo": "copilot.lua",
"type": "github"
}
},
"crates-nvim": { "crates-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -961,6 +977,7 @@
"cmp-vsnip": "cmp-vsnip", "cmp-vsnip": "cmp-vsnip",
"codewindow-nvim": "codewindow-nvim", "codewindow-nvim": "codewindow-nvim",
"colorizer": "colorizer", "colorizer": "colorizer",
"copilot-lua": "copilot-lua",
"crates-nvim": "crates-nvim", "crates-nvim": "crates-nvim",
"dashboard-nvim": "dashboard-nvim", "dashboard-nvim": "dashboard-nvim",
"discord-nvim": "discord-nvim", "discord-nvim": "discord-nvim",
@ -1005,6 +1022,7 @@
"rust-tools": "rust-tools", "rust-tools": "rust-tools",
"scrollbar-nvim": "scrollbar-nvim", "scrollbar-nvim": "scrollbar-nvim",
"sqls-nvim": "sqls-nvim", "sqls-nvim": "sqls-nvim",
"tabnine-nvim": "tabnine-nvim",
"tabular": "tabular", "tabular": "tabular",
"telescope": "telescope", "telescope": "telescope",
"tidalcycles": "tidalcycles", "tidalcycles": "tidalcycles",
@ -1108,6 +1126,22 @@
"type": "github" "type": "github"
} }
}, },
"tabnine-nvim": {
"flake": false,
"locked": {
"lastModified": 1675586775,
"narHash": "sha256-7vd+moqQ5bA58VXlHSWXcJbI6ovp7z2Nf6Cn7cq08Ps=",
"owner": "codota",
"repo": "tabnine-nvim",
"rev": "85b3ad6df16ad09f8c486ec4c21defa75cebe22c",
"type": "github"
},
"original": {
"owner": "codota",
"repo": "tabnine-nvim",
"type": "github"
}
},
"tabular": { "tabular": {
"flake": false, "flake": false,
"locked": { "locked": {

View file

@ -168,6 +168,11 @@
vim.ui = { vim.ui = {
noice.enable = true; noice.enable = true;
}; };
vim.assistant = {
copilot.enable = false;
tabnine.enable = false; # FIXME: this is not working because the plugin depends on an internal script to be ran by the package manager
};
}; };
}; };
@ -560,12 +565,23 @@
flake = false; flake = false;
}; };
# UI44444 # UI
noice-nvim = { noice-nvim = {
url = "github:folke/noice.nvim"; url = "github:folke/noice.nvim";
flake = false; flake = false;
}; };
# Assistant
copilot-lua = {
url = "github:zbirenbaum/copilot.lua";
flake = false;
};
tabnine-nvim = {
url = "github:codota/tabnine-nvim";
flake = false;
};
# Dependencies # Dependencies
plenary-nvim = { plenary-nvim = {
# (required by crates-nvim) # (required by crates-nvim)

View file

@ -0,0 +1,24 @@
{
pkgs,
config,
lib,
...
}:
with lib;
with builtins; let
cfg = config.vim.assistant.copilot;
in {
options.vim.assistant.copilot = {
enable = mkEnableOption "Enable GitHub Copilot";
};
config = mkIf cfg.enable {
vim.startPlugins = ["copilot-lua"];
vim.luaConfigRC.copilot = nvim.dag.entryAnywhere ''
require("copilot").setup({
-- available options: https://github.com/zbirenbaum/copilot.lua
})
'';
};
}

View file

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

View file

@ -0,0 +1,28 @@
{
pkgs,
config,
lib,
...
}:
with lib;
with builtins; let
cfg = config.vim.assistant.tabnine;
in {
options.vim.assistant.tabnine = {
enable = mkEnableOption "Enable TabNine assistant";
};
config = mkIf cfg.enable {
vim.startPlugins = ["tabnine-nvim"];
vim.luaConfigRC.tabnine-nvim = nvim.dag.entryAnywhere ''
require('tabnine').setup({
disable_auto_comment=true,
accept_keymap="<Tab>",
dismiss_keymap = "<C-]>",
debounce_ms = 800,
execlude_filetypes = {"TelescopePrompt", "NvimTree", "alpha"}
})
'';
};
}

View file

@ -62,6 +62,8 @@ with lib; let
"toggleterm-nvim" "toggleterm-nvim"
"noice-nvim" "noice-nvim"
"nui-nvim" "nui-nvim"
"copilot-lua"
"tabnine-nvim"
]; ];
# You can either use the name of the plugin or a package. # You can either use the name of the plugin or a package.
pluginsType = with types; listOf (nullOr (either (enum availablePlugins) package)); pluginsType = with types; listOf (nullOr (either (enum availablePlugins) package));

View file

@ -29,6 +29,7 @@
./notes ./notes
./terminal ./terminal
./ui ./ui
./assistant
]; ];
pkgsModule = {config, ...}: { pkgsModule = {config, ...}: {