diff --git a/Makefile b/Makefile index 9435efb7a..be9e30fa0 100644 --- a/Makefile +++ b/Makefile @@ -474,8 +474,8 @@ neovim-dev: ## Set up local Neovim development environment. rm "$(HOME)/.config/nvim"; \ fi @mkdir -p "$(HOME)/.config/nvim" - @ln -sf "$(PWD)/config/nvim/init.lua" "$(HOME)/.config/nvim/init.lua" - @ln -sf "$(PWD)/config/nvim/nvim-pack-lock.json" "$(HOME)/.config/nvim/nvim-pack-lock.json" + @ln -sf "$(PWD)/home-manager/programs/neovim/init.lua" "$(HOME)/.config/nvim/init.lua" + @ln -sf "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" "$(HOME)/.config/nvim/nvim-pack-lock.json" @echo "✅ Local Neovim development environment ready" @echo "🚧 To restore the Nix-managed version, run 'make switch'" @@ -489,13 +489,13 @@ neovim-update: ## Update Neovim plugins. neovim-sync: ## Sync Neovim plugins. @echo "🔄 Syncing neovim plugins..." @nvim --headless +"lua vim.cmd('source ' .. vim.fn.stdpath('config') .. '/init.lua')" +qa - @if [ -f "$(PWD)/config/nvim/nvim-pack-lock.json" ]; then \ + @if [ -f "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" ]; then \ if [ "$$(uname)" = "Darwin" ]; then \ - sed -i '' -e '$$ { /^$$/d; }' "$(PWD)/config/nvim/nvim-pack-lock.json"; \ + sed -i '' -e '$$ { /^$$/d; }' "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json"; \ else \ - sed -i -e '$$ { /^$$/d; }' "$(PWD)/config/nvim/nvim-pack-lock.json"; \ + sed -i -e '$$ { /^$$/d; }' "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json"; \ fi && \ - printf '\n' >> "$(PWD)/config/nvim/nvim-pack-lock.json"; \ + printf '\n' >> "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json"; \ fi @echo "✅ Neovim plugins synced" @@ -512,18 +512,18 @@ lua-check-neovim: ## Check Neovim configuration. echo "⚠️ Neovim is not installed or not in PATH"; \ exit 1; \ fi - @NVIM_CONFIG="$(PWD)/config/nvim/init.lua"; \ + @NVIM_CONFIG="$(PWD)/home-manager/programs/neovim/init.lua"; \ if [ ! -f "$$NVIM_CONFIG" ]; then \ echo "⚠️ Could not find Neovim configuration at $$NVIM_CONFIG"; \ exit 1; \ fi @echo "📝 Validating Neovim configuration syntax..." @mkdir -p ~/.config/nvim - @ln -sf "$(PWD)/config/nvim/init.lua" ~/.config/nvim/init.lua - @if [ -f "$(PWD)/config/nvim/nvim-pack-lock.json" ]; then \ - ln -sf "$(PWD)/config/nvim/nvim-pack-lock.json" ~/.config/nvim/nvim-pack-lock.json; \ + @ln -sf "$(PWD)/home-manager/programs/neovim/init.lua" ~/.config/nvim/init.lua + @if [ -f "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" ]; then \ + ln -sf "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" ~/.config/nvim/nvim-pack-lock.json; \ fi - @nvim --headless -c "lua dofile('$(PWD)/config/nvim/init.lua')" -c "qa" 2>&1; \ + @nvim --headless -c "lua dofile('$(PWD)/home-manager/programs/neovim/init.lua')" -c "qa" 2>&1; \ EXIT_CODE=$$?; \ if [ $$EXIT_CODE -eq 0 ]; then \ echo "✅ Neovim configuration is valid"; \ diff --git a/config/default.nix b/config/default.nix index 5238bec0e..71e275753 100644 --- a/config/default.nix +++ b/config/default.nix @@ -6,7 +6,6 @@ ./ghostty ./hammerspoon ./karabiner - ./nvim ./opencode ./serena ./starship diff --git a/config/nvim/default.nix b/config/nvim/default.nix deleted file mode 100644 index 09aea663f..000000000 --- a/config/nvim/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, lib, ... }: -let - nvimPackLockJson = ./nvim-pack-lock.json; -in -{ - home.file.".config/nvim/init.lua" = { - source = config.lib.file.mkOutOfStoreSymlink ./init.lua; - force = true; - }; - # Copy nvim-pack-lock.json via activation script instead of symlinking - # so Neovim can write to it. Home Manager always creates symlinks for - # managed files, so we handle this file separately. - home.activation.copyNvimPackLock = lib.hm.dag.entryAfter [ "writeBoundary" ] '' - $DRY_RUN_CMD mkdir -p "$HOME/.config/nvim" - $DRY_RUN_CMD cp -f ${nvimPackLockJson} "$HOME/.config/nvim/nvim-pack-lock.json" - $DRY_RUN_CMD chmod 644 "$HOME/.config/nvim/nvim-pack-lock.json" - ''; -} diff --git a/config/nvim/.gitignore b/home-manager/programs/neovim/.gitignore similarity index 100% rename from config/nvim/.gitignore rename to home-manager/programs/neovim/.gitignore diff --git a/home-manager/programs/neovim/default.nix b/home-manager/programs/neovim/default.nix index 193f64d5b..c377694f4 100644 --- a/home-manager/programs/neovim/default.nix +++ b/home-manager/programs/neovim/default.nix @@ -1,4 +1,13 @@ -{ pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: +let + nvimInitLua = ./init.lua; + nvimPackLockJson = ./nvim-pack-lock.json; +in { programs.neovim = { enable = true; @@ -7,4 +16,15 @@ vimAlias = true; vimdiffAlias = true; }; + + home.file.".config/nvim/init.lua" = { + source = config.lib.file.mkOutOfStoreSymlink nvimInitLua; + force = true; + }; + + home.activation.copyNvimPackLock = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + $DRY_RUN_CMD mkdir -p "$HOME/.config/nvim" + $DRY_RUN_CMD cp -f ${nvimPackLockJson} "$HOME/.config/nvim/nvim-pack-lock.json" + $DRY_RUN_CMD chmod 644 "$HOME/.config/nvim/nvim-pack-lock.json" + ''; } diff --git a/config/nvim/init.lua b/home-manager/programs/neovim/init.lua similarity index 100% rename from config/nvim/init.lua rename to home-manager/programs/neovim/init.lua diff --git a/config/nvim/nvim-pack-lock.json b/home-manager/programs/neovim/nvim-pack-lock.json similarity index 100% rename from config/nvim/nvim-pack-lock.json rename to home-manager/programs/neovim/nvim-pack-lock.json