plugins/codeium-nvim: init

This commit is contained in:
Gaetan Lepage 2024-01-01 21:50:06 +01:00 committed by Gaétan Lepage
parent e1e417bff8
commit 1057ef93e3
4 changed files with 127 additions and 0 deletions

View file

@ -61,5 +61,6 @@ in
"cmp_pandoc" = "cmp-pandoc-nvim"; "cmp_pandoc" = "cmp-pandoc-nvim";
"treesitter" = "cmp-treesitter"; "treesitter" = "cmp-treesitter";
"vimwiki-tags" = "cmp-vimwiki-tags"; "vimwiki-tags" = "cmp-vimwiki-tags";
"codeium" = "codeium-nvim";
}; };
} }

View file

@ -0,0 +1,89 @@
{
lib,
helpers,
config,
pkgs,
...
}:
with lib; let
cfg = config.plugins.codeium-nvim;
in {
meta.maintainers = [maintainers.GaetanLepage];
options.plugins.codeium-nvim =
helpers.extraOptionsOptions
// {
package = helpers.mkPackageOption "codeium.nvim" pkgs.vimPlugins.codeium-nvim;
configPath =
helpers.defaultNullOpts.mkStr
''{__raw = "vim.fn.stdpath('cache') .. '/codeium/config.json'";}''
"The path to the config file, used to store the API key.";
binPath =
helpers.defaultNullOpts.mkStr
''{__raw = "vim.fn.stdpath('cache') .. '/codeium/bin'";}''
"The path to the directory where the Codeium server will be downloaded to.";
api = {
host = helpers.defaultNullOpts.mkStr "server.codeium.com" ''
The hostname of the API server to use.
'';
port = helpers.defaultNullOpts.mkPositiveInt 443 ''
The port of the API server to use.
'';
};
tools = {
uname = helpers.mkNullOrOption types.str "The path to the `uname` binary.";
uuidgen = helpers.mkNullOrOption types.str "The path to the `uuidgen` binary.";
curl = helpers.mkNullOrOption types.str "The path to the `curl` binary.";
gzip = helpers.mkNullOrOption types.str "The path to the `gzip` binary.";
languageServer = helpers.mkNullOrOption types.str ''
The path to the language server downloaded from the official source.
'';
};
wrapper = helpers.mkNullOrOption types.str ''
The path to a wrapper script/binary that is used to execute any binaries not listed under
tools.
This is primarily useful for NixOS, where a FHS wrapper can be used for the downloaded
codeium server.
'';
};
config = mkIf cfg.enable {
extraConfigLua = let
setupOptions = with cfg;
{
config_path = configPath;
bin_path = binPath;
api = with api; {
inherit host;
port =
if isInt port
then toString port
else port;
};
tools = with tools; {
inherit
uname
uuidgen
curl
gzip
;
language_server = languageServer;
};
inherit wrapper;
}
// cfg.extraOptions;
in ''
require('codeium').setup(${helpers.toLuaObject setupOptions})
'';
};
}

View file

@ -12,6 +12,7 @@ in {
# For extra cmp plugins # For extra cmp plugins
imports = imports =
[ [
./codeium-nvim.nix
./copilot-cmp.nix ./copilot-cmp.nix
./cmp-tabnine.nix ./cmp-tabnine.nix
./crates-nvim.nix ./crates-nvim.nix

View file

@ -0,0 +1,36 @@
{
empty = {
plugins.codeium-nvim.enable = true;
};
enabled-by-cmp = {
plugins.nvim-cmp = {
enable = true;
sources = [
{name = "codeium";}
];
};
};
defaults = {
plugins.codeium-nvim = {
enable = true;
configPath.__raw = "vim.fn.stdpath('cache') .. '/codeium/config.json'";
binPath.__raw = "vim.fn.stdpath('cache') .. '/codeium/bin'";
api = {
host = "server.codeium.com";
port = 443;
};
tools = {
uname = null;
uuidgen = null;
curl = null;
gzip = null;
languageServer = null;
};
wrapper = null;
};
};
}