From 19a2fe4218b303c7812bfa45da7643a67bf7b8fb Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 22:18:06 +0800 Subject: [PATCH 01/16] fix(nvim): resolve healthcheck warnings and add missing formatter tools - Add lsof, tree-sitter to packages - Add goimports, nixfmt-rfc-style, stylua, black to lang program dirs - Fix fidget notification.window.avoid for NvimTree - Update nvim-pack-lock.json via make neovim-update (68 plugins) --- home-manager/packages/default.nix | 2 ++ home-manager/programs/go/default.nix | 1 + home-manager/programs/lua/default.nix | 1 + home-manager/programs/neovim/lua/config/ui.lua | 8 +++++++- home-manager/programs/neovim/nvim-pack-lock.json | 16 ++++++++-------- home-manager/programs/nix/default.nix | 1 + home-manager/programs/python/default.nix | 1 + 7 files changed, 21 insertions(+), 9 deletions(-) diff --git a/home-manager/packages/default.nix b/home-manager/packages/default.nix index 2011bf32e..fd09bc871 100644 --- a/home-manager/packages/default.nix +++ b/home-manager/packages/default.nix @@ -73,6 +73,7 @@ with pkgs; kustomize (if stdenv.isLinux && isDesktop then llama-cpp.override { vulkanSupport = true; } else llama-cpp) llm + lsof mariadb mise mkcert @@ -94,6 +95,7 @@ with pkgs; tmuxinator tokei tree + tree-sitter turso-cli uv victorialogs diff --git a/home-manager/programs/go/default.nix b/home-manager/programs/go/default.nix index 486a10570..0a7393c55 100644 --- a/home-manager/programs/go/default.nix +++ b/home-manager/programs/go/default.nix @@ -2,6 +2,7 @@ { home.packages = with pkgs; [ go + goimports gopls ]; } diff --git a/home-manager/programs/lua/default.nix b/home-manager/programs/lua/default.nix index 9d1220dcf..e7a2f6b34 100644 --- a/home-manager/programs/lua/default.nix +++ b/home-manager/programs/lua/default.nix @@ -3,5 +3,6 @@ home.packages = with pkgs; [ lua lua-language-server + stylua ]; } diff --git a/home-manager/programs/neovim/lua/config/ui.lua b/home-manager/programs/neovim/lua/config/ui.lua index e4274a5da..9a21d45fd 100644 --- a/home-manager/programs/neovim/lua/config/ui.lua +++ b/home-manager/programs/neovim/lua/config/ui.lua @@ -155,7 +155,13 @@ require("which-key").setup({}) -- Shows non-blocking LSP progress spinners in the corner. -- From: https://github.com/j-hui/fidget.nvim -require("fidget").setup({}) +require("fidget").setup({ + notification = { + window = { + avoid = { "NvimTree" }, + }, + }, +}) -- Makes directories editable as buffers for quick navigation. -- From: https://github.com/stevearc/oil.nvim diff --git a/home-manager/programs/neovim/nvim-pack-lock.json b/home-manager/programs/neovim/nvim-pack-lock.json index 48031dac7..4fc554ddc 100644 --- a/home-manager/programs/neovim/nvim-pack-lock.json +++ b/home-manager/programs/neovim/nvim-pack-lock.json @@ -1,7 +1,7 @@ { "plugins": { "LuaSnip": { - "rev": "3732756842a2f7e0e76a7b0487e9692072857277", + "rev": "dae4f5aaa3574bd0c2b9dd20fb9542a02c10471c", "src": "https://github.com/L3MON4D3/LuaSnip" }, "auto-dark-mode.nvim": { @@ -54,7 +54,7 @@ "src": "https://github.com/zbirenbaum/copilot-cmp" }, "copilot.lua": { - "rev": "4383e05a47493d7ff77b058c0548129eb38ec7fb", + "rev": "8e2a91828210d6043744468f6d7027d256a41f42", "src": "https://github.com/zbirenbaum/copilot.lua" }, "dracula.nvim": { @@ -90,7 +90,7 @@ "src": "https://github.com/lewis6991/gitsigns.nvim" }, "grug-far.nvim": { - "rev": "b58b2d65863f4ebad88b10a1ddd519e5380466e0", + "rev": "dc4684e163971bb1f5bfb93fbd4bb3e892bf9b15", "src": "https://github.com/MagicDuck/grug-far.nvim" }, "gruvbox.nvim": { @@ -142,15 +142,15 @@ "src": "https://github.com/kylechui/nvim-surround" }, "nvim-tree.lua": { - "rev": "3fb91e18a727ecc0385637895ec397dea90be42a", + "rev": "b3772adec8db61ba9098c5624a0823a77be3a23d", "src": "https://github.com/nvim-tree/nvim-tree.lua" }, "nvim-treesitter": { - "rev": "42fc28ba918343ebfd5565147a42a26580579482", + "rev": "2f5d4c3f3c675962242096bcc8e586d76dd72eb2", "src": "https://github.com/nvim-treesitter/nvim-treesitter" }, "nvim-treesitter-context": { - "rev": "660861b1849256398f70450afdf93908d28dc945", + "rev": "9a8e39993e3b895601bf8227124a48ea8268149e", "src": "https://github.com/nvim-treesitter/nvim-treesitter-context" }, "nvim-treesitter-endwise": { @@ -194,7 +194,7 @@ "src": "https://github.com/folke/sidekick.nvim" }, "snacks.nvim": { - "rev": "fe7cfe9800a182274d0f868a74b7263b8c0c020b", + "rev": "a049339328e2599ad6e85a69fa034ac501e921b2", "src": "https://github.com/folke/snacks.nvim" }, "telescope-fzf-native.nvim": { @@ -210,7 +210,7 @@ "src": "https://github.com/nvim-telescope/telescope-ui-select.nvim" }, "telescope.nvim": { - "rev": "83a3a713d6b2d2a408491a1b959e55a7fa8678e8", + "rev": "5255aa27c422de944791318024167ad5d40aad20", "src": "https://github.com/nvim-telescope/telescope.nvim" }, "todo-comments.nvim": { diff --git a/home-manager/programs/nix/default.nix b/home-manager/programs/nix/default.nix index 30314cc14..fe5cbc28c 100644 --- a/home-manager/programs/nix/default.nix +++ b/home-manager/programs/nix/default.nix @@ -2,6 +2,7 @@ { home.packages = with pkgs; [ nixd + nixfmt-rfc-style ]; } diff --git a/home-manager/programs/python/default.nix b/home-manager/programs/python/default.nix index fcca6f482..3a667cacf 100644 --- a/home-manager/programs/python/default.nix +++ b/home-manager/programs/python/default.nix @@ -1,6 +1,7 @@ { pkgs, ... }: { home.packages = with pkgs; [ + black python3 pyright ]; From ff6f39af25647aa9af49271a10fc4fe36e344bf5 Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 22:23:46 +0800 Subject: [PATCH 02/16] fix(go,nix): resolve gotools bundle conflict and nixfmt deprecation warning - Use lib.lowPrio gotools to avoid conflict with ruby bundle binary - Rename nixfmt-rfc-style to nixfmt per deprecation warning --- home-manager/programs/go/default.nix | 4 ++-- home-manager/programs/nix/default.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/home-manager/programs/go/default.nix b/home-manager/programs/go/default.nix index 0a7393c55..f6e4e4c25 100644 --- a/home-manager/programs/go/default.nix +++ b/home-manager/programs/go/default.nix @@ -1,8 +1,8 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: { home.packages = with pkgs; [ go - goimports + (lib.lowPrio gotools) gopls ]; } diff --git a/home-manager/programs/nix/default.nix b/home-manager/programs/nix/default.nix index fe5cbc28c..ef34d68e8 100644 --- a/home-manager/programs/nix/default.nix +++ b/home-manager/programs/nix/default.nix @@ -2,7 +2,7 @@ { home.packages = with pkgs; [ nixd - nixfmt-rfc-style + nixfmt ]; } From 4db1900f5ee580ecf9af5801664015c071d39d9c Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 22:32:00 +0800 Subject: [PATCH 03/16] fix(nvim): enable copilot suggestions, add LSP servers and image tools - Enable copilot suggestion in completion.lua - Add dockerfile-language-server to new programs/docker/ - Add vscode-langservers-extracted, vtsls to programs/node/ - Add imagemagick, ghostscript, mermaid-cli to isDesktop packages --- home-manager/packages/default.nix | 3 +++ home-manager/programs/default.nix | 2 ++ home-manager/programs/docker/default.nix | 6 ++++++ home-manager/programs/neovim/lua/config/completion.lua | 2 +- home-manager/programs/node/default.nix | 2 ++ 5 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 home-manager/programs/docker/default.nix diff --git a/home-manager/packages/default.nix b/home-manager/packages/default.nix index fd09bc871..5a071981e 100644 --- a/home-manager/packages/default.nix +++ b/home-manager/packages/default.nix @@ -165,6 +165,7 @@ with pkgs; ffmpeg file-roller gedit + ghostscript ghostty github-desktop gnome-calculator @@ -189,9 +190,11 @@ with pkgs; hyprshell hyprshot hyprsunset + imagemagick libnotify linux-wallpaperengine loupe + mermaid-cli mpv nautilus networkmanagerapplet diff --git a/home-manager/programs/default.nix b/home-manager/programs/default.nix index b4984b8b1..0cb71f40f 100644 --- a/home-manager/programs/default.nix +++ b/home-manager/programs/default.nix @@ -11,6 +11,7 @@ let cass = import ./cass; clang = import ./clang; dart = import ./dart; + docker = import ./docker; delta = import ./delta; direnv = import ./direnv; elixir = import ./elixir; @@ -59,6 +60,7 @@ in cass clang dart + docker delta direnv elixir diff --git a/home-manager/programs/docker/default.nix b/home-manager/programs/docker/default.nix new file mode 100644 index 000000000..ddc80769d --- /dev/null +++ b/home-manager/programs/docker/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + dockerfile-language-server-nodejs + ]; +} diff --git a/home-manager/programs/neovim/lua/config/completion.lua b/home-manager/programs/neovim/lua/config/completion.lua index 76885a135..611466c0e 100644 --- a/home-manager/programs/neovim/lua/config/completion.lua +++ b/home-manager/programs/neovim/lua/config/completion.lua @@ -73,7 +73,7 @@ cmp.setup.cmdline(":", { -- GitHub Copilot helper with inline suggestions disabled by default. -- From: https://github.com/zbirenbaum/copilot.lua require("copilot").setup({ - suggestion = { enabled = false }, + suggestion = { enabled = true }, panel = { enabled = false }, }) diff --git a/home-manager/programs/node/default.nix b/home-manager/programs/node/default.nix index 668a08354..ed07a114f 100644 --- a/home-manager/programs/node/default.nix +++ b/home-manager/programs/node/default.nix @@ -3,5 +3,7 @@ home.packages = with pkgs; [ nodejs typescript-language-server + vscode-langservers-extracted + vtsls ]; } From 03d3479e499bf5eb2c127362f8f4d2f5b6036426 Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 22:39:49 +0800 Subject: [PATCH 04/16] fix(nvim): fix overlapping keymaps and add keymap conflict check - Rename bad to BD (wipe all buffers) - Rename h kill terminal to kt - Rename gco generate annotation to ca - Add which-key overlap check to lua-check-neovim Makefile target --- Makefile | 9 +++++++++ home-manager/programs/neovim/lua/config/keymaps.lua | 12 ++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 6d727f521..9d27e66d0 100644 --- a/Makefile +++ b/Makefile @@ -933,6 +933,15 @@ lua-check-neovim: ## Check Neovim configuration. echo "❌ Neovim configuration has errors"; \ exit 1; \ fi + @echo "🔑 Checking for keymap conflicts..." + @OVERLAPS=$$(nvim -u "$(PWD)/home-manager/programs/neovim/init.lua" --headless \ + -c "checkhealth which-key" -c "qa" 2>&1 | grep "WARNING" | grep -i "overlaps with"); \ + if [ -n "$$OVERLAPS" ]; then \ + echo "⚠️ Keymap overlaps (operator patterns like gc/gcc, go/goo, ys/yss are expected):"; \ + echo "$$OVERLAPS"; \ + else \ + echo "✅ No keymap overlaps"; \ + fi @echo "✅ Neovim configuration is valid" .PHONY: lua-check-neovim-dev diff --git a/home-manager/programs/neovim/lua/config/keymaps.lua b/home-manager/programs/neovim/lua/config/keymaps.lua index d566b7ed3..07526cb19 100644 --- a/home-manager/programs/neovim/lua/config/keymaps.lua +++ b/home-manager/programs/neovim/lua/config/keymaps.lua @@ -48,8 +48,8 @@ keymap("n", "q", function() vim.cmd("Bdelete") end end, { noremap = true, silent = true, desc = "Close window / delete buffer" }) --- @keymap bad: Wipe all buffers -keymap("n", "bad", ":%bwipeout!:intro", { noremap = true, silent = true, desc = "Wipe all buffers" }) +-- @keymap BD: Wipe all buffers +keymap("n", "BD", ":%bwipeout!:intro", { noremap = true, silent = true, desc = "Wipe all buffers" }) -- @keymap w: Write file keymap("n", "w", ":write", { noremap = true, silent = true, desc = "Save file" }) -- @keymap W: Save all and quit @@ -80,8 +80,8 @@ keymap("n", "ZZ", ":wa:q", { noremap = true, silent = true, desc = "Save keymap("n", "u", function() SpawnTerminal() end, { noremap = true, silent = true, desc = "Spawn terminal" }) --- @keymap h: Close the current managed terminal -keymap("n", "h", function() +-- @keymap kt: Close the current managed terminal +keymap("n", "kt", function() KillCurrentTerminal() end, { noremap = true, silent = true, desc = "Kill terminal" }) -- @keymap j: Toggle the focused managed terminal @@ -327,8 +327,8 @@ keymap("n", "ov", ":OtherVSplit", { noremap = true, silent = true, d -- @keymap os: Navigate to related file in horizontal split keymap("n", "os", ":OtherSplit", { noremap = true, silent = true, desc = "Related file (split)" }) --- @keymap gco: Generate code annotation (neogen) -keymap("n", "gco", ":Neogen", { noremap = true, silent = true, desc = "Generate annotation" }) +-- @keymap ca: Generate code annotation (neogen) +keymap("n", "ca", ":Neogen", { noremap = true, silent = true, desc = "Generate annotation" }) -- @keymap st: Toggle treesitter split/join -- Treesitter-based split/join helper for code structures. From b1819df6c9ad3d248d3a21aa2e3cd6f1713b35ce Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 22:41:29 +0800 Subject: [PATCH 05/16] fix(nvim): restore h as kill terminal, move hunks to H --- .../programs/neovim/lua/config/keymaps.lua | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/home-manager/programs/neovim/lua/config/keymaps.lua b/home-manager/programs/neovim/lua/config/keymaps.lua index 07526cb19..222c9e93e 100644 --- a/home-manager/programs/neovim/lua/config/keymaps.lua +++ b/home-manager/programs/neovim/lua/config/keymaps.lua @@ -80,8 +80,8 @@ keymap("n", "ZZ", ":wa:q", { noremap = true, silent = true, desc = "Save keymap("n", "u", function() SpawnTerminal() end, { noremap = true, silent = true, desc = "Spawn terminal" }) --- @keymap kt: Close the current managed terminal -keymap("n", "kt", function() +-- @keymap h: Close the current managed terminal +keymap("n", "h", function() KillCurrentTerminal() end, { noremap = true, silent = true, desc = "Kill terminal" }) -- @keymap j: Toggle the focused managed terminal @@ -199,18 +199,18 @@ keymap( ":Gitsigns preview_hunk_inline", { noremap = true, silent = true, desc = "Preview hunk inline" } ) --- @keymap hs: Stage hunk (Gitsigns) -keymap("n", "hs", ":Gitsigns stage_hunk", { noremap = true, silent = true, desc = "Stage hunk" }) --- @keymap hr: Reset hunk (Gitsigns) -keymap("n", "hr", ":Gitsigns reset_hunk", { noremap = true, silent = true, desc = "Reset hunk" }) --- @keymap hp: Preview hunk (Gitsigns) -keymap("n", "hp", ":Gitsigns preview_hunk", { noremap = true, silent = true, desc = "Preview hunk" }) --- @keymap hb: Blame line (Gitsigns) -keymap("n", "hb", ":Gitsigns blame_line", { noremap = true, silent = true, desc = "Blame line" }) --- @keymap hn: Next hunk (Gitsigns) -keymap("n", "hn", ":Gitsigns next_hunk", { noremap = true, silent = true, desc = "Next hunk" }) --- @keymap hN: Prev hunk (Gitsigns) -keymap("n", "hN", ":Gitsigns prev_hunk", { noremap = true, silent = true, desc = "Prev hunk" }) +-- @keymap Hs: Stage hunk (Gitsigns) +keymap("n", "Hs", ":Gitsigns stage_hunk", { noremap = true, silent = true, desc = "Stage hunk" }) +-- @keymap Hr: Reset hunk (Gitsigns) +keymap("n", "Hr", ":Gitsigns reset_hunk", { noremap = true, silent = true, desc = "Reset hunk" }) +-- @keymap Hp: Preview hunk (Gitsigns) +keymap("n", "Hp", ":Gitsigns preview_hunk", { noremap = true, silent = true, desc = "Preview hunk" }) +-- @keymap Hb: Blame line (Gitsigns) +keymap("n", "Hb", ":Gitsigns blame_line", { noremap = true, silent = true, desc = "Blame line" }) +-- @keymap Hn: Next hunk (Gitsigns) +keymap("n", "Hn", ":Gitsigns next_hunk", { noremap = true, silent = true, desc = "Next hunk" }) +-- @keymap HN: Prev hunk (Gitsigns) +keymap("n", "HN", ":Gitsigns prev_hunk", { noremap = true, silent = true, desc = "Prev hunk" }) -- @keymap gs: Fugitive vertical diff split (current file vs index) keymap("n", "gs", ":Gvdiffsplit", { noremap = true, silent = true, desc = "Diff split (index)" }) -- @keymap gS: Fugitive diff split vs HEAD @@ -405,7 +405,7 @@ wk.add({ { "f", group = "Find/Files" }, { "x", group = "Trouble/Diagnostics" }, { "c", group = "Code" }, - { "h", group = "Hunk (Git)" }, + { "H", group = "Hunk (Git)" }, }) -- ==================================================================================== From 0402b47f4f1489ecf0868e656bd9aa5a9f98dd91 Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 22:56:00 +0800 Subject: [PATCH 06/16] chore: update claude plugins overrides --- config/claude/activate.sh | 6 +++++- config/claude/settings.json | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/config/claude/activate.sh b/config/claude/activate.sh index 2b7bdcf40..f8a044877 100755 --- a/config/claude/activate.sh +++ b/config/claude/activate.sh @@ -5,5 +5,9 @@ set -euo pipefail SETTINGS_JSON="$1" mkdir -p ~/.claude -cp -f "$SETTINGS_JSON" ~/.claude/settings.json +_TMP=$(mktemp) +jq --arg host "$(hostname)" ' + . * (.hostOverrides[$host] // {}) | del(.hostOverrides) +' "$SETTINGS_JSON" > "$_TMP" +mv "$_TMP" ~/.claude/settings.json chmod 644 ~/.claude/settings.json diff --git a/config/claude/settings.json b/config/claude/settings.json index 95053e0ad..93616c2e5 100644 --- a/config/claude/settings.json +++ b/config/claude/settings.json @@ -518,5 +518,12 @@ }, "skipDangerousModePermissionPrompt": true, "defaultMode": "bypassPermissions", - "teammateMode": "tmux" + "teammateMode": "tmux", + "hostOverrides": { + "matic": { + "enabledPlugins": { + "mempalace@mempalace": false + } + } + } } From 7342b524fe31d56f4f20b0e93ed265b4340ceb6b Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 22:58:43 +0800 Subject: [PATCH 07/16] fix(nix): rename dockerfile-language-server-nodejs to dockerfile-language-server --- home-manager/programs/docker/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-manager/programs/docker/default.nix b/home-manager/programs/docker/default.nix index ddc80769d..bc42a5e9f 100644 --- a/home-manager/programs/docker/default.nix +++ b/home-manager/programs/docker/default.nix @@ -1,6 +1,6 @@ { pkgs, ... }: { home.packages = with pkgs; [ - dockerfile-language-server-nodejs + dockerfile-language-server ]; } From b8ef0881426adc5916ae463f2c227645efcc284d Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 23:04:57 +0800 Subject: [PATCH 08/16] fix(shell): declare local before assign to satisfy SC2155 --- scripts/llm-update.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/llm-update.sh b/scripts/llm-update.sh index 604ab80fd..3b31ed998 100755 --- a/scripts/llm-update.sh +++ b/scripts/llm-update.sh @@ -29,7 +29,8 @@ add_model_override() { local key="$1" local suffix="$2" local value="$3" - local placeholder="__$(echo "${key}-${suffix}" | tr 'a-z-' 'A-Z_')__" + local placeholder + placeholder="__$(echo "${key}-${suffix}" | tr 'a-z-' 'A-Z_')__" sed_args+=(-e "s|${placeholder}|${value}|g") } From bb2524d7bf8e5ebe7a1e815348a09f895f932983 Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 23:09:55 +0800 Subject: [PATCH 09/16] chore: apply formatting --- config/claude/activate.sh | 2 +- home-manager/programs/neovim/lua/config/ui.lua | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/claude/activate.sh b/config/claude/activate.sh index f8a044877..18d77d4d8 100755 --- a/config/claude/activate.sh +++ b/config/claude/activate.sh @@ -8,6 +8,6 @@ mkdir -p ~/.claude _TMP=$(mktemp) jq --arg host "$(hostname)" ' . * (.hostOverrides[$host] // {}) | del(.hostOverrides) -' "$SETTINGS_JSON" > "$_TMP" +' "$SETTINGS_JSON" >"$_TMP" mv "$_TMP" ~/.claude/settings.json chmod 644 ~/.claude/settings.json diff --git a/home-manager/programs/neovim/lua/config/ui.lua b/home-manager/programs/neovim/lua/config/ui.lua index 9a21d45fd..96b600c8b 100644 --- a/home-manager/programs/neovim/lua/config/ui.lua +++ b/home-manager/programs/neovim/lua/config/ui.lua @@ -156,11 +156,11 @@ require("which-key").setup({}) -- Shows non-blocking LSP progress spinners in the corner. -- From: https://github.com/j-hui/fidget.nvim require("fidget").setup({ - notification = { - window = { - avoid = { "NvimTree" }, - }, - }, + notification = { + window = { + avoid = { "NvimTree" }, + }, + }, }) -- Makes directories editable as buffers for quick navigation. From 8cd290f7070dd80c190027215ed65c606bf999f8 Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 23:13:21 +0800 Subject: [PATCH 10/16] refactor(docker): move docker packages into programs/docker --- home-manager/packages/default.nix | 2 -- home-manager/programs/docker/default.nix | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/home-manager/packages/default.nix b/home-manager/packages/default.nix index 5a071981e..43005f19f 100644 --- a/home-manager/packages/default.nix +++ b/home-manager/packages/default.nix @@ -119,8 +119,6 @@ with pkgs; cmake codex collectd - docker - docker-compose fwupd gcc gemini-cli diff --git a/home-manager/programs/docker/default.nix b/home-manager/programs/docker/default.nix index bc42a5e9f..e288abc8f 100644 --- a/home-manager/programs/docker/default.nix +++ b/home-manager/programs/docker/default.nix @@ -1,6 +1,8 @@ { pkgs, ... }: { home.packages = with pkgs; [ + docker + docker-compose dockerfile-language-server ]; } From b25bf3e29d6ec0576c0bd3faf17d4ecddee02c5b Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 23:20:05 +0800 Subject: [PATCH 11/16] fix(nvim): move leader>dl to leader>xd, enforce keymap overlap check in CI --- Makefile | 8 +++++--- home-manager/packages/default.nix | 8 +------- home-manager/programs/default.nix | 2 ++ home-manager/programs/k8s/default.nix | 12 ++++++++++++ home-manager/programs/neovim/lua/config/keymaps.lua | 4 ++-- 5 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 home-manager/programs/k8s/default.nix diff --git a/Makefile b/Makefile index 9d27e66d0..a0a71a006 100644 --- a/Makefile +++ b/Makefile @@ -935,12 +935,14 @@ lua-check-neovim: ## Check Neovim configuration. fi @echo "🔑 Checking for keymap conflicts..." @OVERLAPS=$$(nvim -u "$(PWD)/home-manager/programs/neovim/init.lua" --headless \ - -c "checkhealth which-key" -c "qa" 2>&1 | grep "WARNING" | grep -i "overlaps with"); \ + -c "checkhealth which-key" -c "qa" 2>&1 | grep "WARNING" | grep -i "overlaps with" | \ + grep -v " overlaps\| overlaps\| overlaps\| overlaps\| overlaps\| overlaps\| overlaps"); \ if [ -n "$$OVERLAPS" ]; then \ - echo "⚠️ Keymap overlaps (operator patterns like gc/gcc, go/goo, ys/yss are expected):"; \ + echo "❌ Unexpected keymap overlaps found:"; \ echo "$$OVERLAPS"; \ + exit 1; \ else \ - echo "✅ No keymap overlaps"; \ + echo "✅ No unexpected keymap overlaps"; \ fi @echo "✅ Neovim configuration is valid" diff --git a/home-manager/packages/default.nix b/home-manager/packages/default.nix index 43005f19f..847c5b1a2 100644 --- a/home-manager/packages/default.nix +++ b/home-manager/packages/default.nix @@ -64,13 +64,6 @@ with pkgs; jujutsu just k6 - k9s - kind - kubeconform - kubectl - kubectx - kubernetes-helm - kustomize (if stdenv.isLinux && isDesktop then llama-cpp.override { vulkanSupport = true; } else llama-cpp) llm lsof @@ -210,6 +203,7 @@ with pkgs; slack slurp swappy + tectonic telegram-desktop totem v4l-utils diff --git a/home-manager/programs/default.nix b/home-manager/programs/default.nix index 0cb71f40f..672ff14fb 100644 --- a/home-manager/programs/default.nix +++ b/home-manager/programs/default.nix @@ -25,6 +25,7 @@ let go = import ./go; haskell = import ./haskell; java = import ./java; + k8s = import ./k8s; kotlin = import ./kotlin; lazydocker = import ./lazydocker; lazygit = import ./lazygit; @@ -74,6 +75,7 @@ in go haskell java + k8s kotlin lazydocker lazygit diff --git a/home-manager/programs/k8s/default.nix b/home-manager/programs/k8s/default.nix new file mode 100644 index 000000000..88f14adc8 --- /dev/null +++ b/home-manager/programs/k8s/default.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + k9s + kind + kubeconform + kubectl + kubectx + kubernetes-helm + kustomize + ]; +} diff --git a/home-manager/programs/neovim/lua/config/keymaps.lua b/home-manager/programs/neovim/lua/config/keymaps.lua index 222c9e93e..c2b294500 100644 --- a/home-manager/programs/neovim/lua/config/keymaps.lua +++ b/home-manager/programs/neovim/lua/config/keymaps.lua @@ -277,8 +277,8 @@ keymap("n", "xl", "Trouble loclist toggle", { noremap = true, s keymap("n", "]d", vim.diagnostic.goto_next, { desc = "Next Diagnostic" }) -- @keymap [d: Go to previous diagnostic keymap("n", "[d", vim.diagnostic.goto_prev, { desc = "Previous Diagnostic" }) --- @keymap dl: Show line diagnostics -keymap("n", "dl", vim.diagnostic.open_float, { desc = "Line Diagnostics" }) +-- @keymap xd: Show line diagnostics +keymap("n", "xd", vim.diagnostic.open_float, { desc = "Line Diagnostics" }) -- ==================================================================================== -- FFF.NVIM (Fast Fuzzy File Finder) From fe1fcc53b97caaa3f17b3530966adaed72a957e9 Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 23:35:59 +0800 Subject: [PATCH 12/16] fix(nvim): eliminate all keymap overlaps and enforce zero-overlap check in CI --- Makefile | 7 +++---- home-manager/programs/neovim/lua/config/ai.lua | 4 ---- .../programs/neovim/lua/config/keymaps.lua | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index a0a71a006..6a04eba78 100644 --- a/Makefile +++ b/Makefile @@ -935,14 +935,13 @@ lua-check-neovim: ## Check Neovim configuration. fi @echo "🔑 Checking for keymap conflicts..." @OVERLAPS=$$(nvim -u "$(PWD)/home-manager/programs/neovim/init.lua" --headless \ - -c "checkhealth which-key" -c "qa" 2>&1 | grep "WARNING" | grep -i "overlaps with" | \ - grep -v " overlaps\| overlaps\| overlaps\| overlaps\| overlaps\| overlaps\| overlaps"); \ + -c "checkhealth which-key" -c "qa" 2>&1 | grep "WARNING" | grep -i "overlaps with"); \ if [ -n "$$OVERLAPS" ]; then \ - echo "❌ Unexpected keymap overlaps found:"; \ + echo "❌ Keymap overlaps found:"; \ echo "$$OVERLAPS"; \ exit 1; \ else \ - echo "✅ No unexpected keymap overlaps"; \ + echo "✅ No keymap overlaps"; \ fi @echo "✅ Neovim configuration is valid" diff --git a/home-manager/programs/neovim/lua/config/ai.lua b/home-manager/programs/neovim/lua/config/ai.lua index 41df3ad75..cdf909a50 100644 --- a/home-manager/programs/neovim/lua/config/ai.lua +++ b/home-manager/programs/neovim/lua/config/ai.lua @@ -52,10 +52,6 @@ vim.keymap.set({ "n", "x" }, "go", function() return require("opencode").operator("@this ") end, { expr = true, desc = "Add range to opencode" }) -vim.keymap.set("n", "goo", function() - return require("opencode").operator("@this ") .. "_" -end, { expr = true, desc = "Add line to opencode" }) - -- Scroll keymaps for opencode session vim.keymap.set("n", "", function() require("opencode").command("session.half.page.up") diff --git a/home-manager/programs/neovim/lua/config/keymaps.lua b/home-manager/programs/neovim/lua/config/keymaps.lua index c2b294500..620db4115 100644 --- a/home-manager/programs/neovim/lua/config/keymaps.lua +++ b/home-manager/programs/neovim/lua/config/keymaps.lua @@ -393,6 +393,20 @@ keymap("n", "ac", function() require("sidekick.cli").toggle({ name = "claude", focus = true }) end, { noremap = true, silent = true, desc = "Sidekick Claude" }) +-- ==================================================================================== +-- PLUGIN KEYMAP OVERRIDES +-- ==================================================================================== +-- nvim-surround: disable yss/ySS shortcuts; use ys_/yS_ (current-line motion) instead. +require("nvim-surround").setup({ + keymaps = { + normal_cur = false, + normal_cur_line = false, + }, +}) + +-- Remove Neovim built-in gcc shorthand; gc_ achieves the same result. +pcall(vim.keymap.del, "n", "gcc") + -- ==================================================================================== -- WHICH-KEY GROUPS -- ==================================================================================== From 4419590cce3ad2d6012e60e313e4b1453d7a4027 Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 23:42:59 +0800 Subject: [PATCH 13/16] fix(nvim): remove duplicate nvim-surround setup from treesitter.lua --- home-manager/programs/neovim/lua/config/treesitter.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/home-manager/programs/neovim/lua/config/treesitter.lua b/home-manager/programs/neovim/lua/config/treesitter.lua index 9762a80ac..5a5c91e5a 100644 --- a/home-manager/programs/neovim/lua/config/treesitter.lua +++ b/home-manager/programs/neovim/lua/config/treesitter.lua @@ -14,10 +14,6 @@ require("nvim-autopairs").setup() -- From: https://github.com/windwp/nvim-ts-autotag require("nvim-ts-autotag").setup() --- Modern surround manipulation for parentheses, brackets, tags, etc. --- From: https://github.com/kylechui/nvim-surround -require("nvim-surround").setup() - -- Highlights and lists TODO/FIXME/NOTE-style comments across projects. -- From: https://github.com/folke/todo-comments.nvim require("todo-comments").setup() From 0259c2b2ff741201d98ae15a042c89f1dd295628 Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Thu, 23 Apr 2026 23:46:31 +0800 Subject: [PATCH 14/16] fix(nvim): open temp file in keymap check to trigger BufEnter, remove duplicate surround setup --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6a04eba78..573a9d297 100644 --- a/Makefile +++ b/Makefile @@ -934,8 +934,10 @@ lua-check-neovim: ## Check Neovim configuration. exit 1; \ fi @echo "🔑 Checking for keymap conflicts..." - @OVERLAPS=$$(nvim -u "$(PWD)/home-manager/programs/neovim/init.lua" --headless \ + @TMPFILE=$$(mktemp /tmp/nvim-keymap-check-XXXXXX.lua); \ + OVERLAPS=$$(nvim -u "$(PWD)/home-manager/programs/neovim/init.lua" --headless "$$TMPFILE" \ -c "checkhealth which-key" -c "qa" 2>&1 | grep "WARNING" | grep -i "overlaps with"); \ + rm -f "$$TMPFILE"; \ if [ -n "$$OVERLAPS" ]; then \ echo "❌ Keymap overlaps found:"; \ echo "$$OVERLAPS"; \ From 887ba685aadf98d2696d7ff8715a0eeadf031760 Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Fri, 24 Apr 2026 00:03:15 +0800 Subject: [PATCH 15/16] fix(nvim): rename nvim-tree y/d/c to Y/D/C to eliminate which-key overlap warnings --- home-manager/programs/neovim/lua/config/ui.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/home-manager/programs/neovim/lua/config/ui.lua b/home-manager/programs/neovim/lua/config/ui.lua index 96b600c8b..ad207a22e 100644 --- a/home-manager/programs/neovim/lua/config/ui.lua +++ b/home-manager/programs/neovim/lua/config/ui.lua @@ -104,16 +104,16 @@ require("nvim-tree").setup({ vim.keymap.set("n", "i", api.node.open.horizontal, opts("Open: Horizontal Split")) -- @keymap a: Add file/folder (nvim-tree) vim.keymap.set("n", "a", api.fs.create, opts("Create")) - -- @keymap d: Delete file/folder (nvim-tree) - vim.keymap.set("n", "d", api.fs.remove, opts("Delete")) + -- @keymap D: Delete file/folder (nvim-tree) + vim.keymap.set("n", "D", api.fs.remove, opts("Delete")) -- @keymap r: Rename file/folder (nvim-tree) vim.keymap.set("n", "r", api.fs.rename, opts("Rename")) - -- @keymap y: Copy absolute path (nvim-tree) - vim.keymap.set("n", "y", api.fs.copy.absolute_path, opts("Copy Absolute Path")) - -- @keymap Y: Copy relative path (nvim-tree) - vim.keymap.set("n", "Y", api.fs.copy.relative_path, opts("Copy Relative Path")) - -- @keymap c: Change directory (nvim-tree) - vim.keymap.set("n", "c", api.tree.change_root_to_node, opts("CD")) + -- @keymap Y: Copy absolute path (nvim-tree) + vim.keymap.set("n", "Y", api.fs.copy.absolute_path, opts("Copy Absolute Path")) + -- @keymap : Copy relative path (nvim-tree) + vim.keymap.set("n", "", api.fs.copy.relative_path, opts("Copy Relative Path")) + -- @keymap C: Change directory (nvim-tree) + vim.keymap.set("n", "C", api.tree.change_root_to_node, opts("CD")) -- @keymap u: Go to parent directory (nvim-tree) vim.keymap.set("n", "u", api.tree.change_root_to_parent, opts("Up")) -- @keymap q: Close tree (nvim-tree) From 6411fa3538dc623ef37d6f090ef38359ea5565ab Mon Sep 17 00:00:00 2001 From: Shun Kakinoki Date: Fri, 24 Apr 2026 00:27:56 +0800 Subject: [PATCH 16/16] fix(nvim): migrate nvim-surround to v4 keymap API --- home-manager/programs/neovim/lua/config/keymaps.lua | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/home-manager/programs/neovim/lua/config/keymaps.lua b/home-manager/programs/neovim/lua/config/keymaps.lua index 620db4115..53c527a27 100644 --- a/home-manager/programs/neovim/lua/config/keymaps.lua +++ b/home-manager/programs/neovim/lua/config/keymaps.lua @@ -396,13 +396,10 @@ end, { noremap = true, silent = true, desc = "Sidekick Claude" }) -- ==================================================================================== -- PLUGIN KEYMAP OVERRIDES -- ==================================================================================== --- nvim-surround: disable yss/ySS shortcuts; use ys_/yS_ (current-line motion) instead. -require("nvim-surround").setup({ - keymaps = { - normal_cur = false, - normal_cur_line = false, - }, -}) +-- nvim-surround v4: keymaps no longer configured via setup(); delete directly. +require("nvim-surround").setup({}) +pcall(vim.keymap.del, "n", "yss") +pcall(vim.keymap.del, "n", "ySS") -- Remove Neovim built-in gcc shorthand; gc_ achieves the same result. pcall(vim.keymap.del, "n", "gcc")