@@ -117,6 +117,50 @@ function utils.get_mru_list()
117117 return mru
118118end
119119
120+ local function get_nixvim_full_stats ()
121+ local nix_pack_dir = nil
122+ for path in vim .o .packpath :gmatch (' [^,]+' ) do
123+ if path :find (' -vim-pack-dir' , 1 , true ) then
124+ nix_pack_dir = path .. ' /pack/myNeovimPackages'
125+ break
126+ end
127+ end
128+
129+ if not nix_pack_dir then
130+ return { count = 0 , loaded = 0 }
131+ end
132+
133+ local function scan_dir (type )
134+ local count , loaded = 0 , 0
135+ local handle = uv .fs_scandir (nix_pack_dir .. ' /' .. type )
136+ if not handle then
137+ return count , loaded
138+ end
139+ while true do
140+ local name = uv .fs_scandir_next (handle )
141+ if not name then
142+ break
143+ end
144+ count = count + 1
145+ for _ , rtp_path in ipairs (vim .api .nvim_list_runtime_paths ()) do
146+ if rtp_path :find (name , 1 , true ) and not rtp_path :match (' /after$' ) then
147+ loaded = loaded + 1
148+ break
149+ end
150+ end
151+ end
152+ return count , loaded
153+ end
154+
155+ local start_total , start_loaded = scan_dir (' start' )
156+ local opt_total , opt_loaded = scan_dir (' opt' )
157+
158+ return {
159+ count = start_total + opt_total ,
160+ loaded = start_loaded + opt_loaded ,
161+ }
162+ end
163+
120164function utils .get_package_manager_stats ()
121165 local package_manager_stats = { name = ' ' , count = 0 , loaded = 0 , time = 0 }
122166 --- @diagnostic disable-next-line : undefined-global
@@ -154,6 +198,16 @@ function utils.get_package_manager_stats()
154198 package_manager_stats .loaded = loaded
155199 end
156200 end
201+ if
202+ package_manager_stats .name == ' '
203+ and not utils .is_win
204+ and vim .o .packpath :match (' /nix/store/.*%-vim%-pack%-dir' ) ~= nil
205+ then
206+ local nixvim_stats = get_nixvim_full_stats ()
207+ package_manager_stats .name = ' nixvim'
208+ package_manager_stats .count = nixvim_stats .count
209+ package_manager_stats .loaded = nixvim_stats .loaded
210+ end
157211 return package_manager_stats
158212end
159213
0 commit comments