nixpkgs-nodejs

All Node.js versions, kept up-to-date automatically using Nix.

Inspired by nixpkgs-terraform, nixpkgs-python, and nixpkgs-ruby.

Features

Usage

With devenv

# devenv.yaml
inputs:
  nixpkgs:
    url: github:cachix/devenv-nixpkgs/rolling
  nixpkgs-nodejs:
    url: github:davidnbr/nixpkgs-nodejs
    overlays:
      - default
# devenv.nix
{ pkgs, ... }:

{
  cachix.pull = [ "nixpkgs-nodejs" ];

  languages = {
    javascript = {
      enable = true;
      package = pkgs.nodejs_22_22; # You can also use pnpm_22_22 or yarn_22_22 if you want to use them bundled.
    };
  };

  enterShell = ''
    echo "Node running in $(which node)"
    echo "Node version: $(node --version)"
  '';
}

With Flakes

{
  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
        ];
      };
    };

  nixConfig = {
    extra-substituters = ["https://nixpkgs-nodejs.cachix.org"];
    extra-trusted-public-keys = [
      "nixpkgs-nodejs.cachix.org-1:zUIFXIRHGVtNSAhYWPDOIpr/4hAvhUEfcRo78RWDgiI="
    ];
  };
}

Ad-hoc Shell

# 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_22

Using as an Overlay

You 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
  };
}

List Available Versions

nix flake show github:davidnbr/nixpkgs-nodejs

Binary Cache

Add 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=

Development

Build a specific version in the repo:

nix build .#'"22.22"'

License

MIT