All Node.js versions, kept up-to-date automatically using Nix.
Inspired by nixpkgs-terraform, nixpkgs-python, and nixpkgs-ruby.
- 🔄 Automatic Updates: Automatic updates via GitHub Actions
- 📦 Binary Cache: Pre-built packages via Cachix
- 🎯 Version Precision: Access any Node.js version from 16.0.0+
- 🔒 Reproducible: Locked to specific nixpkgs commits
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-nodejs.url = "github:davidnbr/nixpkgs-nodejs";
};
outputs = { self, nixpkgs, nixpkgs-nodejs }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
devShells.${system}.default = pkgs.mkShell {
packages = [
nixpkgs-nodejs.packages.${system}.nodejs_22_22
# Or if you need yarn specifically linked to that node
# nixpkgs-nodejs.packages.${system}.yarn_22_22
];
};
};
}# Get Node.js + NPM
nix shell github:davidnbr/nixpkgs-nodejs#nodejs_22_22
# Get Node.js + Yarn (bundled)
nix shell github:davidnbr/nixpkgs-nodejs#yarn_22_22
# Get Node.js + Pnpm (bundled)
nix shell github:davidnbr/nixpkgs-nodejs#pnpm_22_22You can integrate these versions directly into your nixpkgs set using the provided overlay:
{
inputs.nixpkgs-nodejs.url = "github:davidnbr/nixpkgs-nodejs";
outputs = { self, nixpkgs, nixpkgs-nodejs }: {
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [ nixpkgs-nodejs.overlays.default ];
};
# Now you can use them like standard packages
# pkgs.nodejs_22_22
# pkgs.yarn_22_22
};
}This flake provides a formatter for your Nix code:
nix fmtnix flake show github:davidnbr/nixpkgs-nodejsAdd to your flake.nix:
nixConfig = {
extra-substituters = ["https://nixpkgs-nodejs.cachix.org"];
extra-trusted-public-keys = [
"nixpkgs-nodejs.cachix.org-1:zUIFXIRHGVtNSAhYWPDOIpr/4hAvhUEfcRo78RWDgiI="
];
};Or configure globally in ~/.config/nix/nix.conf:
extra-substituters = https://nixpkgs-nodejs.cachix.org
extra-trusted-public-keys = nixpkgs-nodejs.cachix.org-1:YzUIFXIRHGVtNSAhYWPDOIpr/4hAvhUEfcRo78RWDgiI=
Build a specific version:
nix build .#"20.11.0"MIT