You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The removal of nodejs-16_x with a direct throw statement causes existing configurations to fail abruptly without providing a deprecation warning or migration path. This breaks the principle of graceful degradation and makes upgrades more difficult than necessary.
Steps To Reproduce
Have a configuration that uses pkgs.nodejs-16_x (common in templates like Symfony Flex's devenv)
Run any nix command that evaluates this configuration
devenv up
Encounter hard failure:
error: nodejs_16 has been removed as it is EOL.
Expected behavior
When encountering an EOL package:
Show deprecation warnings before removal
Provide clear upgrade paths in messages (e.g., "Please upgrade to nodejs_18 or nodejs_20")
Consider graceful fallback to latest LTS version (Node.js 20)
Only throw hard errors after sufficient deprecation period
Screenshots
N/A
Additional context
This affects many existing templates and configurations in the ecosystem:
Symfony Flex's current devenv template
Potentially other project templates using Node.js 16
Custom user configurations
The current approach of immediate throw creates unnecessary friction during upgrades and goes against standard package management practices of graceful deprecation.
Current implementation in nixpkgs:
nodejs_16=throw"nodejs_16 has been removed as it is EOL.";
I'm not a nodejs person, but this ticket feels excessive to me:
nodejs announces upstream EOLs, so removal from unstable nixpkgs shouldn't be surprising (and you could use stable nixpkgs to somewhat reduce this friction; we have it even for darwin)
you specified nodejs-16_x, so silent automatic upgrade to a different nodejs branch seems worse than a throw. You could use nodejs (without version spec) to get auto-upgraded regularly, if that's what you want.
as for the throw message, I don't think people would read it like "nixpkgs removed all nodejs"
Describe the bug
The removal of
nodejs-16_x
with a directthrow
statement causes existing configurations to fail abruptly without providing a deprecation warning or migration path. This breaks the principle of graceful degradation and makes upgrades more difficult than necessary.Steps To Reproduce
pkgs.nodejs-16_x
(common in templates like Symfony Flex's devenv)Expected behavior
When encountering an EOL package:
Screenshots
N/A
Additional context
This affects many existing templates and configurations in the ecosystem:
The current approach of immediate
throw
creates unnecessary friction during upgrades and goes against standard package management practices of graceful deprecation.Current implementation in nixpkgs:
Metadata
Notify maintainers
@edolstra @NixOS/nodejs-maintainers
Note for maintainers: Please tag this issue in your PR.
The text was updated successfully, but these errors were encountered: