132 lines
3.8 KiB
Nix
132 lines
3.8 KiB
Nix
{ config, ... }:
|
|
{
|
|
programs.nixvim.plugins = if config.nixvim-config.enable-ai then {
|
|
## required dependencies
|
|
dressing.enable = true; # this is archived and may break in the future
|
|
nui.enable = true;
|
|
|
|
## optional dependencies
|
|
cmp.enable = true;
|
|
copilot-lua.enable = true;
|
|
fzf-lua.enable = true;
|
|
mini.enable = true;
|
|
telescope.enable = true;
|
|
web-devicons.enable = true;
|
|
|
|
avante = {
|
|
enable = true;
|
|
|
|
settings = {
|
|
provider = "copilot";
|
|
cursor_applying_provider = "copilot";
|
|
behaviour = {
|
|
enable_cursor_planning_mode = true;
|
|
};
|
|
|
|
web_search_engine = {
|
|
provider = "tavily"; # tavily, serpapi, searchapi, google, kagi
|
|
};
|
|
|
|
# depends on docker
|
|
rag_service = {
|
|
enable = false; # requires OPENAI_API_KEY to be set
|
|
};
|
|
|
|
files = {
|
|
auto_include = true; # Automatically include relevant files
|
|
max_files = 50; # Maximum number of files to include in context
|
|
max_size_kb = 1000; # Maximum total size of files in KB
|
|
|
|
# Define which files to include/exclude
|
|
include = [
|
|
"*.lua"
|
|
"*.nix"
|
|
"*.rs"
|
|
"*.ts"
|
|
"*.js"
|
|
"*.jsx"
|
|
"*.tsx"
|
|
# Add more patterns as needed
|
|
];
|
|
|
|
exclude = [
|
|
"node_modules/**"
|
|
"dist/**"
|
|
".git/**"
|
|
# Add more patterns to exclude
|
|
];
|
|
};
|
|
|
|
claude = {
|
|
api_key_name = "<api_key_name>";
|
|
};
|
|
openai = {
|
|
api_key_name = "<api_key_name>";
|
|
};
|
|
|
|
vendors = {
|
|
ollama = {
|
|
api_key_name = "";
|
|
endpoint = "http://localhost:11434/v1";
|
|
model = "hf.co/unsloth/DeepSeek-R1-Distill-Qwen-1.5B-GGUF";
|
|
temperature = "0.6";
|
|
parse_curl_args.__raw = ''
|
|
function(opts, code_opts)
|
|
return {
|
|
url = opts.endpoint .. "/chat/completions",
|
|
headers = {
|
|
["Accept"] = "application/json",
|
|
["Content-Type"] = "application/json",
|
|
["x-api-key"] = "ollama",
|
|
},
|
|
body = {
|
|
model = opts.model,
|
|
messages = require("avante.providers").copilot.parse_messages(code_opts),
|
|
max_tokens = opts.max_tokens,
|
|
stream = true,
|
|
},
|
|
}
|
|
end'';
|
|
parse_response_data.__raw = ''
|
|
function(data_stream, event_state, opts)
|
|
require("avante.providers").openai.parse_response(data_stream, event_state, opts)
|
|
end'';
|
|
};
|
|
};
|
|
|
|
## Default keybindings:
|
|
# <leader>aa - ask
|
|
# <leader>ae - edit
|
|
# <leader>ar - refresh
|
|
# <leader>af - focus
|
|
# co - choose ours
|
|
# ct - choose theirs
|
|
# ca - choose all theirs
|
|
# c0 - choose none
|
|
# cb - choose both
|
|
# cc - choose cursor
|
|
# ]x - previous conflict
|
|
# [x - next conflict
|
|
# [[ - previous code block
|
|
# ]] - next code block
|
|
|
|
# mappings = {
|
|
# ask = "<leader>ca";
|
|
# edit = "<leader>ce";
|
|
# refresh = "<leader>cr";
|
|
# focus = "<leader>cf";
|
|
# toggle = {
|
|
# default = "<leader>ct";
|
|
# debug = "<leader>cd";
|
|
# hint = "<leader>ch";
|
|
# suggestion = "<leader>cs";
|
|
# repomap = "<leader>cR";
|
|
# };
|
|
# files = {
|
|
# add_current = "<leader>cc";
|
|
# };
|
|
# };
|
|
};
|
|
};
|
|
} else {};
|
|
}
|