Compare commits
1 Commits
renovate/l
...
382c01f329
Author | SHA1 | Date | |
---|---|---|---|
382c01f329 |
@@ -1,28 +0,0 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[*.lua]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
quote_style = single
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
max_line_length = 80
|
||||
|
||||
[*.sh]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
84
Dockerfile
84
Dockerfile
@@ -17,6 +17,7 @@ ENV DEBIAN_FRONTEND noninteractive
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y software-properties-common \
|
||||
&& add-apt-repository ppa:fish-shell/release-3 \
|
||||
&& add-apt-repository ppa:neovim-ppa/unstable \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
autoconf \
|
||||
@@ -68,7 +69,7 @@ RUN apt-get update \
|
||||
locales \
|
||||
m4 \
|
||||
make \
|
||||
ncal \
|
||||
neovim \
|
||||
net-tools \
|
||||
openjdk-17-jdk \
|
||||
openssh-client \
|
||||
@@ -85,7 +86,6 @@ RUN apt-get update \
|
||||
uuid-dev \
|
||||
wget \
|
||||
xorg-dev \
|
||||
xsel \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zlib1g-dev \
|
||||
@@ -96,7 +96,7 @@ RUN apt-get update \
|
||||
&& useradd \
|
||||
--uid ${USER_UID} \
|
||||
--gid coder \
|
||||
--groups docker,wheel,sudo \
|
||||
--groups docker,wheel \
|
||||
--shell $(which fish) \
|
||||
--home-dir /home/coder \
|
||||
--create-home \
|
||||
@@ -105,31 +105,17 @@ RUN apt-get update \
|
||||
&& echo 'permit persist :wheel as root' > /etc/doas.conf
|
||||
|
||||
# command line utilities
|
||||
ENV DO_VERSION 28.3.2
|
||||
ENV DO_VERSION 27.1.1
|
||||
ENV DO_URL https://download.docker.com/linux/static/stable/x86_64/docker-${DO_VERSION}.tgz
|
||||
ENV DC_VERSION v2.38.2
|
||||
ENV DC_VERSION v2.29.1
|
||||
ENV DC_URL https://github.com/docker/compose/releases/download/${DC_VERSION}/docker-compose-linux-x86_64
|
||||
ENV BX_VERSION v0.25.0
|
||||
ENV BX_VERSION v0.16.2
|
||||
ENV BX_URL https://github.com/docker/buildx/releases/download/${BX_VERSION}/buildx-${BX_VERSION}.linux-amd64
|
||||
ENV EXERCISM_VERSION 3.5.4
|
||||
ENV EXERCISM_FILE exercism-${EXERCISM_VERSION}-linux-x86_64.tar.gz
|
||||
ENV EXERCISM_URL https://github.com/exercism/cli/releases/download/v${EXERCISM_VERSION}/${EXERCISM_FILE}
|
||||
ENV NVIM_VERSION v0.11.3
|
||||
ENV NVIM_FILE nvim-linux-x86_64.tar.gz
|
||||
ENV NVIM_URL https://github.com/neovim/neovim/releases/download/${NVIM_VERSION}/${NVIM_FILE}
|
||||
RUN curl -sS https://starship.rs/install.sh | sh -s -- --yes \
|
||||
&& mkdir /tmp/download \
|
||||
&& echo 'install docker' \
|
||||
&& curl -L ${DO_URL} | tar -zx -C /tmp/download \
|
||||
&& chgrp --recursive docker /tmp/download \
|
||||
&& mv /tmp/download/docker/* /usr/local/bin \
|
||||
&& echo 'install exercism' \
|
||||
&& curl -L -XGET ${EXERCISM_URL} | tar -xz -C /tmp/download \
|
||||
&& mv /tmp/download/exercism /usr/local/bin \
|
||||
&& echo 'install neovim' \
|
||||
&& curl -L -XGET ${NVIM_URL} | tar -xz -C /tmp/download \
|
||||
&& mv /tmp/download/nvim-linux-x86_64 /usr/local/src/nvim \
|
||||
&& ln -s /usr/local/src/nvim/bin/nvim /usr/local/bin/nvim \
|
||||
&& rm -rf /tmp/download \
|
||||
&& mkdir -p /usr/local/lib/docker/cli-plugins \
|
||||
&& curl -L ${DC_URL} -o /usr/local/lib/docker/cli-plugins/docker-compose \
|
||||
@@ -153,13 +139,30 @@ ENV XDG_CACHE_HOME ${HOME}/.cache
|
||||
ENV STARSHIP_CONFIG ${XDG_CONFIG_HOME}/starship/config.toml
|
||||
ENV PATH ${LOCAL_BIN_HOME}:$PATH
|
||||
|
||||
# NOTE (jpd): the section below exists mainly to handle a project running elixir 1.11.
|
||||
# It allows the usage of openssl 1.1 and a compatible elixir-ls.
|
||||
|
||||
# configure openssl 1.1
|
||||
# this is needed to compile older erlang versions
|
||||
# example: KERL_CONFIGURE_OPTIONS="-with-ssl=$HOME/.local/lib/ssl" mise install
|
||||
RUN mkdir -p ${HOME}/.local/src \
|
||||
&& cd ${HOME}/.local/src \
|
||||
&& curl -L https://www.openssl.org/source/openssl-1.1.1m.tar.gz | tar -xz \
|
||||
&& cd openssl-1.1.1m \
|
||||
&& ./config --prefix=${HOME}/.local/lib/ssl --openssldir=${HOME}/.local/lib/ssl shared zlib \
|
||||
&& make \
|
||||
# && make test \
|
||||
&& make install
|
||||
|
||||
# fetch elixir-ls to install custom releases
|
||||
RUN git clone https://github.com/elixir-lsp/elixir-ls.git ${LOCAL_SRC_HOME}/elixir-ls
|
||||
|
||||
# command line utilities
|
||||
ENV MISE_ENV_FILE .env
|
||||
RUN curl https://mise.jdx.dev/install.sh | sh \
|
||||
&& curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash \
|
||||
&& curl -sS https://raw.githubusercontent.com/atuinsh/atuin/main/install.sh | bash \
|
||||
&& git clone https://github.com/tmux-plugins/tpm.git ${XDG_CONFIG_HOME}/tmux/plugins/tpm \
|
||||
&& curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jrmoulton/tmux-sessionizer/releases/download/v0.4.2/tmux-sessionizer-installer.sh | sh
|
||||
&& git clone https://github.com/tmux-plugins/tpm.git ${XDG_CONFIG_HOME}/tmux/plugins/tpm
|
||||
|
||||
# configure fish and bash
|
||||
RUN fish -c true \
|
||||
@@ -176,23 +179,52 @@ RUN fish -c true \
|
||||
&& echo 'alias nh="nvim --listen 0.0.0.0:6666 --headless &> /dev/null"' >> ${XDG_CONFIG_HOME}/fish/config.fish
|
||||
|
||||
# git configuration
|
||||
ENV NEOVIM_KICKSTART_VERSION 3338d3920620861f8313a2745fd5d2be39f39534
|
||||
COPY ./patch/kickstart.nvim/updates.patch /tmp
|
||||
COPY ./config/nvim/lua/custom/plugins/init.lua /tmp
|
||||
RUN git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME}"/nvim \
|
||||
&& cd ${XDG_CONFIG_HOME}/nvim \
|
||||
&& git reset --hard ${NEOVIM_KICKSTART_VERSION} \
|
||||
&& git reset --hard 186018483039b20dc39d7991e4fb28090dd4750e \
|
||||
&& git apply /tmp/updates.patch \
|
||||
&& cp /tmp/init.lua ${XDG_CONFIG_HOME}/nvim/lua/custom/plugins \
|
||||
&& nvim --headless "+Lazy! sync" +qa
|
||||
|
||||
# install mise plugins
|
||||
# install rtx plugins
|
||||
RUN ${LOCAL_BIN_HOME}/mise plugins install --force --yes \
|
||||
age \
|
||||
awscli \
|
||||
bat \
|
||||
bitwarden \
|
||||
circleci-cli \
|
||||
ctlptl \
|
||||
dagger \
|
||||
eksctl \
|
||||
elixir \
|
||||
erlang \
|
||||
eza \
|
||||
fzf \
|
||||
helm \
|
||||
k3d \
|
||||
k3sup \
|
||||
k9s \
|
||||
kind \
|
||||
kubectl \
|
||||
kubie \
|
||||
lefthook \
|
||||
lua \
|
||||
luajit \
|
||||
poetry \
|
||||
r \
|
||||
yarn
|
||||
ripgrep \
|
||||
rust \
|
||||
starship \
|
||||
task \
|
||||
terraform \
|
||||
tilt \
|
||||
tmux \
|
||||
usage \
|
||||
usql \
|
||||
yarn \
|
||||
zoxide
|
||||
|
||||
# configure git
|
||||
ARG GIT_USER_EMAIL
|
||||
|
12
Makefile
12
Makefile
@@ -16,18 +16,6 @@ patch_init_lua: ## create a patch file with the changes made in kickstart's init
|
||||
patch_init_lua_dry_run: ## show the changes made in kickstart's init.lua file
|
||||
@cd $(neovim_config_dir) && git diff --patch init.lua
|
||||
|
||||
.PHONY: diff_mcphub_config
|
||||
diff_mcphub_config: ## compare host's mcphub config with repository's config
|
||||
@nvim -d ~/.config/mcphub/servers.json ./config/mcphub/servers.json
|
||||
|
||||
.PHONY: diff_mise_config
|
||||
diff_mise_config: ## compare host's mise config with repository's config
|
||||
@nvim -d ~/.config/mise/config.toml ./config/mise/config.toml
|
||||
|
||||
.PHONY: diff_custom_neovim_config
|
||||
diff_custom_neovim_config: ## compare host's custom neovim config with repository's config
|
||||
@nvim -d ~/.config/nvim/lua/custom/plugins/init.lua ./config/nvim/lua/custom/plugins/init.lua
|
||||
|
||||
.PHONY: help
|
||||
help: ## show help message
|
||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
||||
|
@@ -1,13 +0,0 @@
|
||||
---
|
||||
reasoning-effort: medium
|
||||
thinking-tokens: 8k
|
||||
model: gemini/gemini-2.5-pro-preview-05-06
|
||||
weak-model: gemini/gemini-2.0-flash-001
|
||||
editor-model: gemini/gemini-2.5-pro-preview-05-06
|
||||
editor: nvim
|
||||
git: true
|
||||
gitignore: true
|
||||
auto-commits: false
|
||||
read:
|
||||
- CONVENTIONS.md
|
||||
- CLAUDE.md
|
@@ -1,43 +0,0 @@
|
||||
ANTHROPIC_HOST: https://api.anthropic.com
|
||||
GOOSE_PROVIDER: google
|
||||
GOOSE_MODEL: gemini-2.5-pro-preview-05-06
|
||||
extensions:
|
||||
computercontroller:
|
||||
bundled: true
|
||||
display_name: Computer Controller
|
||||
enabled: true
|
||||
name: computercontroller
|
||||
timeout: 600
|
||||
type: builtin
|
||||
context7:
|
||||
args:
|
||||
- dlx
|
||||
- '@upstash/context7-mcp@latest'
|
||||
bundled: null
|
||||
cmd: pnpm
|
||||
description: null
|
||||
enabled: true
|
||||
env_keys: []
|
||||
envs: {}
|
||||
name: context7
|
||||
timeout: 600
|
||||
type: stdio
|
||||
developer:
|
||||
bundled: true
|
||||
display_name: Developer Tools
|
||||
enabled: true
|
||||
name: developer
|
||||
timeout: 600
|
||||
type: builtin
|
||||
git:
|
||||
args:
|
||||
- mcp-server-git
|
||||
bundled: null
|
||||
cmd: uvx
|
||||
description: null
|
||||
enabled: true
|
||||
env_keys: []
|
||||
envs: {}
|
||||
name: git
|
||||
timeout: 600
|
||||
type: stdio
|
@@ -1,55 +0,0 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"context7": {
|
||||
"command": "pnpm",
|
||||
"args": [
|
||||
"dlx",
|
||||
"@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": {
|
||||
"command": "uvx",
|
||||
"args": [
|
||||
"mcp-server-git"
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"command": "pnpm",
|
||||
"args": [
|
||||
"dlx",
|
||||
"@modelcontextprotocol/server-memory@latest"
|
||||
]
|
||||
},
|
||||
"serena": {
|
||||
"command": "uvx",
|
||||
"arg": [
|
||||
"--from",
|
||||
"git+https://github.com/oraios/serena",
|
||||
"serena-mcp-server",
|
||||
"--transport",
|
||||
"stdio",
|
||||
"--enable-web-dashboard",
|
||||
"False",
|
||||
"--enable-gui-log-window",
|
||||
"False",
|
||||
"--tool-timeout",
|
||||
"30"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,55 +1,43 @@
|
||||
[tools]
|
||||
"aqua:BurntSushi/ripgrep" = "14.1.1"
|
||||
"aqua:FiloSottile/age" = "1.2.1"
|
||||
"aqua:ajeetdsouza/zoxide" = "0.9.8"
|
||||
"aqua:alexellis/k3sup" = "0.13.10"
|
||||
"aqua:astral-sh/uv" = "0.7.20"
|
||||
"aqua:aws/aws-cli" = "2.27.50"
|
||||
"aqua:bitwarden/clients" = "cli-v2025.5.0"
|
||||
"aqua:dagger/dagger" = "0.18.12"
|
||||
"aqua:derailed/k9s" = "0.50.7"
|
||||
"aqua:eksctl-io/eksctl" = "0.210.0"
|
||||
"aqua:evilmartians/lefthook" = "1.12.2"
|
||||
"aqua:eza-community/eza" = "0.22.1"
|
||||
"aqua:github-cli" = "2.75.0"
|
||||
"aqua:go-task/task" = "3.44.0"
|
||||
"aqua:hashicorp/terraform" = "1.12.2"
|
||||
"aqua:helm/helm" = "3.18.4"
|
||||
"aqua:jj-vcs/jj" = "0.31.0"
|
||||
"aqua:junegunn/fzf" = "0.64.0"
|
||||
"aqua:k3d-io/k3d" = "5.8.3"
|
||||
"aqua:kubernetes-sigs/kind" = "0.29.0"
|
||||
"aqua:kubernetes/kubectl" = "1.33.2"
|
||||
"aqua:pnpm/pnpm" = "10.13.1"
|
||||
"aqua:sbstp/kubie" = "0.26.0"
|
||||
"aqua:sharkdp/bat" = "0.25.0"
|
||||
"aqua:starship/starship" = "1.23.0"
|
||||
"aqua:tilt-dev/ctlptl" = "0.8.42"
|
||||
"aqua:tilt-dev/tilt" = "0.35.0"
|
||||
"npm:@anthropic-ai/claude-code" = "1.0.51"
|
||||
"npm:@google/gemini-cli" = "0.1.12"
|
||||
"pipx:aider-chat" = { version = "0.85.1", uvx_args = "--python 3.12.10 --with google-generativeai" }
|
||||
"pipx:httpie" = { version = "3.2.4", uvx_args = "--python 3.13.3" }
|
||||
"ubi:Samyak2/toipe" = "0.5.0"
|
||||
"ubi:comtrya/comtrya" = "0.9.2"
|
||||
"ubi:hlsxx/tukai" = "0.2.2"
|
||||
"ubi:jdx/usage" = "2.2.0"
|
||||
"ubi:max-niederman/ttyper" = "1.6.0"
|
||||
"ubi:sst/opencode" = "0.3.2"
|
||||
"ubi:wagoodman/dive" = "0.13.1"
|
||||
elixir = "1.18.4"
|
||||
erlang = "28.0.2"
|
||||
go = "1.24.5"
|
||||
lua = "5.4.8"
|
||||
luajit = "2.0.5"
|
||||
node = "24.4.1"
|
||||
python = "3.13.5"
|
||||
r = "4.5.1"
|
||||
rust = "1.88.0"
|
||||
age = "1.2.0"
|
||||
awscli = "2.17.44"
|
||||
bat = "0.24.0"
|
||||
bitwarden = "2024.7.2"
|
||||
circleci-cli = "0.1.30549"
|
||||
ctlptl = "0.8.31"
|
||||
dagger = "0.12.5"
|
||||
eksctl = "0.188.0"
|
||||
elixir = "1.17.2-otp-27"
|
||||
erlang = "27.0.1"
|
||||
eza = "0.19.0"
|
||||
fzf = "0.53.0"
|
||||
go = "1.23.0"
|
||||
helm = "3.15.4"
|
||||
k3d = "5.7.3"
|
||||
k3sup = "0.13.7"
|
||||
k9s = "0.32.5"
|
||||
kind = "0.24.0"
|
||||
kubectl = "1.31.0"
|
||||
kubie = "0.23.1"
|
||||
lefthook = "1.7.13"
|
||||
lua = "5.1.5"
|
||||
luajit = "2.0.5--2.4.4"
|
||||
node = "22.8.0"
|
||||
poetry = "1.8.3"
|
||||
python = "3.12.5"
|
||||
r = "4.4.1"
|
||||
ripgrep = "14.1.0"
|
||||
rust = "1.80.1"
|
||||
starship = "1.20.1"
|
||||
task = "3.38.0"
|
||||
terraform = "1.9.5"
|
||||
tilt = "0.33.19"
|
||||
tmux = "3.4"
|
||||
usage = "0.3.0"
|
||||
usql = "0.19.3"
|
||||
yarn = "1.22.22"
|
||||
zoxide = "0.9.4"
|
||||
|
||||
[settings]
|
||||
experimental = true
|
||||
python_compile = true
|
||||
idiomatic_version_file_enable_tools = ["go", "ruby", "python"]
|
||||
|
||||
[env]
|
||||
|
@@ -104,407 +104,123 @@ return {
|
||||
priority = 1000,
|
||||
config = true,
|
||||
},
|
||||
-- {
|
||||
-- 'rest-nvim/rest.nvim',
|
||||
-- dependencies = { 'luarocks.nvim' },
|
||||
-- ft = {
|
||||
-- 'http',
|
||||
-- 'rest',
|
||||
-- },
|
||||
-- config = function()
|
||||
-- require('rest-nvim').setup {
|
||||
-- client = 'curl',
|
||||
-- custom_dynamic_variables = {},
|
||||
-- encode_url = true,
|
||||
-- env_file = '.env',
|
||||
-- skip_ssl_verification = false,
|
||||
-- highlight = {
|
||||
-- enable = true,
|
||||
-- timeout = 15,
|
||||
-- },
|
||||
-- result = {
|
||||
-- behavior = {
|
||||
-- decode_url = true,
|
||||
-- formatters = {
|
||||
-- json = 'jq',
|
||||
-- html = false,
|
||||
-- },
|
||||
-- show_info = {
|
||||
-- curl_command = true,
|
||||
-- headers = true,
|
||||
-- http_info = true,
|
||||
-- url = true,
|
||||
-- },
|
||||
-- statistics = {
|
||||
-- enable = true,
|
||||
-- stats = {
|
||||
-- { 'total_time', title = 'Time taken:' },
|
||||
-- { 'size_download_t', title = 'Download size:' },
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
-- split = {
|
||||
-- horizontal = false,
|
||||
-- in_place = false,
|
||||
-- },
|
||||
-- },
|
||||
-- }
|
||||
-- end,
|
||||
-- keys = function()
|
||||
-- local status_ok, which_key = pcall(require, 'which-key')
|
||||
-- if status_ok then
|
||||
-- which_key.register {
|
||||
-- ['<leader>t'] = { name = 'Res[t]', _ = 'which_key_ignore' },
|
||||
-- }
|
||||
-- end
|
||||
-- return {
|
||||
-- { '<leader>tr', '<cmd>Rest run<cr>', desc = 'Run the request under cursor' },
|
||||
-- {
|
||||
-- '<leader>tp',
|
||||
-- '<Plug>RestNvimPreview',
|
||||
-- desc = 'Preview the curl command for the request under cursor',
|
||||
-- },
|
||||
-- { '<leader>tl', '<cmd>Rest run last<cr>', desc = 'Re-run the last request' },
|
||||
-- }
|
||||
-- end,
|
||||
-- },
|
||||
{
|
||||
'jpalardy/vim-slime',
|
||||
init = function()
|
||||
vim.g.slime_target = 'tmux'
|
||||
vim.g.slime_no_mappings = true
|
||||
end,
|
||||
keys = {
|
||||
{ '<leader>xr', '<Plug>SlimeMotionSend', mode = 'n', desc = 'Slime send motion' },
|
||||
{ '<leader>xz', ":<C-u>'<,'>SlimeSend<CR>", mode = 'v', desc = 'Slime send currently highlighted text' },
|
||||
{ '<leader>xz', '<Plug>SlimeLineSend', mode = 'n', desc = 'Slime send line' },
|
||||
{ '<leader>xc', '<Plug>SlimeConfig', mode = 'n', desc = 'Slime configuration' },
|
||||
},
|
||||
config = function()
|
||||
vim.g.slime_input_pid = false
|
||||
vim.g.slime_suggest_default = true
|
||||
vim.g.slime_menu_config = false
|
||||
vim.g.slime_neovim_ignore_unlisted = false
|
||||
vim.g.slime_bracketed_paste = true
|
||||
end,
|
||||
},
|
||||
{
|
||||
'ravitemer/mcphub.nvim',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
},
|
||||
cmd = 'MCPHub',
|
||||
build = 'bundled_build.lua',
|
||||
'akinsho/toggleterm.nvim',
|
||||
opts = {
|
||||
port = 37373,
|
||||
config = vim.fn.expand '~/.config/mcphub/servers.json',
|
||||
native_servers = {},
|
||||
auto_approve = true,
|
||||
auto_toggle_mcp_servers = true,
|
||||
extensions = {},
|
||||
ui = {
|
||||
window = {
|
||||
width = 0.8,
|
||||
height = 0.8,
|
||||
relative = 'editor',
|
||||
zindex = 50,
|
||||
border = 'rounded',
|
||||
},
|
||||
wo = {},
|
||||
},
|
||||
use_bundled_binary = true,
|
||||
log = {
|
||||
level = vim.log.levels.WARN,
|
||||
prefix = '[MCPHub]',
|
||||
},
|
||||
size = vim.o.lines * 0.75,
|
||||
open_mapping = [[<c-\>]],
|
||||
hide_numbers = true,
|
||||
shade_filetypes = {},
|
||||
shade_terminals = true,
|
||||
shading_factor = 2,
|
||||
direction = 'horizontal',
|
||||
shell = vim.o.shell,
|
||||
},
|
||||
},
|
||||
{
|
||||
'olimorris/codecompanion.nvim',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
{
|
||||
'MeanderingProgrammer/render-markdown.nvim',
|
||||
opts = {
|
||||
file_types = { 'markdown', 'codecompanion' },
|
||||
},
|
||||
ft = { 'markdown', 'codecompanion' },
|
||||
},
|
||||
},
|
||||
opts = function()
|
||||
keys = function()
|
||||
local status_ok, which_key = pcall(require, 'which-key')
|
||||
if status_ok then
|
||||
which_key.add {
|
||||
{ '<leader>m', group = 'Toggle ter[m]inal' },
|
||||
}
|
||||
end
|
||||
vim.api.nvim_create_autocmd('TermOpen', {
|
||||
group = vim.api.nvim_create_augroup('kickstart-custom-term-open-mapping', { clear = true }),
|
||||
callback = function(args)
|
||||
local bufnr = args.buf
|
||||
local opts = { buffer = bufnr }
|
||||
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
|
||||
vim.keymap.set('t', 'jk', [[<C-\><C-n>]], opts)
|
||||
vim.keymap.set('t', '<C-h>', [[<cmd>wincmd h<cr>]], opts)
|
||||
vim.keymap.set('t', '<C-j>', [[<cmd>wincmd j<cr>]], opts)
|
||||
vim.keymap.set('t', '<C-k>', [[<cmd>wincmd k<cr>]], opts)
|
||||
vim.keymap.set('t', '<C-l>', [[<cmd>wincmd l<cr>]], opts)
|
||||
vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
|
||||
end,
|
||||
})
|
||||
return {
|
||||
display = {
|
||||
action_palette = {
|
||||
width = 95,
|
||||
height = 15,
|
||||
prompt = 'Prompt',
|
||||
provide = 'telescope',
|
||||
},
|
||||
{
|
||||
'<leader>mh',
|
||||
'<cmd>ToggleTerm direction=horizontal size=' .. tostring(vim.o.lines * 0.75) .. '<cr>',
|
||||
desc = 'Open ter[m]inal [h]orizontally',
|
||||
noremap = true,
|
||||
},
|
||||
adapters = {
|
||||
gemini_pro = function()
|
||||
return require('codecompanion.adapters').extend('gemini', {
|
||||
name = 'gemini_pro',
|
||||
schema = {
|
||||
model = {
|
||||
default = 'gemini-2.5-pro',
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
gemini_flash = function()
|
||||
return require('codecompanion.adapters').extend('gemini', {
|
||||
name = 'gemini_flash',
|
||||
schema = {
|
||||
model = {
|
||||
default = 'gemini-2.5-flash',
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
{
|
||||
'<leader>mv',
|
||||
'<cmd>ToggleTerm direction=vertical size=' .. tostring(vim.o.columns * 0.5) .. '<cr>',
|
||||
desc = 'Open ter[m]inal [v]ertically',
|
||||
noremap = true,
|
||||
},
|
||||
extensions = {
|
||||
vectorcode = {
|
||||
opts = {
|
||||
add_tool = true,
|
||||
add_slash_command = true,
|
||||
tool_opts = {},
|
||||
},
|
||||
},
|
||||
mcphub = {
|
||||
callback = 'mcphub.extensions.codecompanion',
|
||||
opts = {
|
||||
make_slash_commands = true,
|
||||
make_vars = true,
|
||||
show_result_in_chat = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
strategies = {
|
||||
chat = { adapter = 'gemini_pro' },
|
||||
inline = { adapter = 'gemini_flash' },
|
||||
{
|
||||
'<leader>mc',
|
||||
'<cmd>ToggleTermSendCurrentLine<cr>',
|
||||
desc = 'Send [c]urrent line under the cursor',
|
||||
noremap = true,
|
||||
},
|
||||
}
|
||||
end,
|
||||
keys = {
|
||||
{
|
||||
'<leader>aa',
|
||||
'<cmd>CodeCompanionActions<cr>',
|
||||
mode = { 'n', 'v' },
|
||||
desc = 'CodeCompaion actions',
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
'<leader>at',
|
||||
'<cmd>CodeCompanionChat Toggle<cr>',
|
||||
mode = { 'n', 'v' },
|
||||
desc = 'CodeCompanion toggle chat',
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
'ga',
|
||||
'<cmd>CodeCompanionChat add<cr>',
|
||||
mode = 'v',
|
||||
desc = 'CodeCompanion add to chat',
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'supermaven-inc/supermaven-nvim',
|
||||
opts = {
|
||||
keymaps = {
|
||||
accept_suggestion = '<Tab>',
|
||||
clear_suggestion = '<C-]>',
|
||||
accept_word = '<C-j>',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'azorng/goose.nvim',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
{
|
||||
'MeanderingProgrammer/render-markdown.nvim',
|
||||
opts = {
|
||||
file_types = { 'markdown', 'goose' },
|
||||
anti_conceal = { enabled = false },
|
||||
},
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
prefered_picker = 'telescope',
|
||||
default_global_keymaps = false,
|
||||
ui = {
|
||||
window_widht = 0.3,
|
||||
input_height = 0.2,
|
||||
fullscreen = false,
|
||||
layout = 'right',
|
||||
floating_height = 0.9,
|
||||
display_model = true,
|
||||
display_goose_mode = true,
|
||||
},
|
||||
providers = {
|
||||
anthropic = {
|
||||
'claude-sonnet-4-20250514',
|
||||
},
|
||||
gemini = {
|
||||
'gemini-2.5-pro',
|
||||
'gemini-2.5-flash',
|
||||
},
|
||||
groq = {
|
||||
'deepseek-r1-distill-llama-70b',
|
||||
'qwen-qwq-32b',
|
||||
},
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>gg', '<cmd>Goose<cr>', mode = 'n', desc = 'Toggle goose' },
|
||||
{ '<leader>gi', '<cmd>GooseOpenInput<cr>', mode = 'n', desc = 'Open goose input' },
|
||||
{ '<leader>gI', '<cmd>GooseOpenInputNewSession<cr>', mode = 'n', desc = 'Open goose input in new session' },
|
||||
{ '<leader>go', '<cmd>GooseOpenOutput<cr>', mode = 'n', desc = 'Open goose output' },
|
||||
{ '<leader>gt', '<cmd>GooseToggleFocus<cr>', mode = 'n', desc = 'Toggle focus between goose and last window' },
|
||||
{ '<leader>gq', '<cmd>GooseClose<cr>', mode = 'n', desc = 'Close goose' },
|
||||
{ '<leader>gf', '<cmd>GooseToggleFullscreen<cr>', mode = 'n', desc = 'Toggle goose fullscreen' },
|
||||
{ '<leader>gsn', '<cmd>GooseSelectSession<cr>', mode = 'n', desc = 'Select and load a goose session' },
|
||||
-- { '<leader>gmc', '<cmd>GooseModeChat<cr>', mode = 'n', desc = 'Set goose mode to `chat`' },
|
||||
-- { '<leader>gma', '<cmd>GooseModeAuto<cr>', mode = 'n', desc = 'Set goose mode to `auto`' },
|
||||
{ '<leader>gp', '<cmd>GooseConfigureProvider<cr>', mode = 'n', desc = 'Quick provider and model switch from predefined list' },
|
||||
{ '<leader>gd', '<cmd>GooseDiff<cr>', mode = 'n', desc = 'Opens a diff tab of a modified file since the last goose prompt' },
|
||||
{ '<leader>g]', '<cmd>GooseDiffNext<cr>', mode = 'n', desc = 'Navigate to next file diff' },
|
||||
{ '<leader>g[', '<cmd>GooseDiffPrev<cr>', mode = 'n', desc = 'Navigate to previous file diff' },
|
||||
{ '<leader>gc', '<cmd>GooseDiffClose<cr>', mode = 'n', desc = 'Close diff view tab and return to normal editing' },
|
||||
{ '<leader>gra', '<cmd>GooseDiffRevertAll<cr>', mode = 'n', desc = 'Revert all file changes since the last goose prompt' },
|
||||
{ '<leader>grt', '<cmd>GooseDiffRevertThis<cr>', mode = 'n', desc = 'Revert current file changes since the last goose prompt' },
|
||||
},
|
||||
},
|
||||
{
|
||||
'yetone/avante.nvim',
|
||||
build = 'make',
|
||||
event = 'VeryLazy',
|
||||
version = false,
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'stevearc/dressing.nvim',
|
||||
'nvim-lua/plenary.nvim',
|
||||
'MunifTanjim/nui.nvim',
|
||||
'nvim-telescope/telescope.nvim',
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
{
|
||||
-- support for image pasting
|
||||
'HakonHarnes/img-clip.nvim',
|
||||
event = 'VeryLazy',
|
||||
opts = {
|
||||
-- recommended settings
|
||||
default = {
|
||||
embed_image_as_base64 = false,
|
||||
prompt_for_file_name = false,
|
||||
drag_and_drop = {
|
||||
insert_mode = true,
|
||||
},
|
||||
-- required for Windows users
|
||||
use_absolute_path = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'MeanderingProgrammer/render-markdown.nvim',
|
||||
opts = {
|
||||
file_types = { 'markdown', 'Avante' },
|
||||
},
|
||||
ft = { 'markdown', 'Avante' },
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
mappings = {
|
||||
ask = '<leader>ua',
|
||||
edit = '<leader>ue',
|
||||
refresh = '<leader>ur',
|
||||
diff = {
|
||||
ours = 'co',
|
||||
theirs = 'ct',
|
||||
all_theirs = 'ca',
|
||||
both = 'cb',
|
||||
cursor = 'cc',
|
||||
next = ']x',
|
||||
prev = '[x',
|
||||
},
|
||||
suggestion = {
|
||||
accept = '<M-l>',
|
||||
next = '<M-]>',
|
||||
prev = '<M-[>',
|
||||
dismiss = '<C-]>',
|
||||
},
|
||||
jump = {
|
||||
next = ']]',
|
||||
prev = '[[',
|
||||
},
|
||||
submit = {
|
||||
normal = '<CR>',
|
||||
insert = '<C-s>',
|
||||
},
|
||||
sidebar = {
|
||||
apply_all = 'A',
|
||||
apply_cursor = 'a',
|
||||
switch_windows = '<Tab>',
|
||||
reverse_switch_windows = '<S-Tab>',
|
||||
},
|
||||
},
|
||||
-- The custom_tools type supports both a list and a function that returns a list. Using a function here prevents requiring mcphub before it's loaded
|
||||
custom_tools = function()
|
||||
return {
|
||||
require('mcphub.extensions.avante').mcp_tool(),
|
||||
}
|
||||
end,
|
||||
hints = { enabled = true },
|
||||
provider = 'gemini-pro',
|
||||
-- The system_prompt type supports both a string and a function that returns a string. Using a function here allows dynamically updating the prompt with `mcphub`
|
||||
system_prompt = function()
|
||||
local hub = require('mcphub').get_hub_instance()
|
||||
return hub and hub:get_active_servers_prompt() or ''
|
||||
end,
|
||||
providers = {
|
||||
['deepseek-r1-local'] = {
|
||||
__inherited_from = 'ollama',
|
||||
api_key_name = '',
|
||||
endpoint = 'http://172.30.64.1:10000',
|
||||
model = 'deepseek-r1:14b',
|
||||
},
|
||||
['gemma3-local'] = {
|
||||
__inherited_from = 'ollama',
|
||||
api_key_name = '',
|
||||
endpoint = 'http://172.30.64.1:10000',
|
||||
model = 'gemma3:12b',
|
||||
},
|
||||
['qwen3-local'] = {
|
||||
__inherited_from = 'ollama',
|
||||
api_key_name = '',
|
||||
endpoint = 'http://172.30.64.1:10000',
|
||||
model = 'qwen3:14b',
|
||||
},
|
||||
['gemini-pro'] = {
|
||||
__inherited_from = 'gemini',
|
||||
model = 'gemini-2.5-pro',
|
||||
timeout = 600000,
|
||||
extra_request_body = { max_tokens = 40960 },
|
||||
},
|
||||
['gemini-flash'] = {
|
||||
__inherited_from = 'gemini',
|
||||
model = 'gemini-2.5-flash',
|
||||
timeout = 600000,
|
||||
extra_request_body = { max_tokens = 20480 },
|
||||
},
|
||||
['claude-sonnet-4'] = {
|
||||
__inherited_from = 'claude',
|
||||
model = 'claude-sonnet-4-20250514',
|
||||
timeout = 600000,
|
||||
extra_request_body = { max_tokens = 20480 },
|
||||
},
|
||||
groq = {
|
||||
__inherited_from = 'openai',
|
||||
api_key_name = 'GROQ_API_KEY',
|
||||
endpoint = 'https://api.groq.com/openai/v1/',
|
||||
model = 'deepseek-r1-distill-llama-70b',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'sphamba/smear-cursor.nvim',
|
||||
opts = {
|
||||
cursor_color = '#ff8800',
|
||||
gamma = 1,
|
||||
hide_target_hack = true,
|
||||
stiffness = 0.3,
|
||||
trailing_exponent = 10,
|
||||
trailing_stiffness = 0.1,
|
||||
},
|
||||
},
|
||||
{
|
||||
'greggh/claude-code.nvim',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
},
|
||||
opts = {
|
||||
window = {
|
||||
split_ratio = 0.5,
|
||||
position = 'botright',
|
||||
enter_insert = true,
|
||||
hide_numbers = true,
|
||||
hide_signcolumn = true,
|
||||
},
|
||||
refresh = {
|
||||
enable = true,
|
||||
updatetime = 100,
|
||||
timer_interval = 1000,
|
||||
show_notifications = true,
|
||||
},
|
||||
git = {
|
||||
use_git_root = true,
|
||||
},
|
||||
shell = {
|
||||
separator = '&&',
|
||||
pushd_cmd = 'pushd',
|
||||
popd_cmd = 'popd',
|
||||
},
|
||||
command = 'claude',
|
||||
command_variants = {
|
||||
continue = '--continue', -- Resume the most recent conversation
|
||||
resume = '--resume', -- Display an interactive conversation picker
|
||||
verbose = '--verbose', -- Enable verbose logging with full turn-by-turn output
|
||||
},
|
||||
keymaps = {
|
||||
toggle = {
|
||||
normal = '<C-_>',
|
||||
terminal = '<C-_>',
|
||||
variants = {
|
||||
continue = '<leader>cC',
|
||||
verbose = '<leader>cV',
|
||||
},
|
||||
},
|
||||
window_navigation = true,
|
||||
scrolling = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@@ -40,6 +40,11 @@ set -s escape-time 0
|
||||
# Status bar styling and content
|
||||
set -g status-bg black
|
||||
set -g status-fg white
|
||||
# set -g status-left "#$"
|
||||
|
||||
# Highlight the active window in the status bar
|
||||
# set-window-option -g window-status-current-bg yellow
|
||||
# set-window-option -g window-status-current-fg black
|
||||
|
||||
# Don't prompt to kill panes/windows
|
||||
bind-key x kill-pane
|
||||
@@ -54,10 +59,37 @@ bind r source-file ~/.config/tmux/tmux.conf\; display "Reloaded conf."
|
||||
set -g default-terminal "tmux-256color"
|
||||
set -sg terminal-overrides ",*:RGB"
|
||||
|
||||
# tms shortcuts
|
||||
bind C-o display-popup -E "tms"
|
||||
bind C-j display-popup -E "tms switch"
|
||||
bind C-w display-popup -E "tms windows"
|
||||
#### COLOUR (Solarized 256)
|
||||
|
||||
# default statusbar colors
|
||||
# set-option -g status-bg colour235 #base02
|
||||
# set-option -g status-fg colour136 #yellow
|
||||
# set-option -g status-attr default
|
||||
|
||||
# default window title colors
|
||||
# set-window-option -g window-status-fg colour244 #base0
|
||||
# set-window-option -g window-status-bg default
|
||||
# set-window-option -g window-status-attr dim
|
||||
|
||||
# active window title colors
|
||||
# set-window-option -g window-status-current-fg colour166 #orange
|
||||
# set-window-option -g window-status-current-bg default
|
||||
# set-window-option -g window-status-current-attr bright
|
||||
|
||||
# pane border
|
||||
# set-option -g pane-border-fg colour235 #base02
|
||||
# set-option -g pane-active-border-fg colour240 #base01
|
||||
|
||||
# message text
|
||||
# set-option -g message-bg colour235 #base02
|
||||
# set-option -g message-fg colour166 #orange
|
||||
|
||||
# pane number display
|
||||
# set-option -g display-panes-active-colour colour33 #blue
|
||||
# set-option -g display-panes-colour colour166 #orange
|
||||
|
||||
# clock
|
||||
# set-window-option -g clock-mode-colour colour64 #green
|
||||
|
||||
# buffer size
|
||||
set -g history-limit 50000
|
||||
@@ -65,10 +97,14 @@ set -g history-limit 50000
|
||||
# list plugins
|
||||
set -g @plugin 'tmux-plugins/tpm'
|
||||
set -g @plugin 'fabioluciano/tmux-tokyo-night'
|
||||
set -g @plugin 'Morantron/tmux-fingers'
|
||||
set -g @plugin 'tmux-plugins/tmux-yank'
|
||||
# set -g @plugin 'tmux-plugins/tmux-resurrect'
|
||||
# set -g @plugin 'tmux-plugins/tmux-continuum'
|
||||
|
||||
# tokyo night configuration
|
||||
set -g @theme_plugins 'datetime'
|
||||
# configure resurrect/continuum
|
||||
# set -g @continuum-save-interval '15'
|
||||
# set -g @continuum-restore 'on'
|
||||
|
||||
# load/install plugins
|
||||
run '~/.config/tmux/plugins/tpm/tpm'
|
||||
|
@@ -1,14 +0,0 @@
|
||||
---
|
||||
session_name: rpi
|
||||
start_directory: /opt/personal
|
||||
windows:
|
||||
- window_name: rpi
|
||||
focus: true
|
||||
layout: tiled
|
||||
start_directory: labs
|
||||
panes:
|
||||
- focus: true
|
||||
shell_command: ssh rpi00
|
||||
- shell_command: ssh rpi01
|
||||
- shell_command: ssh rpi02
|
||||
- shell_command: ssh rpi03
|
@@ -8,3 +8,21 @@ windows:
|
||||
panes:
|
||||
- focus: true
|
||||
- pane
|
||||
- window_name: support
|
||||
layout: even-vertical
|
||||
start_directory: support
|
||||
panes:
|
||||
- shell_command:
|
||||
- docker compose exec pgcli bash
|
||||
- pane
|
||||
- window_name: local
|
||||
layout: even-vertical
|
||||
start_directory: local
|
||||
panes:
|
||||
- pane
|
||||
- pane
|
||||
- window_name: remote
|
||||
layout: even-vertical
|
||||
panes:
|
||||
- pane
|
||||
- pane
|
||||
|
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"host": "chroma",
|
||||
"port": "8000"
|
||||
}
|
@@ -1,56 +1,28 @@
|
||||
---
|
||||
services:
|
||||
nvim:
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
GIT_USER_EMAIL: ${NVIM_GIT_USER_EMAIL:-nobody@example.com}
|
||||
GIT_USER_NAME: ${NVIM_GIT_USER_NAME:-noboby}
|
||||
build: .
|
||||
image: 'joaodubas/nvim:${NVIM_TAG:-latest}'
|
||||
init: true
|
||||
restart: unless-stopped
|
||||
hostname: local
|
||||
pull_policy: never
|
||||
entrypoint: sleep
|
||||
command: infinity
|
||||
environment:
|
||||
GH_TOKEN: &github_token ${NVIM_GH_TOKEN:-no-token}
|
||||
GITHUB_TOKEN: *github_token
|
||||
COMPOSE_BAKE: 'true'
|
||||
volumes:
|
||||
- './config/atuin:/home/coder/.config/atuin'
|
||||
- './config/git:/home/coder/.config/git'
|
||||
- './config/goose:/home/coder/.config/goose'
|
||||
- './config/mcphub:/home/coder/.config/mcphub'
|
||||
- './config/mise:/home/coder/.config/mise'
|
||||
- './config/nvim/lua/custom:/home/coder/.config/nvim/lua/custom'
|
||||
- './config/starship:/home/coder/.config/starship'
|
||||
- './config/tmux:/home/coder/.config/tmux'
|
||||
- './config/tmuxp:/home/coder/.config/tmuxp'
|
||||
- './config/vectorcode:/home/coder/.config/vectorcode'
|
||||
- 'home_cache:/home/coder/.cache'
|
||||
- 'home_local_share:/home/coder/.local/share'
|
||||
- 'home_local_state:/home/coder/.local/state'
|
||||
- 'home_plugins_tmux:/home/coder/.config/tmux/plugins'
|
||||
- 'home_supermaven:/home/coder/.supermaven'
|
||||
|
||||
chroma:
|
||||
image: 'ghcr.io/chroma-core/chroma:1.0.15'
|
||||
init: true
|
||||
restart: unless-stopped
|
||||
hostname: chroma
|
||||
environment:
|
||||
IS_PERSISTENT: 'true'
|
||||
PERSISTENT_DIRECTORY: /data
|
||||
volumes:
|
||||
- 'chroma_data:/data'
|
||||
ports:
|
||||
- '${IDE_CHROMA_PORT:-18000:8000}'
|
||||
|
||||
volumes:
|
||||
home_cache: {}
|
||||
home_local_share: {}
|
||||
home_local_state: {}
|
||||
home_plugins_tmux: {}
|
||||
home_supermaven: {}
|
||||
chroma_data: {}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/init.lua b/init.lua
|
||||
index b98ffc6..d9e223a 100644
|
||||
index 220d304..62a9702 100644
|
||||
--- a/init.lua
|
||||
+++ b/init.lua
|
||||
@@ -91,7 +91,7 @@ vim.g.mapleader = ' '
|
||||
@@ -10,23 +10,23 @@ index b98ffc6..d9e223a 100644
|
||||
+vim.g.have_nerd_font = true
|
||||
|
||||
-- [[ Setting options ]]
|
||||
-- See `:help vim.o`
|
||||
-- See `:help vim.opt`
|
||||
@@ -102,10 +102,10 @@ vim.g.have_nerd_font = false
|
||||
vim.o.number = true
|
||||
vim.opt.number = true
|
||||
-- You can also add relative line numbers, to help with jumping.
|
||||
-- Experiment for yourself to see if you like it!
|
||||
--- vim.o.relativenumber = true
|
||||
+vim.o.relativenumber = true
|
||||
--- vim.opt.relativenumber = true
|
||||
+vim.opt.relativenumber = true
|
||||
|
||||
-- Enable mouse mode, can be useful for resizing splits for example!
|
||||
-vim.o.mouse = 'a'
|
||||
+vim.o.mouse = ''
|
||||
-vim.opt.mouse = 'a'
|
||||
+vim.opt.mouse = ''
|
||||
|
||||
-- Don't show the mode, since it's already in the status line
|
||||
vim.o.showmode = false
|
||||
@@ -166,6 +166,14 @@ vim.o.scrolloff = 10
|
||||
-- See `:help 'confirm'`
|
||||
vim.o.confirm = true
|
||||
vim.opt.showmode = false
|
||||
@@ -157,6 +157,14 @@ vim.opt.cursorline = true
|
||||
-- Minimal number of screen lines to keep above and below the cursor.
|
||||
vim.opt.scrolloff = 10
|
||||
|
||||
+-- Set foldmethod
|
||||
+-- See `:help foldmethod`
|
||||
@@ -39,38 +39,8 @@ index b98ffc6..d9e223a 100644
|
||||
-- [[ Basic Keymaps ]]
|
||||
-- See `:help vim.keymap.set()`
|
||||
|
||||
@@ -640,9 +648,9 @@ require('lazy').setup({
|
||||
[vim.diagnostic.severity.HINT] = ' ',
|
||||
},
|
||||
} or {},
|
||||
- virtual_text = {
|
||||
- source = 'if_many',
|
||||
- spacing = 2,
|
||||
+ virtual_text = false,
|
||||
+ -- Display multiline diagnostics on virtual lines
|
||||
+ virtual_lines = {
|
||||
format = function(diagnostic)
|
||||
local diagnostic_message = {
|
||||
[vim.diagnostic.severity.ERROR] = diagnostic.message,
|
||||
@@ -652,6 +660,7 @@ require('lazy').setup({
|
||||
}
|
||||
return diagnostic_message[diagnostic.severity]
|
||||
end,
|
||||
+ current_line = true,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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({
|
||||
-- ts_ls = {},
|
||||
@@ -582,6 +590,28 @@ require('lazy').setup({
|
||||
-- tsserver = {},
|
||||
--
|
||||
|
||||
+ cuelsp = {},
|
||||
@@ -83,9 +53,9 @@ index b98ffc6..d9e223a 100644
|
||||
+ },
|
||||
+ },
|
||||
+ gopls = {},
|
||||
+ harper_ls = {},
|
||||
+ helm_ls = {},
|
||||
+ html = { filetypes = { 'html', 'twig', 'hbs' } },
|
||||
+ htmx = {},
|
||||
+ jsonls = {
|
||||
+ settings = {
|
||||
+ json = {
|
||||
@@ -96,16 +66,17 @@ index b98ffc6..d9e223a 100644
|
||||
+ },
|
||||
+ },
|
||||
lua_ls = {
|
||||
-- cmd = { ... },
|
||||
-- filetypes = { ... },
|
||||
@@ -698,6 +729,38 @@ require('lazy').setup({
|
||||
-- cmd = {...},
|
||||
-- filetypes = { ...},
|
||||
@@ -596,6 +626,33 @@ require('lazy').setup({
|
||||
},
|
||||
},
|
||||
},
|
||||
+ pyright = {},
|
||||
+ r_language_server = {},
|
||||
+ templ = {},
|
||||
+ terraformls = {},
|
||||
+ ts_ls = {},
|
||||
+ tsserver = {},
|
||||
+ yamlls = {
|
||||
+ settings = {
|
||||
+ yaml = {
|
||||
@@ -124,150 +95,50 @@ index b98ffc6..d9e223a 100644
|
||||
+ ["https://raw.githubusercontent.com/argoproj/argo-workflows/master/api/jsonschema/schema.json"] = "*flow*.{yml,yaml}",
|
||||
+ ["https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json"] = "*docker-compose*.{yml,yaml}",
|
||||
+ -- kubernetes = "*.{yml,yaml}",
|
||||
+ },
|
||||
+ },
|
||||
+ },
|
||||
+ },
|
||||
+ }
|
||||
+
|
||||
+ ---@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
|
||||
@@ -719,20 +782,36 @@ require('lazy').setup({
|
||||
})
|
||||
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
||||
|
||||
- require('mason-lspconfig').setup {
|
||||
- ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
|
||||
- automatic_installation = false,
|
||||
- handlers = {
|
||||
- function(server_name)
|
||||
- local server = servers[server_name] or {}
|
||||
- -- This handles overriding only values explicitly passed
|
||||
- -- by the server configuration above. Useful when disabling
|
||||
- -- certain features of an LSP (for example, turning off formatting for ts_ls)
|
||||
- server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
|
||||
- require('lspconfig')[server_name].setup(server)
|
||||
- end,
|
||||
- },
|
||||
- }
|
||||
+ local extend_server_config = function (server_name)
|
||||
+ local config = {}
|
||||
+
|
||||
+ if 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 +888,9 @@ require('lazy').setup({
|
||||
opts = {},
|
||||
},
|
||||
'folke/lazydev.nvim',
|
||||
+ 'saghen/blink.compat',
|
||||
+ 'supermaven-inc/supermaven-nvim',
|
||||
+ 'Kaiser-Yang/blink-cmp-avante',
|
||||
},
|
||||
--- @module 'blink.cmp'
|
||||
--- @type blink.cmp.Config
|
||||
@@ -854,9 +936,19 @@ require('lazy').setup({
|
||||
},
|
||||
|
||||
sources = {
|
||||
- default = { 'lsp', 'path', 'snippets', 'lazydev' },
|
||||
+ default = { 'avante', 'lsp', 'path', 'snippets', 'lazydev', 'supermaven' },
|
||||
providers = {
|
||||
lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
|
||||
+ avante = {
|
||||
+ name = 'avante',
|
||||
+ module = 'blink-cmp-avante',
|
||||
+ },
|
||||
+ supermaven = {
|
||||
+ name = 'supermanve',
|
||||
+ module = 'blink.compat.source',
|
||||
+ score_offset = 100,
|
||||
+ async = true,
|
||||
+ },
|
||||
@@ -622,6 +679,33 @@ require('lazy').setup({
|
||||
-- by the server configuration above. Useful when disabling
|
||||
-- certain features of an LSP (for example, turning off formatting for tsserver)
|
||||
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
|
||||
+ -- overwrite elixirls for older versions of elixir
|
||||
+ -- * elixir 1.11 use version 0.12.0
|
||||
+ -- * elixir 1.12 use verions 0.14.6
|
||||
+ if server_name == 'elixirls' then
|
||||
+ local version = vim.fn.system('mise current elixir') or ''
|
||||
+ local elixir_servers = {
|
||||
+ { version = '^1.11', path = '/elixir-ls/release/v0.12.0/language_server.sh' },
|
||||
+ { version = '^1.12', path = '/elixir-ls/release/v0.14.6/language_server.sh' },
|
||||
+ }
|
||||
+ for _, ex_server in ipairs(elixir_servers) do
|
||||
+ if string.match(version, ex_server.version) == nil then goto continue end
|
||||
+ server = vim.tbl_extend('keep', server, { cmd = { vim.fn.expand('$LOCAL_SRC_HOME') .. ex_server.path } })
|
||||
+ ::continue::
|
||||
+ end
|
||||
+ elseif server_name == 'pyright' then
|
||||
+ local python_paths = {
|
||||
+ { name = 'poetry', cmd = { 'poetry', 'env', 'info', '--executable' }},
|
||||
+ { name = 'system', cmd = { 'which', 'python' }},
|
||||
+ }
|
||||
+ 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', '')
|
||||
+ server = vim.tbl_extend('keep', server, { settings = { python = { pythonPath = python_path } } })
|
||||
+ ::continue::
|
||||
+ end
|
||||
+ end
|
||||
require('lspconfig')[server_name].setup(server)
|
||||
end,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -882,19 +974,39 @@ require('lazy').setup({
|
||||
--
|
||||
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
|
||||
'folke/tokyonight.nvim',
|
||||
+ dependencies = {
|
||||
+ 'drewxs/ash.nvim',
|
||||
+ 'wnkz/monoglow.nvim',
|
||||
+ 'rjshkhr/shadow.nvim',
|
||||
+ 'sainnhe/gruvbox-material',
|
||||
+ 'slugbyte/lackluster.nvim',
|
||||
+ },
|
||||
priority = 1000, -- Make sure to load this before all the other start plugins.
|
||||
config = function()
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
- require('tokyonight').setup {
|
||||
- styles = {
|
||||
- comments = { italic = false }, -- Disable italics in comments
|
||||
- },
|
||||
- }
|
||||
+ -- require('tokyonight').setup {
|
||||
+ -- styles = {
|
||||
+ -- comments = { italic = false }, -- Disable italics in comments
|
||||
+ -- },
|
||||
+ -- }
|
||||
|
||||
-- Load the colorscheme here.
|
||||
-- Like many other themes, this one has different styles, and you could load
|
||||
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
|
||||
- vim.cmd.colorscheme 'tokyonight-night'
|
||||
+ -- For monoglow the following variants area available:
|
||||
+ -- 'monoglow-z', 'monoglow-lack', or 'monoglow-void'.
|
||||
+ -- gruvbox-material configuration based on https://github.com/gonstoll/dotfiles/blob/2d7ec07bd475c73e7ba1a48b27a2a85315bfd2d1/.config/nvim/lua/plugins/colorscheme/gruvbox.lua#L5-L13
|
||||
+ -- vim.g.gruvbox_material_better_performance = 1
|
||||
+ -- vim.g.gruvbox_material_foreground = 'material'
|
||||
+ -- vim.g.gruvbox_material_background = 'medium'
|
||||
+ -- vim.g.gruvbox_material_ui_contrast = 'low'
|
||||
+ -- vim.g.gruvbox_material_float_style = 'dim'
|
||||
+ -- vim.g.gruvbox_material_enable_italic = 0
|
||||
+ -- vim.g.gruvbox_material_disable_italic_comment = 1
|
||||
+ -- vim.g.gruvbox_material_cursor = 'red'
|
||||
+ -- vim.g.gruvbox_material_disable_terminal_colors = 1
|
||||
+ -- vim.cmd.colorscheme 'gruvbox-material'
|
||||
+ vim.cmd.colorscheme 'lackluster'
|
||||
end,
|
||||
},
|
||||
|
||||
@@ -944,7 +1056,39 @@ require('lazy').setup({
|
||||
main = 'nvim-treesitter.configs', -- Sets main module to use for opts
|
||||
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
|
||||
@@ -844,7 +928,39 @@ require('lazy').setup({
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
build = ':TSUpdate',
|
||||
opts = {
|
||||
- ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
|
||||
+ ensure_installed = {
|
||||
@@ -306,7 +177,7 @@ index b98ffc6..d9e223a 100644
|
||||
-- Autoinstall languages that are not installed
|
||||
auto_install = true,
|
||||
highlight = {
|
||||
@@ -974,17 +1118,17 @@ require('lazy').setup({
|
||||
@@ -881,18 +997,18 @@ require('lazy').setup({
|
||||
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
|
||||
--
|
||||
-- require 'kickstart.plugins.debug',
|
||||
@@ -322,8 +193,9 @@ index b98ffc6..d9e223a 100644
|
||||
-- This is the easiest way to modularize your config.
|
||||
--
|
||||
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
|
||||
-- For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins`
|
||||
- -- { import = 'custom.plugins' },
|
||||
+ { import = 'custom.plugins' },
|
||||
--
|
||||
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
|
||||
-- Or use telescope!
|
||||
}, {
|
||||
ui = {
|
||||
-- If you are using a Nerd Font: set icons to an empty table which will use the
|
||||
|
@@ -23,7 +23,7 @@ resetOutput()
|
||||
# $red $green and $blue are integers
|
||||
# ranging between 0 and 255 inclusive
|
||||
rainbowColor()
|
||||
{
|
||||
{
|
||||
let h=$1/43
|
||||
let f=$1-43*$h
|
||||
let t=$f*255/43
|
||||
|
@@ -1,11 +1,18 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# NOTE: (jpd) setup elixir-ls for older versions of elixir
|
||||
if [ ! -d ${LOCAL_SRC_HOME}/elixir-ls/release ]; then
|
||||
echo "setup elixir ls version 0.12.0"
|
||||
/usr/local/bin/elixir-ls-setup v0.12.0
|
||||
echo "setup elixir ls version 0.14.6"
|
||||
/usr/local/bin/elixir-ls-setup v0.14.6
|
||||
fi
|
||||
|
||||
# NOTE: (jpd) create auto-completion
|
||||
commands=(
|
||||
"ctlptl"
|
||||
"eksctl"
|
||||
"exercism"
|
||||
"helm"
|
||||
"k3d"
|
||||
"k9s"
|
||||
@@ -13,7 +20,6 @@ commands=(
|
||||
"kubectl"
|
||||
"lefthook"
|
||||
"mise"
|
||||
"supabase"
|
||||
)
|
||||
echo "create completion for ${commands[@]}"
|
||||
for cmd in ${commands[@]}; do
|
||||
@@ -24,9 +30,4 @@ for cmd in ${commands[@]}; do
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ! -f ${XDG_CONFIG_HOME}/fish/completions/comtrya.fish ]; then
|
||||
echo "setup comtrya completion"
|
||||
$(echo comtrya gen-completions fish) > ${XDG_CONFIG_HOME}/fish/completions/comtrya.fish
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
30
scripts/elixir-ls-setup.sh
Executable file
30
scripts/elixir-ls-setup.sh
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
function setup() {
|
||||
local elixir_ls_home=${LOCAL_SRC_HOME}/elixir-ls
|
||||
local elixir_ls_release=${elixir_ls_home}/release
|
||||
echo "elixir-ls repo"
|
||||
cd ${elixir_ls_home}
|
||||
echo "checkout versions ${1}"
|
||||
git checkout tags/${1}
|
||||
echo "set erlang/elixir versions"
|
||||
cp .release-tool-versions .tool-versions
|
||||
local current_erlang=$(mise current erlang)
|
||||
local current_elixir=$(mise current elixir)
|
||||
echo "using erlang ${current_erlang} / elixir ${current_elixir}"
|
||||
echo "install erlang/elixir runtimes"
|
||||
KERL_CONFIGURE_OPTIONS="-with-ssl=${HOME}/.local/lib/ssl" mise install
|
||||
echo "install elixir-ls deps"
|
||||
mise exec erlang@${current_erlang} elixir@${current_elixir} --command "mix do local.rebar --force, local.hex --force, deps.get, deps.compile"
|
||||
echo "compile and release elixir-ls"
|
||||
mise exec erlang@${current_erlang} elixir@${current_elixir} --command "MIX_ENV=prod mix compile"
|
||||
mise exec erlang@${current_erlang} elixir@${current_elixir} --command "MIX_ENV=prod mix elixir_ls.release -o ${elixir_ls_release}/${1}"
|
||||
echo "remove local .tool-versions"
|
||||
cp .tool-versions ${elixir_ls_release}/${1}
|
||||
rm .tool-versions
|
||||
mise exec erlang@${current_erlang} elixir@${current_elixir} --command "mix do deps.clean --all, clean"
|
||||
git checkout master
|
||||
}
|
||||
|
||||
setup $1
|
Reference in New Issue
Block a user