diff --git a/neovim/plugins/codecompanion.nix b/neovim/plugins/codecompanion.nix new file mode 100644 index 0000000..5991238 --- /dev/null +++ b/neovim/plugins/codecompanion.nix @@ -0,0 +1,56 @@ +{ lib, config, ... }: + +let + inherit (lib.nix2lua) return lambda0 pipe1 require call; + + reqCodeCompanionAdapters = require "codecompanion.adapters"; + + mkOllamaAdapter = data: + lambda0 + (return (pipe1 + reqCodeCompanionAdapters + (call "extend" [ "ollama" data ]) + )); + + adapters = { + mistral = mkOllamaAdapter { + name = "mistral"; + schema = { + model.default = "mistral:7b"; + num_ctx.default = 16384; + num_predict.default = -1; + }; + }; + codellama = mkOllamaAdapter { + name = "codellama"; + schema = { + model.default = "codellama:7b"; + num_ctx.default = 16384; + num_predict.default = -1; + }; + }; + }; +in +{ + # dependencies + plugin.plenary-nvim = { }; + + plugin.codecompanion-nvim = { + enable = true; + name = "codecompanion"; + setupSettings = { + inherit adapters; + strategies = { + chat.adapter = "mistral"; + inline.adapter = "codellama"; + cmd.adapter = "codellama"; + }; + }; + }; + + plugin.nvim-cmp.setupSettings = lib.mkIf config.plugins.nvim-cmp.enable { + sources = { + per_filetype.codecompanion = [ "codecompanion" ]; + }; + }; +} diff --git a/neovim/plugins/default.nix b/neovim/plugins/default.nix index 85c0465..81459cb 100644 --- a/neovim/plugins/default.nix +++ b/neovim/plugins/default.nix @@ -1,6 +1,7 @@ { imports = [ ./ollama.nix + ./codecompanion.nix # ./spring-boot.nix ]; }