Compare commits
4 Commits
a9f321a847
...
8561f44963
Author | SHA1 | Date |
---|---|---|
Sam | 8561f44963 | |
Sam | dde54c9aa7 | |
Sam | 16436da1e4 | |
Sam | 13dad7b532 |
14
flake.lock
14
flake.lock
|
@ -427,11 +427,11 @@
|
||||||
},
|
},
|
||||||
"nix-secrets": {
|
"nix-secrets": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729849584,
|
"lastModified": 1730130467,
|
||||||
"narHash": "sha256-byrCBtIcqFLEUoLCAli5g4w1allf4kPrxFV7+3jenCI=",
|
"narHash": "sha256-mcyG1iu8hNmkDjgDEdFQyCZ3bBxBHFKd4nxT8NreMmY=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "97c60da5f7e750b8d4cdcaacee4dfab393cabb94",
|
"rev": "c82ff6f7e995503acabb9cf2478e5b4e401968ce",
|
||||||
"revCount": 187,
|
"revCount": 188,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://git@git.bitlab21.com/sam/nix-secrets.git"
|
"url": "ssh://git@git.bitlab21.com/sam/nix-secrets.git"
|
||||||
},
|
},
|
||||||
|
@ -549,11 +549,11 @@
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729100089,
|
"lastModified": 1729945968,
|
||||||
"narHash": "sha256-B44+e/cYjrzgaDvCNz9TyHQy0q9Q6WaDISV57jxejJ8=",
|
"narHash": "sha256-4u+nbBSMuXWGCtXxUPPEflRm54+y/HLIbhIep9do8Ew=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "341dbb1b5867adb95d75e6dabef6627eb0eae38e",
|
"rev": "c05ac01070425ed0797b1ff678dc690c333cea74",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, inputs, outputs, ... }:
|
{ pkgs, inputs, outputs, lib, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nix-colors.homeManagerModules.default
|
inputs.nix-colors.homeManagerModules.default
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
];
|
];
|
||||||
programs.nixvim = {
|
programs.nixvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.unstable.neovim-unwrapped;
|
||||||
enableMan = true; # install man pages for nixvim options
|
enableMan = true; # install man pages for nixvim options
|
||||||
clipboard.register = "unnamedplus"; # use system clipboard instead of internal registers
|
clipboard.register = "unnamedplus"; # use system clipboard instead of internal registers
|
||||||
globals.mapleader = " ";
|
globals.mapleader = " ";
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
user = config.home.username;
|
user = config.home.username;
|
||||||
|
mistralAPIKey = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."mistral-api-key".path;
|
||||||
in {
|
in {
|
||||||
|
sops.secrets = {
|
||||||
|
"mistral-api-key" = {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./cmp.nix
|
./cmp.nix
|
||||||
./colorizer.nix
|
./colorizer.nix
|
||||||
|
@ -32,6 +40,18 @@ in {
|
||||||
pkgs.vimPlugins.vim-dadbod-ui
|
pkgs.vimPlugins.vim-dadbod-ui
|
||||||
pkgs.vimPlugins.vim-dadbod-completion
|
pkgs.vimPlugins.vim-dadbod-completion
|
||||||
pkgs.vimPlugins.fugitive
|
pkgs.vimPlugins.fugitive
|
||||||
|
|
||||||
|
(pkgs.vimUtils.buildVimPlugin
|
||||||
|
{
|
||||||
|
name = "parrot.nvim";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "frankroeder";
|
||||||
|
repo = "parrot.nvim";
|
||||||
|
rev = "c992483";
|
||||||
|
sha256 = "sha256-P899qNY/h5LTW0pp3sAmcSDsDGWQedXa20J7EggL7F8=";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
(pkgs.vimUtils.buildVimPlugin
|
(pkgs.vimUtils.buildVimPlugin
|
||||||
{
|
{
|
||||||
name = "buffer_manager.nvim";
|
name = "buffer_manager.nvim";
|
||||||
|
@ -58,6 +78,18 @@ in {
|
||||||
pkgs.vimPlugins.vim-devicons
|
pkgs.vimPlugins.vim-devicons
|
||||||
];
|
];
|
||||||
programs.nixvim.extraConfigLua = ''
|
programs.nixvim.extraConfigLua = ''
|
||||||
|
-- function to read api key from secrets file
|
||||||
|
local function read_api_key(file_path)
|
||||||
|
local file = io.open(file_path, "r")
|
||||||
|
if file then
|
||||||
|
local api_key = file:read("*all")
|
||||||
|
file:close()
|
||||||
|
return api_key
|
||||||
|
else
|
||||||
|
error("Failed to open file: " .. file_path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- buffer_manager.nvim
|
-- buffer_manager.nvim
|
||||||
local opts = {noremap = true}
|
local opts = {noremap = true}
|
||||||
|
|
||||||
|
@ -123,5 +155,71 @@ in {
|
||||||
end
|
end
|
||||||
require("conform").format({ async = true, lsp_format = "fallback", range = range })
|
require("conform").format({ async = true, lsp_format = "fallback", range = range })
|
||||||
end, { range = true })
|
end, { range = true })
|
||||||
|
|
||||||
|
-- parrot.nvim setup
|
||||||
|
require("parrot").setup {
|
||||||
|
toggle_target = "popup",
|
||||||
|
providers = {
|
||||||
|
mistral = {
|
||||||
|
api_key = read_api_key("${mistralAPIKey}"),
|
||||||
|
params = {
|
||||||
|
chat = { temperature = 0, top_p = 1, max_tokens = 16384 },
|
||||||
|
command = { temperature = 0, top_p = 1, max_tokens = 16384 },
|
||||||
|
},
|
||||||
|
-- api_key = os.getenv "MISTRAL_API_KEY",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hooks = {
|
||||||
|
AskCoder = function(prt, params)
|
||||||
|
local prompt = [[
|
||||||
|
You are a code assistent. Answer my question carefully and concisely.
|
||||||
|
Answer with code snippets only. Do not give a summary or include any
|
||||||
|
code comments in your response. Never repeate code from a prevous
|
||||||
|
response or write obvious or unnecessary code, instead refer to such
|
||||||
|
code like: "**rest of code here**", or something to that effect.
|
||||||
|
Tokens are expensive, to we need to be very consice. If you uses
|
||||||
|
excessive tokens, then I will send you the invoice to pay the bill.
|
||||||
|
Question: {{command}}
|
||||||
|
```
|
||||||
|
]]
|
||||||
|
prt.ChatNew(params, prompt)
|
||||||
|
end,
|
||||||
|
|
||||||
|
AskCoderSel = function(parrot, params)
|
||||||
|
local template = [[
|
||||||
|
You are an expert programmer. Here is a code snippet along with a
|
||||||
|
question. Give me a short, accurate and consice answer.
|
||||||
|
|
||||||
|
```{{filetype}}
|
||||||
|
{{selection}}
|
||||||
|
```
|
||||||
|
]]
|
||||||
|
local model_obj = parrot.get_model("command")
|
||||||
|
parrot.logger.info("Asking model: " .. model_obj.name)
|
||||||
|
parrot.Prompt(params, parrot.ui.Target.popup, model_obj, "🤖 Ask ~ ", template)
|
||||||
|
end,
|
||||||
|
|
||||||
|
GitCommit = function(parrot, params)
|
||||||
|
local template = [[
|
||||||
|
You are a git commit generator. You will be provided with a git diff file.
|
||||||
|
Your role is to create a concise commit message that outlines all of the
|
||||||
|
most relevant and impactful changes in the diff. You only output a commit
|
||||||
|
message, do not write anything else not related to the commit. Use
|
||||||
|
imperative mood for you writing style. Your message should include a
|
||||||
|
short summary in the first line followed by more detailed descriptions of
|
||||||
|
the changes on subsequent lines. The first line summary should be no more
|
||||||
|
than 70 characters, not end with a period, and a blank line should
|
||||||
|
separate the summary from the body of the message. There should only be 1
|
||||||
|
summary line, and 1 body with the description. The body should include no
|
||||||
|
more than 3 bullet points with more detailed descriptions of the files
|
||||||
|
and functions that have been modified. Do not output any code.
|
||||||
|
Diff: {{selection}}
|
||||||
|
]]
|
||||||
|
local model_obj = parrot.get_model("command")
|
||||||
|
parrot.logger.info("Asking model: " .. model_obj.name)
|
||||||
|
parrot.Prompt(params, parrot.ui.Target.popup, model_obj, nil, template)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
}
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue