Skip to content

Commit ebdca12

Browse files
committed
Pin nodepackages to nodejs 14
1 parent 7fb5257 commit ebdca12

File tree

6 files changed

+51
-5200
lines changed

6 files changed

+51
-5200
lines changed

overlay.nix

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ self: super:
33
with super.lib;
44

55
let
6-
nodePackages = self.callPackage ./pkgs/node-packages { };
6+
nodePackages = self.callPackage ./pkgs/node-packages {
7+
nodejs = super."nodejs-14_x";
8+
};
79

810
override = {
911
# These packages will hide packages in the top level nixpkgs
@@ -12,12 +14,14 @@ in
1214
{
1315
replitPackages = rec {
1416
# Any other packages should go in the replitPackages namespace
15-
jdt-language-server = self.callPackage ./pkgs/jdt-language-server { };
1617
replbox = self.callPackage ./pkgs/replbox { };
17-
jest = nodePackages."jest-cli-23.6.0";
18-
coffeescript = nodePackages.coffeescript;
18+
19+
jdt-language-server = self.callPackage ./pkgs/jdt-language-server { };
1920
rescript-language-server = self.callPackage ./pkgs/rescript-language-server { };
2021

22+
jest = nodePackages."jest-cli-23.6.0";
23+
coffeescript = nodePackages."coffeescript-2.6.1";
24+
2125
# The override packages are injected into the replitPackages namespace as
2226
# well so they can all be built together
2327
} // override;

pkgs/node-packages/default.nix

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
inherit system;
55
}
66
, system ? builtins.currentSystem
7-
, nodejs ? pkgs."nodejs-12_x"
7+
, nodejs ? pkgs."nodejs-14_x"
88
}:
99

1010
let
1111
nodeEnv = import ./node-env.nix {
12-
inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript;
12+
inherit (pkgs) stdenv lib python2 runCommand writeTextFile;
1313
inherit pkgs nodejs;
1414
libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
1515
};

pkgs/node-packages/generate.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/bin/sh
2-
nix-shell -p nodePackages.node2nix --run 'node2nix -i node-packages.json'
2+
nix-shell -p nodePackages.node2nix --run 'node2nix -14 --version'
3+
nix-shell -p nodePackages.node2nix --run 'node2nix -14 -i node-packages.json'
34
nix-shell -p nixpkgs-fmt --run 'nixpkgs-fmt .'
45

pkgs/node-packages/node-env.nix

Lines changed: 36 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This file originates from node2nix
22

3-
{ lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile, writeShellScript }:
3+
{ lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile }:
44

55
let
66
# Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master
@@ -40,22 +40,38 @@ let
4040
'';
4141
};
4242

