Skip to content

Commit 681b925

Browse files
committed
...
1 parent 76c81a9 commit 681b925

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

lua/dotvim/utils/nix.lua

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,23 @@ end)
3232
---@type string[]
3333
local deps_nix_managed_vim_plugins = {}
3434
---@type table<string, string>
35-
local deps_nix_managed_binaries = {}
35+
local nix_aware = {}
3636
local resolve_bin_cache = Fn.new_cache_manager()
3737

38+
local function load_nix_aware_file()
39+
local path = vim.fn.stdpath("config") .. "/nix-aware.json"
40+
---@diagnostic disable-next-line: undefined-field
41+
if not not vim.uv.fs_stat(path) then
42+
---@type dotvim.utils
43+
local Utils = require("dotvim.utils")
44+
local content = Utils.fs.read_file(path)
45+
if content ~= nil then
46+
return vim.fn.json_decode(content)
47+
end
48+
end
49+
return {}
50+
end
51+
3852
function M.update_nix_plugin_packages()
3953
local packages = get_plugin_packages()
4054
Fs.write_file(
@@ -68,13 +82,8 @@ local function load_nix_related_data()
6882
deps_nix_managed_vim_plugins = vim.split(data, "\n", { trimempty = true })
6983
end
7084
)
71-
Fs.read_file_then(vim.fn.stdpath("data") .. "/nix-binaries", function(data)
72-
local ok, ret = pcall(vim.fn.json_decode, data)
73-
if ok then
74-
resolve_bin_cache:clear()
75-
deps_nix_managed_binaries = ret
76-
end
77-
end)
85+
resolve_bin_cache:clear()
86+
nix_aware = load_nix_aware_file()
7887
end
7988

8089
local assume_data_loaded = Fn.invoke_once(function()
@@ -86,6 +95,9 @@ end)
8695
---@return string?
8796
M.resolve_plugin = function(name)
8897
assume_data_loaded()
98+
if nix_aware.pkgs[name] ~= nil then
99+
return nix_aware.pkgs[name]
100+
end
89101
for _, pkg in ipairs(deps_nix_managed_vim_plugins) do
90102
if pkg:find(name, 1, true) then
91103
return pkg
@@ -130,7 +142,7 @@ end)
130142
M.resolve_bin = function(name)
131143
assume_data_loaded()
132144
return resolve_bin_cache:ensure(name, function()
133-
local bin = deps_nix_managed_binaries[name]
145+
local bin = nix_aware.bin[name]
134146
if bin then
135147
return bin
136148
end

0 commit comments

Comments
 (0)