-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdefault.nix
51 lines (50 loc) · 1.68 KB
/
default.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
{ runCommandNoCC
, callPackage
, jq
}:
let
utils = callPackage ./utils.nix {};
drv = runCommandNoCC
"${utils.basename}-${utils.node2nixDev.version}"
{
version = utils.node2nixDev.version;
packageName = utils.node2nixDev.packageName;
}
''
mkdir -p "$out/lib/node_modules/${utils.node2nixDev.packageName}"
# copy the package.json
cp \
"${utils.node2nixDev}/lib/node_modules/${utils.node2nixDev.packageName}/package.json" \
"$out/lib/node_modules/${utils.node2nixDev.packageName}/"
# copy the dist
cp -r \
"${utils.node2nixDev}/lib/node_modules/${utils.node2nixDev.packageName}/dist" \
"$out/lib/node_modules/${utils.node2nixDev.packageName}/"
# copy over the production dependencies
if [ -d "${utils.node2nixProd}/lib/node_modules" ]; then
cp -r \
"${utils.node2nixProd}/lib/node_modules" \
"$out/lib/node_modules/${utils.node2nixDev.packageName}/"
fi
# symlink bin executables
if [ \
"$(${jq}/bin/jq 'has("bin")' "$out/lib/node_modules/${utils.node2nixDev.packageName}/package.json")" \
== \
"true" \
]; then
mkdir -p "$out/bin"
while IFS= read -r bin_name && IFS= read -r bin_path; do
# make files executable
chmod a+x "$out/lib/node_modules/${utils.node2nixDev.packageName}/$bin_path"
# create the symlink
ln -s \
"../lib/node_modules/${utils.node2nixDev.packageName}/$bin_path" \
"$out/bin/$bin_name"
done < <(
${jq}/bin/jq -r 'select(.bin != null) | .bin | to_entries[] | (.key, .value)' \
"$out/lib/node_modules/${utils.node2nixDev.packageName}/package.json"
)
fi
'';
in
drv