setup codecompanion with ollama models
This commit is contained in:
parent
939e8a45f5
commit
2bf9f7345c
4 changed files with 419 additions and 3 deletions
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
# Completion & AI Assistancee
|
||||
./plugins/cmp/cmp.nix
|
||||
./plugins/cmp/codecompanion.nix
|
||||
|
||||
# Editor Enhancements
|
||||
./plugins/editor/commentary.nix
|
||||
|
|
|
|||
196
config/plugins/cmp/codecompanion.nix
Normal file
196
config/plugins/cmp/codecompanion.nix
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
{...}: {
|
||||
plugins.codecompanion = {
|
||||
enable = true;
|
||||
|
||||
# Configuration options for CodeCompanion
|
||||
settings = {
|
||||
# Customize the UI of the chat buffer
|
||||
display.chat.window = {
|
||||
layout = "vertical";
|
||||
position = "right";
|
||||
width = 0.25;
|
||||
};
|
||||
|
||||
# Setup ollama adapter for self-hosted LLM
|
||||
adapters = {
|
||||
http = {
|
||||
"ollama:qwen2.5-coder" = {
|
||||
__raw = ''
|
||||
function()
|
||||
return require('codecompanion.adapters').extend('ollama', {
|
||||
name = "ollama:qwen2.5-coder",
|
||||
env = {
|
||||
url = "http://127.0.0.1:11434",
|
||||
},
|
||||
schema = {
|
||||
model = {
|
||||
default = "qwen2.5-coder:7b",
|
||||
},
|
||||
num_ctx = {
|
||||
default = 32768,
|
||||
},
|
||||
},
|
||||
})
|
||||
end
|
||||
'';
|
||||
};
|
||||
|
||||
"ollama:deepseek-r1" = {
|
||||
__raw = ''
|
||||
function()
|
||||
return require('codecompanion.adapters').extend('ollama', {
|
||||
name = "ollama:deepseek-r1",
|
||||
env = {
|
||||
url = "http://127.0.0.1:11434",
|
||||
},
|
||||
schema = {
|
||||
model = {
|
||||
default = "deepseek-r1:8b",
|
||||
},
|
||||
num_ctx = {
|
||||
default = 131072,
|
||||
},
|
||||
},
|
||||
})
|
||||
end
|
||||
'';
|
||||
};
|
||||
|
||||
"ollama:gemma3" = {
|
||||
__raw = ''
|
||||
function()
|
||||
return require('codecompanion.adapters').extend('ollama', {
|
||||
name = "ollama:gemma3",
|
||||
env = {
|
||||
url = "http://127.0.0.1:11434",
|
||||
},
|
||||
schema = {
|
||||
model = {
|
||||
default = "gemma3:4b",
|
||||
},
|
||||
num_ctx = {
|
||||
default = 131072,
|
||||
},
|
||||
},
|
||||
})
|
||||
end
|
||||
'';
|
||||
};
|
||||
|
||||
"ollama:qwen3" = {
|
||||
__raw = ''
|
||||
function()
|
||||
return require('codecompanion.adapters').extend('ollama', {
|
||||
name = "ollama:qwen3",
|
||||
env = {
|
||||
url = "http://127.0.0.1:11434",
|
||||
},
|
||||
schema = {
|
||||
model = {
|
||||
default = "qwen3:8b",
|
||||
},
|
||||
num_ctx = {
|
||||
default = 40960,
|
||||
},
|
||||
},
|
||||
})
|
||||
end
|
||||
'';
|
||||
};
|
||||
|
||||
"ollama:llama3" = {
|
||||
__raw = ''
|
||||
function()
|
||||
return require('codecompanion.adapters').extend('ollama', {
|
||||
name = "ollama:llama3",
|
||||
env = {
|
||||
url = "http://127.0.0.1:11434",
|
||||
},
|
||||
schema = {
|
||||
model = {
|
||||
default = "llama3:8b",
|
||||
},
|
||||
num_ctx = {
|
||||
default = 8192,
|
||||
},
|
||||
},
|
||||
})
|
||||
end
|
||||
'';
|
||||
};
|
||||
|
||||
# Disable default adapters
|
||||
opts.show_defaults = false;
|
||||
};
|
||||
|
||||
acp = {
|
||||
# Disable default adapters
|
||||
opts.show_defaults = false;
|
||||
};
|
||||
};
|
||||
|
||||
# Global options for CodeCompanion
|
||||
opts = {
|
||||
log_level = "TRACE";
|
||||
send_code = true;
|
||||
use_default_actions = true;
|
||||
use_default_prompts = true;
|
||||
};
|
||||
|
||||
# Interaction strategies
|
||||
strategies = {
|
||||
agent = {
|
||||
adapter = "ollama:qwen2.5-coder";
|
||||
};
|
||||
chat = {
|
||||
adapter = "ollama:qwen2.5-coder";
|
||||
};
|
||||
inline = {
|
||||
adapter = "ollama:qwen2.5-coder";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
# Main toggle for the CodeCompanion plugin
|
||||
{
|
||||
mode = ["n" "v"];
|
||||
key = "<leader>c";
|
||||
action = "<Nop>";
|
||||
options = {
|
||||
desc = "+companion";
|
||||
};
|
||||
}
|
||||
|
||||
# Toggle the chat buffer on/off
|
||||
{
|
||||
mode = ["n" "v"];
|
||||
key = "<leader>cc";
|
||||
action = "<cmd>CodeCompanionChat Toggle<cr>";
|
||||
options = {
|
||||
desc = "Toggle chat";
|
||||
};
|
||||
}
|
||||
|
||||
# Open the actions palette
|
||||
{
|
||||
mode = ["n" "v"];
|
||||
key = "<leader>cA";
|
||||
action = "<cmd>CodeCompanionActions<cr>";
|
||||
options = {
|
||||
desc = "Open actions palette";
|
||||
};
|
||||
}
|
||||
|
||||
# Add selected text to the chat buffer
|
||||
{
|
||||
mode = ["v"];
|
||||
key = "<leader>ca";
|
||||
action = "<cmd>CodeCompanionChat Add<cr>";
|
||||
options = {
|
||||
desc = "Add selected text to chat";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
6
flake.lock
generated
6
flake.lock
generated
|
|
@ -140,11 +140,11 @@
|
|||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758931855,
|
||||
"narHash": "sha256-jTmbWlOxsy9dDP3UdCB6jEO63FtkM3dQG2FOq0b4foI=",
|
||||
"lastModified": 1759016999,
|
||||
"narHash": "sha256-UhQmUPSWYpKJQutTzy9TKiRBMg/qVJn6AoNsFR+5Zmc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "e0f1e4ae4bb8762b7c51c3a514ca19664fad9c3b",
|
||||
"rev": "4cec67651a6dfdab9a79e68741282e3be8231a61",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
|||
219
flakevnvneluknivcejhhcvgnd.lock
Normal file
219
flakevnvneluknivcejhhcvgnd.lock
Normal file
|
|
@ -0,0 +1,219 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756770412,
|
||||
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "4524271976b625a4a605beefd893f270620fd751",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_2": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756770412,
|
||||
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "4524271976b625a4a605beefd893f270620fd751",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ixx": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"nixvim",
|
||||
"nuschtosSearch",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nuschtosSearch",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1754860581,
|
||||
"narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "ixx",
|
||||
"rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NuschtOS",
|
||||
"ref": "v0.1.1",
|
||||
"repo": "ixx",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1758690382,
|
||||
"narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e643668fd71b949c53f8626614b21ff71a07379d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1754788789,
|
||||
"narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "a73b9c743612e4244d865a2fdee11865283c04e6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1758763312,
|
||||
"narHash": "sha256-puBMviZhYlqOdUUgEmMVJpXqC/ToEqSvkyZ30qQ09xM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e57b3b16ad8758fd681511a078f35c416a8cc939",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_2",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nuschtosSearch": "nuschtosSearch",
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758931855,
|
||||
"narHash": "sha256-jTmbWlOxsy9dDP3UdCB6jEO63FtkM3dQG2FOq0b4foI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "e0f1e4ae4bb8762b7c51c3a514ca19664fad9c3b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nuschtosSearch": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"ixx": "ixx",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758662783,
|
||||
"narHash": "sha256-igrxT+/MnmcftPOHEb+XDwAMq3Xg1Xy7kVYQaHhPlAg=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"rev": "7d4c0fc4ffe3bd64e5630417162e9e04e64b27a4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixvim": "nixvim"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue