Skip to content

Commit

Permalink
plugins/codeium-nvim: init
Browse files Browse the repository at this point in the history
  • Loading branch information
GaetanLepage committed Jan 1, 2024
1 parent e1e417b commit 1057ef9
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 0 deletions.
1 change: 1 addition & 0 deletions plugins/completion/nvim-cmp/cmp-helpers.nix
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,6 @@ in
"cmp_pandoc" = "cmp-pandoc-nvim";
"treesitter" = "cmp-treesitter";
"vimwiki-tags" = "cmp-vimwiki-tags";
"codeium" = "codeium-nvim";
};
}
89 changes: 89 additions & 0 deletions plugins/completion/nvim-cmp/sources/codeium-nvim.nix
Original file line number Diff line number Diff line change
@@ -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})
'';
};
}
1 change: 1 addition & 0 deletions plugins/completion/nvim-cmp/sources/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ in {
# For extra cmp plugins
imports =
[
./codeium-nvim.nix
./copilot-cmp.nix
./cmp-tabnine.nix
./crates-nvim.nix
Expand Down
36 changes: 36 additions & 0 deletions tests/test-sources/plugins/completion/codeium-nvim.nix
Original file line number Diff line number Diff line change
@@ -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;
};
};
}

0 comments on commit 1057ef9

Please sign in to comment.