From 2738209b5d3b7ca4a306a90d321e35080f25b8ad Mon Sep 17 00:00:00 2001 From: Oscar Chevalier Date: Mon, 21 Jul 2025 23:35:44 +1000 Subject: [PATCH] gnu: neovim: Add support for guix neovim packages. Enables the use of guix as a package manager for neovim, compatible with the outputs of `vim-build-system`. * gnu/packages/vim.scm (neovim)[arguments]: Added another phase to install the system init file to the correct place. * gnu/packages/aux-files/guix-nvim.vim: New file. * Makefile.am (AUX_FILES): Register file. Change-Id: I375e3e0d051da27d065dff5456cb298a01bc90b1 Signed-off-by: Efraim Flashner --- Makefile.am | 1 + gnu/packages/aux-files/guix-nvim.vim | 10 ++++++++++ gnu/packages/vim.scm | 10 +++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/aux-files/guix-nvim.vim diff --git a/Makefile.am b/Makefile.am index 19b2971f992135327080e5f3a7e866e604f954b1..77c23ddcf8cb19046810497d4ad1f590eaca105f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -448,6 +448,7 @@ AUX_FILES = \ gnu/packages/aux-files/emacs/guix-emacs.el \ gnu/packages/aux-files/findclass.php \ gnu/packages/aux-files/guix.vim \ + gnu/packages/aux-files/guix-nvim.vim \ gnu/packages/aux-files/linux-libre/6.16-arm64.conf \ gnu/packages/aux-files/linux-libre/6.16-riscv.conf \ gnu/packages/aux-files/linux-libre/6.16-x86_64.conf \ diff --git a/gnu/packages/aux-files/guix-nvim.vim b/gnu/packages/aux-files/guix-nvim.vim new file mode 100644 index 0000000000000000000000000000000000000000..6ac92573fd1d5d2ef019e69ed6d7a741983a45ac --- /dev/null +++ b/gnu/packages/aux-files/guix-nvim.vim @@ -0,0 +1,10 @@ +lua << EOF + -- This appends all applicable neovim paths to the runtimepath. + for _, directory in pairs({"/run/current-system/profile", "~/.guix-profile", "~/.guix-home/profile", vim.env.GUIX_PROFILE, vim.env.GUIX_ENVIRONMENT}) do + local rtp = vim.fs.abspath(directory .. "/share/nvim/site") + local stat = vim.uv.fs_stat(rtp) + if stat and stat.type == "directory" then + vim.opt.rtp:append(rtp) + end + end +EOF diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 36357598ef80f2fe271dc7f91e1ff8d483b07001..02182dad48863ab7a50047a201bf9e81ea3eb75b 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -862,7 +862,15 @@ is based on Vim's builtin plugin support.") ;; doubles its size. We remove the reference here. (substitute* "cmake.config/versiondef.h.in" (("\\$\\{CMAKE_C_COMPILER\\}") "/gnu/store/.../bin/gcc")) - #t))))) + #t)) + (add-after 'install 'install-guix-nvim.vim + (lambda* (#:key outputs #:allow-other-keys) + (let ((nvimdir (string-append (assoc-ref outputs "out") + "/share/nvim"))) + (mkdir-p nvimdir) + (copy-file + #$(local-file (search-auxiliary-file "guix-nvim.vim")) + (string-append nvimdir "/sysinit.vim")))))))) (inputs (list libuv-for-luv msgpack libtermkey