🙄

nix-shellでnodejs 16系を使う

2021/11/21に公開

nix-shellはshell.nixが存在する場合これを読み込むのでおそらくshell.nixに書けば良い

{ pkgs ? import <nixpkgs> { } }:

pkgs.mkShell { packages = [ pkgs.nodejs_14 ]; }
$ nix --version
nix (Nix) 2.13.3
$ nix-shell
> node -v
v16.20.0

もうちょっと詳しく

mkShellはnix-shell向けのderivationを書くときに使う。
packagesで利用するパッケージを書けば良い。
derivationにはpackagesという属性はない。nativeBuildInputsの値になる。
nativeBuildInputsはビルド時に利用しないパッケージを指定するのに使う。

作成中のnodejsアプリをビルドするのであれば buidInputs 属性をmkShellに指定するのが適切かもしれないが、著者の現在の理解度では判断がつかなかった。

修正履歴

  • 2023-06-17 パッケージ名が nodejs-16xから nodejs_16に変わっていたため修正

Discussion