Compare commits

..

3 Commits

Author SHA1 Message Date
b88fe44ec6 chore(deps): update ghcr.io/chroma-core/chroma docker tag to v1.0.15 2025-07-03 17:04:38 +00:00
4236d03d18 feat(neovim): improve lsp configuration to use newer setup (#255)
This change is based on the pull request [#1475][0].

Reviewed-on: #255

[0]: https://github.com/nvim-lua/kickstart.nvim/pull/1475
Co-authored-by: Joao P Dubas <joao.dubas+gitea@gmail.com>
Co-committed-by: Joao P Dubas <joao.dubas+gitea@gmail.com>
2025-07-03 17:03:23 +00:00
e6a3064f30 feat: upgrade mise runtimes and neovim/mcphub configuration (#254)
# `mise` changes

Upgraded:

* `aqua:CircleCI-Public/circleci-cli`: from 0.1.32580 to 0.1.32638
* `aqua:alexellis/k3sup`: from 0.13.9 to 0.13.10
* `aqua:astral-sh/uv`: from 0.7.14 to 0.7.18
* `aqua:aws/aws-cli`: from 2.27.41 to 2.27.47
* `aqua:dagger/dagger`: from 0.18.10 to 0.18.12
* `aqua:eza-community/eza`: from 0.21.5 to 0.21.6
* `aqua:junegunn/fzf`: from 0.62.0 to 0.63.0
* `aqua:pnpm/pnpm`: from 10.12.2 to 10.12.4
* `aqua:sbstp/kubie`: from 0.25.2 to 0.26.0
* `npm:@anthropic-ai/claude-code`: from 1.0.31 to 1.0.41
* `pipx:aider-chat`: from 0.84.0 to 0.85.1
* `pipx:vectorcode`: from 0.7.1 to 0.7.5
* `ubi:block/goose`: from 1.0.29 to 1.0.31
* `ubi:sst/opencode`: from 0.1.124 to 0.1.174
* `ubi:supabase/cli`: from 2.26.9 to 2.30.4

Added:

* `npm:@google/gemini-cli`

Removed:

* `yarn`

Enabled `idiomatic_version_file_enable_tools` setting for `go`, `ruby`, and `python` tools.

# `neovim` changes

Added `mcp` servers:

*  `fetch`
* `filesystem`
* `memory`

Updated reference to `gemini` models.

Reviewed-on: #254
Co-authored-by: Joao P Dubas <joao.dubas+gitea@gmail.com>
Co-committed-by: Joao P Dubas <joao.dubas+gitea@gmail.com>
2025-07-03 15:04:34 +00:00
4 changed files with 144 additions and 68 deletions

View File

@ -7,23 +7,53 @@
"@upstash/context7-mcp@latest" "@upstash/context7-mcp@latest"
] ]
}, },
"fetch": {
"command": "uvx",
"args": [
"mcp-server-fetch"
]
},
"filesystem": {
"command": "pnpm",
"args": [
"dlx",
"@modelcontextprotocol/server-filesystem@latest",
"/opt/personal",
"/opt/work"
]
},
"git": { "git": {
"command": "uvx", "command": "uvx",
"args": [ "args": [
"mcp-server-git" "mcp-server-git"
] ]
}, },
"vectorcode": { "memory": {
"command": "vectorcode-mcp-server", "command": "pnpm",
"args": [] "args": [
"dlx",
"@modelcontextprotocol/server-memory@latest"
]
}, },
"serena": { "serena": {
"command": "uvx", "command": "uvx",
"arg": [ "arg": [
"--from", "--from",
"git+https://github.com/oraios/serena", "git+https://github.com/oraios/serena",
"serena-mcp-server" "serena-mcp-server",
"--transport",
"stdio",
"--enable-web-dashboard",
"False",
"--enable-gui-log-window",
"False",
"--tool-timeout",
"30"
] ]
},
"vectorcode": {
"command": "vectorcode-mcp-server",
"args": []
} }
} }
} }

View File

