diff --git a/plugins/completion/cmp/sources/codeium-nvim.nix b/plugins/completion/cmp/sources/codeium-nvim.nix index 0f815ff3..084602c9 100644 --- a/plugins/completion/cmp/sources/codeium-nvim.nix +++ b/plugins/completion/cmp/sources/codeium-nvim.nix @@ -1,85 +1,122 @@ { lib, - helpers, - config, - pkgs, ... }: -with lib; let - cfg = config.plugins.codeium-nvim; + inherit (lib.nixvim) defaultNullOpts; in -{ - meta.maintainers = [ maintainers.GaetanLepage ]; +lib.nixvim.neovim-plugin.mkNeovimPlugin { + name = "codeium-nvim"; + originalName = "codeium.nvim"; + luaName = "codeium"; - options.plugins.codeium-nvim = helpers.neovim-plugin.extraOptionsOptions // { - configPath = helpers.defaultNullOpts.mkStr { + maintainers = with lib.maintainers; [ + GaetanLepage + khaneliman + ]; + + # TODO: added 2024-09-03 remove after 24.11 + deprecateExtraOptions = true; + optionsRenamedToSettings = [ + "configPath" + "binPath" + [ + "api" + "host" + ] + [ + "api" + "port" + ] + [ + "tools" + "uname" + ] + [ + "tools" + "uuidgen" + ] + [ + "tools" + "curl" + ] + [ + "tools" + "gzip" + ] + [ + "tools" + "languageServer" + ] + "wrapper" + ]; + + # Register nvim-cmp association + imports = [ + { cmpSourcePlugins.codeium = "codeium-nvim"; } + ]; + + settingsOptions = { + config_path = 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 { + bin_path = 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" '' + host = 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. - ''; + port = defaultNullOpts.mkNullableWithRaw' { + # TODO: Added 2024-09-05; remove after 24.11 + type = with lib.types; lib.nixvim.transitionType ints.positive toString (strMatching "[0-9]+"); + pluginDefault = "443"; + description = '' + The port of the API server to use. + ''; + }; }; tools = { - uname = helpers.mkNullOrOption types.str "The path to the `uname` binary."; + uname = defaultNullOpts.mkStr null "The path to the `uname` binary."; - uuidgen = helpers.mkNullOrOption types.str "The path to the `uuidgen` binary."; + uuidgen = defaultNullOpts.mkStr null "The path to the `uuidgen` binary."; - curl = helpers.mkNullOrOption types.str "The path to the `curl` binary."; + curl = defaultNullOpts.mkStr null "The path to the `curl` binary."; - gzip = helpers.mkNullOrOption types.str "The path to the `gzip` binary."; + gzip = defaultNullOpts.mkStr null "The path to the `gzip` binary."; - languageServer = helpers.mkNullOrOption types.str '' + language_server = defaultNullOpts.mkStr null '' The path to the language server downloaded from the official source. ''; }; - wrapper = helpers.mkNullOrOption types.str '' + wrapper = defaultNullOpts.mkStr null '' 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. ''; + + detect_proxy = defaultNullOpts.mkBool false "Whether to enable the proxy detection."; + + enable_chat = defaultNullOpts.mkBool false "Whether to enable the chat functionality."; + + enterprise_mode = defaultNullOpts.mkBool false "Whether to enable the enterprise mode."; }; - 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}) - ''; - }; + settingsExample = lib.literalExpression '' + { + enable_chat = true; + tools = { + curl = lib.getExe pkgs.curl; + gzip = lib.getExe pkgs.gzip; + uname = lib.getExe' pkgs.coreutils "uname"; + uuidgen = lib.getExe' pkgs.util-linux "uuidgen"; + }; + } + ''; } diff --git a/plugins/completion/cmp/sources/default.nix b/plugins/completion/cmp/sources/default.nix index 05de4158..8ed0bad8 100644 --- a/plugins/completion/cmp/sources/default.nix +++ b/plugins/completion/cmp/sources/default.nix @@ -53,10 +53,6 @@ let pluginName = "cmp-tabnine"; sourceName = "cmp_tabnine"; } - { - pluginName = "codeium-nvim"; - sourceName = "codeium"; - } { pluginName = "cmp-conventionalcommits"; sourceName = "conventionalcommits"; diff --git a/tests/test-sources/plugins/completion/codeium-nvim.nix b/tests/test-sources/plugins/completion/codeium-nvim.nix index 3d857be4..7dc57fd4 100644 --- a/tests/test-sources/plugins/completion/codeium-nvim.nix +++ b/tests/test-sources/plugins/completion/codeium-nvim.nix @@ -15,20 +15,24 @@ 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; + settings = { + manager_path = null; + bin_path.__raw = "vim.fn.stdpath('cache') .. '/codeium/bin'"; + config_path.__raw = "vim.fn.stdpath('cache') .. '/codeium/config.json'"; + language_server_download_url = "https://github.com"; + api = { + host = "server.codeium.com"; + port = "443"; + }; + enterprise_mode = null; + detect_proxy = null; + tools = { }; + wrapper = null; + enable_chat = false; + enable_local_search = false; + enable_index_service = false; + search_max_workspace_file_count = 5000; }; - tools = { - uname = null; - uuidgen = null; - curl = null; - gzip = null; - languageServer = null; - }; - wrapper = null; }; }; }