From 8a8fec54767194822552fe676363ab4bdd88c1cf Mon Sep 17 00:00:00 2001 From: "Alexandre Cavalheiro S. Tiago da Silva" Date: Tue, 11 Feb 2025 23:35:42 -0300 Subject: [PATCH] feat(neovim): create a helper function to fetch Nix derivation outputs --- .../home-manager/programs/neovim/polish.lua | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/modules/home-manager/programs/neovim/polish.lua b/modules/home-manager/programs/neovim/polish.lua index 9641c76..837bb0f 100644 --- a/modules/home-manager/programs/neovim/polish.lua +++ b/modules/home-manager/programs/neovim/polish.lua @@ -15,6 +15,42 @@ vim.filetype.add({ }, }) +--- Define PackageOutput +--- @enum PackageOutput +local PACKAGEOUTPUT = { + out = 0, + lib = 1, +} + +--- Get the store path of a package +--- @param packagename NixSearchExceptions | string +--- @param packageoutput PackageOutput? +--- @return string | nil +vim.fn.getnixpath = function(packagename, packageoutput) + ---@enum (key) NixSearchExceptions + local exceptions = { + rzls = "callPackage ~/.system/modules/home-manager/programs/rzls { }", + } + + return vim.split( + vim.api.nvim_cmd( + vim.api.nvim_parse_cmd( + string.format( + "silent !nix eval --raw --expr 'with import { }; (%s).%s' --impure", + exceptions[packagename] or packagename, + (packageoutput == PACKAGEOUTPUT.out or packageoutput == nil) and "outPath" + or string.format("lib.getLib %s", packagename) + ), + {} + ), + { + output = true, + } + ), + "\n" + )[3] +end + local dap = require("dap") -- @type DapAdapter