NixOS 安装特定的 NodeJS 版本
NixOS install specific NodeJS version
我可以看到 NixOS 有这些版本可供安装:
...
nodejs-0.10-statsd-0.7.2
nodejs-0.10.42
nodejs-4.3.1
nodejs-5.9.0
...
然而 systemPackages 不喜欢我安装 nodejs-5.9.0
因为它抱怨说:
error: syntax error, unexpected INT, expecting ID or OR_KW or DOLLAR_CURLY or '"', at /etc/nixos/configuration.nix:49:14
(use ‘--show-trace’ to show detailed location information)
error: syntax error, unexpected INT, expecting ID or OR_KW or DOLLAR_CURLY or '"', at /etc/nixos/configuration.nix:49:14
(use ‘--show-trace’ to show detailed location information)
building the system configuration...
error: syntax error, unexpected INT, expecting ID or OR_KW or DOLLAR_CURLY or '"', at /etc/nixos/configuration.nix:49:14
(use ‘--show-trace’ to show detailed location information)
这表明我做错了什么。我不想只使用 nix-env -i ...
安装,因为我希望它在系统范围内安装(并且我正在为我所有的开发机器构建我的标准 NixOS 配置)。
根据 nixpkgs repository v6 可用,但我不知道如何通过 configuration.nix 告诉 nixos-rebuild
或者如何安装它。
我该如何正确配置它才能安装最新版本的 NodeJS,或者特别是 5.9.0?
事实证明这是可能的,但我使用了错误的包名。如果您使用 nix-env -qaP | grep nodejs
查询,您会从其命名空间中获取名称:
$ nix-env -qaP | grep nodejs
nixos.statsd nodejs-0.10-statsd-0.7.2
nixos.nodejs-0_10 nodejs-0.10.42
nixos.nodejs nodejs-4.3.1
*nixos.nodejs-5_x nodejs-5.9.0*
nixos.azure-cli nodejs-azure-cli-0.9.15
nixos.dnschain nodejs-dnschain-0.5.3
nixos.groovebasin nodejs-groovebasin-1.5.1
nixos.keybase nodejs-keybase-0.8.25
nixos.npm2nix nodejs-npm2nix-5.12.0
nixos.pumpio nodejs-pump.io-git-2015-11-09
nixos.ripple-rest nodejs-ripple-rest-1.7.0-rc1
nixos.shout nodejs-shout-0.51.1
nixos.sloc nodejs-sloc-0.1.9
nixos.wring nodejs-wring-1.0.0
我特别想要 nodejs-5.9.0,这意味着我需要使用如上所述的 nodejs-5_x
包(强调我的)。
最新的nixpkgs只提供了部分节点版本。其他节点版本(如 nodejs-11)是 removed due to product end of life (EOL)
这些删除的版本可以在著名的 lazamar tool
中找到
所以要使用 nodejs-11(例如)
{ stdenv }:
let
# nodejs-11_x was removed, EOL 2019-06-01
# https://github.com/NixOS/nixpkgs/pull/70256
nodejs-11_x = (import (builtins.fetchGit {
# https://lazamar.co.uk/nix-versions/?channel=nixpkgs-unstable&package=nodejs
name = "nixpkgs-nodejs-11.15.0"; # name in nix store
url = "https://github.com/NixOS/nixpkgs/";
ref = "refs/heads/nixpkgs-unstable";
rev = "84f318e323989435d5dd54b4038b0af728f20c85";
}) {}).nodejs-11_x;
in
stdenv.mkDerivation {
# ...
}
注意:这将从源代码编译 nodejs,这可能需要几个小时。待办事项:找到 public binary cache
我可以看到 NixOS 有这些版本可供安装:
...
nodejs-0.10-statsd-0.7.2
nodejs-0.10.42
nodejs-4.3.1
nodejs-5.9.0
...
然而 systemPackages 不喜欢我安装 nodejs-5.9.0
因为它抱怨说:
error: syntax error, unexpected INT, expecting ID or OR_KW or DOLLAR_CURLY or '"', at /etc/nixos/configuration.nix:49:14
(use ‘--show-trace’ to show detailed location information)
error: syntax error, unexpected INT, expecting ID or OR_KW or DOLLAR_CURLY or '"', at /etc/nixos/configuration.nix:49:14
(use ‘--show-trace’ to show detailed location information)
building the system configuration...
error: syntax error, unexpected INT, expecting ID or OR_KW or DOLLAR_CURLY or '"', at /etc/nixos/configuration.nix:49:14
(use ‘--show-trace’ to show detailed location information)
这表明我做错了什么。我不想只使用 nix-env -i ...
安装,因为我希望它在系统范围内安装(并且我正在为我所有的开发机器构建我的标准 NixOS 配置)。
根据 nixpkgs repository v6 可用,但我不知道如何通过 configuration.nix 告诉 nixos-rebuild
或者如何安装它。
我该如何正确配置它才能安装最新版本的 NodeJS,或者特别是 5.9.0?
事实证明这是可能的,但我使用了错误的包名。如果您使用 nix-env -qaP | grep nodejs
查询,您会从其命名空间中获取名称:
$ nix-env -qaP | grep nodejs
nixos.statsd nodejs-0.10-statsd-0.7.2
nixos.nodejs-0_10 nodejs-0.10.42
nixos.nodejs nodejs-4.3.1
*nixos.nodejs-5_x nodejs-5.9.0*
nixos.azure-cli nodejs-azure-cli-0.9.15
nixos.dnschain nodejs-dnschain-0.5.3
nixos.groovebasin nodejs-groovebasin-1.5.1
nixos.keybase nodejs-keybase-0.8.25
nixos.npm2nix nodejs-npm2nix-5.12.0
nixos.pumpio nodejs-pump.io-git-2015-11-09
nixos.ripple-rest nodejs-ripple-rest-1.7.0-rc1
nixos.shout nodejs-shout-0.51.1
nixos.sloc nodejs-sloc-0.1.9
nixos.wring nodejs-wring-1.0.0
我特别想要 nodejs-5.9.0,这意味着我需要使用如上所述的 nodejs-5_x
包(强调我的)。
最新的nixpkgs只提供了部分节点版本。其他节点版本(如 nodejs-11)是 removed due to product end of life (EOL)
这些删除的版本可以在著名的 lazamar tool
中找到所以要使用 nodejs-11(例如)
{ stdenv }:
let
# nodejs-11_x was removed, EOL 2019-06-01
# https://github.com/NixOS/nixpkgs/pull/70256
nodejs-11_x = (import (builtins.fetchGit {
# https://lazamar.co.uk/nix-versions/?channel=nixpkgs-unstable&package=nodejs
name = "nixpkgs-nodejs-11.15.0"; # name in nix store
url = "https://github.com/NixOS/nixpkgs/";
ref = "refs/heads/nixpkgs-unstable";
rev = "84f318e323989435d5dd54b4038b0af728f20c85";
}) {}).nodejs-11_x;
in
stdenv.mkDerivation {
# ...
}
注意:这将从源代码编译 nodejs,这可能需要几个小时。待办事项:找到 public binary cache