git ssb

1+

mixmix / scuttle-shell



Commit a27315733afe4366e77105d0a3f1c3ba79296539

nixos installation files

use `npm run nix-make` to generate a newer node-packages.nix but be
aware of the diff to default.nix. You mostlikly need to revert those.

# Conflicts:
#	package-lock.json
Henry committed on 10/15/2018, 3:48:56 PM
Parent: dbc0192c7e9be5790de350e90f4558546a99bc97

Files changed

package.jsonchanged
default.nixadded
package-lock.jsondeleted
node-env.nixadded
node-packages.nixadded
supplement.jsonadded
supplement.nixadded
package.jsonView
@@ -50,9 +50,10 @@
5050 "check-win": "node scripts/check-configuration-win.js",
5151 "setup-win": "node scripts/setup-win.js",
5252 "check": "node scripts/check-configuration.js",
5353 "setup": "node scripts/setup.js",
54- "install": "node scripts/install.js"
54 + "install": "node scripts/install.js",
55 + "nix-make": "nix-shell -p nodePackages.node2nix --run 'node2nix -8 --supplement-input supplement.json --include-peer-dependencies'"
5556 },
5657 "optionalDependencies": {
5758 "mkdirp": "^0.5.1",
5859 "regedit": "^2.2.7"
default.nixView
@@ -1,0 +1,24 @@
1 +# This file has been generated by node2nix 1.6.0
2 +# but has been edited to include the systrayhelper
3 +
4 +{ pkgs ? import ~/nixpkgs { inherit system; }
5 +, system ? builtins.currentSystem
6 +, nodejs ? pkgs."nodejs-8_x"
7 +, systrayhelper ? pkgs.systrayhelper
8 +}:
9 +
10 +let
11 + globalBuildInputs = pkgs.lib.attrValues (import ./supplement.nix {
12 + inherit nodeEnv;
13 + inherit (pkgs) fetchurl fetchgit;
14 + }) ++ [ systrayhelper ];
15 + nodeEnv = import ./node-env.nix {
16 + inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
17 + inherit nodejs;
18 + libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
19 + };
20 +in
21 +import ./node-packages.nix {
22 + inherit (pkgs) fetchurl fetchgit;
23 + inherit nodeEnv globalBuildInputs;
24 +}
package-lock.jsonView
The diff is too large to show. Use a local git client to view these changes.
Old file size: 233966 bytes
New file size: 0 bytes
node-env.nixView
@@ -1,0 +1,542 @@
1 +# This file originates from node2nix
2 +
3 +{stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}:
4 +
5 +let
6 + python = if nodejs ? python then nodejs.python else python2;
7 +
8 + # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
9 + tarWrapper = runCommand "tarWrapper" {} ''
10 + mkdir -p $out/bin
11 +
12 + cat > $out/bin/tar <<EOF
13 + #! ${stdenv.shell} -e
14 + $(type -p tar) "\$@" --warning=no-unknown-keyword
15 + EOF
16 +
17 + chmod +x $out/bin/tar
18 + '';
19 +
20 + # Function that generates a TGZ file from a NPM project
21 + buildNodeSourceDist =
22 + { name, version, src, ... }:
23 +
24 + stdenv.mkDerivation {
25 + name = "node-tarball-${name}-${version}";
26 + inherit src;
27 + buildInputs = [ nodejs ];
28 + buildPhase = ''
29 + export HOME=$TMPDIR
30 + tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
31 + '';
32 + installPhase = ''
33 + mkdir -p $out/tarballs
34 + mv $tgzFile $out/tarballs
35 + mkdir -p $out/nix-support
36 + echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
37 + '';
38 + };
39 +
40 + includeDependencies = {dependencies}:
41 + stdenv.lib.optionalString (dependencies != [])
42 + (stdenv.lib.concatMapStrings (dependency:
43 + ''
44 + # Bundle the dependencies of the package
45 + mkdir -p node_modules
46 + cd node_modules
47 +
48 + # Only include dependencies if they don't exist. They may also be bundled in the package.
49 + if [ ! -e "${dependency.name}" ]
50 + then
51 + ${composePackage dependency}
52 + fi
53 +
54 + cd ..
55 + ''
56 + ) dependencies);
57 +
58 + # Recursively composes the dependencies of a package
59 + composePackage = { name, packageName, src, dependencies ? [], ... }@args:
60 + ''
61 + DIR=$(pwd)
62 + cd $TMPDIR
63 +
64 + unpackFile ${src}
65 +
66 + # Make the base dir in which the target dependency resides first
67 + mkdir -p "$(dirname "$DIR/${packageName}")"
68 +
69 + if [ -f "${src}" ]
70 + then
71 + # Figure out what directory has been unpacked
72 + packageDir="$(find . -maxdepth 1 -type d | tail -1)"
73 +
74 + # Restore write permissions to make building work
75 + find "$packageDir" -type d -print0 | xargs -0 chmod u+x
76 + chmod -R u+w "$packageDir"
77 +
78 + # Move the extracted tarball into the output folder
79 + mv "$packageDir" "$DIR/${packageName}"
80 + elif [ -d "${src}" ]
81 + then
82 + # Get a stripped name (without hash) of the source directory.
83 + # On old nixpkgs it's already set internally.
84 + if [ -z "$strippedName" ]
85 + then
86 + strippedName="$(stripHash ${src})"
87 + fi
88 +
89 + # Restore write permissions to make building work
90 + chmod -R u+w "$strippedName"
91 +
92 + # Move the extracted directory into the output folder
93 + mv "$strippedName" "$DIR/${packageName}"
94 + fi
95 +
96 + # Unset the stripped name to not confuse the next unpack step
97 + unset strippedName
98 +
99 + # Include the dependencies of the package
100 + cd "$DIR/${packageName}"
101 + ${includeDependencies { inherit dependencies; }}
102 + cd ..
103 + ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
104 + '';
105 +
106 + pinpointDependencies = {dependencies, production}:
107 + let
108 + pinpointDependenciesFromPackageJSON = writeTextFile {
109 + name = "pinpointDependencies.js";
110 + text = ''
111 + var fs = require('fs');
112 + var path = require('path');
113 +
114 + function resolveDependencyVersion(location, name) {
115 + if(location == process.env['NIX_STORE']) {
116 + return null;
117 + } else {
118 + var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
119 +
120 + if(fs.existsSync(dependencyPackageJSON)) {
121 + var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
122 +
123 + if(dependencyPackageObj.name == name) {
124 + return dependencyPackageObj.version;
125 + }
126 + } else {
127 + return resolveDependencyVersion(path.resolve(location, ".."), name);
128 + }
129 + }
130 + }
131 +
132 + function replaceDependencies(dependencies) {
133 + if(typeof dependencies == "object" && dependencies !== null) {
134 + for(var dependency in dependencies) {
135 + var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
136 +
137 + if(resolvedVersion === null) {
138 + process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
139 + } else {
140 + dependencies[dependency] = resolvedVersion;
141 + }
142 + }
143 + }
144 + }
145 +
146 + /* Read the package.json configuration */
147 + var packageObj = JSON.parse(fs.readFileSync('./package.json'));
148 +
149 + /* Pinpoint all dependencies */
150 + replaceDependencies(packageObj.dependencies);
151 + if(process.argv[2] == "development") {
152 + replaceDependencies(packageObj.devDependencies);
153 + }
154 + replaceDependencies(packageObj.optionalDependencies);
155 +
156 + /* Write the fixed package.json file */
157 + fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
158 + '';
159 + };
160 + in
161 + ''
162 + node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
163 +
164 + ${stdenv.lib.optionalString (dependencies != [])
165 + ''
166 + if [ -d node_modules ]
167 + then
168 + cd node_modules
169 + ${stdenv.lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
170 + cd ..
171 + fi
172 + ''}
173 + '';
174 +
175 + # Recursively traverses all dependencies of a package and pinpoints all
176 + # dependencies in the package.json file to the versions that are actually
177 + # being used.
178 +
179 + pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
180 + ''
181 + if [ -d "${packageName}" ]
182 + then
183 + cd "${packageName}"
184 + ${pinpointDependencies { inherit dependencies production; }}
185 + cd ..
186 + ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
187 + fi
188 + '';
189 +
190 + # Extract the Node.js source code which is used to compile packages with
191 + # native bindings
192 + nodeSources = runCommand "node-sources" {} ''
193 + tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
194 + mv node-* $out
195 + '';
196 +
197 + # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
198 + addIntegrityFieldsScript = writeTextFile {
199 + name = "addintegrityfields.js";
200 + text = ''
201 + var fs = require('fs');
202 + var path = require('path');
203 +
204 + function augmentDependencies(baseDir, dependencies) {
205 + for(var dependencyName in dependencies) {
206 + var dependency = dependencies[dependencyName];
207 +
208 + // Open package.json and augment metadata fields
209 + var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
210 + var packageJSONPath = path.join(packageJSONDir, "package.json");
211 +
212 + if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
213 + console.log("Adding metadata fields to: "+packageJSONPath);
214 + var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
215 +
216 + if(dependency.integrity) {
217 + packageObj["_integrity"] = dependency.integrity;
218 + } else {
219 + packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
220 + }
221 +
222 + packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
223 + fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
224 + }
225 +
226 + // Augment transitive dependencies
227 + if(dependency.dependencies !== undefined) {
228 + augmentDependencies(packageJSONDir, dependency.dependencies);
229 + }
230 + }
231 + }
232 +
233 + if(fs.existsSync("./package-lock.json")) {
234 + var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
235 +
236 + if(packageLock.lockfileVersion !== 1) {
237 + process.stderr.write("Sorry, I only understand lock file version 1!\n");
238 + process.exit(1);
239 + }
240 +
241 + if(packageLock.dependencies !== undefined) {
242 + augmentDependencies(".", packageLock.dependencies);
243 + }
244 + }
245 + '';
246 + };
247 +
248 + # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
249 + reconstructPackageLock = writeTextFile {
250 + name = "addintegrityfields.js";
251 + text = ''
252 + var fs = require('fs');
253 + var path = require('path');
254 +
255 + var packageObj = JSON.parse(fs.readFileSync("package.json"));
256 +
257 + var lockObj = {
258 + name: packageObj.name,
259 + version: packageObj.version,
260 + lockfileVersion: 1,
261 + requires: true,
262 + dependencies: {}
263 + };
264 +
265 + function augmentPackageJSON(filePath, dependencies) {
266 + var packageJSON = path.join(filePath, "package.json");
267 + if(fs.existsSync(packageJSON)) {
268 + var packageObj = JSON.parse(fs.readFileSync(packageJSON));
269 + dependencies[packageObj.name] = {
270 + version: packageObj.version,
271 + integrity: "sha1-000000000000000000000000000=",
272 + dependencies: {}
273 + };
274 + processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
275 + }
276 + }
277 +
278 + function processDependencies(dir, dependencies) {
279 + if(fs.existsSync(dir)) {
280 + var files = fs.readdirSync(dir);
281 +
282 + files.forEach(function(entry) {
283 + var filePath = path.join(dir, entry);
284 + var stats = fs.statSync(filePath);
285 +
286 + if(stats.isDirectory()) {
287 + if(entry.substr(0, 1) == "@") {
288 + // When we encounter a namespace folder, augment all packages belonging to the scope
289 + var pkgFiles = fs.readdirSync(filePath);
290 +
291 + pkgFiles.forEach(function(entry) {
292 + if(stats.isDirectory()) {
293 + var pkgFilePath = path.join(filePath, entry);
294 + augmentPackageJSON(pkgFilePath, dependencies);
295 + }
296 + });
297 + } else {
298 + augmentPackageJSON(filePath, dependencies);
299 + }
300 + }
301 + });
302 + }
303 + }
304 +
305 + processDependencies("node_modules", lockObj.dependencies);
306 +
307 + fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
308 + '';
309 + };
310 +
311 + # Builds and composes an NPM package including all its dependencies
312 + buildNodePackage =
313 + { name
314 + , packageName
315 + , version
316 + , dependencies ? []
317 + , buildInputs ? []
318 + , production ? true
319 + , npmFlags ? ""
320 + , dontNpmInstall ? false
321 + , bypassCache ? false
322 + , preRebuild ? ""
323 + , dontStrip ? true
324 + , unpackPhase ? "true"
325 + , buildPhase ? "true"
326 + , ... }@args:
327 +
328 + let
329 + forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
330 + extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
331 + in
332 + stdenv.mkDerivation ({
333 + name = "node-${name}-${version}";
334 + buildInputs = [ tarWrapper python nodejs ]
335 + ++ stdenv.lib.optional (stdenv.isLinux) utillinux
336 + ++ stdenv.lib.optional (stdenv.isDarwin) libtool
337 + ++ buildInputs;
338 +
339 + inherit dontStrip; # Stripping may fail a build for some package deployments
340 + inherit dontNpmInstall preRebuild unpackPhase buildPhase;
341 +
342 + compositionScript = composePackage args;
343 + pinpointDependenciesScript = pinpointDependenciesOfPackage args;
344 +
345 + passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
346 +
347 + installPhase = ''
348 + # Create and enter a root node_modules/ folder
349 + mkdir -p $out/lib/node_modules
350 + cd $out/lib/node_modules
351 +
352 + # Compose the package and all its dependencies
353 + source $compositionScriptPath
354 +
355 + # Pinpoint the versions of all dependencies to the ones that are actually being used
356 + echo "pinpointing versions of dependencies..."
357 + source $pinpointDependenciesScriptPath
358 +
359 + # Patch the shebangs of the bundled modules to prevent them from
360 + # calling executables outside the Nix store as much as possible
361 + patchShebangs .
362 +
363 + # Deploy the Node.js package by running npm install. Since the
364 + # dependencies have been provided already by ourselves, it should not
365 + # attempt to install them again, which is good, because we want to make
366 + # it Nix's responsibility. If it needs to install any dependencies
367 + # anyway (e.g. because the dependency parameters are
368 + # incomplete/incorrect), it fails.
369 + #
370 + # The other responsibilities of NPM are kept -- version checks, build
371 + # steps, postprocessing etc.
372 +
373 + export HOME=$TMPDIR
374 + cd "${packageName}"
375 + runHook preRebuild
376 +
377 + ${stdenv.lib.optionalString bypassCache ''
378 + if [ ! -f package-lock.json ]
379 + then
380 + echo "No package-lock.json file found, reconstructing..."
381 + node ${reconstructPackageLock}
382 + fi
383 +
384 + node ${addIntegrityFieldsScript}
385 + ''}
386 +
387 + npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
388 +
389 + if [ "$dontNpmInstall" != "1" ]
390 + then
391 + # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
392 + rm -f npm-shrinkwrap.json
393 +
394 + npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
395 + fi
396 +
397 + # Create symlink to the deployed executable folder, if applicable
398 + if [ -d "$out/lib/node_modules/.bin" ]
399 + then
400 + ln -s $out/lib/node_modules/.bin $out/bin
401 + fi
402 +
403 + # Create symlinks to the deployed manual page folders, if applicable
404 + if [ -d "$out/lib/node_modules/${packageName}/man" ]
405 + then
406 + mkdir -p $out/share
407 + for dir in "$out/lib/node_modules/${packageName}/man/"*
408 + do
409 + mkdir -p $out/share/man/$(basename "$dir")
410 + for page in "$dir"/*
411 + do
412 + ln -s $page $out/share/man/$(basename "$dir")
413 + done
414 + done
415 + fi
416 +
417 + # Run post install hook, if provided
418 + runHook postInstall
419 + '';
420 + } // extraArgs);
421 +
422 + # Builds a development shell
423 + buildNodeShell =
424 + { name
425 + , packageName
426 + , version
427 + , src
428 + , dependencies ? []
429 + , buildInputs ? []
430 + , production ? true
431 + , npmFlags ? ""
432 + , dontNpmInstall ? false
433 + , bypassCache ? false
434 + , dontStrip ? true
435 + , unpackPhase ? "true"
436 + , buildPhase ? "true"
437 + , ... }@args:
438 +
439 + let
440 + forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
441 +
442 + extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
443 +
444 + nodeDependencies = stdenv.mkDerivation ({
445 + name = "node-dependencies-${name}-${version}";
446 +
447 + buildInputs = [ tarWrapper python nodejs ]
448 + ++ stdenv.lib.optional (stdenv.isLinux) utillinux
449 + ++ stdenv.lib.optional (stdenv.isDarwin) libtool
450 + ++ buildInputs;
451 +
452 + inherit dontStrip; # Stripping may fail a build for some package deployments
453 + inherit dontNpmInstall unpackPhase buildPhase;
454 +
455 + includeScript = includeDependencies { inherit dependencies; };
456 + pinpointDependenciesScript = pinpointDependenciesOfPackage args;
457 +
458 + passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
459 +
460 + installPhase = ''
461 + mkdir -p $out/${packageName}
462 + cd $out/${packageName}
463 +
464 + source $includeScriptPath
465 +
466 + # Create fake package.json to make the npm commands work properly
467 + cp ${src}/package.json .
468 + chmod 644 package.json
469 + ${stdenv.lib.optionalString bypassCache ''
470 + if [ -f ${src}/package-lock.json ]
471 + then
472 + cp ${src}/package-lock.json .
473 + fi
474 + ''}
475 +
476 + # Pinpoint the versions of all dependencies to the ones that are actually being used
477 + echo "pinpointing versions of dependencies..."
478 + cd ..
479 + ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
480 +
481 + source $pinpointDependenciesScriptPath
482 + cd ${packageName}
483 +
484 + # Patch the shebangs of the bundled modules to prevent them from
485 + # calling executables outside the Nix store as much as possible
486 + patchShebangs .
487 +
488 + export HOME=$PWD
489 +
490 + ${stdenv.lib.optionalString bypassCache ''
491 + if [ ! -f package-lock.json ]
492 + then
493 + echo "No package-lock.json file found, reconstructing..."
494 + node ${reconstructPackageLock}
495 + fi
496 +
497 + node ${addIntegrityFieldsScript}
498 + ''}
499 +
500 + npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
501 +
502 + ${stdenv.lib.optionalString (!dontNpmInstall) ''
503 + # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
504 + rm -f npm-shrinkwrap.json
505 +
506 + npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
507 + ''}
508 +
509 + cd ..
510 + ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
511 +
512 + mv ${packageName} lib
513 + ln -s $out/lib/node_modules/.bin $out/bin
514 + '';
515 + } // extraArgs);
516 + in
517 + stdenv.mkDerivation {
518 + name = "node-shell-${name}-${version}";
519 +
520 + buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
521 + buildCommand = ''
522 + mkdir -p $out/bin
523 + cat > $out/bin/shell <<EOF
524 + #! ${stdenv.shell} -e
525 + $shellHook
526 + exec ${stdenv.shell}
527 + EOF
528 + chmod +x $out/bin/shell
529 + '';
530 +
531 + # Provide the dependencies in a development shell through the NODE_PATH environment variable
532 + inherit nodeDependencies;
533 + shellHook = stdenv.lib.optionalString (dependencies != []) ''
534 + export NODE_PATH=$nodeDependencies/lib/node_modules
535 + '';
536 + };
537 +in
538 +{
539 + buildNodeSourceDist = stdenv.lib.makeOverridable buildNodeSourceDist;
540 + buildNodePackage = stdenv.lib.makeOverridable buildNodePackage;
541 + buildNodeShell = stdenv.lib.makeOverridable buildNodeShell;
542 +}
node-packages.nixView
The diff is too large to show. Use a local git client to view these changes.
Old file size: 0 bytes
New file size: 213508 bytes
supplement.jsonView
@@ -1,0 +1,4 @@
1 +[
2 + "opencollective",
3 + "node-gyp-build"
4 +]
supplement.nixView
@@ -1,0 +1,502 @@
1 +# This file has been generated by node2nix 1.6.0. Do not edit!
2 +
3 +{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4 +
5 +let
6 + sources = {
7 + "ansi-escapes-1.4.0" = {
8 + name = "ansi-escapes";
9 + packageName = "ansi-escapes";
10 + version = "1.4.0";
11 + src = fetchurl {
12 + url = "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz";
13 + sha1 = "d3a8a83b319aa67793662b13e761c7911422306e";
14 + };
15 + };
16 + "ansi-regex-2.1.1" = {
17 + name = "ansi-regex";
18 + packageName = "ansi-regex";
19 + version = "2.1.1";
20 + src = fetchurl {
21 + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
22 + sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
23 + };
24 + };
25 + "ansi-regex-3.0.0" = {
26 + name = "ansi-regex";
27 + packageName = "ansi-regex";
28 + version = "3.0.0";
29 + src = fetchurl {
30 + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
31 + sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
32 + };
33 + };
34 + "ansi-styles-2.2.1" = {
35 + name = "ansi-styles";
36 + packageName = "ansi-styles";
37 + version = "2.2.1";
38 + src = fetchurl {
39 + url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
40 + sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
41 + };
42 + };
43 + "babel-polyfill-6.23.0" = {
44 + name = "babel-polyfill";
45 + packageName = "babel-polyfill";
46 + version = "6.23.0";
47 + src = fetchurl {
48 + url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz";
49 + sha1 = "8364ca62df8eafb830499f699177466c3b03499d";
50 + };
51 + };
52 + "babel-runtime-6.26.0" = {
53 + name = "babel-runtime";
54 + packageName = "babel-runtime";
55 + version = "6.26.0";
56 + src = fetchurl {
57 + url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
58 + sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
59 + };
60 + };
61 + "chalk-1.1.3" = {
62 + name = "chalk";
63 + packageName = "chalk";
64 + version = "1.1.3";
65 + src = fetchurl {
66 + url = "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
67 + sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
68 + };
69 + };
70 + "chardet-0.4.2" = {
71 + name = "chardet";
72 + packageName = "chardet";
73 + version = "0.4.2";
74 + src = fetchurl {
75 + url = "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz";
76 + sha1 = "b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2";
77 + };
78 + };
79 + "cli-cursor-2.1.0" = {
80 + name = "cli-cursor";
81 + packageName = "cli-cursor";
82 + version = "2.1.0";
83 + src = fetchurl {
84 + url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz";
85 + sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5";
86 + };
87 + };
88 + "cli-width-2.2.0" = {
89 + name = "cli-width";
90 + packageName = "cli-width";
91 + version = "2.2.0";
92 + src = fetchurl {
93 + url = "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz";
94 + sha1 = "ff19ede8a9a5e579324147b0c11f0fbcbabed639";
95 + };
96 + };
97 + "core-js-2.5.7" = {
98 + name = "core-js";
99 + packageName = "core-js";
100 + version = "2.5.7";
101 + src = fetchurl {
102 + url = "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz";
103 + sha512 = "RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==";
104 + };
105 + };
106 + "encoding-0.1.12" = {
107 + name = "encoding";
108 + packageName = "encoding";
109 + version = "0.1.12";
110 + src = fetchurl {
111 + url = "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz";
112 + sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
113 + };
114 + };
115 + "escape-string-regexp-1.0.5" = {
116 + name = "escape-string-regexp";
117 + packageName = "escape-string-regexp";
118 + version = "1.0.5";
119 + src = fetchurl {
120 + url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
121 + sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
122 + };
123 + };
124 + "external-editor-2.2.0" = {
125 + name = "external-editor";
126 + packageName = "external-editor";
127 + version = "2.2.0";
128 + src = fetchurl {
129 + url = "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz";
130 + sha512 = "bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==";
131 + };
132 + };
133 + "figures-2.0.0" = {
134 + name = "figures";
135 + packageName = "figures";
136 + version = "2.0.0";
137 + src = fetchurl {
138 + url = "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz";
139 + sha1 = "3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962";
140 + };
141 + };
142 + "has-ansi-2.0.0" = {
143 + name = "has-ansi";
144 + packageName = "has-ansi";
145 + version = "2.0.0";
146 + src = fetchurl {
147 + url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
148 + sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
149 + };
150 + };
151 + "iconv-lite-0.4.24" = {
152 + name = "iconv-lite";
153 + packageName = "iconv-lite";
154 + version = "0.4.24";
155 + src = fetchurl {
156 + url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
157 + sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
158 + };
159 + };
160 + "inquirer-3.0.6" = {
161 + name = "inquirer";
162 + packageName = "inquirer";
163 + version = "3.0.6";
164 + src = fetchurl {
165 + url = "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz";
166 + sha1 = "e04aaa9d05b7a3cb9b0f407d04375f0447190347";
167 + };
168 + };
169 + "is-fullwidth-code-point-2.0.0" = {
170 + name = "is-fullwidth-code-point";
171 + packageName = "is-fullwidth-code-point";
172 + version = "2.0.0";
173 + src = fetchurl {
174 + url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
175 + sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
176 + };
177 + };
178 + "is-promise-2.1.0" = {
179 + name = "is-promise";
180 + packageName = "is-promise";
181 + version = "2.1.0";
182 + src = fetchurl {
183 + url = "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz";
184 + sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
185 + };
186 + };
187 + "is-stream-1.1.0" = {
188 + name = "is-stream";
189 + packageName = "is-stream";
190 + version = "1.1.0";
191 + src = fetchurl {
192 + url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz";
193 + sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
194 + };
195 + };
196 + "lodash-4.17.11" = {
197 + name = "lodash";
198 + packageName = "lodash";
199 + version = "4.17.11";
200 + src = fetchurl {
201 + url = "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz";
202 + sha512 = "cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==";
203 + };
204 + };
205 + "mimic-fn-1.2.0" = {
206 + name = "mimic-fn";
207 + packageName = "mimic-fn";
208 + version = "1.2.0";
209 + src = fetchurl {
210 + url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz";
211 + sha512 = "jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==";
212 + };
213 + };
214 + "minimist-1.2.0" = {
215 + name = "minimist";
216 + packageName = "minimist";
217 + version = "1.2.0";
218 + src = fetchurl {
219 + url = "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz";
220 + sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
221 + };
222 + };
223 + "mute-stream-0.0.7" = {
224 + name = "mute-stream";
225 + packageName = "mute-stream";
226 + version = "0.0.7";
227 + src = fetchurl {
228 + url = "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz";
229 + sha1 = "3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab";
230 + };
231 + };
232 + "node-fetch-1.6.3" = {
233 + name = "node-fetch";
234 + packageName = "node-fetch";
235 + version = "1.6.3";
236 + src = fetchurl {
237 + url = "http://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz";
238 + sha1 = "dc234edd6489982d58e8f0db4f695029abcd8c04";
239 + };
240 + };
241 + "object-assign-4.1.1" = {
242 + name = "object-assign";
243 + packageName = "object-assign";
244 + version = "4.1.1";
245 + src = fetchurl {
246 + url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
247 + sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
248 + };
249 + };
250 + "onetime-2.0.1" = {
251 + name = "onetime";
252 + packageName = "onetime";
253 + version = "2.0.1";
254 + src = fetchurl {
255 + url = "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz";
256 + sha1 = "067428230fd67443b2794b22bba528b6867962d4";
257 + };
258 + };
259 + "opn-4.0.2" = {
260 + name = "opn";
261 + packageName = "opn";
262 + version = "4.0.2";
263 + src = fetchurl {
264 + url = "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz";
265 + sha1 = "7abc22e644dff63b0a96d5ab7f2790c0f01abc95";
266 + };
267 + };
268 + "os-tmpdir-1.0.2" = {
269 + name = "os-tmpdir";
270 + packageName = "os-tmpdir";
271 + version = "1.0.2";
272 + src = fetchurl {
273 + url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
274 + sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
275 + };
276 + };
277 + "pinkie-2.0.4" = {
278 + name = "pinkie";
279 + packageName = "pinkie";
280 + version = "2.0.4";
281 + src = fetchurl {
282 + url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
283 + sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
284 + };
285 + };
286 + "pinkie-promise-2.0.1" = {
287 + name = "pinkie-promise";
288 + packageName = "pinkie-promise";
289 + version = "2.0.1";
290 + src = fetchurl {
291 + url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
292 + sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
293 + };
294 + };
295 + "regenerator-runtime-0.10.5" = {
296 + name = "regenerator-runtime";
297 + packageName = "regenerator-runtime";
298 + version = "0.10.5";
299 + src = fetchurl {
300 + url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz";
301 + sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658";
302 + };
303 + };
304 + "regenerator-runtime-0.11.1" = {
305 + name = "regenerator-runtime";
306 + packageName = "regenerator-runtime";
307 + version = "0.11.1";
308 + src = fetchurl {
309 + url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
310 + sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==";
311 + };
312 + };
313 + "restore-cursor-2.0.0" = {
314 + name = "restore-cursor";
315 + packageName = "restore-cursor";
316 + version = "2.0.0";
317 + src = fetchurl {
318 + url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz";
319 + sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf";
320 + };
321 + };
322 + "run-async-2.3.0" = {
323 + name = "run-async";
324 + packageName = "run-async";
325 + version = "2.3.0";
326 + src = fetchurl {
327 + url = "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz";
328 + sha1 = "0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0";
329 + };
330 + };
331 + "rx-4.1.0" = {
332 + name = "rx";
333 + packageName = "rx";
334 + version = "4.1.0";
335 + src = fetchurl {
336 + url = "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz";
337 + sha1 = "a5f13ff79ef3b740fe30aa803fb09f98805d4782";
338 + };
339 + };
340 + "safer-buffer-2.1.2" = {
341 + name = "safer-buffer";
342 + packageName = "safer-buffer";
343 + version = "2.1.2";
344 + src = fetchurl {
345 + url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
346 + sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
347 + };
348 + };
349 + "signal-exit-3.0.2" = {
350 + name = "signal-exit";
351 + packageName = "signal-exit";
352 + version = "3.0.2";
353 + src = fetchurl {
354 + url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz";
355 + sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
356 + };
357 + };
358 + "string-width-2.1.1" = {
359 + name = "string-width";
360 + packageName = "string-width";
361 + version = "2.1.1";
362 + src = fetchurl {
363 + url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz";
364 + sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==";
365 + };
366 + };
367 + "strip-ansi-3.0.1" = {
368 + name = "strip-ansi";
369 + packageName = "strip-ansi";
370 + version = "3.0.1";
371 + src = fetchurl {
372 + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
373 + sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
374 + };
375 + };
376 + "strip-ansi-4.0.0" = {
377 + name = "strip-ansi";
378 + packageName = "strip-ansi";
379 + version = "4.0.0";
380 + src = fetchurl {
381 + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
382 + sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
383 + };
384 + };
385 + "supports-color-2.0.0" = {
386 + name = "supports-color";
387 + packageName = "supports-color";
388 + version = "2.0.0";
389 + src = fetchurl {
390 + url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
391 + sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
392 + };
393 + };
394 + "through-2.3.8" = {
395 + name = "through";
396 + packageName = "through";
397 + version = "2.3.8";
398 + src = fetchurl {
399 + url = "http://registry.npmjs.org/through/-/through-2.3.8.tgz";
400 + sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
401 + };
402 + };
403 + "tmp-0.0.33" = {
404 + name = "tmp";
405 + packageName = "tmp";
406 + version = "0.0.33";
407 + src = fetchurl {
408 + url = "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz";
409 + sha512 = "jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==";
410 + };
411 + };
412 + };
413 +in
414 +{
415 + opencollective = nodeEnv.buildNodePackage {
416 + name = "opencollective";
417 + packageName = "opencollective";
418 + version = "1.0.3";
419 + src = fetchurl {
420 + url = "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz";
421 + sha1 = "aee6372bc28144583690c3ca8daecfc120dd0ef1";
422 + };
423 + dependencies = [
424 + sources."ansi-escapes-1.4.0"
425 + sources."ansi-regex-2.1.1"
426 + sources."ansi-styles-2.2.1"
427 + sources."babel-polyfill-6.23.0"
428 + (sources."babel-runtime-6.26.0" // {
429 + dependencies = [
430 + sources."regenerator-runtime-0.11.1"
431 + ];
432 + })
433 + sources."chalk-1.1.3"
434 + sources."chardet-0.4.2"
435 + sources."cli-cursor-2.1.0"
436 + sources."cli-width-2.2.0"
437 + sources."core-js-2.5.7"
438 + sources."encoding-0.1.12"
439 + sources."escape-string-regexp-1.0.5"
440 + sources."external-editor-2.2.0"
441 + sources."figures-2.0.0"
442 + sources."has-ansi-2.0.0"
443 + sources."iconv-lite-0.4.24"
444 + sources."inquirer-3.0.6"
445 + sources."is-fullwidth-code-point-2.0.0"
446 + sources."is-promise-2.1.0"
447 + sources."is-stream-1.1.0"
448 + sources."lodash-4.17.11"
449 + sources."mimic-fn-1.2.0"
450 + sources."minimist-1.2.0"
451 + sources."mute-stream-0.0.7"
452 + sources."node-fetch-1.6.3"
453 + sources."object-assign-4.1.1"
454 + sources."onetime-2.0.1"
455 + sources."opn-4.0.2"
456 + sources."os-tmpdir-1.0.2"
457 + sources."pinkie-2.0.4"
458 + sources."pinkie-promise-2.0.1"
459 + sources."regenerator-runtime-0.10.5"
460 + sources."restore-cursor-2.0.0"
461 + sources."run-async-2.3.0"
462 + sources."rx-4.1.0"
463 + sources."safer-buffer-2.1.2"
464 + sources."signal-exit-3.0.2"
465 + (sources."string-width-2.1.1" // {
466 + dependencies = [
467 + sources."ansi-regex-3.0.0"
468 + sources."strip-ansi-4.0.0"
469 + ];
470 + })
471 + sources."strip-ansi-3.0.1"
472 + sources."supports-color-2.0.0"
473 + sources."through-2.3.8"
474 + sources."tmp-0.0.33"
475 + ];
476 + buildInputs = globalBuildInputs;
477 + meta = {
478 + description = "Official Command Line Interface for Open Collective";
479 + homepage = "https://github.com/opencollective/opencollective-cli#readme";
480 + license = "MIT";
481 + };
482 + production = true;
483 + bypassCache = true;
484 + };
485 + node-gyp-build = nodeEnv.buildNodePackage {
486 + name = "node-gyp-build";
487 + packageName = "node-gyp-build";
488 + version = "3.4.0";
489 + src = fetchurl {
490 + url = "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.4.0.tgz";
491 + sha512 = "YoviGBJYGrPdLOKDIQB0sKxuKy/EEsxzooNkOZak4vSTKT/qH0Pa6dj3t1MJjEQGsefih61IyHDmO1WW7xOFfw==";
492 + };
493 + buildInputs = globalBuildInputs;
494 + meta = {
495 + description = "Build tool and bindings loader for node-gyp that supports prebuilds";
496 + homepage = https://github.com/mafintosh/node-gyp-build;
497 + license = "MIT";
498 + };
499 + production = true;
500 + bypassCache = true;
501 + };
502 +}

Built with git-ssb-web