diff --git a/.config/nvim/lua/bumpsoo/plugins/avante.lua b/.config/nvim/lua/bumpsoo/plugins/avante.lua new file mode 100644 index 0000000..8cf2e82 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/plugins/avante.lua @@ -0,0 +1,35 @@ +return { + "bumpsoo/avante.nvim", + event = "VeryLazy", + version = false, + opts = { + provider = "ollama", + ollama = { + endpoint = os.getenv("OLLAMA_API_BASE"), + model = "gemma3:27b-it-qat", + api_key_name = "OLLAMA_API_KEY", + }, + vendors = { + groq = { + __inherited_from = "openai", + api_key_name = "GROQ_API_KEY", + endpoint = "https://api.groq.com/openai/v1/", + model = "meta-llama/llama-4-maverick-17b-128e-instruct", + max_tokens = 8192, + }, + } + }, + dependencies = { + "nvim-treesitter/nvim-treesitter", + "stevearc/dressing.nvim", + "nvim-lua/plenary.nvim", + "MunifTanjim/nui.nvim", + { + 'MeanderingProgrammer/render-markdown.nvim', + opts = { + file_types = { "markdown", "Avante" }, + }, + ft = { "markdown", "Avante" }, + }, + }, +} diff --git a/.config/nvim/lua/bumpsoo/plugins/osc_yank.lua b/.config/nvim/lua/bumpsoo/plugins/osc_yank.lua new file mode 100644 index 0000000..56f0664 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/plugins/osc_yank.lua @@ -0,0 +1,27 @@ +return { + 'ojroques/vim-oscyank', + config = function() + local valid_registers = { + [''] = true, + ['+'] = true, + ['*'] = true, + } + + local valid_operators = { + ['y'] = true, + ['d'] = true, + } + + vim.api.nvim_create_autocmd('TextYankPost', { + callback = function() + local regname = vim.v.event.regname + local operator = vim.v.event.operator + + if valid_registers[regname] and valid_operators[operator] then + vim.fn.OSCYankRegister(regname) + end + end, + }) + end +} + diff --git a/.config/nvim/lua/bumpsoo/plugins/treesitter.lua b/.config/nvim/lua/bumpsoo/plugins/treesitter.lua index c7c2c6f..0c182f0 100644 --- a/.config/nvim/lua/bumpsoo/plugins/treesitter.lua +++ b/.config/nvim/lua/bumpsoo/plugins/treesitter.lua @@ -20,6 +20,7 @@ return { "yaml", 'python', "terraform", + "markdown", }, }) end diff --git a/.tmux.conf b/.tmux.conf index 2b9e582..9231750 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -3,5 +3,9 @@ setw -g mode-keys vi bind-key -T copy-mode-vi v send-keys -X begin-selection bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel bind-key -T copy-mode-vi 'r' send -X rectangle-toggle -set -s copy-command 'wl-copy' + +set-option -s set-clipboard on + +bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "tmux save-buffer - | tmux load-buffer - && tmux show-buffer | osc52_copy" +bind-key -T copy-mode y send-keys -X copy-pipe-and-cancel "tmux save-buffer - | tmux load-buffer - && tmux show-buffer | osc52_copy" diff --git a/Dockerfile b/Dockerfile index fc22584..28c7e2d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,8 @@ RUN apt-get update && apt-get install -y \ python3-venv \ sudo -RUN locale-gen ko_KR.UTF-8 +RUN echo "ko_KR.UTF-8 UTF-8" | sudo tee -a /etc/locale.gen +RUN locale-gen ARG UID ARG GID @@ -57,7 +58,7 @@ ENV NVM_DIR=${HOME}/.nvm RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash \ && . $NVM_DIR/nvm.sh \ && nvm install --lts \ - && npm install -g typescript-language-server + && npm install -g typescript typescript-language-server COPY --chown=${USERNAME}:${GID} ${CONFIG_PREFIX}.gitconfig /home/${USERNAME}/.gitconfig @@ -65,7 +66,10 @@ COPY --chown=${USERNAME}:${GID} .config/nvim /home/${USERNAME}/.config/nvim COPY --chown=${USERNAME}:${GID} .tmux.conf /home/${USERNAME}/.tmux.conf -RUN locale-gen ko_KR.UTF-8 && echo 'export LANG=ko_KR.UTF-8' >> ~/.bashrc +COPY --chown=${USERNAME}:${GID} bin/osc52_copy /home/${USERNAME}/.local/bin/osc52_copy + +RUN echo 'export LANG=ko_KR.UTF-8' >> ~/.bashrc \ + && echo 'export LC_ALL=ko_KR.UTF-8' >> ~/.bashrc CMD ["/bin/bash"] diff --git a/Makefile b/Makefile index 2574f08..c96dceb 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,24 @@ RUN_OPTION=\ -it \ + --rm \ -v ${HOME}/.ssh:/home/$(shell id -un)/.ssh \ -v ${PWD}:/workspace -ifdef WAYLAND_DISPLAY +ifdef HOST RUN_OPTION += \ - -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ - -e XDG_RUNTIME_DIR=/run/user/$(shell id -u) \ - -v /run/user/$(shell id -u)/wayland-0:/run/user/$(shell id -u)/wayland-0 + --network host endif +ENV_VARS := GROQ_API_KEY OLLAMA_API_BASE OLLAMA_API_KEY + +define CHECK_AND_APPEND +ifneq ($($(1)),) + RUN_OPTION += -e $(1)=$($(1)) +endif +endef + +$(foreach VAR,$(ENV_VARS),$(eval $(call CHECK_AND_APPEND,$(VAR)))) + BUILD_OPTION=\ --build-arg USERNAME=$(shell id -un) \ --build-arg UID=$(shell id -u) diff --git a/bin/osc52_copy b/bin/osc52_copy new file mode 100755 index 0000000..617eb33 --- /dev/null +++ b/bin/osc52_copy @@ -0,0 +1,9 @@ +#!/bin/bash +# OSC52로 클립보드에 복사하는 스크립트 +if [ -t 0 ]; then + input="$*" +else + input="$(cat)" +fi +printf '\033]52;c;%s\a' "$(printf "%s" "$input" | base64 | tr -d '\r\n')" +