Skip to content

Commit 30fd700

Browse files
authored
Merge pull request #17 from MatrixAI/optimise
Optimising the default.nix to produce a minimal nix package
2 parents c56f18b + 1aedd19 commit 30fd700

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

default.nix

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ let
2020
--composition $out/default.nix \
2121
--nodejs-${nodeVersion}
2222
'';
23-
devPackage = (import (node2nixDrv true) { inherit pkgs nodejs; }).package;
24-
prodDeps = (
23+
# the shell attribute has the nodeDependencies, whereas the package does not
24+
node2nixProd = (
2525
(import (node2nixDrv false) { inherit pkgs nodejs; }).shell.override {
2626
dontNpmInstall = true;
2727
}
2828
).nodeDependencies;
29-
drv = devPackage.overrideAttrs (attrs: {
29+
node2nixDev = (import (node2nixDrv true) { inherit pkgs nodejs; }).package.overrideAttrs (attrs: {
3030
src = src;
3131
dontNpmInstall = true;
3232
postInstall = ''
@@ -38,17 +38,21 @@ let
3838
# are present in `node_modules` already. It creates symlinks in
3939
# $out/lib/node_modules/.bin according to `bin` section in `package.json`.
4040
npm install
41-
42-
# replace dev dependencies
43-
rm -rf $out/lib/node_modules/${attrs.packageName}/node_modules
44-
cp -r ${prodDeps}/lib/node_modules $out/lib/node_modules/${attrs.packageName}/
45-
46-
# Create symlink to the deployed executable folder, if applicable
47-
if [ -d "$out/lib/node_modules/.bin" ]
48-
then
49-
ln -s $out/lib/node_modules/.bin $out/bin
50-
fi
5141
'';
5242
});
43+
name = "${builtins.replaceStrings ["/" "@"] ["_" ""] node2nixDev.packageName}-${node2nixDev.version}";
44+
drv = runCommandNoCC name {} ''
45+
mkdir -p $out/lib/node_modules/${node2nixDev.packageName}
46+
# copy only the dist and package.json
47+
cp -r ${node2nixDev}/lib/node_modules/${node2nixDev.packageName}/dist $out/lib/node_modules/${node2nixDev.packageName}/
48+
cp -r ${node2nixDev}/lib/node_modules/${node2nixDev.packageName}/package.json $out/lib/node_modules/${node2nixDev.packageName}/
49+
# copy over the production dependencies
50+
cp -r ${node2nixProd}/lib/node_modules $out/lib/node_modules/${node2nixDev.packageName}/
51+
# create symlink to the deployed executable folder, if applicable
52+
if [ -d "${node2nixDev}/lib/node_modules/.bin" ]; then
53+
cp -r ${node2nixDev}/lib/node_modules/.bin $out/lib/node_modules/
54+
ln -s $out/lib/node_modules/.bin $out/bin
55+
fi
56+
'';
5357
in
5458
drv

0 commit comments

Comments
 (0)