@ -1,45 +1,46 @@
[tools] [tools]
"aqua:BurntSushi/ripgrep" = "14.1.1" "aqua:BurntSushi/ripgrep" = "14.1.1"
"aqua:CircleCI-Public/circleci-cli" = "0.1.32580" "aqua:CircleCI-Public/circleci-cli" = "0.1.32638"
"aqua:FiloSottile/age" = "1.2.1" "aqua:FiloSottile/age" = "1.2.1"
"aqua:ajeetdsouza/zoxide" = "0.9.8" "aqua:ajeetdsouza/zoxide" = "0.9.8"
"aqua:alexellis/k3sup" = "0.13.9" "aqua:alexellis/k3sup" = "0.13.10"
"aqua:astral-sh/uv" = "0.7.14" "aqua:astral-sh/uv" = "0.7.18"
"aqua:aws/aws-cli" = "2.27.41" "aqua:aws/aws-cli" = "2.27.47"
"aqua:bitwarden/clients" = "cli-v2025.5.0" "aqua:bitwarden/clients" = "cli-v2025.5.0"
"aqua:dagger/dagger" = "0.18.10" "aqua:dagger/dagger" = "0.18.12"
"aqua:derailed/k9s" = "0.50.6" "aqua:derailed/k9s" = "0.50.6"
"aqua:eksctl-io/eksctl" = "0.210.0" "aqua:eksctl-io/eksctl" = "0.210.0"
"aqua:evilmartians/lefthook" = "1.11.14" "aqua:evilmartians/lefthook" = "1.11.14"
"aqua:eza-community/eza" = "0.21.5" "aqua:eza-community/eza" = "0.21.6"
"aqua:github-cli" = "2.74.2" "aqua:github-cli" = "2.74.2"
"aqua:go-task/task" = "3.44.0" "aqua:go-task/task" = "3.44.0"
"aqua:hashicorp/terraform" = "1.12.2" "aqua:hashicorp/terraform" = "1.12.2"
"aqua:helm/helm" = "3.18.3" "aqua:helm/helm" = "3.18.3"
"aqua:jj-vcs/jj" = "0.30.0" "aqua:jj-vcs/jj" = "0.30.0"
"aqua:junegunn/fzf" = "0.62.0" "aqua:junegunn/fzf" = "0.63.0"
"aqua:k3d-io/k3d" = "5.8.3" "aqua:k3d-io/k3d" = "5.8.3"
"aqua:kubernetes-sigs/kind" = "0.29.0" "aqua:kubernetes-sigs/kind" = "0.29.0"
"aqua:kubernetes/kubectl" = "1.33.2" "aqua:kubernetes/kubectl" = "1.33.2"
"aqua:pnpm/pnpm" = "10.12.2" "aqua:pnpm/pnpm" = "10.12.4"
"aqua:sbstp/kubie" = "0.25.2" "aqua:sbstp/kubie" = "0.26.0"
"aqua:sharkdp/bat" = "0.25.0" "aqua:sharkdp/bat" = "0.25.0"
"aqua:starship/starship" = "1.23.0" "aqua:starship/starship" = "1.23.0"
"aqua:tilt-dev/ctlptl" = "0.8.42" "aqua:tilt-dev/ctlptl" = "0.8.42"
"aqua:tilt-dev/tilt" = "0.35.0" "aqua:tilt-dev/tilt" = "0.35.0"
"aqua:xo/usql" = "0.19.24" "aqua:xo/usql" = "0.19.24"
"go:github.com/bloznelis/typioca" = "3.1.0" "go:github.com/bloznelis/typioca" = "3.1.0"
"npm:@anthropic-ai/claude-code" = "1.0.31" "npm:@anthropic-ai/claude-code" = "1.0.41"
"pipx:aider-chat" = { version = "0.84.0", uvx_args = "--python 3.12.10 --with google-generativeai" } "npm:@google/gemini-cli" = "0.1.9"
"pipx:vectorcode" = { version = "0.7.1", uvx_args = "--python 3.13.3", extras = "mcp" } "pipx:aider-chat" = { version = "0.85.1", uvx_args = "--python 3.12.10 --with google-generativeai" }
"pipx:vectorcode" = { version = "0.7.5", extras = "mcp", uvx_args = "--python 3.13.3" }
"ubi:Samyak2/toipe" = "0.5.0" "ubi:Samyak2/toipe" = "0.5.0"
"ubi:block/goose" = "1.0.29" "ubi:block/goose" = "1.0.31"
"ubi:comtrya/comtrya" = "0.9.2" "ubi:comtrya/comtrya" = "0.9.2"
"ubi:hlsxx/tukai" = "0.2.2" "ubi:hlsxx/tukai" = "0.2.2"
"ubi:jdx/usage" = "2.1.1" "ubi:jdx/usage" = "2.1.1"
"ubi:max-niederman/ttyper" = "1.6.0" "ubi:max-niederman/ttyper" = "1.6.0"
"ubi:sst/opencode" = "0.1.124" "ubi:sst/opencode" = "0.1.174"
"ubi:supabase/cli" = { version = "2.26.9", exe = "supabase" } "ubi:supabase/cli" = { version = "2.30.4", exe = "supabase" }
"ubi:wagoodman/dive" = "0.13.1" "ubi:wagoodman/dive" = "0.13.1"
elixir = "1.18.4" elixir = "1.18.4"
erlang = "28.0.1" erlang = "28.0.1"
@ -51,10 +52,10 @@ poetry = "2.1.3"
python = "3.13.5" python = "3.13.5"
r = "4.5.1" r = "4.5.1"
rust = "1.88.0" rust = "1.88.0"
yarn = "1.22.22"
[settings] [settings]
experimental = true experimental = true
python_compile = true python_compile = true
idiomatic_version_file_enable_tools = ["go", "ruby", "python"]
[env] [env]

