From abb082e7f8e1c1e343aadd7578c85a35ea652baa Mon Sep 17 00:00:00 2001 From: Marc Jakobi Date: Tue, 6 Aug 2024 18:17:16 +0200 Subject: [PATCH] build: add neovim-with-rocks package --- flake.lock | 6 ++--- flake.nix | 6 ++++- nix/plugin-overlay.nix | 53 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index 4d6c214..8879e67 100755 --- a/flake.lock +++ b/flake.lock @@ -1927,11 +1927,11 @@ "pre-commit-hooks": "pre-commit-hooks_2" }, "locked": { - "lastModified": 1722642819, - "narHash": "sha256-a+kc48pP2TTznbWDng9z/2eGIooKxJTmDvZpEomh61Y=", + "lastModified": 1722960873, + "narHash": "sha256-/hsJja9ogzk6YaWo4ReROmFzclVmbKlxmVL6IQOPAxk=", "owner": "nvim-neorocks", "repo": "rocks.nvim", - "rev": "c4b12461e41ef8fca97ed775fb2524be5776f31c", + "rev": "00a8e78ba5e995973a55992a377a4289a80de378", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index e6790f1..382d68d 100755 --- a/flake.nix +++ b/flake.nix @@ -149,7 +149,11 @@ packages = rec { default = rocks-edit-nvim; inherit (pkgs.luajitPackages) rocks-edit-nvim; - inherit (pkgs) docgen; + inherit + (pkgs) + docgen + neovim-with-rocks + ; }; checks = { diff --git a/nix/plugin-overlay.nix b/nix/plugin-overlay.nix index 9a3f359..f1228e8 100755 --- a/nix/plugin-overlay.nix +++ b/nix/plugin-overlay.nix @@ -32,10 +32,63 @@ src = self; version = "dev"; }; + + neovim-with-rocks = let + rocks = inputs.rocks-nvim-flake.packages.${final.system}.rocks-nvim; + rocks-edit = final.luajitPackages.rocks-edit-nvim; + neovimConfig = final.neovimUtils.makeNeovimConfig { + withPython3 = true; + viAlias = false; + vimAlias = false; + # plugins = [ final.vimPlugins.rocks-nvim ]; + extraLuaPackages = _: [rocks]; + }; + in + final.wrapNeovimUnstable final.neovim-nightly (neovimConfig + // { + luaRcContent = + /* + lua + */ + '' + -- Copied from installer.lua + local rocks_config = { + rocks_path = vim.fn.stdpath("data") .. "/rocks", + luarocks_binary = "${final.luajitPackages.luarocks}/bin/luarocks", + } + + vim.g.rocks_nvim = rocks_config + + local luarocks_path = { + vim.fs.joinpath("${rocks}", "share", "lua", "5.1", "?.lua"), + vim.fs.joinpath("${rocks}", "share", "lua", "5.1", "?", "init.lua"), + vim.fs.joinpath("${rocks-edit}", "share", "lua", "5.1", "?.lua"), + vim.fs.joinpath("${rocks-edit}", "share", "lua", "5.1", "?", "init.lua"), + vim.fs.joinpath(rocks_config.rocks_path, "share", "lua", "5.1", "?.lua"), + vim.fs.joinpath(rocks_config.rocks_path, "share", "lua", "5.1", "?", "init.lua"), + } + package.path = package.path .. ";" .. table.concat(luarocks_path, ";") + + local luarocks_cpath = { + vim.fs.joinpath(rocks_config.rocks_path, "lib", "lua", "5.1", "?.so"), + vim.fs.joinpath(rocks_config.rocks_path, "lib64", "lua", "5.1", "?.so"), + } + package.cpath = package.cpath .. ";" .. table.concat(luarocks_cpath, ";") + + vim.opt.runtimepath:append(vim.fs.joinpath("${rocks}", "rocks.nvim-scm-1-rocks", "rocks.nvim", "*")) + vim.opt.runtimepath:append(vim.fs.joinpath("${rocks-edit}", "rocks-edit.nvim-scm-1-rocks", "rocks-edit.nvim", "*")) + ''; + wrapRc = true; + wrapperArgs = + final.lib.escapeShellArgs neovimConfig.wrapperArgs + + " " + + ''--set NVIM_APPNAME "nvimrocks"''; + }); in { inherit luajit luajitPackages + neovim-with-rocks ; vimPlugins =