|
236 | 236 | description = "The Node.js package to use."; |
237 | 237 | }; |
238 | 238 |
|
| 239 | + nodejs = { |
| 240 | + enable = lib.mkEnableOption "Node.js runtime" // { default = true; }; |
| 241 | + }; |
| 242 | + |
239 | 243 | corepack = { |
240 | 244 | enable = lib.mkEnableOption "wrappers for npm, pnpm and Yarn via Node.js Corepack"; |
241 | 245 | }; |
|
309 | 313 | config = lib.mkIf cfg.enable { |
310 | 314 | packages = |
311 | 315 | let |
312 | | - # On newer nixpkgs, nodejs has a separate npm output that doesn't |
313 | | - # include the node binary. Add the base package to keep node on PATH. |
314 | | - npmIsSeparateOutput = builtins.elem "npm" (cfg.package.outputs or [ ]); |
315 | 316 | # On nixpkgs 26.05+, nodejs-slim has a corepack output. |
316 | 317 | corepack = cfg.package.corepack or cfg.package; |
317 | 318 | in |
318 | | - lib.optional (!cfg.npm.enable || npmIsSeparateOutput) cfg.package |
| 319 | + lib.optional cfg.nodejs.enable cfg.package |
319 | 320 | ++ lib.optional cfg.npm.enable cfg.npm.package |
320 | 321 | ++ lib.optional cfg.pnpm.enable (cfg.pnpm.package) |
321 | 322 | ++ lib.optional cfg.yarn.enable (cfg.yarn.package.override { nodejs = cfg.package; }) |
|
348 | 349 | '' |
349 | 350 | ] |
350 | 351 | ); |
| 352 | + |
| 353 | + assertions = [ |
| 354 | + { |
| 355 | + assertion = (!cfg.npm.enable) || cfg.nodejs.enable; |
| 356 | + message = "languages.javascript.npm.enable requires languages.javascript.nodejs.enable = true;"; |
| 357 | + } |
| 358 | + { |
| 359 | + assertion = (!cfg.pnpm.enable) || cfg.nodejs.enable; |
| 360 | + message = "languages.javascript.pnpm.enable requires languages.javascript.nodejs.enable = true;"; |
| 361 | + } |
| 362 | + { |
| 363 | + assertion = (!cfg.yarn.enable) || cfg.nodejs.enable; |
| 364 | + message = "languages.javascript.yarn.enable requires languages.javascript.nodejs.enable = true;"; |
| 365 | + } |
| 366 | + { |
| 367 | + assertion = (!cfg.corepack.enable) || cfg.nodejs.enable; |
| 368 | + message = "languages.javascript.corepack.enable requires languages.javascript.nodejs.enable = true;"; |
| 369 | + } |
| 370 | + { |
| 371 | + assertion = (!cfg.lsp.enable) || cfg.nodejs.enable; |
| 372 | + message = "languages.javascript.lsp.enable requires languages.javascript.nodejs.enable = true;"; |
| 373 | + } |
| 374 | + { |
| 375 | + assertion = (!cfg.npm.install.enable) || cfg.npm.enable; |
| 376 | + message = "languages.javascript.npm.install.enable requires languages.javascript.npm.enable = true;"; |
| 377 | + } |
| 378 | + { |
| 379 | + assertion = (!cfg.pnpm.install.enable) || cfg.pnpm.enable; |
| 380 | + message = "languages.javascript.pnpm.install.enable requires languages.javascript.pnpm.enable = true;"; |
| 381 | + } |
| 382 | + { |
| 383 | + assertion = (!cfg.yarn.install.enable) || cfg.yarn.enable; |
| 384 | + message = "languages.javascript.yarn.install.enable requires languages.javascript.yarn.enable = true;"; |
| 385 | + } |
| 386 | + { |
| 387 | + assertion = (!cfg.bun.install.enable) || cfg.bun.enable; |
| 388 | + message = "languages.javascript.bun.install.enable requires languages.javascript.bun.enable = true;"; |
| 389 | + } |
| 390 | + ]; |
351 | 391 | }; |
352 | 392 | } |
0 commit comments