output: add extraPackagesAfter option
Some checks are pending
Build and deploy documentation / deploy (push) Waiting to run
Publish every Git push to main to FlakeHub / flakehub-publish (push) Waiting to run
Publish every git push to Flakestry / publish-flake (push) Waiting to run

Allow users to add packages to the end of `PATH` in the neovim wrapper.
This is useful for LSP versions that might need to be overriden based on
the environment, e.g. `haskell-language-server` versions provided by a
project's devshell.
This commit is contained in:
sportshead 2025-06-08 13:14:17 +01:00 committed by Matt Sturgeon
parent dce571fae5
commit 2b6f694b48
3 changed files with 23 additions and 1 deletions

View file

@ -58,7 +58,14 @@ in
extraPackages = mkOption { extraPackages = mkOption {
type = with types; listOf (nullOr package); type = with types; listOf (nullOr package);
default = [ ]; default = [ ];
description = "Extra packages to be made available to neovim"; description = "Extra packages to be made available to neovim, added to the start of `PATH`";
apply = builtins.filter (p: p != null);
};
extraPackagesAfter = mkOption {
type = with types; listOf (nullOr package);
default = [ ];
description = "Extra packages to be made available to neovim, added to the end of `PATH`";
apply = builtins.filter (p: p != null); apply = builtins.filter (p: p != null);
}; };

View file

@ -241,6 +241,9 @@ in
++ (optional ( ++ (optional (
config.extraPackages != [ ] config.extraPackages != [ ]
) ''--prefix PATH : "${lib.makeBinPath config.extraPackages}"'') ) ''--prefix PATH : "${lib.makeBinPath config.extraPackages}"'')
++ (optional (
config.extraPackagesAfter != [ ]
) ''--suffix PATH : "${lib.makeBinPath config.extraPackagesAfter}"'')
++ (optional config.wrapRc ''--add-flags -u --add-flags "${initFile}"'') ++ (optional config.wrapRc ''--add-flags -u --add-flags "${initFile}"'')
); );

View file

@ -149,4 +149,16 @@
end end
''; '';
}; };
extraPackagesAfter =
{ pkgs, ... }:
{
extraPackagesAfter = [ pkgs.hello ];
extraConfigLua = ''
if vim.fn.executable("hello") ~= 1 then
print("Unable to find hello package.")
end
'';
};
} }