Drop license-checker from dev-env (#12909)

No reason to keep a custom nix deriv around for something we don’t
use.

changelog_begin
changelog_end
This commit is contained in:
Moritz Kiefer 2022-02-14 13:50:12 +01:00 committed by GitHub
parent cc4c06c640
commit 6a585c9eca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 0 additions and 1158 deletions

View File

@ -109,9 +109,6 @@ in rec {
node2nix = pkgs.nodePackages.node2nix;
license-checker =
(import ./tools/license-checker { inherit pkgs; nodejs = tools.node; }).license-checker;
chromedriver = pkgs.chromedriver;
# Python development

View File

@ -1,3 +0,0 @@
These files have been generated with:
$ node2nix --nodejs-8 -i node-packages.json

View File

@ -1,17 +0,0 @@
# This file has been generated by node2nix 1.6.0. Do not edit!
{pkgs ? import <nixpkgs> {
inherit system;
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-8_x"}:
let
nodeEnv = import ./node-env.nix {
inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile lib;
inherit nodejs;
libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
};
in
import ./node-packages.nix {
inherit (pkgs) fetchurl fetchgit;
inherit nodeEnv;
}

View File

@ -1,542 +0,0 @@
# This file originates from node2nix
{lib, stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}:
let
python = if nodejs ? python then nodejs.python else python2;
# Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
tarWrapper = runCommand "tarWrapper" {} ''
mkdir -p $out/bin
cat > $out/bin/tar <<EOF
#! ${stdenv.shell} -e
$(type -p tar) "\$@" --warning=no-unknown-keyword
EOF
chmod +x $out/bin/tar
'';
# Function that generates a TGZ file from a NPM project
buildNodeSourceDist =
{ name, version, src, ... }:
stdenv.mkDerivation {
name = "node-tarball-${name}-${version}";
inherit src;
buildInputs = [ nodejs ];
buildPhase = ''
export HOME=$TMPDIR
tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
'';
installPhase = ''
mkdir -p $out/tarballs
mv $tgzFile $out/tarballs
mkdir -p $out/nix-support
echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
'';
};
includeDependencies = {dependencies}:
lib.optionalString (dependencies != [])
(lib.concatMapStrings (dependency:
''
# Bundle the dependencies of the package
mkdir -p node_modules
cd node_modules
# Only include dependencies if they don't exist. They may also be bundled in the package.
if [ ! -e "${dependency.name}" ]
then
${composePackage dependency}
fi
cd ..
''
) dependencies);
# Recursively composes the dependencies of a package
composePackage = { name, packageName, src, dependencies ? [], ... }@args:
''
DIR=$(pwd)
cd $TMPDIR
unpackFile ${src}
# Make the base dir in which the target dependency resides first
mkdir -p "$(dirname "$DIR/${packageName}")"
if [ -f "${src}" ]
then
# Figure out what directory has been unpacked
packageDir="$(find . -maxdepth 1 -type d | tail -1)"
# Restore write permissions to make building work
find "$packageDir" -type d -print0 | xargs -0 chmod u+x
chmod -R u+w "$packageDir"
# Move the extracted tarball into the output folder
mv "$packageDir" "$DIR/${packageName}"
elif [ -d "${src}" ]
then
# Get a stripped name (without hash) of the source directory.
# On old nixpkgs it's already set internally.
if [ -z "$strippedName" ]
then
strippedName="$(stripHash ${src})"
fi
# Restore write permissions to make building work
chmod -R u+w "$strippedName"
# Move the extracted directory into the output folder
mv "$strippedName" "$DIR/${packageName}"
fi
# Unset the stripped name to not confuse the next unpack step
unset strippedName
# Include the dependencies of the package
cd "$DIR/${packageName}"
${includeDependencies { inherit dependencies; }}
cd ..
${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
'';
pinpointDependencies = {dependencies, production}:
let
pinpointDependenciesFromPackageJSON = writeTextFile {
name = "pinpointDependencies.js";
text = ''
var fs = require('fs');
var path = require('path');
function resolveDependencyVersion(location, name) {
if(location == process.env['NIX_STORE']) {
return null;
} else {
var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
if(fs.existsSync(dependencyPackageJSON)) {
var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
if(dependencyPackageObj.name == name) {
return dependencyPackageObj.version;
}
} else {
return resolveDependencyVersion(path.resolve(location, ".."), name);
}
}
}
function replaceDependencies(dependencies) {
if(typeof dependencies == "object" && dependencies !== null) {
for(var dependency in dependencies) {
var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
if(resolvedVersion === null) {
process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
} else {
dependencies[dependency] = resolvedVersion;
}
}
}
}
/* Read the package.json configuration */
var packageObj = JSON.parse(fs.readFileSync('./package.json'));
/* Pinpoint all dependencies */
replaceDependencies(packageObj.dependencies);
if(process.argv[2] == "development") {
replaceDependencies(packageObj.devDependencies);
}
replaceDependencies(packageObj.optionalDependencies);
/* Write the fixed package.json file */
fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
'';
};
in
''
node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
${lib.optionalString (dependencies != [])
''
if [ -d node_modules ]
then
cd node_modules
${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
cd ..
fi
''}
'';
# Recursively traverses all dependencies of a package and pinpoints all
# dependencies in the package.json file to the versions that are actually
# being used.
pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
''
if [ -d "${packageName}" ]
then
cd "${packageName}"
${pinpointDependencies { inherit dependencies production; }}
cd ..
${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
fi
'';
# Extract the Node.js source code which is used to compile packages with
# native bindings
nodeSources = runCommand "node-sources" {} ''
tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
mv node-* $out
'';
# Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
addIntegrityFieldsScript = writeTextFile {
name = "addintegrityfields.js";
text = ''
var fs = require('fs');
var path = require('path');
function augmentDependencies(baseDir, dependencies) {
for(var dependencyName in dependencies) {
var dependency = dependencies[dependencyName];
// Open package.json and augment metadata fields
var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
var packageJSONPath = path.join(packageJSONDir, "package.json");
if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
console.log("Adding metadata fields to: "+packageJSONPath);
var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
if(dependency.integrity) {
packageObj["_integrity"] = dependency.integrity;
} else {
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.
}
packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
}
// Augment transitive dependencies
if(dependency.dependencies !== undefined) {
augmentDependencies(packageJSONDir, dependency.dependencies);
}
}
}
if(fs.existsSync("./package-lock.json")) {
var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
if(packageLock.lockfileVersion !== 1) {
process.stderr.write("Sorry, I only understand lock file version 1!\n");
process.exit(1);
}
if(packageLock.dependencies !== undefined) {
augmentDependencies(".", packageLock.dependencies);
}
}
'';
};
# Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
reconstructPackageLock = writeTextFile {
name = "addintegrityfields.js";
text = ''
var fs = require('fs');
var path = require('path');
var packageObj = JSON.parse(fs.readFileSync("package.json"));
var lockObj = {
name: packageObj.name,
version: packageObj.version,
lockfileVersion: 1,
requires: true,
dependencies: {}
};
function augmentPackageJSON(filePath, dependencies) {
var packageJSON = path.join(filePath, "package.json");
if(fs.existsSync(packageJSON)) {
var packageObj = JSON.parse(fs.readFileSync(packageJSON));
dependencies[packageObj.name] = {
version: packageObj.version,
integrity: "sha1-000000000000000000000000000=",
dependencies: {}
};
processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
}
}
function processDependencies(dir, dependencies) {
if(fs.existsSync(dir)) {
var files = fs.readdirSync(dir);
files.forEach(function(entry) {
var filePath = path.join(dir, entry);
var stats = fs.statSync(filePath);
if(stats.isDirectory()) {
if(entry.substr(0, 1) == "@") {
// When we encounter a namespace folder, augment all packages belonging to the scope
var pkgFiles = fs.readdirSync(filePath);
pkgFiles.forEach(function(entry) {
if(stats.isDirectory()) {
var pkgFilePath = path.join(filePath, entry);
augmentPackageJSON(pkgFilePath, dependencies);
}
});
} else {
augmentPackageJSON(filePath, dependencies);
}
}
});
}
}
processDependencies("node_modules", lockObj.dependencies);
fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
'';
};
# Builds and composes an NPM package including all its dependencies
buildNodePackage =
{ name
, packageName
, version
, dependencies ? []
, buildInputs ? []
, production ? true
, npmFlags ? ""
, dontNpmInstall ? false
, bypassCache ? false
, preRebuild ? ""
, dontStrip ? true
, unpackPhase ? "true"
, buildPhase ? "true"
, ... }@args:
let
forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
in
stdenv.mkDerivation ({
name = "node-${name}-${version}";
buildInputs = [ tarWrapper python nodejs ]
++ lib.optional (stdenv.isLinux) utillinux
++ lib.optional (stdenv.isDarwin) libtool
++ buildInputs;
inherit dontStrip; # Stripping may fail a build for some package deployments
inherit dontNpmInstall preRebuild unpackPhase buildPhase;
compositionScript = composePackage args;
pinpointDependenciesScript = pinpointDependenciesOfPackage args;
passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
installPhase = ''
# Create and enter a root node_modules/ folder
mkdir -p $out/lib/node_modules
cd $out/lib/node_modules
# Compose the package and all its dependencies
source $compositionScriptPath
# Pinpoint the versions of all dependencies to the ones that are actually being used
echo "pinpointing versions of dependencies..."
source $pinpointDependenciesScriptPath
# Patch the shebangs of the bundled modules to prevent them from
# calling executables outside the Nix store as much as possible
patchShebangs .
# Deploy the Node.js package by running npm install. Since the
# dependencies have been provided already by ourselves, it should not
# attempt to install them again, which is good, because we want to make
# it Nix's responsibility. If it needs to install any dependencies
# anyway (e.g. because the dependency parameters are
# incomplete/incorrect), it fails.
#
# The other responsibilities of NPM are kept -- version checks, build
# steps, postprocessing etc.
export HOME=$TMPDIR
cd "${packageName}"
runHook preRebuild
${lib.optionalString bypassCache ''
if [ ! -f package-lock.json ]
then
echo "No package-lock.json file found, reconstructing..."
node ${reconstructPackageLock}
fi
node ${addIntegrityFieldsScript}
''}
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
if [ "$dontNpmInstall" != "1" ]
then
# NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
rm -f npm-shrinkwrap.json
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install
fi
# Create symlink to the deployed executable folder, if applicable
if [ -d "$out/lib/node_modules/.bin" ]
then
ln -s $out/lib/node_modules/.bin $out/bin
fi
# Create symlinks to the deployed manual page folders, if applicable
if [ -d "$out/lib/node_modules/${packageName}/man" ]
then
mkdir -p $out/share
for dir in "$out/lib/node_modules/${packageName}/man/"*
do
mkdir -p $out/share/man/$(basename "$dir")
for page in "$dir"/*
do
ln -s $page $out/share/man/$(basename "$dir")
done
done
fi
# Run post install hook, if provided
runHook postInstall
'';
} // extraArgs);
# Builds a development shell
buildNodeShell =
{ name
, packageName
, version
, src
, dependencies ? []
, buildInputs ? []
, production ? true
, npmFlags ? ""
, dontNpmInstall ? false
, bypassCache ? false
, dontStrip ? true
, unpackPhase ? "true"
, buildPhase ? "true"
, ... }@args:
let
forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
nodeDependencies = stdenv.mkDerivation ({
name = "node-dependencies-${name}-${version}";
buildInputs = [ tarWrapper python nodejs ]
++ lib.optional (stdenv.isLinux) utillinux
++ lib.optional (stdenv.isDarwin) libtool
++ buildInputs;
inherit dontStrip; # Stripping may fail a build for some package deployments
inherit dontNpmInstall unpackPhase buildPhase;
includeScript = includeDependencies { inherit dependencies; };
pinpointDependenciesScript = pinpointDependenciesOfPackage args;
passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
installPhase = ''
mkdir -p $out/${packageName}
cd $out/${packageName}
source $includeScriptPath
# Create fake package.json to make the npm commands work properly
cp ${src}/package.json .
chmod 644 package.json
${lib.optionalString bypassCache ''
if [ -f ${src}/package-lock.json ]
then
cp ${src}/package-lock.json .
fi
''}
# Pinpoint the versions of all dependencies to the ones that are actually being used
echo "pinpointing versions of dependencies..."
cd ..
${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
source $pinpointDependenciesScriptPath
cd ${packageName}
# Patch the shebangs of the bundled modules to prevent them from
# calling executables outside the Nix store as much as possible
patchShebangs .
export HOME=$PWD
${lib.optionalString bypassCache ''
if [ ! -f package-lock.json ]
then
echo "No package-lock.json file found, reconstructing..."
node ${reconstructPackageLock}
fi
node ${addIntegrityFieldsScript}
''}
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
${lib.optionalString (!dontNpmInstall) ''
# NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
rm -f npm-shrinkwrap.json
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install
''}
cd ..
${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
mv ${packageName} lib
ln -s $out/lib/node_modules/.bin $out/bin
'';
} // extraArgs);
in
stdenv.mkDerivation {
name = "node-shell-${name}-${version}";
buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
buildCommand = ''
mkdir -p $out/bin
cat > $out/bin/shell <<EOF
#! ${stdenv.shell} -e
$shellHook
exec ${stdenv.shell}
EOF
chmod +x $out/bin/shell
'';
# Provide the dependencies in a development shell through the NODE_PATH environment variable
inherit nodeDependencies;
shellHook = lib.optionalString (dependencies != []) ''
export NODE_PATH=$nodeDependencies/lib/node_modules
'';
};
in
{
buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist;
buildNodePackage = lib.makeOverridable buildNodePackage;
buildNodeShell = lib.makeOverridable buildNodeShell;
}

View File

@ -1 +0,0 @@
[ "license-checker" ]

View File

@ -1,592 +0,0 @@
# This file has been generated by node2nix 1.6.0. Do not edit!
{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
let
sources = {
"abbrev-1.1.1" = {
name = "abbrev";
packageName = "abbrev";
version = "1.1.1";
src = fetchurl {
url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
};
};
"ansi-styles-3.2.1" = {
name = "ansi-styles";
packageName = "ansi-styles";
version = "3.2.1";
src = fetchurl {
url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz";
sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==";
};
};
"array-find-index-1.0.2" = {
name = "array-find-index";
packageName = "array-find-index";
version = "1.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz";
sha1 = "df010aa1287e164bbda6f9723b0a96a1ec4187a1";
};
};
"asap-2.0.6" = {
name = "asap";
packageName = "asap";
version = "2.0.6";
src = fetchurl {
url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz";
sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
};
};
"balanced-match-1.0.0" = {
name = "balanced-match";
packageName = "balanced-match";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
};
};
"brace-expansion-1.1.11" = {
name = "brace-expansion";
packageName = "brace-expansion";
version = "1.1.11";
src = fetchurl {
url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
};
};
"builtin-modules-1.1.1" = {
name = "builtin-modules";
packageName = "builtin-modules";
version = "1.1.1";
src = fetchurl {
url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz";
sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
};
};
"chalk-2.4.1" = {
name = "chalk";
packageName = "chalk";
version = "2.4.1";
src = fetchurl {
url = "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz";
sha512 = "ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==";
};
};
"color-convert-1.9.3" = {
name = "color-convert";
packageName = "color-convert";
version = "1.9.3";
src = fetchurl {
url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz";
sha512 = "QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==";
};
};
"color-name-1.1.3" = {
name = "color-name";
packageName = "color-name";
version = "1.1.3";
src = fetchurl {
url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
};
};
"concat-map-0.0.1" = {
name = "concat-map";
packageName = "concat-map";
version = "0.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
};
};
"debug-3.2.6" = {
name = "debug";
packageName = "debug";
version = "3.2.6";
src = fetchurl {
url = "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz";
sha512 = "mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==";
};
};
"debuglog-1.0.1" = {
name = "debuglog";
packageName = "debuglog";
version = "1.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz";
sha1 = "aa24ffb9ac3df9a2351837cfb2d279360cd78492";
};
};
"dezalgo-1.0.3" = {
name = "dezalgo";
packageName = "dezalgo";
version = "1.0.3";
src = fetchurl {
url = "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz";
sha1 = "7f742de066fc748bc8db820569dddce49bf0d456";
};
};
"escape-string-regexp-1.0.5" = {
name = "escape-string-regexp";
packageName = "escape-string-regexp";
version = "1.0.5";
src = fetchurl {
url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
};
};
"fs.realpath-1.0.0" = {
name = "fs.realpath";
packageName = "fs.realpath";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
};
};
"glob-7.1.3" = {
name = "glob";
packageName = "glob";
version = "7.1.3";
src = fetchurl {
url = "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz";
sha512 = "vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==";
};
};
"graceful-fs-4.1.15" = {
name = "graceful-fs";
packageName = "graceful-fs";
version = "4.1.15";
src = fetchurl {
url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz";
sha512 = "6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==";
};
};
"has-flag-3.0.0" = {
name = "has-flag";
packageName = "has-flag";
version = "3.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz";
sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
};
};
"hosted-git-info-2.7.1" = {
name = "hosted-git-info";
packageName = "hosted-git-info";
version = "2.7.1";
src = fetchurl {
url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz";
sha512 = "7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==";
};
};
"inflight-1.0.6" = {
name = "inflight";
packageName = "inflight";
version = "1.0.6";
src = fetchurl {
url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
};
};
"inherits-2.0.3" = {
name = "inherits";
packageName = "inherits";
version = "2.0.3";
src = fetchurl {
url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
sha1 = "633c2c83e3da42a502f52466022480f4208261de";
};
};
"is-builtin-module-1.0.0" = {
name = "is-builtin-module";
packageName = "is-builtin-module";
version = "1.0.0";
src = fetchurl {
url = "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
};
};
"json-parse-better-errors-1.0.2" = {
name = "json-parse-better-errors";
packageName = "json-parse-better-errors";
version = "1.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
sha512 = "mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==";
};
};
"minimatch-3.0.4" = {
name = "minimatch";
packageName = "minimatch";
version = "3.0.4";
src = fetchurl {
url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
};
};
"minimist-0.0.8" = {
name = "minimist";
packageName = "minimist";
version = "0.0.8";
src = fetchurl {
url = "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
};
};
"mkdirp-0.5.1" = {
name = "mkdirp";
packageName = "mkdirp";
version = "0.5.1";
src = fetchurl {
url = "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
};
};
"ms-2.1.1" = {
name = "ms";
packageName = "ms";
version = "2.1.1";
src = fetchurl {
url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==";
};
};
"nopt-4.0.1" = {
name = "nopt";
packageName = "nopt";
version = "4.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz";
sha1 = "d0d4685afd5415193c8c7505602d0d17cd64474d";
};
};
"normalize-package-data-2.4.0" = {
name = "normalize-package-data";
packageName = "normalize-package-data";
version = "2.4.0";
src = fetchurl {
url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
sha512 = "9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==";
};
};
"once-1.4.0" = {
name = "once";
packageName = "once";
version = "1.4.0";
src = fetchurl {
url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
};
};
"os-homedir-1.0.2" = {
name = "os-homedir";
packageName = "os-homedir";
version = "1.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
};
};
"os-tmpdir-1.0.2" = {
name = "os-tmpdir";
packageName = "os-tmpdir";
version = "1.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
};
};
"osenv-0.1.5" = {
name = "osenv";
packageName = "osenv";
version = "0.1.5";
src = fetchurl {
url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
};
};
"path-is-absolute-1.0.1" = {
name = "path-is-absolute";
packageName = "path-is-absolute";
version = "1.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
};
};
"read-installed-4.0.3" = {
name = "read-installed";
packageName = "read-installed";
version = "4.0.3";
src = fetchurl {
url = "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz";
sha1 = "ff9b8b67f187d1e4c29b9feb31f6b223acd19067";
};
};
"read-package-json-2.0.13" = {
name = "read-package-json";
packageName = "read-package-json";
version = "2.0.13";
src = fetchurl {
url = "https://registry.npmjs.org/read-package-json/-/read-package-json-2.0.13.tgz";
sha512 = "/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==";
};
};
"readdir-scoped-modules-1.0.2" = {
name = "readdir-scoped-modules";
packageName = "readdir-scoped-modules";
version = "1.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz";
sha1 = "9fafa37d286be5d92cbaebdee030dc9b5f406747";
};
};
"semver-5.6.0" = {
name = "semver";
packageName = "semver";
version = "5.6.0";
src = fetchurl {
url = "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz";
sha512 = "RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==";
};
};
"slash-1.0.0" = {
name = "slash";
packageName = "slash";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz";
sha1 = "c41f2f6c39fc16d1cd17ad4b5d896114ae470d55";
};
};
"slide-1.1.6" = {
name = "slide";
packageName = "slide";
version = "1.1.6";
src = fetchurl {
url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz";
sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
};
};
"spdx-0.5.2" = {
name = "spdx";
packageName = "spdx";
version = "0.5.2";
src = fetchurl {
url = "https://registry.npmjs.org/spdx/-/spdx-0.5.2.tgz";
sha512 = "WQbfCQT2uKLsDllnO9ItpcGUiiF1O/ZvBGCyqFZRg122HgiZubpwpZiM7BkmH19HC3XR3Z+DFMGJNzXSPebG8A==";
};
};
"spdx-compare-1.0.0" = {
name = "spdx-compare";
packageName = "spdx-compare";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz";
sha512 = "C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==";
};
};
"spdx-correct-3.0.2" = {
name = "spdx-correct";
packageName = "spdx-correct";
version = "3.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz";
sha512 = "q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==";
};
};
"spdx-exceptions-1.0.5" = {
name = "spdx-exceptions";
packageName = "spdx-exceptions";
version = "1.0.5";
src = fetchurl {
url = "http://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.5.tgz";
sha1 = "9d21ac4da4bdb71d060fb74e5a67531d032cbba6";
};
};
"spdx-exceptions-2.2.0" = {
name = "spdx-exceptions";
packageName = "spdx-exceptions";
version = "2.2.0";
src = fetchurl {
url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz";
sha512 = "2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==";
};
};
"spdx-expression-parse-3.0.0" = {
name = "spdx-expression-parse";
packageName = "spdx-expression-parse";
version = "3.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
sha512 = "Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==";
};
};
"spdx-license-ids-1.2.2" = {
name = "spdx-license-ids";
packageName = "spdx-license-ids";
version = "1.2.2";
src = fetchurl {
url = "http://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz";
sha1 = "c9df7a3424594ade6bd11900d596696dc06bac57";
};
};
"spdx-license-ids-3.0.2" = {
name = "spdx-license-ids";
packageName = "spdx-license-ids";
version = "3.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz";
sha512 = "qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==";
};
};
"spdx-ranges-2.0.0" = {
name = "spdx-ranges";
packageName = "spdx-ranges";
version = "2.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.0.0.tgz";
sha512 = "AUUXLfqkwD7GlzZkXv8ePPCpPjeVWI9xJCfysL8re/uKb6H10umMnC7bFRsHmLJan4fslUtekAgpHlSgLc/7mA==";
};
};
"spdx-satisfies-4.0.0" = {
name = "spdx-satisfies";
packageName = "spdx-satisfies";
version = "4.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.0.tgz";
sha512 = "OcARj6U1OuVv98SVrRqgrR30sVocONtoPpnX8Xz4vXNrFVedqtbgkA+0KmQoXIQ2xjfltPPRVIMeNzKEFLWWKQ==";
};
};
"supports-color-5.5.0" = {
name = "supports-color";
packageName = "supports-color";
version = "5.5.0";
src = fetchurl {
url = "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz";
sha512 = "QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==";
};
};
"treeify-1.1.0" = {
name = "treeify";
packageName = "treeify";
version = "1.1.0";
src = fetchurl {
url = "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz";
sha512 = "1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==";
};
};
"util-extend-1.0.3" = {
name = "util-extend";
packageName = "util-extend";
version = "1.0.3";
src = fetchurl {
url = "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz";
sha1 = "a7c216d267545169637b3b6edc6ca9119e2ff93f";
};
};
"validate-npm-package-license-3.0.4" = {
name = "validate-npm-package-license";
packageName = "validate-npm-package-license";
version = "3.0.4";
src = fetchurl {
url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
sha512 = "DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==";
};
};
"wrappy-1.0.2" = {
name = "wrappy";
packageName = "wrappy";
version = "1.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
};
};
};
in
{
license-checker = nodeEnv.buildNodePackage {
name = "license-checker";
packageName = "license-checker";
version = "24.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/license-checker/-/license-checker-24.0.1.tgz";
sha512 = "9qgTmu3aAk4e2L6fWQLLVcip/tZJ0x2K8ZfmEIo8nsB3cibSw/Lp/YplBiOOI3SfnEfLb50T3rDq3X6gai4dEw==";
};
dependencies = [
sources."abbrev-1.1.1"
sources."ansi-styles-3.2.1"
sources."array-find-index-1.0.2"
sources."asap-2.0.6"
sources."balanced-match-1.0.0"
sources."brace-expansion-1.1.11"
sources."builtin-modules-1.1.1"
sources."chalk-2.4.1"
sources."color-convert-1.9.3"
sources."color-name-1.1.3"
sources."concat-map-0.0.1"
sources."debug-3.2.6"
sources."debuglog-1.0.1"
sources."dezalgo-1.0.3"
sources."escape-string-regexp-1.0.5"
sources."fs.realpath-1.0.0"
sources."glob-7.1.3"
sources."graceful-fs-4.1.15"
sources."has-flag-3.0.0"
sources."hosted-git-info-2.7.1"
sources."inflight-1.0.6"
sources."inherits-2.0.3"
sources."is-builtin-module-1.0.0"
sources."json-parse-better-errors-1.0.2"
sources."minimatch-3.0.4"
sources."minimist-0.0.8"
sources."mkdirp-0.5.1"
sources."ms-2.1.1"
sources."nopt-4.0.1"
sources."normalize-package-data-2.4.0"
sources."once-1.4.0"
sources."os-homedir-1.0.2"
sources."os-tmpdir-1.0.2"
sources."osenv-0.1.5"
sources."path-is-absolute-1.0.1"
sources."read-installed-4.0.3"
sources."read-package-json-2.0.13"
sources."readdir-scoped-modules-1.0.2"
sources."semver-5.6.0"
sources."slash-1.0.0"
sources."slide-1.1.6"
(sources."spdx-0.5.2" // {
dependencies = [
sources."spdx-exceptions-1.0.5"
sources."spdx-license-ids-1.2.2"
];
})
sources."spdx-compare-1.0.0"
sources."spdx-correct-3.0.2"
sources."spdx-exceptions-2.2.0"
sources."spdx-expression-parse-3.0.0"
sources."spdx-license-ids-3.0.2"
sources."spdx-ranges-2.0.0"
sources."spdx-satisfies-4.0.0"
sources."supports-color-5.5.0"
sources."treeify-1.1.0"
sources."util-extend-1.0.3"
sources."validate-npm-package-license-3.0.4"
sources."wrappy-1.0.2"
];
buildInputs = globalBuildInputs;
meta = {
description = "Check license info for a pacakge";
homepage = "https://github.com/davglass/license-checker#readme";
license = "BSD-3-Clause";
};
production = true;
bypassCache = true;
};
}