43-
# Common shell logic
44-
installPackage = writeShellScript "install-package" ''
45-
installPackage() {
46-
local packageName=$1 src=$2
43+
includeDependencies = { dependencies }:
44+
lib.optionalString (dependencies != [ ])
45+
(lib.concatMapStrings
46+
(dependency:
47+
''
48+
# Bundle the dependencies of the package
49+
mkdir -p node_modules
50+
cd node_modules
4751
48-
local strippedName
52+
# Only include dependencies if they don't exist. They may also be bundled in the package.
53+
if [ ! -e "${dependency.name}" ]
54+
then
55+
${composePackage dependency}
56+
fi
57+
58+
cd ..
59+
''
60+
)
61+
dependencies);
4962

50-
local DIR=$PWD
63+
# Recursively composes the dependencies of a package
64+
composePackage = { name, packageName, src, dependencies ? [ ], ... }@args:
65+
builtins.addErrorContext "while evaluating node package '${packageName}'" ''
66+
DIR=$(pwd)
5167
cd $TMPDIR
5268
53-
unpackFile $src
69+
unpackFile ${src}
5470
5571
# Make the base dir in which the target dependency resides first
56-
mkdir -p "$(dirname "$DIR/$packageName")"
72+
mkdir -p "$(dirname "$DIR/${packageName}")"
5773
58-
if [ -f "$src" ]
74+
if [ -f "${src}" ]
5975
then
6076
# Figure out what directory has been unpacked
6177
packageDir="$(find . -maxdepth 1 -type d | tail -1)"
@@ -65,55 +81,28 @@ let
6581
chmod -R u+w "$packageDir"
6682
6783
# Move the extracted tarball into the output folder
68-
mv "$packageDir" "$DIR/$packageName"
69-
elif [ -d "$src" ]
84+
mv "$packageDir" "$DIR/${packageName}"
85+
elif [ -d "${src}" ]
7086
then
7187
# Get a stripped name (without hash) of the source directory.
7288
# On old nixpkgs it's already set internally.
7389
if [ -z "$strippedName" ]
7490
then
75-
strippedName="$(stripHash $src)"
91+
strippedName="$(stripHash ${src})"
7692
fi
7793
7894
# Restore write permissions to make building work
7995
chmod -R u+w "$strippedName"
8096
8197
# Move the extracted directory into the output folder
82-
mv "$strippedName" "$DIR/$packageName"
98+
mv "$strippedName" "$DIR/${packageName}"
8399
fi
84100
85-
# Change to the package directory to install dependencies
86-
cd "$DIR/$packageName"
87-
}
88-
'';
101+
# Unset the stripped name to not confuse the next unpack step
102+
unset strippedName
89103
90-
# Bundle the dependencies of the package
91-
#
92-
# Only include dependencies if they don't exist. They may also be bundled in the package.
93-
includeDependencies = { dependencies }:
94-
lib.optionalString (dependencies != [ ]) (
95-
''
96-
mkdir -p node_modules
97-
cd node_modules
98-
''
99-
+ (lib.concatMapStrings
100-
(dependency:
101-
''
102-
if [ ! -e "${dependency.name}" ]; then
103-
${composePackage dependency}
104-
fi
105-
''
106-
)
107-
dependencies)
108-
+ ''
109-
cd ..
110-
''
111-
);
112-
113-
# Recursively composes the dependencies of a package
114-
composePackage = { name, packageName, src, dependencies ? [ ], ... }@args:
115-
builtins.addErrorContext "while evaluating node package '${packageName}'" ''
116-
installPackage "${packageName}" "${src}"
104+
# Include the dependencies of the package
105+
cd "$DIR/${packageName}"
117106
${includeDependencies { inherit dependencies; }}
118107
cd ..
119108
${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
@@ -404,15 +393,14 @@ let
404393
, dontStrip ? true
405394
, unpackPhase ? "true"
406395
, buildPhase ? "true"
407-
, meta ? { }
408396
, ...
409397
}@args:
410398

411399
let
412-
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ];
400+
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
413401
in
414402
stdenv.mkDerivation ({
415-
name = "${name}-${version}";
403+
name = "node_${name}-${version}";
416404
buildInputs = [ tarWrapper python nodejs ]
417405
++ lib.optional (stdenv.isLinux) utillinux
418406
++ lib.optional (stdenv.isDarwin) libtool
@@ -429,8 +417,6 @@ let
429417
passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
430418

431419
installPhase = ''
432-
source ${installPackage}
433-
434420
# Create and enter a root node_modules/ folder
435421
mkdir -p $out/lib/node_modules
436422
cd $out/lib/node_modules
@@ -463,11 +449,6 @@ let
463449
# Run post install hook, if provided
464450
runHook postInstall
465451
'';
466-
467-
meta = {
468-
# default to Node.js' platforms
469-
platforms = nodejs.meta.platforms;
470-
} // meta;
471452
} // extraArgs);
472453

473454
# Builds a node environment (a node_modules folder and a set of binaries)
@@ -509,8 +490,6 @@ let
509490
passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
510491

511492
installPhase = ''
512-
source ${installPackage}
513-
514493
mkdir -p $out/${packageName}
515494
cd $out/${packageName}
516495
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[
2-
"coffeescript",
2+
{ "coffeescript": "2.6.1" },
33
{ "jest-cli": "23.6.0" }
44
]

0 commit comments

Comments
 (0)