From 81874690cea6a26b20863851a59d85a7290b48a3 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Mon, 7 Apr 2025 16:01:03 +0200 Subject: [PATCH] modules/dependencies: add nodejs --- modules/dependencies.nix | 4 +++ plugins/by-name/gitlab/default.nix | 19 ++++++------- plugins/by-name/sg/default.nix | 29 +++++++++++++------- plugins/by-name/treesitter/default.nix | 37 +++++++++++++++----------- 4 files changed, 54 insertions(+), 35 deletions(-) diff --git a/modules/dependencies.nix b/modules/dependencies.nix index d5f244fa..9b10e449 100644 --- a/modules/dependencies.nix +++ b/modules/dependencies.nix @@ -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"; diff --git a/plugins/by-name/gitlab/default.nix b/plugins/by-name/gitlab/default.nix index 48c1f1f0..9d05c1b1 100644 --- a/plugins/by-name/gitlab/default.nix +++ b/plugins/by-name/gitlab/default.nix @@ -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 = { diff --git a/plugins/by-name/sg/default.nix b/plugins/by-name/sg/default.nix index 5b2732f0..63b30822 100644 --- a/plugins/by-name/sg/default.nix +++ b/plugins/by-name/sg/default.nix @@ -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) ); }; diff --git a/plugins/by-name/treesitter/default.nix b/plugins/by-name/treesitter/default.nix index 89ea0989..b57ff11e 100644 --- a/plugins/by-name/treesitter/default.nix +++ b/plugins/by-name/treesitter/default.nix @@ -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";