modules/dependencies: add nodejs

This commit is contained in:
Gaetan Lepage 2025-04-07 16:01:03 +02:00 committed by nix-infra-bot
parent 75f7ec4995
commit 81874690ce
4 changed files with 54 additions and 35 deletions

View file

@ -13,6 +13,10 @@ let
default = "git";
example = [ "gitMinimal" ];
};
nodejs = {
default = "nodejs";
example = "pkgs.nodejs_22";
};
tree-sitter.default = "tree-sitter";
ueberzug.default = "ueberzugpp";
which.default = "which";

View file

@ -1,6 +1,5 @@
{
lib,
pkgs,
...
}:
let
@ -14,15 +13,17 @@ lib.nixvim.plugins.mkNeovimPlugin {
maintainers = [ lib.maintainers.GaetanLepage ];
extraOptions = {
nodePackage = lib.mkPackageOption pkgs "nodejs" {
nullable = true;
default = null;
};
};
imports = [
# TODO: added 2025-04-07, remove after 25.05
(lib.nixvim.mkRemovedPackageOptionModule {
plugin = "gitlab";
packageName = "nodejs";
oldPackageName = "node";
})
];
extraConfig = cfg: {
extraPackages = [ cfg.nodePackage ];
extraConfig = {
dependencies.nodejs.enable = lib.mkDefault true;
};
settingsOptions = {

View file

@ -1,4 +1,8 @@
{ lib, pkgs, ... }:
{
lib,
config,
...
}:
let
inherit (lib) types;
inherit (lib.nixvim) defaultNullOpts literalLua;
@ -10,15 +14,20 @@ lib.nixvim.plugins.mkNeovimPlugin {
maintainers = [ lib.maintainers.GaetanLepage ];
extraOptions = {
nodePackage = lib.mkPackageOption pkgs "nodejs" {
nullable = true;
default = null;
};
};
extraConfig = cfg: {
plugins.sg.settings.node_executable = lib.mkIf (cfg.nodePackage != null) (
lib.mkDefault (lib.getExe cfg.nodePackage)
imports = [
# TODO: added 2025-04-07, remove after 25.05
(lib.nixvim.mkRemovedPackageOptionModule {
plugin = "sg";
packageName = "nodejs";
oldPackageName = "node";
})
];
extraConfig = {
dependencies.nodejs.enable = lib.mkDefault true;
plugins.sg.settings.node_executable = lib.mkIf config.dependencies.nodejs.enable (
lib.mkDefault (lib.getExe config.dependencies.nodejs.package)
);
};

View file

@ -230,6 +230,10 @@ lib.nixvim.plugins.mkNeovimPlugin {
))
# TODO: added 2025-04-07, remove after 25.05
(lib.nixvim.mkRemovedPackageOptionModule {
plugin = "treesitter";
packageName = "nodejs";
})
(lib.nixvim.mkRemovedPackageOptionModule {
plugin = "treesitter";
packageName = "treesitter";
@ -413,14 +417,6 @@ lib.nixvim.plugins.mkNeovimPlugin {
example = false;
description = "Whether to enable Nixvim injections, e.g. highlighting `extraConfigLua` as lua.";
};
nodejsPackage = lib.mkPackageOption pkgs "nodejs" {
nullable = true;
example = "pkgs.nodejs_22";
extraDescription = ''
This is required to build grammars if you are not using `nixGrammars`.
'';
};
};
# NOTE: We call setup manually below.
@ -455,17 +451,26 @@ lib.nixvim.plugins.mkNeovimPlugin {
extraPackages = [
cfg.gccPackage
cfg.nodejsPackage
];
dependencies.tree-sitter.enable = lib.mkIf (!cfg.nixGrammars) lib.mkDefault true;
warnings = lib.nixvim.mkWarnings "plugins.treesitter" {
when = !cfg.nixGrammars && (!config.dependencies.tree-sitter.enable);
message = ''
`tree-sitter` is required to build grammars as you are not using `nixGrammars`.
You may want to set `dependencies.tree-sitter.enable` to `true`.
'';
dependencies = lib.mkIf (!cfg.nixGrammars) {
nodejs.enable = lib.mkDefault true;
tree-sitter.enable = lib.mkDefault true;
};
warnings = lib.nixvim.mkWarnings "plugins.treesitter" (
lib.map
(packageName: {
when = !cfg.nixGrammars && (!config.dependencies.${packageName}.enable);
message = ''
`${packageName}` is required to build grammars as you are not using `nixGrammars`.
You may want to set `dependencies.${packageName}.enable` to `true`.
'';
})
[
"nodejs"
"tree-sitter"
]
);
opts = mkIf cfg.folding {
foldmethod = mkDefault "expr";