View File

@ -214,7 +214,7 @@ return {
name = 'gemini_pro', name = 'gemini_pro',
schema = { schema = {
model = { model = {
default = 'gemini-2.5-pro-preview-05-06', default = 'gemini-2.5-pro',
}, },
}, },
}) })
@ -224,7 +224,7 @@ return {
name = 'gemini_flash', name = 'gemini_flash',
schema = { schema = {
model = { model = {
default = 'gemini-2.0-flash', default = 'gemini-2.5-flash',
}, },
}, },
}) })
@ -319,9 +319,8 @@ return {
'claude-sonnet-4-20250514', 'claude-sonnet-4-20250514',
}, },
gemini = { gemini = {
'gemini-2.5-pro-preview-05-06', 'gemini-2.5-pro',
'gemini-2.5-flash-preview-05-20', 'gemini-2.5-flash',
'gemini-2.0-flash',
}, },
groq = { groq = {
'deepseek-r1-distill-llama-70b', 'deepseek-r1-distill-llama-70b',
@ -455,13 +454,13 @@ return {
}, },
['gemini-pro'] = { ['gemini-pro'] = {
__inherited_from = 'gemini', __inherited_from = 'gemini',
model = 'gemini-2.5-pro-preview-05-06', model = 'gemini-2.5-pro',
timeout = 600000, timeout = 600000,
extra_request_body = { max_tokens = 40960 }, extra_request_body = { max_tokens = 40960 },
}, },
['gemini-flash'] = { ['gemini-flash'] = {
__inherited_from = 'gemini', __inherited_from = 'gemini',
model = 'gemini-2.0-flash', model = 'gemini-2.5-flash',
timeout = 600000, timeout = 600000,
extra_request_body = { max_tokens = 20480 }, extra_request_body = { max_tokens = 20480 },
}, },

View File

@ -1,5 +1,5 @@
diff --git a/init.lua b/init.lua diff --git a/init.lua b/init.lua
index b98ffc6..8013e25 100644 index b98ffc6..f2d0ea5 100644
--- a/init.lua --- a/init.lua
+++ b/init.lua +++ b/init.lua
@@ -91,7 +91,7 @@ vim.g.mapleader = ' ' @@ -91,7 +91,7 @@ vim.g.mapleader = ' '
@ -60,6 +60,15 @@ index b98ffc6..8013e25 100644
}, },
} }
@@ -659,7 +668,7 @@ require('lazy').setup({
-- By default, Neovim doesn't support everything that is in the LSP specification.
-- When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities.
-- So, we create new capabilities with blink.cmp, and then broadcast that to the servers.
- local capabilities = require('blink.cmp').get_lsp_capabilities()
+ -- local capabilities = require('blink.cmp').get_lsp_capabilities()
-- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
@@ -684,6 +693,28 @@ require('lazy').setup({ @@ -684,6 +693,28 @@ require('lazy').setup({
-- ts_ls = {}, -- ts_ls = {},
-- --
@ -89,7 +98,7 @@ index b98ffc6..8013e25 100644
lua_ls = { lua_ls = {
-- cmd = { ... }, -- cmd = { ... },
-- filetypes = { ... }, -- filetypes = { ... },
@@ -698,6 +729,32 @@ require('lazy').setup({ @@ -698,6 +729,38 @@ require('lazy').setup({
}, },
}, },
}, },
@ -119,44 +128,81 @@ index b98ffc6..8013e25 100644
+ }, + },
+ }, + },
+ }, + },
+ }
+
+ ---@type MasonLspconfigSettings
+ ---@diagnostic disable-next-line: missing-fields
+ require('mason-lspconfig').setup {
+ automatic_enable = vim.tbl_keys(servers or {}),
} }
-- Ensure the servers and tools above are installed -- Ensure the servers and tools above are installed
@@ -729,6 +786,33 @@ require('lazy').setup({ @@ -719,20 +782,50 @@ require('lazy').setup({
-- by the server configuration above. Useful when disabling })
-- certain features of an LSP (for example, turning off formatting for ts_ls) require('mason-tool-installer').setup { ensure_installed = ensure_installed }
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
+ -- overwrite elixirls for older versions of elixir - require('mason-lspconfig').setup {
+ -- * elixir 1.11 use version 0.12.0 - ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
+ -- * elixir 1.12 use verions 0.14.6 - automatic_installation = false,
+ if server_name == 'elixirls' then - handlers = {
+ local version = vim.fn.system('mise current elixir') or '' - function(server_name)
+ local elixir_servers = { - local server = servers[server_name] or {}
+ { version = '^1.11', path = '/elixir-ls/release/v0.12.0/language_server.sh' }, - -- This handles overriding only values explicitly passed
+ { version = '^1.12', path = '/elixir-ls/release/v0.14.6/language_server.sh' }, - -- by the server configuration above. Useful when disabling
+ } - -- certain features of an LSP (for example, turning off formatting for ts_ls)
+ for _, ex_server in ipairs(elixir_servers) do - server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
+ if string.match(version, ex_server.version) == nil then goto continue end - require('lspconfig')[server_name].setup(server)
+ server = vim.tbl_extend('keep', server, { cmd = { vim.fn.expand('$LOCAL_SRC_HOME') .. ex_server.path } }) - end,
+ ::continue:: - },
+ end - }
+ elseif server_name == 'pyright' then + local extend_server_config = function (server_name)
+ local python_paths = { + local config = {}
+ { name = 'poetry', cmd = { 'poetry', 'env', 'info', '--executable' }}, +
+ { name = 'system', cmd = { 'which', 'python' }}, + if server_name == 'elixirls' then
+ } + -- overwrite elixirls for older versions of elixir
+ for _, py_server in ipairs(python_paths) do + -- * elixir 1.11 use version 0.12.0
+ local cmd = vim.system(py_server.cmd, { text = true }):wait() + -- * elixir 1.12 use verions 0.14.6
+ if (cmd.code > 0) then goto continue end + local version = vim.fn.system('mise current elixir') or ''
+ local python_path = string.gsub(cmd.stdout, '\n', '') + local elixir_servers = {
+ server = vim.tbl_extend('keep', server, { settings = { python = { pythonPath = python_path } } }) + { version = '^1.11', path = '/elixir-ls/release/v0.12.0/language_server.sh' },
+ ::continue:: + { version = '^1.12', path = '/elixir-ls/release/v0.14.6/language_server.sh' },
+ end + }
+ end + for _, ex_server in ipairs(elixir_servers) do
require('lspconfig')[server_name].setup(server) + if string.match(version, ex_server.version) == nil then goto continue end
end, + config = { cmd = { vim.fn.expand('$LOCAL_SRC_HOME') .. ex_server.path } }
}, + ::continue::
@@ -809,6 +893,9 @@ require('lazy').setup({ + end
+ elseif server_name == 'pyright' then
+ -- overwrite python path for pyright according to the virtualenv manager, be it poetry or system.
+ local python_paths = {
+ { name = 'system', cmd = { 'which', 'python' }},
+ { name = 'poetry', cmd = { 'poetry', 'env', 'info', '--executable' }},
+ }
+ for _, py_server in ipairs(python_paths) do
+ local cmd = vim.system(py_server.cmd, { text = true }):wait()
+ if (cmd.code > 0) then goto continue end
+ local python_path = string.gsub(cmd.stdout, '\n', '')
+ config = { settings = { python = { pythonPath = python_path } } }
+ ::continue::
+ end
+ end
+
+ return config
+ end
+
+ -- Installed LSPs are configured and enabled automatically with mason-lspconfig
+ -- The loop below is for overriding the default configuration of LSPs with the ones in the servers table
+ for server_name, config in pairs(servers) do
+ config = vim.tbl_extend('keep', config, extend_server_config(server_name))
+ vim.lsp.config(server_name, config)
+ end
+
+ -- NOTE: Some servers may require an old setup until they are updated. For the full list refer here: https://github.com/neovim/nvim-lspconfig/issues/3705
+ -- These servers will have to be manually set up with require("lspconfig").server_name.setup{}
end,
},
@@ -809,6 +902,9 @@ require('lazy').setup({
opts = {}, opts = {},
}, },
'folke/lazydev.nvim', 'folke/lazydev.nvim',
@ -166,7 +212,7 @@ index b98ffc6..8013e25 100644
}, },
--- @module 'blink.cmp' --- @module 'blink.cmp'
--- @type blink.cmp.Config --- @type blink.cmp.Config
@@ -854,9 +941,19 @@ require('lazy').setup({ @@ -854,9 +950,19 @@ require('lazy').setup({
}, },
sources = { sources = {
@ -187,7 +233,7 @@ index b98ffc6..8013e25 100644
}, },
}, },
@@ -882,19 +979,39 @@ require('lazy').setup({ @@ -882,19 +988,39 @@ require('lazy').setup({
-- --
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
'folke/tokyonight.nvim', 'folke/tokyonight.nvim',
@ -233,7 +279,7 @@ index b98ffc6..8013e25 100644
end, end,
}, },
@@ -944,7 +1061,39 @@ require('lazy').setup({ @@ -944,7 +1070,39 @@ require('lazy').setup({
main = 'nvim-treesitter.configs', -- Sets main module to use for opts main = 'nvim-treesitter.configs', -- Sets main module to use for opts
-- [[ Configure Treesitter ]] See `:help nvim-treesitter` -- [[ Configure Treesitter ]] See `:help nvim-treesitter`
opts = { opts = {
@ -274,7 +320,7 @@ index b98ffc6..8013e25 100644
-- Autoinstall languages that are not installed -- Autoinstall languages that are not installed
auto_install = true, auto_install = true,
highlight = { highlight = {
@@ -974,17 +1123,17 @@ require('lazy').setup({ @@ -974,17 +1132,17 @@ require('lazy').setup({
-- Uncomment any of the lines below to enable them (you will need to restart nvim). -- Uncomment any of the lines below to enable them (you will need to restart nvim).
-- --
-- require 'kickstart.plugins.debug', -- require 'kickstart.plugins.debug',