Compare commits
5 Commits
d7cb9e002c
...
1b0993e903
| Author | SHA1 | Date | |
|---|---|---|---|
| 1b0993e903 | |||
| f64025bd3e | |||
| 8d538471ee | |||
| 1fc934d97f | |||
| f0011a366d |
17
default.nix
Normal file
17
default.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
# This file has been generated by node2nix 1.11.1. Do not edit!
|
||||
|
||||
{pkgs ? import <nixpkgs> {
|
||||
inherit system;
|
||||
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
|
||||
|
||||
let
|
||||
nodeEnv = import ./node-env.nix {
|
||||
inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript;
|
||||
inherit pkgs nodejs;
|
||||
libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
|
||||
};
|
||||
in
|
||||
import ./node-packages.nix {
|
||||
inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
|
||||
inherit nodeEnv;
|
||||
}
|
||||
42
index.html
42
index.html
@@ -66,9 +66,9 @@ footer{
|
||||
<div class="container">
|
||||
<div class="row justify-content-center border-0">
|
||||
<div class="col-xl-12 mt-5">
|
||||
<h2 class='custom'><b>KGP Evidence Dump</b></h2>
|
||||
<h1 class='custom'><b>Lade Fotos und Videos von Polizeieinsätzen hoch</b></h1>
|
||||
<h6 class='custom'>
|
||||
Upload videos or photos showing the behaviour of police during this demonstration.
|
||||
Wir werden die Fotos/Videos fuer dich anonymisieren und Auswerten.
|
||||
</h6>
|
||||
</div>
|
||||
</div>
|
||||
@@ -83,10 +83,46 @@ footer{
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row justify-content-center border-0">
|
||||
<div class="col-xl-12 mt-5 mb-5">
|
||||
<h4 class='custom'>
|
||||
<b>
|
||||
Filmt Polizeieinsätze!
|
||||
</b>
|
||||
</h4>
|
||||
<h6 class='custom'>
|
||||
Wenn euch Beamt*innen daran hindern oder gar euer Gerät entwenden wollen, argumentiert bestimmt, laut und kurz:
|
||||
<br>
|
||||
<br>
|
||||
<li>Das dokumentieren von Einsätzen ist grundsätzlich erlaubt. Das dürfen Sie nicht verhindern, wenn die Aufnahmen nicht veröffentlicht werden.</li>
|
||||
<li>Ich filme ohne Ton. Ich filme ohne Porträt-Aufnahmen. Ich habe nicht vor, die Aufnahmen zu veröffentlichen.</li>
|
||||
<li>Ich halte die Situation fest, um ein Beweismittel für die Staatsanwaltschaft bereitzustellen.</li>
|
||||
|
||||
<br>
|
||||
Wenn ihr euch nicht durchsetzen und euer Gerät nur behalten könnt, wenn ihr es nicht mehr auf die Polizei haltet, nehmt es runter und lasst die Aufnahmen weiter laufen.
|
||||
<br>
|
||||
<br>
|
||||
Wenn euch Geräte weggenommen wurden:
|
||||
<br>
|
||||
<br>
|
||||
<li>fordert ein Beschlagnahmeprotokoll. Verlangt einen Nachweis darüber.</li>
|
||||
<li>legt Beschwerde ein und besteht darauf, dass diese schriftlich aufgenommen wird. Verlangt einen Nachweis darüber.</li>
|
||||
<li>unterschreibt nichts.</li>
|
||||
<li>erfragt die Namen der Beamt*innen und den Dienstausweis, um diese zu überprüfen.</li>
|
||||
legt ggf. hinterher Dienstaufsichtsbeschwerde ein.
|
||||
</h6>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="container">
|
||||
<div class="row justify-content-center border-0">
|
||||
<div class="col-xl-12 mt-3">
|
||||
<div class="col-xl-12">
|
||||
<h4 class='custom'>
|
||||
Motivation
|
||||
</h4>
|
||||
<h6 class='custom'>
|
||||
Gerade in Zeiten massiv zunehmender Überwachung und zu häufig auftretender Übergriffe, Misshandlungen und anderer rechtswidriger Verhaltensweisen der Polizei sollten Polizeieinsätze immer dokumentiert werden. Auch ohne Beweismaterial sollten solche Vorfälle bei unabhängigen Stellen gemeldet werden, z.B. bei unserer Initiative, unabhängig davon, ob weitere Schritte gegen die Verantwortlichen geplant sind oder nicht.Eine Veröffentlichung von dokumentierter Polizeigewalt in sozialen Netzwerken kann Druck durch das Interesse der Öffentlichkeit erzeugen, Diskussionen anfachen und die Notwendigkeit aufzeigen, die Polizeibefugnisse einzuschränken. Wenn zudem juristisch erfolgreich gegen Polizeigewalt vorgegangen werden soll, sind Beweise notwendig, z.B. in Form technischem Material. Es gibt Verfahren, in denen Betroffene von Polizeigewalt die Übergriffe der Polizei und ihre Lügen vor Gericht nur beweisen und ihrer eigenen Strafverfolgung entgehen konnten, weil sie unbemerkt eine Aufzeichnung von der Situation gemacht hatten. Aufnahmen von Einsätzen sehen wir daher als notwendig an, um Voraussetzungen dafür zu schaffen, Polizeigewalt bekannt zu machen und Konsequenzen zu ermöglichen.
|
||||
</h6>
|
||||
|
||||
598
node-env.nix
Normal file
598
node-env.nix
Normal file
@@ -0,0 +1,598 @@
|
||||
# This file originates from node2nix
|
||||
|
||||
{lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile, writeShellScript}:
|
||||
|
||||
let
|
||||
# Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master
|
||||
utillinux = if pkgs ? utillinux then pkgs.utillinux else pkgs.util-linux;
|
||||
|
||||
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 --delay-directory-restore
|
||||
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
|
||||
'';
|
||||
};
|
||||
|
||||
# Common shell logic
|
||||
installPackage = writeShellScript "install-package" ''
|
||||
installPackage() {
|
||||
local packageName=$1 src=$2
|
||||
|
||||
local strippedName
|
||||
|
||||
local 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 -exec 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
|
||||
|
||||
# Change to the package directory to install dependencies
|
||||
cd "$DIR/$packageName"
|
||||
}
|
||||
'';
|
||||
|
||||
# Bundle the dependencies of the package
|
||||
#
|
||||
# Only include dependencies if they don't exist. They may also be bundled in the package.
|
||||
includeDependencies = {dependencies}:
|
||||
lib.optionalString (dependencies != []) (
|
||||
''
|
||||
mkdir -p node_modules
|
||||
cd node_modules
|
||||
''
|
||||
+ (lib.concatMapStrings (dependency:
|
||||
''
|
||||
if [ ! -e "${dependency.packageName}" ]; then
|
||||
${composePackage dependency}
|
||||
fi
|
||||
''
|
||||
) dependencies)
|
||||
+ ''
|
||||
cd ..
|
||||
''
|
||||
);
|
||||
|
||||
# Recursively composes the dependencies of a package
|
||||
composePackage = { name, packageName, src, dependencies ? [], ... }@args:
|
||||
builtins.addErrorContext "while evaluating node package '${packageName}'" ''
|
||||
installPackage "${packageName}" "${src}"
|
||||
${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.
|
||||
}
|
||||
|
||||
if(dependency.resolved) {
|
||||
packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
|
||||
} else {
|
||||
packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
|
||||
}
|
||||
|
||||
if(dependency.from !== undefined) { // Adopt from property if one has been provided
|
||||
packageObj["_from"] = dependency.from;
|
||||
}
|
||||
|
||||
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(![1, 2].includes(packageLock.lockfileVersion)) {
|
||||
process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\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));
|
||||
'';
|
||||
};
|
||||
|
||||
prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
|
||||
let
|
||||
forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
|
||||
in
|
||||
''
|
||||
# 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 ''
|
||||
${lib.optionalString reconstructLock ''
|
||||
if [ -f package-lock.json ]
|
||||
then
|
||||
echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
|
||||
echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
|
||||
rm package-lock.json
|
||||
else
|
||||
echo "No package-lock.json file found, reconstructing..."
|
||||
fi
|
||||
|
||||
node ${reconstructPackageLock}
|
||||
''}
|
||||
|
||||
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
|
||||
'';
|
||||
|
||||
# Builds and composes an NPM package including all its dependencies
|
||||
buildNodePackage =
|
||||
{ name
|
||||
, packageName
|
||||
, version ? null
|
||||
, dependencies ? []
|
||||
, buildInputs ? []
|
||||
, production ? true
|
||||
, npmFlags ? ""
|
||||
, dontNpmInstall ? false
|
||||
, bypassCache ? false
|
||||
, reconstructLock ? false
|
||||
, preRebuild ? ""
|
||||
, dontStrip ? true
|
||||
, unpackPhase ? "true"
|
||||
, buildPhase ? "true"
|
||||
, meta ? {}
|
||||
, ... }@args:
|
||||
|
||||
let
|
||||
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ];
|
||||
in
|
||||
stdenv.mkDerivation ({
|
||||
name = "${name}${if version == null then "" else "-${version}"}";
|
||||
buildInputs = [ tarWrapper python nodejs ]
|
||||
++ lib.optional (stdenv.isLinux) utillinux
|
||||
++ lib.optional (stdenv.isDarwin) libtool
|
||||
++ buildInputs;
|
||||
|
||||
inherit nodejs;
|
||||
|
||||
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 = ''
|
||||
source ${installPackage}
|
||||
|
||||
# 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
|
||||
|
||||
${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
|
||||
|
||||
# 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
|
||||
|
||||
# Patch the shebang lines of all the executables
|
||||
ls $out/bin/* | while read i
|
||||
do
|
||||
file="$(readlink -f "$i")"
|
||||
chmod u+rwx "$file"
|
||||
patchShebangs "$file"
|
||||
done
|
||||
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
|
||||
'';
|
||||
|
||||
meta = {
|
||||
# default to Node.js' platforms
|
||||
platforms = nodejs.meta.platforms;
|
||||
} // meta;
|
||||
} // extraArgs);
|
||||
|
||||
# Builds a node environment (a node_modules folder and a set of binaries)
|
||||
buildNodeDependencies =
|
||||
{ name
|
||||
, packageName
|
||||
, version ? null
|
||||
, src
|
||||
, dependencies ? []
|
||||
, buildInputs ? []
|
||||
, production ? true
|
||||
, npmFlags ? ""
|
||||
, dontNpmInstall ? false
|
||||
, bypassCache ? false
|
||||
, reconstructLock ? false
|
||||
, dontStrip ? true
|
||||
, unpackPhase ? "true"
|
||||
, buildPhase ? "true"
|
||||
, ... }@args:
|
||||
|
||||
let
|
||||
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
|
||||
in
|
||||
stdenv.mkDerivation ({
|
||||
name = "node-dependencies-${name}${if version == null then "" else "-${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 = ''
|
||||
source ${installPackage}
|
||||
|
||||
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 .
|
||||
chmod 644 package-lock.json
|
||||
fi
|
||||
''}
|
||||
|
||||
# Go to the parent folder to make sure that all packages are pinpointed
|
||||
cd ..
|
||||
${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
|
||||
|
||||
${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
|
||||
|
||||
# Expose the executables that were installed
|
||||
cd ..
|
||||
${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
|
||||
|
||||
mv ${packageName} lib
|
||||
ln -s $out/lib/node_modules/.bin $out/bin
|
||||
'';
|
||||
} // extraArgs);
|
||||
|
||||
# Builds a development shell
|
||||
buildNodeShell =
|
||||
{ name
|
||||
, packageName
|
||||
, version ? null
|
||||
, src
|
||||
, dependencies ? []
|
||||
, buildInputs ? []
|
||||
, production ? true
|
||||
, npmFlags ? ""
|
||||
, dontNpmInstall ? false
|
||||
, bypassCache ? false
|
||||
, reconstructLock ? false
|
||||
, dontStrip ? true
|
||||
, unpackPhase ? "true"
|
||||
, buildPhase ? "true"
|
||||
, ... }@args:
|
||||
|
||||
let
|
||||
nodeDependencies = buildNodeDependencies args;
|
||||
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "unpackPhase" "buildPhase" ];
|
||||
in
|
||||
stdenv.mkDerivation ({
|
||||
name = "node-shell-${name}${if version == null then "" else "-${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
|
||||
export PATH="${nodeDependencies}/bin:$PATH"
|
||||
'';
|
||||
} // extraArgs);
|
||||
in
|
||||
{
|
||||
buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist;
|
||||
buildNodePackage = lib.makeOverridable buildNodePackage;
|
||||
buildNodeDependencies = lib.makeOverridable buildNodeDependencies;
|
||||
buildNodeShell = lib.makeOverridable buildNodeShell;
|
||||
}
|
||||
707
node-packages.nix
Normal file
707
node-packages.nix
Normal file
@@ -0,0 +1,707 @@
|
||||
# This file has been generated by node2nix 1.11.1. Do not edit!
|
||||
|
||||
{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
|
||||
|
||||
let
|
||||
sources = {
|
||||
"accepts-1.2.13" = {
|
||||
name = "accepts";
|
||||
packageName = "accepts";
|
||||
version = "1.2.13";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz";
|
||||
sha512 = "R190A3EzrS4huFOVZajhXCYZt5p5yrkaQOB4nsWzfth0cYaDcSN5J86l58FJ1dt7igp37fB/QhnuFkGAJmr+eg==";
|
||||
};
|
||||
};
|
||||
"append-field-0.1.0" = {
|
||||
name = "append-field";
|
||||
packageName = "append-field";
|
||||
version = "0.1.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/append-field/-/append-field-0.1.0.tgz";
|
||||
sha512 = "8BgHoIwbQZaAQgDZLBu2vQoXHgUpSx4vQK1qv7e6R8YfbiSf4fCaBPJRtM1BaxVn1rIHc5ftv0cklsJ78BkouQ==";
|
||||
};
|
||||
};
|
||||
"array-flatten-1.1.1" = {
|
||||
name = "array-flatten";
|
||||
packageName = "array-flatten";
|
||||
version = "1.1.1";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz";
|
||||
sha512 = "PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==";
|
||||
};
|
||||
};
|
||||
"buffer-from-1.1.2" = {
|
||||
name = "buffer-from";
|
||||
packageName = "buffer-from";
|
||||
version = "1.1.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz";
|
||||
sha512 = "E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==";
|
||||
};
|
||||
};
|
||||
"busboy-0.2.14" = {
|
||||
name = "busboy";
|
||||
packageName = "busboy";
|
||||
version = "0.2.14";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz";
|
||||
sha512 = "InWFDomvlkEj+xWLBfU3AvnbVYqeTWmQopiW0tWWEy5yehYm2YkGEc59sUmw/4ty5Zj/b0WHGs1LgecuBSBGrg==";
|
||||
};
|
||||
};
|
||||
"concat-stream-1.6.2" = {
|
||||
name = "concat-stream";
|
||||
packageName = "concat-stream";
|
||||
version = "1.6.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz";
|
||||
sha512 = "27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==";
|
||||
};
|
||||
};
|
||||
"content-disposition-0.5.0" = {
|
||||
name = "content-disposition";
|
||||
packageName = "content-disposition";
|
||||
version = "0.5.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz";
|
||||
sha512 = "PWzG8GssMHTPSLBoOeK5MvPPJeWU5ZVX8omvJC16BUH/nUX6J/jM/hgm/mrPWzTXVV3B3OoBhFdHXyGLU4TgUw==";
|
||||
};
|
||||
};
|
||||
"content-type-1.0.4" = {
|
||||
name = "content-type";
|
||||
packageName = "content-type";
|
||||
version = "1.0.4";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
|
||||
sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
|
||||
};
|
||||
};
|
||||
"cookie-0.1.3" = {
|
||||
name = "cookie";
|
||||
packageName = "cookie";
|
||||
version = "0.1.3";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz";
|
||||
sha512 = "mWkFhcL+HVG1KjeCjEBVJJ7s4sAGMLiBDFSDs4bzzvgLZt7rW8BhP6XV/8b1+pNvx/skd3yYxPuaF3Z6LlQzyw==";
|
||||
};
|
||||
};
|
||||
"cookie-signature-1.0.6" = {
|
||||
name = "cookie-signature";
|
||||
packageName = "cookie-signature";
|
||||
version = "1.0.6";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
|
||||
sha512 = "QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==";
|
||||
};
|
||||
};
|
||||
"core-util-is-1.0.3" = {
|
||||
name = "core-util-is";
|
||||
packageName = "core-util-is";
|
||||
version = "1.0.3";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz";
|
||||
sha512 = "ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==";
|
||||
};
|
||||
};
|
||||
"debug-2.2.0" = {
|
||||
name = "debug";
|
||||
packageName = "debug";
|
||||
version = "2.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz";
|
||||
sha512 = "X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==";
|
||||
};
|
||||
};
|
||||
"depd-1.0.1" = {
|
||||
name = "depd";
|
||||
packageName = "depd";
|
||||
version = "1.0.1";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz";
|
||||
sha512 = "OEWAMbCkK9IWQ8pfTvHBhCSqHgR+sk5pbiYqq0FqfARG4Cy+cRsCbITx6wh5pcsmfBPiJAcbd98tfdz5fnBbag==";
|
||||
};
|
||||
};
|
||||
"depd-1.1.2" = {
|
||||
name = "depd";
|
||||
packageName = "depd";
|
||||
version = "1.1.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
|
||||
sha512 = "7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==";
|
||||
};
|
||||
};
|
||||
"destroy-1.0.3" = {
|
||||
name = "destroy";
|
||||
packageName = "destroy";
|
||||
version = "1.0.3";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz";
|
||||
sha512 = "KB/AVLKRwZPOEo6/lxkDJ+Bv3jFRRrhmnRMPvpWwmIfUggpzGkQBqolyo8FRf833b/F5rzmy1uVN3fHBkjTxgw==";
|
||||
};
|
||||
};
|
||||
"destroy-1.0.4" = {
|
||||
name = "destroy";
|
||||
packageName = "destroy";
|
||||
version = "1.0.4";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
|
||||
sha512 = "3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==";
|
||||
};
|
||||
};
|
||||
"dicer-0.2.5" = {
|
||||
name = "dicer";
|
||||
packageName = "dicer";
|
||||
version = "0.2.5";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz";
|
||||
sha512 = "FDvbtnq7dzlPz0wyYlOExifDEZcu8h+rErEXgfxqmLfRfC/kJidEFh4+effJRO3P0xmfqyPbSMG0LveNRfTKVg==";
|
||||
};
|
||||
};
|
||||
"ee-first-1.1.1" = {
|
||||
name = "ee-first";
|
||||
packageName = "ee-first";
|
||||
version = "1.1.1";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
|
||||
sha512 = "WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==";
|
||||
};
|
||||
};
|
||||
"escape-html-1.0.2" = {
|
||||
name = "escape-html";
|
||||
packageName = "escape-html";
|
||||
version = "1.0.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz";
|
||||
sha512 = "J5ahyCRC4liskWVAfkmosNWfG0eHQxI0W+Ko7k3cZaYVMfgt05dwZ68vw6S/TZM1BPvuTv3kq6CRCb7WWtBUVA==";
|
||||
};
|
||||
};
|
||||
"escape-html-1.0.3" = {
|
||||
name = "escape-html";
|
||||
packageName = "escape-html";
|
||||
version = "1.0.3";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
|
||||
sha512 = "NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==";
|
||||
};
|
||||
};
|
||||
"etag-1.7.0" = {
|
||||
name = "etag";
|
||||
packageName = "etag";
|
||||
version = "1.7.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz";
|
||||
sha512 = "Mbv5pNpLNPrm1b4rzZlZlfTRpdDr31oiD43N362sIyvSWVNu5Du33EcJGzvEV4YdYLuENB1HzND907cQkFmXNw==";
|
||||
};
|
||||
};
|
||||
"express-4.13.3" = {
|
||||
name = "express";
|
||||
packageName = "express";
|
||||
version = "4.13.3";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/express/-/express-4.13.3.tgz";
|
||||
sha512 = "6+EQT2fOxWOhT0c5rxbeRfe6Q0bPlHh10ko0BbvgoCBwzDfLgNZ5admFoB8Wqwc9zJY4eF1zo6+pZpfWgQPkEg==";
|
||||
};
|
||||
};
|
||||
"finalhandler-0.4.0" = {
|
||||
name = "finalhandler";
|
||||
packageName = "finalhandler";
|
||||
version = "0.4.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz";
|
||||
sha512 = "jJU2WE88OqUvwAIf/1K2G2fTdKKZ8LvSwYQyFFekDcmBnBmht38enbcmErnA7iNZktcEo/o2JAHYbe1QDOAgaA==";
|
||||
};
|
||||
};
|
||||
"forwarded-0.1.2" = {
|
||||
name = "forwarded";
|
||||
packageName = "forwarded";
|
||||
version = "0.1.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz";
|
||||
sha512 = "Ua9xNhH0b8pwE3yRbFfXJvfdWF0UHNCdeyb2sbi9Ul/M+r3PTdrz7Cv4SCfZRMjmzEM9PhraqfZFbGTIg3OMyA==";
|
||||
};
|
||||
};
|
||||
"fresh-0.3.0" = {
|
||||
name = "fresh";
|
||||
packageName = "fresh";
|
||||
version = "0.3.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz";
|
||||
sha512 = "akx5WBKAwMSg36qoHTuMMVncHWctlaDGslJASDYAhoLrzDUDCjZlOngNa/iC6lPm9aA0qk8pN5KnpmbJHSIIQQ==";
|
||||
};
|
||||
};
|
||||
"http-errors-1.3.1" = {
|
||||
name = "http-errors";
|
||||
packageName = "http-errors";
|
||||
version = "1.3.1";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz";
|
||||
sha512 = "gMygNskMurDCWfoCdyh1gOeDfSbkAHXqz94QoPj5IHIUjC/BG8/xv7FSEUr7waR5RcAya4j58bft9Wu/wHNeXA==";
|
||||
};
|
||||
};
|
||||
"inherits-2.0.4" = {
|
||||
name = "inherits";
|
||||
packageName = "inherits";
|
||||
version = "2.0.4";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
|
||||
sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
|
||||
};
|
||||
};
|
||||
"ipaddr.js-1.0.5" = {
|
||||
name = "ipaddr.js";
|
||||
packageName = "ipaddr.js";
|
||||
version = "1.0.5";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz";
|
||||
sha512 = "wBj+q+3uP78gMowwWgFLAYm/q4x5goyZmDsmuvyz+nd1u0D/ghgXXtc1OkgmTzSiWT101kiqGacwFk9eGQw6xQ==";
|
||||
};
|
||||
};
|
||||
"isarray-0.0.1" = {
|
||||
name = "isarray";
|
||||
packageName = "isarray";
|
||||
version = "0.0.1";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
|
||||
sha512 = "D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==";
|
||||
};
|
||||
};
|
||||
"isarray-1.0.0" = {
|
||||
name = "isarray";
|
||||
packageName = "isarray";
|
||||
version = "1.0.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
|
||||
sha512 = "VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==";
|
||||
};
|
||||
};
|
||||
"media-typer-0.3.0" = {
|
||||
name = "media-typer";
|
||||
packageName = "media-typer";
|
||||
version = "0.3.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
|
||||
sha512 = "dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==";
|
||||
};
|
||||
};
|
||||
"merge-descriptors-1.0.0" = {
|
||||
name = "merge-descriptors";
|
||||
packageName = "merge-descriptors";
|
||||
version = "1.0.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz";
|
||||
sha512 = "YJiZmTZTkrqvgefMsWdioTKsZdHnfAhHHkEdPg+4PCqMJEGHQo5iJQjEbMv3XyBZ6y3Z2Rj1mqq1WNKq9e0yNw==";
|
||||
};
|
||||
};
|
||||
"methods-1.1.2" = {
|
||||
name = "methods";
|
||||
packageName = "methods";
|
||||
version = "1.1.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
|
||||
sha512 = "iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==";
|
||||
};
|
||||
};
|
||||
"mime-1.3.4" = {
|
||||
name = "mime";
|
||||
packageName = "mime";
|
||||
version = "1.3.4";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz";
|
||||
sha512 = "sAaYXszED5ALBt665F0wMQCUXpGuZsGdopoqcHPdL39ZYdi7uHoZlhrfZfhv8WzivhBzr/oXwaj+yiK5wY8MXQ==";
|
||||
};
|
||||
};
|
||||
"mime-db-1.52.0" = {
|
||||
name = "mime-db";
|
||||
packageName = "mime-db";
|
||||
version = "1.52.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz";
|
||||
sha512 = "sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==";
|
||||
};
|
||||
};
|
||||
"mime-types-2.1.35" = {
|
||||
name = "mime-types";
|
||||
packageName = "mime-types";
|
||||
version = "2.1.35";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz";
|
||||
sha512 = "ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==";
|
||||
};
|
||||
};
|
||||
"minimist-1.2.6" = {
|
||||
name = "minimist";
|
||||
packageName = "minimist";
|
||||
version = "1.2.6";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz";
|
||||
sha512 = "Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==";
|
||||
};
|
||||
};
|
||||
"mkdirp-0.5.6" = {
|
||||
name = "mkdirp";
|
||||
packageName = "mkdirp";
|
||||
version = "0.5.6";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz";
|
||||
sha512 = "FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==";
|
||||
};
|
||||
};
|
||||
"ms-0.7.1" = {
|
||||
name = "ms";
|
||||
packageName = "ms";
|
||||
version = "0.7.1";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz";
|
||||
sha512 = "lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==";
|
||||
};
|
||||
};
|
||||
"multer-1.1.0" = {
|
||||
name = "multer";
|
||||
packageName = "multer";
|
||||
version = "1.1.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/multer/-/multer-1.1.0.tgz";
|
||||
sha512 = "J0UXcyIPRtoYh2YDxWO1hFVGSZMl8dwMCik5ZmtdMlNSPd2M6qgnEs+WydAOdw54uJtgrIu8qvRSaK6etpHj6Q==";
|
||||
};
|
||||
};
|
||||
"negotiator-0.5.3" = {
|
||||
name = "negotiator";
|
||||
packageName = "negotiator";
|
||||
version = "0.5.3";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz";
|
||||
sha512 = "oXmnazqehLNFohqgLxRyUdOQU9/UX0NpCpsnbjWUjM62ZM8oSOXYZpHc68XR130ftPNano0oQXGdREAplZRhaQ==";
|
||||
};
|
||||
};
|
||||
"object-assign-3.0.0" = {
|
||||
name = "object-assign";
|
||||
packageName = "object-assign";
|
||||
version = "3.0.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz";
|
||||
sha512 = "jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==";
|
||||
};
|
||||
};
|
||||
"on-finished-2.3.0" = {
|
||||
name = "on-finished";
|
||||
packageName = "on-finished";
|
||||
version = "2.3.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
|
||||
sha512 = "ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==";
|
||||
};
|
||||
};
|
||||
"parseurl-1.3.3" = {
|
||||
name = "parseurl";
|
||||
packageName = "parseurl";
|
||||
version = "1.3.3";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz";
|
||||
sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==";
|
||||
};
|
||||
};
|
||||
"path-to-regexp-0.1.7" = {
|
||||
name = "path-to-regexp";
|
||||
packageName = "path-to-regexp";
|
||||
version = "0.1.7";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
|
||||
sha512 = "5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==";
|
||||
};
|
||||
};
|
||||
"process-nextick-args-2.0.1" = {
|
||||
name = "process-nextick-args";
|
||||
packageName = "process-nextick-args";
|
||||
version = "2.0.1";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
|
||||
sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
|
||||
};
|
||||
};
|
||||
"proxy-addr-1.0.10" = {
|
||||
name = "proxy-addr";
|
||||
packageName = "proxy-addr";
|
||||
version = "1.0.10";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz";
|
||||
sha512 = "iq6kR9KN32aFvXjDyC8nIrm203AHeIBPjL6dpaHgSdbpTO8KoPlD0xG92xwwtkCL9+yt1LE5VwpEk43TyP38Dg==";
|
||||
};
|
||||
};
|
||||
"qs-4.0.0" = {
|
||||
name = "qs";
|
||||
packageName = "qs";
|
||||
version = "4.0.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz";
|
||||
sha512 = "8MPmJ83uBOPsQj5tQCv4g04/nTiY+d17yl9o3Bw73vC6XlEm2POIRRlOgWJ8i74bkGLII670cDJJZkgiZ2sIkg==";
|
||||
};
|
||||
};
|
||||
"range-parser-1.0.3" = {
|
||||
name = "range-parser";
|
||||
packageName = "range-parser";
|
||||
version = "1.0.3";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz";
|
||||
sha512 = "nDsRrtIxVUO5opg/A8T2S3ebULVIfuh8ECbh4w3N4mWxIiT3QILDJDUQayPqm2e8Q8NUa0RSUkGCfe33AfjR3Q==";
|
||||
};
|
||||
};
|
||||
"readable-stream-1.1.14" = {
|
||||
name = "readable-stream";
|
||||
packageName = "readable-stream";
|
||||
version = "1.1.14";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz";
|
||||
sha512 = "+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==";
|
||||
};
|
||||
};
|
||||
"readable-stream-2.3.7" = {
|
||||
name = "readable-stream";
|
||||
packageName = "readable-stream";
|
||||
version = "2.3.7";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
|
||||
sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
|
||||
};
|
||||
};
|
||||
"safe-buffer-5.1.2" = {
|
||||
name = "safe-buffer";
|
||||
packageName = "safe-buffer";
|
||||
version = "5.1.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
|
||||
sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
|
||||
};
|
||||
};
|
||||
"send-0.13.0" = {
|
||||
name = "send";
|
||||
packageName = "send";
|
||||
version = "0.13.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/send/-/send-0.13.0.tgz";
|
||||
sha512 = "zck2y84i0SbUUiwq2l5gGPNVpCplL48og5xIhFjNjQa09003YCTy6Vb3rKfVuG8W8PWNUtUOntjQEBdwkJ9oBw==";
|
||||
};
|
||||
};
|
||||
"send-0.13.2" = {
|
||||
name = "send";
|
||||
packageName = "send";
|
||||
version = "0.13.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/send/-/send-0.13.2.tgz";
|
||||
sha512 = "cQ0rmXHrdO2Iof08igV2bG/yXWD106ANwBg6DkGQNT2Vsznbgq6T0oAIQboy1GoFsIuy51jCim26aA9tj3Z3Zg==";
|
||||
};
|
||||
};
|
||||
"serve-static-1.10.3" = {
|
||||
name = "serve-static";
|
||||
packageName = "serve-static";
|
||||
version = "1.10.3";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz";
|
||||
sha512 = "ScsFovjz3Db+vGgpofR/U8p8UULEcGV9akqyo8TQ1mMnjcxemE7Y5Muo+dvy3tJLY/doY2v1H61eCBMYGmwfrA==";
|
||||
};
|
||||
};
|
||||
"statuses-1.2.1" = {
|
||||
name = "statuses";
|
||||
packageName = "statuses";
|
||||
version = "1.2.1";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz";
|
||||
sha512 = "pVEuxHdSGrt8QmQ3LOZXLhSA6MP/iPqKzZeO6Squ7PNGkA/9MBsSfV0/L+bIxkoDmjF4tZcLpcVq/fkqoHvuKg==";
|
||||
};
|
||||
};
|
||||
"streamsearch-0.1.2" = {
|
||||
name = "streamsearch";
|
||||
packageName = "streamsearch";
|
||||
version = "0.1.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz";
|
||||
sha512 = "jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==";
|
||||
};
|
||||
};
|
||||
"string_decoder-0.10.31" = {
|
||||
name = "string_decoder";
|
||||
packageName = "string_decoder";
|
||||
version = "0.10.31";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
|
||||
sha512 = "ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==";
|
||||
};
|
||||
};
|
||||
"string_decoder-1.1.1" = {
|
||||
name = "string_decoder";
|
||||
packageName = "string_decoder";
|
||||
version = "1.1.1";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
|
||||
sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
|
||||
};
|
||||
};
|
||||
"type-is-1.6.18" = {
|
||||
name = "type-is";
|
||||
packageName = "type-is";
|
||||
version = "1.6.18";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz";
|
||||
sha512 = "TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==";
|
||||
};
|
||||
};
|
||||
"typedarray-0.0.6" = {
|
||||
name = "typedarray";
|
||||
packageName = "typedarray";
|
||||
version = "0.0.6";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
|
||||
sha512 = "/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==";
|
||||
};
|
||||
};
|
||||
"unpipe-1.0.0" = {
|
||||
name = "unpipe";
|
||||
packageName = "unpipe";
|
||||
version = "1.0.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
|
||||
sha512 = "pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==";
|
||||
};
|
||||
};
|
||||
"util-deprecate-1.0.2" = {
|
||||
name = "util-deprecate";
|
||||
packageName = "util-deprecate";
|
||||
version = "1.0.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
|
||||
sha512 = "EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==";
|
||||
};
|
||||
};
|
||||
"utils-merge-1.0.0" = {
|
||||
name = "utils-merge";
|
||||
packageName = "utils-merge";
|
||||
version = "1.0.0";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz";
|
||||
sha512 = "HwU9SLQEtyo+0uoKXd1nkLqigUWLB+QuNQR4OcmB73eWqksM5ovuqcycks2x043W8XVb75rG1HQ0h93TMXkzQQ==";
|
||||
};
|
||||
};
|
||||
"vary-1.0.1" = {
|
||||
name = "vary";
|
||||
packageName = "vary";
|
||||
version = "1.0.1";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz";
|
||||
sha512 = "yNsH+tC0r8quK2tg/yqkXqqaYzeKTkSqQ+8T6xCoWgOi/bU/omMYz+6k+I91JJJDeltJzI7oridTOq6OYkY0Tw==";
|
||||
};
|
||||
};
|
||||
"xtend-4.0.2" = {
|
||||
name = "xtend";
|
||||
packageName = "xtend";
|
||||
version = "4.0.2";
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
|
||||
sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
|
||||
};
|
||||
};
|
||||
};
|
||||
args = {
|
||||
name = "EvidenceDump";
|
||||
packageName = "EvidenceDump";
|
||||
version = "0.0.1";
|
||||
src = ./.;
|
||||
dependencies = [
|
||||
sources."accepts-1.2.13"
|
||||
sources."append-field-0.1.0"
|
||||
sources."array-flatten-1.1.1"
|
||||
sources."buffer-from-1.1.2"
|
||||
sources."busboy-0.2.14"
|
||||
(sources."concat-stream-1.6.2" // {
|
||||
dependencies = [
|
||||
sources."isarray-1.0.0"
|
||||
sources."readable-stream-2.3.7"
|
||||
sources."string_decoder-1.1.1"
|
||||
];
|
||||
})
|
||||
sources."content-disposition-0.5.0"
|
||||
sources."content-type-1.0.4"
|
||||
sources."cookie-0.1.3"
|
||||
sources."cookie-signature-1.0.6"
|
||||
sources."core-util-is-1.0.3"
|
||||
sources."debug-2.2.0"
|
||||
sources."depd-1.0.1"
|
||||
sources."destroy-1.0.3"
|
||||
sources."dicer-0.2.5"
|
||||
sources."ee-first-1.1.1"
|
||||
sources."escape-html-1.0.2"
|
||||
sources."etag-1.7.0"
|
||||
sources."express-4.13.3"
|
||||
sources."finalhandler-0.4.0"
|
||||
sources."forwarded-0.1.2"
|
||||
sources."fresh-0.3.0"
|
||||
sources."http-errors-1.3.1"
|
||||
sources."inherits-2.0.4"
|
||||
sources."ipaddr.js-1.0.5"
|
||||
sources."isarray-0.0.1"
|
||||
sources."media-typer-0.3.0"
|
||||
sources."merge-descriptors-1.0.0"
|
||||
sources."methods-1.1.2"
|
||||
sources."mime-1.3.4"
|
||||
sources."mime-db-1.52.0"
|
||||
sources."mime-types-2.1.35"
|
||||
sources."minimist-1.2.6"
|
||||
sources."mkdirp-0.5.6"
|
||||
sources."ms-0.7.1"
|
||||
sources."multer-1.1.0"
|
||||
sources."negotiator-0.5.3"
|
||||
sources."object-assign-3.0.0"
|
||||
sources."on-finished-2.3.0"
|
||||
sources."parseurl-1.3.3"
|
||||
sources."path-to-regexp-0.1.7"
|
||||
sources."process-nextick-args-2.0.1"
|
||||
sources."proxy-addr-1.0.10"
|
||||
sources."qs-4.0.0"
|
||||
sources."range-parser-1.0.3"
|
||||
sources."readable-stream-1.1.14"
|
||||
sources."safe-buffer-5.1.2"
|
||||
sources."send-0.13.0"
|
||||
(sources."serve-static-1.10.3" // {
|
||||
dependencies = [
|
||||
sources."depd-1.1.2"
|
||||
sources."destroy-1.0.4"
|
||||
sources."escape-html-1.0.3"
|
||||
sources."send-0.13.2"
|
||||
];
|
||||
})
|
||||
sources."statuses-1.2.1"
|
||||
sources."streamsearch-0.1.2"
|
||||
sources."string_decoder-0.10.31"
|
||||
sources."type-is-1.6.18"
|
||||
sources."typedarray-0.0.6"
|
||||
sources."unpipe-1.0.0"
|
||||
sources."util-deprecate-1.0.2"
|
||||
sources."utils-merge-1.0.0"
|
||||
sources."vary-1.0.1"
|
||||
sources."xtend-4.0.2"
|
||||
];
|
||||
buildInputs = globalBuildInputs;
|
||||
meta = {
|
||||
};
|
||||
production = true;
|
||||
bypassCache = true;
|
||||
reconstructLock = true;
|
||||
};
|
||||
in
|
||||
{
|
||||
args = args;
|
||||
sources = sources;
|
||||
tarball = nodeEnv.buildNodeSourceDist args;
|
||||
package = nodeEnv.buildNodePackage args;
|
||||
shell = nodeEnv.buildNodeShell args;
|
||||
nodeDependencies = nodeEnv.buildNodeDependencies (lib.overrideExisting args {
|
||||
src = stdenv.mkDerivation {
|
||||
name = args.name + "-package-json";
|
||||
src = nix-gitignore.gitignoreSourcePure [
|
||||
"*"
|
||||
"!package.json"
|
||||
"!package-lock.json"
|
||||
] args.src;
|
||||
dontBuild = true;
|
||||
installPhase = "mkdir -p $out; cp -r ./* $out;";
|
||||
};
|
||||
});
|
||||
}
|
||||
1732
package-lock.json
generated
1732
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "file_upload",
|
||||
"name": "EvidenceDump",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"express": "4.13.3",
|
||||
@@ -9,5 +9,6 @@
|
||||
"should": "~7.1.0",
|
||||
"mocha": "~2.3.3",
|
||||
"supertest": "~1.1.0"
|
||||
}
|
||||
},
|
||||
"bin" : "./server.js"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user