|
1 | 1 | { runCommandNoCC
|
2 |
| -, nix-gitignore |
3 |
| -, nodejs |
4 |
| -, nodePackages |
5 |
| -, pkgs |
6 |
| -, lib |
| 2 | +, callPackage |
7 | 3 | }:
|
8 | 4 |
|
9 | 5 | let
|
10 |
| - src = nix-gitignore.gitignoreSource [".git"] ./.; |
11 |
| - nodeVersion = builtins.elemAt (lib.versions.splitVersion nodejs.version) 0; |
12 |
| - node2nixDrv = dev: runCommandNoCC "node2nix" {} '' |
13 |
| - mkdir $out |
14 |
| - ${nodePackages.node2nix}/bin/node2nix \ |
15 |
| - ${lib.optionalString dev "--development"} \ |
16 |
| - --input ${src}/package.json \ |
17 |
| - --lock ${src}/package-lock.json \ |
18 |
| - --node-env $out/node-env.nix \ |
19 |
| - --output $out/node-packages.nix \ |
20 |
| - --composition $out/default.nix \ |
21 |
| - --nodejs-${nodeVersion} |
22 |
| - ''; |
23 |
| - # the shell attribute has the nodeDependencies, whereas the package does not |
24 |
| - node2nixProd = ( |
25 |
| - (import (node2nixDrv false) { inherit pkgs nodejs; }).shell.override { |
26 |
| - dontNpmInstall = true; |
| 6 | + utils = callPackage ./utils.nix {}; |
| 7 | + drv = runCommandNoCC |
| 8 | + "${utils.basename}-${utils.node2nixDev.version}" |
| 9 | + { |
| 10 | + version = utils.node2nixDev.version; |
| 11 | + packageName = utils.node2nixDev.packageName; |
27 | 12 | }
|
28 |
| - ).nodeDependencies; |
29 |
| - node2nixDev = (import (node2nixDrv true) { inherit pkgs nodejs; }).package.overrideAttrs (attrs: { |
30 |
| - src = src; |
31 |
| - dontNpmInstall = true; |
32 |
| - postInstall = '' |
33 |
| - # The dependencies were prepared in the install phase |
34 |
| - # See `node2nix` generated `node-env.nix` for details. |
35 |
| - npm run build |
36 |
| -
|
37 |
| - # This call does not actually install packages. The dependencies |
38 |
| - # are present in `node_modules` already. It creates symlinks in |
39 |
| - # $out/lib/node_modules/.bin according to `bin` section in `package.json`. |
40 |
| - npm install |
41 |
| - ''; |
42 |
| - }); |
43 |
| - name = "${builtins.replaceStrings ["/" "@"] ["_" ""] node2nixDev.packageName}-${node2nixDev.version}"; |
44 |
| - drv = runCommandNoCC name {} '' |
45 |
| - mkdir -p $out/lib/node_modules/${node2nixDev.packageName} |
| 13 | + '' |
| 14 | + mkdir -p $out/lib/node_modules/${utils.node2nixDev.packageName} |
46 | 15 | # copy only the dist
|
47 |
| - cp -r ${node2nixDev}/lib/node_modules/${node2nixDev.packageName}/dist $out/lib/node_modules/${node2nixDev.packageName}/ |
| 16 | + cp -r ${utils.node2nixDev}/lib/node_modules/${utils.node2nixDev.packageName}/dist $out/lib/node_modules/${utils.node2nixDev.packageName}/ |
48 | 17 | # copy over the production dependencies
|
49 |
| - if [ -d "${node2nixProd}/lib/node_modules" ]; then |
50 |
| - cp -r ${node2nixProd}/lib/node_modules $out/lib/node_modules/${node2nixDev.packageName}/ |
| 18 | + if [ -d "${utils.node2nixProd}/lib/node_modules" ]; then |
| 19 | + cp -r ${utils.node2nixProd}/lib/node_modules $out/lib/node_modules/${utils.node2nixDev.packageName}/ |
51 | 20 | fi
|
52 | 21 | # create symlink to the deployed executable folder, if applicable
|
53 |
| - if [ -d "${node2nixDev}/lib/node_modules/.bin" ]; then |
54 |
| - cp -r ${node2nixDev}/lib/node_modules/.bin $out/lib/node_modules/ |
| 22 | + if [ -d "${utils.node2nixDev}/lib/node_modules/.bin" ]; then |
| 23 | + cp -r ${utils.node2nixDev}/lib/node_modules/.bin $out/lib/node_modules/ |
55 | 24 | ln -s $out/lib/node_modules/.bin $out/bin
|
56 | 25 | fi
|
57 | 26 | '';
|
|
0 commit comments