uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
1
pkgs/development/node-packages/README.md
Normal file
1
pkgs/development/node-packages/README.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
Moved to [/doc/languages-frameworks/javascript.section.md](/doc/languages-frameworks/javascript.section.md)
|
||||
17
pkgs/development/node-packages/composition.nix
Normal file
17
pkgs/development/node-packages/composition.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-14_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;
|
||||
}
|
||||
23
pkgs/development/node-packages/default.nix
Normal file
23
pkgs/development/node-packages/default.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{ pkgs, lib, nodejs, stdenv}:
|
||||
|
||||
let
|
||||
inherit (lib) composeManyExtensions extends makeExtensible mapAttrs;
|
||||
|
||||
nodePackages = final: import ./composition.nix {
|
||||
inherit pkgs nodejs;
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
};
|
||||
|
||||
mainProgramOverrides = final: prev:
|
||||
mapAttrs (pkgName: mainProgram:
|
||||
prev.${pkgName}.override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { inherit mainProgram; };
|
||||
})
|
||||
) (import ./main-programs.nix);
|
||||
|
||||
extensions = composeManyExtensions [
|
||||
mainProgramOverrides
|
||||
(import ./overrides.nix { inherit pkgs nodejs; })
|
||||
];
|
||||
in
|
||||
makeExtensible (extends extensions nodePackages)
|
||||
23
pkgs/development/node-packages/generate.sh
Executable file
23
pkgs/development/node-packages/generate.sh
Executable file
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eu -o pipefail
|
||||
|
||||
cd "$( dirname "${BASH_SOURCE[0]}" )"
|
||||
|
||||
node2nix=$(nix-build ../../.. -A nodePackages.node2nix)
|
||||
|
||||
rm -f ./node-env.nix
|
||||
|
||||
# Track the latest active nodejs LTS here: https://nodejs.org/en/about/releases/
|
||||
"${node2nix}/bin/node2nix" \
|
||||
-i node-packages.json \
|
||||
-o node-packages.nix \
|
||||
-c composition.nix \
|
||||
--pkg-name nodejs-14_x
|
||||
|
||||
# using --no-out-link in nix-build argument would cause the
|
||||
# gc to run before the script finishes
|
||||
# which would cause a failure
|
||||
# it's safer to just remove the link after the script finishes
|
||||
# see https://github.com/NixOS/nixpkgs/issues/112846 for more details
|
||||
rm ./result
|
||||
80
pkgs/development/node-packages/main-programs.nix
Normal file
80
pkgs/development/node-packages/main-programs.nix
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
# Use this file to add `meta.mainProgram` to packages in `nodePackages`, that don't provide an
|
||||
# executable that matches that packages name, so that they'll work with `nix run`.
|
||||
{
|
||||
# Packages that provide multiple executables where one is clearly the `mainProgram`.
|
||||
"@antfu/ni" = "ni";
|
||||
"@electron-forge/cli" = "electron-forge";
|
||||
"@squoosh/cli" = "squoosh-cli";
|
||||
"@webassemblyjs/cli" = "wasm2wast";
|
||||
coffee-script = "coffee";
|
||||
typescript = "tsc";
|
||||
vue-cli = "vue";
|
||||
|
||||
# Packages that provide a single executable whose name differs from the package's `name`.
|
||||
"@angular/cli" = "ng";
|
||||
"@antora/cli" = "antora";
|
||||
"@astrojs/language-server" = "astro-ls";
|
||||
"@bitwarden/cli" = "bw";
|
||||
"@commitlint/cli" = "commitlint";
|
||||
"@gitbeaker/cli" = "gitbeaker";
|
||||
"@google/clasp" = "clasp";
|
||||
"@hyperspace/cli" = "hyp";
|
||||
"@medable/mdctl-cli" = "mdctl";
|
||||
"@mermaid-js/mermaid-cli" = "mmdc";
|
||||
"@nerdwallet/shepherd" = "shepherd";
|
||||
"@nestjs/cli" = "nest";
|
||||
"@prisma/language-server" = "prisma-language-server";
|
||||
"@tailwindcss/language-server" = "tailwindcss-language-server";
|
||||
"@uppy/companion" = "companion";
|
||||
"@vue/cli" = "vue";
|
||||
"@webassemblyjs/repl" = "wasm";
|
||||
"@webassemblyjs/wasm-strip" = "wasm-strip";
|
||||
"@webassemblyjs/wasm-text-gen" = "wasmgen";
|
||||
"@webassemblyjs/wast-refmt" = "wast-refmt";
|
||||
balanceofsatoshis = "bos";
|
||||
carbon-now-cli = "carbon-now";
|
||||
cdk8s-cli = "cdk8s";
|
||||
cdktf-cli = "cdktf";
|
||||
clean-css-cli = "cleancss";
|
||||
clipboard-cli = "clipboard";
|
||||
clubhouse-cli = "club";
|
||||
conventional-changelog-cli = "conventional-changelog";
|
||||
cpy-cli = "cpy";
|
||||
dockerfile-language-server-nodejs = "docker-langserver";
|
||||
fast-cli = "fast";
|
||||
fauna-shell = "fauna";
|
||||
firebase-tools = "firebase";
|
||||
fkill-cli = "fkill";
|
||||
fleek-cli = "fleek";
|
||||
git-run = "gr";
|
||||
gitmoji-cli = "gitmoji";
|
||||
graphql-cli = "graphql";
|
||||
grunt-cli = "grunt";
|
||||
gulp-cli = "gulp";
|
||||
kaput-cli = "kaput";
|
||||
leetcode-cli = "leetcode";
|
||||
less = "lessc";
|
||||
lua-fmt = "luafmt";
|
||||
markdownlint-cli = "markdownlint";
|
||||
near-cli = "near";
|
||||
neovim = "neovim-node-host";
|
||||
parcel-bundler = "parcel";
|
||||
parsoid = "parse.js";
|
||||
poor-mans-t-sql-formatter-cli = "sqlformat";
|
||||
postcss-cli = "postcss";
|
||||
purescript-psa = "psa";
|
||||
react-native-cli = "react-native";
|
||||
react-tools = "jsx";
|
||||
remod-cli = "remod";
|
||||
s3http = "s3http.js";
|
||||
svelte-language-server = "svelteserver";
|
||||
teck-programmer = "teck-firmware-upgrade";
|
||||
uglify-js = "uglifyjs";
|
||||
undollar = "$";
|
||||
vsc-leetcode-cli = "leetcode";
|
||||
vscode-css-languageserver-bin = "css-languageserver";
|
||||
vscode-html-languageserver-bin = "html-languageserver";
|
||||
vscode-json-languageserver-bin = "json-languageserver";
|
||||
vue-language-server = "vls";
|
||||
webtorrent-cli = "webtorrent";
|
||||
}
|
||||
598
pkgs/development/node-packages/node-env.nix
Normal file
598
pkgs/development/node-packages/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;
|
||||
}
|
||||
385
pkgs/development/node-packages/node-packages.json
Normal file
385
pkgs/development/node-packages/node-packages.json
Normal file
|
|
@ -0,0 +1,385 @@
|
|||
[
|
||||
"@angular/cli"
|
||||
, "@antfu/ni"
|
||||
, "@antora/cli"
|
||||
, "@antora/site-generator-default"
|
||||
, "@astrojs/language-server"
|
||||
, "@bitwarden/cli"
|
||||
, "@commitlint/cli"
|
||||
, "@commitlint/config-conventional"
|
||||
, "@google/clasp"
|
||||
, "@hyperspace/cli"
|
||||
, "@medable/mdctl-cli"
|
||||
, "@nerdwallet/shepherd"
|
||||
, "@nestjs/cli"
|
||||
, "@squoosh/cli"
|
||||
, "@tailwindcss/aspect-ratio"
|
||||
, "@tailwindcss/forms"
|
||||
, "@tailwindcss/language-server"
|
||||
, "@tailwindcss/line-clamp"
|
||||
, "@tailwindcss/typography"
|
||||
, "@uppy/companion"
|
||||
, "@vue/cli"
|
||||
, "@webassemblyjs/cli"
|
||||
, "@webassemblyjs/repl"
|
||||
, "@webassemblyjs/wasm-strip"
|
||||
, "@webassemblyjs/wasm-text-gen"
|
||||
, "@webassemblyjs/wast-refmt"
|
||||
, "alex"
|
||||
, "alloy"
|
||||
, "antennas"
|
||||
, "asar"
|
||||
, "audiosprite"
|
||||
, "autoprefixer"
|
||||
, "aws-azure-login"
|
||||
, "awesome-lint"
|
||||
, "balanceofsatoshis"
|
||||
, "bash-language-server"
|
||||
, "bower"
|
||||
, "bower2nix"
|
||||
, "browserify"
|
||||
, "browser-sync"
|
||||
, "btc-rpc-explorer"
|
||||
, "castnow"
|
||||
, "carbon-now-cli"
|
||||
, "cdk8s-cli"
|
||||
, "cdktf-cli"
|
||||
, "clean-css-cli"
|
||||
, "clipboard-cli"
|
||||
, "clubhouse-cli"
|
||||
, "coc-clangd"
|
||||
, "coc-cmake"
|
||||
, "coc-css"
|
||||
, "coc-diagnostic"
|
||||
, "coc-emmet"
|
||||
, "coc-eslint"
|
||||
, "coc-explorer"
|
||||
, "coc-flutter"
|
||||
, "coc-git"
|
||||
, "coc-go"
|
||||
, "coc-haxe"
|
||||
, "coc-highlight"
|
||||
, "coc-html"
|
||||
, "coc-imselect"
|
||||
, "coc-java"
|
||||
, "coc-jest"
|
||||
, "coc-json"
|
||||
, "coc-lists"
|
||||
, "coc-markdownlint"
|
||||
, "coc-metals"
|
||||
, "coc-pairs"
|
||||
, "coc-prettier"
|
||||
, "coc-pyright"
|
||||
, "coc-python"
|
||||
, "coc-r-lsp"
|
||||
, "coc-rls"
|
||||
, "coc-rust-analyzer"
|
||||
, "coc-smartf"
|
||||
, "coc-snippets"
|
||||
, "coc-solargraph"
|
||||
, "coc-stylelint"
|
||||
, "coc-tabnine"
|
||||
, "coc-texlab"
|
||||
, "coc-tslint"
|
||||
, "coc-tslint-plugin"
|
||||
, "coc-tsserver"
|
||||
, "coc-ultisnips"
|
||||
, "coc-vetur"
|
||||
, "coc-vimlsp"
|
||||
, "coc-vimtex"
|
||||
, "coc-wxml"
|
||||
, "coc-yaml"
|
||||
, "coc-yank"
|
||||
, "code-theme-converter"
|
||||
, "coffee-script"
|
||||
, "coinmon"
|
||||
, "concurrently"
|
||||
, "configurable-http-proxy"
|
||||
, "conventional-changelog-cli"
|
||||
, "cordova"
|
||||
, "cpy-cli"
|
||||
, "create-cycle-app"
|
||||
, "create-react-app"
|
||||
, "create-react-native-app"
|
||||
, "cspell"
|
||||
, "csslint"
|
||||
, "dat"
|
||||
, "degit"
|
||||
, {"deltachat-desktop": "../../applications/networking/instant-messengers/deltachat-desktop"}
|
||||
, "dhcp"
|
||||
, "diagnostic-languageserver"
|
||||
, "dockerfile-language-server-nodejs"
|
||||
, "elasticdump"
|
||||
, "@electron-forge/cli"
|
||||
, "elm-oracle"
|
||||
, "emoj"
|
||||
, "emojione"
|
||||
, {"epgstation": "../../applications/video/epgstation"}
|
||||
, {"epgstation-client": "../../applications/video/epgstation/client"}
|
||||
, "escape-string-regexp"
|
||||
, "eslint"
|
||||
, "eslint_d"
|
||||
, "esy"
|
||||
, "expo-cli"
|
||||
, "fast-cli"
|
||||
, "fauna-shell"
|
||||
, "firebase-tools"
|
||||
, "fixjson"
|
||||
, "fkill-cli"
|
||||
, "fleek-cli"
|
||||
, "flood"
|
||||
, "forever"
|
||||
, "fx"
|
||||
, "ganache"
|
||||
, "gatsby-cli"
|
||||
, "generator-code"
|
||||
, "get-graphql-schema"
|
||||
, "git-run"
|
||||
, "git-ssb"
|
||||
, "git-standup"
|
||||
, "@gitbeaker/cli"
|
||||
, "gitmoji-cli"
|
||||
, "glob"
|
||||
, "gramma"
|
||||
, "graphql-cli"
|
||||
, "graphqurl"
|
||||
, "grunt-cli"
|
||||
, "makam"
|
||||
, "meshcommander"
|
||||
, "gqlint"
|
||||
, "gtop"
|
||||
, "gulp"
|
||||
, "gulp-cli"
|
||||
, "he"
|
||||
, "html-minifier"
|
||||
, "htmlhint"
|
||||
, "http-server"
|
||||
, "hsd"
|
||||
, "hs-airdrop"
|
||||
, "hs-client"
|
||||
, "hueadm"
|
||||
, "hyperpotamus"
|
||||
, "ijavascript"
|
||||
, "inliner"
|
||||
, "imapnotify"
|
||||
, "indium"
|
||||
, "insect"
|
||||
, "intelephense"
|
||||
, "ionic"
|
||||
, {"iosevka": "https://github.com/be5invis/Iosevka/archive/v15.5.0.tar.gz"}
|
||||
, "jake"
|
||||
, "javascript-typescript-langserver"
|
||||
, "joplin"
|
||||
, "js-beautify"
|
||||
, "js-yaml"
|
||||
, "jsdoc"
|
||||
, "jshint"
|
||||
, "json"
|
||||
, "json-diff"
|
||||
, "json-refs"
|
||||
, "json-server"
|
||||
, "jsonlint"
|
||||
, "jsonplaceholder"
|
||||
, "kaput-cli"
|
||||
, "katex"
|
||||
, "karma"
|
||||
, "keyoxide"
|
||||
, "lcov-result-merger"
|
||||
, "leetcode-cli"
|
||||
, "vsc-leetcode-cli"
|
||||
, "lerna"
|
||||
, "less"
|
||||
, "less-plugin-clean-css"
|
||||
, "live-server"
|
||||
, "livedown"
|
||||
, "lodash"
|
||||
, "lua-fmt"
|
||||
, "madoko"
|
||||
, "manta"
|
||||
, "markdownlint-cli"
|
||||
, "markdownlint-cli2"
|
||||
, "markdown-link-check"
|
||||
, {"markdown-preview-nvim": "../../applications/editors/vim/plugins/markdown-preview-nvim"}
|
||||
, "mastodon-bot"
|
||||
, "mathjax"
|
||||
, "meat"
|
||||
, "@mermaid-js/mermaid-cli"
|
||||
, "mocha"
|
||||
, "multi-file-swagger"
|
||||
, "musescore-downloader"
|
||||
, "near-cli"
|
||||
, "neovim"
|
||||
, "nijs"
|
||||
, "node-gyp"
|
||||
, "node-gyp-build"
|
||||
, "node-inspector"
|
||||
, "node-pre-gyp"
|
||||
, "node-red"
|
||||
, "node2nix"
|
||||
, "nodemon"
|
||||
, "np"
|
||||
, "npm"
|
||||
, "npm-check-updates"
|
||||
, "npm-merge-driver"
|
||||
, "nrm"
|
||||
, "ocaml-language-server"
|
||||
, "parcel-bundler"
|
||||
, "parcel"
|
||||
, "parsoid"
|
||||
, "patch-package"
|
||||
, "peerflix"
|
||||
, "peerflix-server"
|
||||
, "pkg"
|
||||
, "pm2"
|
||||
, "pnpm"
|
||||
, "poor-mans-t-sql-formatter-cli"
|
||||
, "postcss"
|
||||
, "postcss-cli"
|
||||
, "prebuild-install"
|
||||
, "prettier"
|
||||
, "prettier_d_slim"
|
||||
, "prettier-plugin-toml"
|
||||
, "prisma"
|
||||
, "@prisma/language-server"
|
||||
, "pscid"
|
||||
, "pulp"
|
||||
, "purescript-language-server"
|
||||
, "purescript-psa"
|
||||
, "purs-tidy"
|
||||
, "purty"
|
||||
, "pxder"
|
||||
, "pyright"
|
||||
, "quicktype"
|
||||
, "react-native-cli"
|
||||
, "react-static"
|
||||
, "react-tools"
|
||||
, "readability-cli"
|
||||
, "redoc-cli"
|
||||
, "remod-cli"
|
||||
, "reveal.js"
|
||||
, "reveal-md"
|
||||
, "rimraf"
|
||||
, "rollup"
|
||||
, { "rust-analyzer-build-deps": "../../applications/editors/vscode/extensions/rust-analyzer/build-deps" }
|
||||
, "rtlcss"
|
||||
, "s3http"
|
||||
, "sass"
|
||||
, "semver"
|
||||
, "serve"
|
||||
, "serverless"
|
||||
, "shout"
|
||||
, "sloc"
|
||||
, "smartdc"
|
||||
, "snyk"
|
||||
, "socket.io"
|
||||
, "speed-test"
|
||||
, "sql-formatter"
|
||||
, "ssb-server"
|
||||
, "stackdriver-statsd-backend"
|
||||
, "stf"
|
||||
, "stylelint"
|
||||
, "surge"
|
||||
, "svelte-check"
|
||||
, "svelte-language-server"
|
||||
, "svgo"
|
||||
, "swagger"
|
||||
, "tailwindcss"
|
||||
, {"tedicross": "git+https://github.com/TediCross/TediCross.git#v0.8.7"}
|
||||
, "teck-programmer"
|
||||
, "tern"
|
||||
, "terser"
|
||||
, "textlint"
|
||||
, "textlint-plugin-latex"
|
||||
, "textlint-rule-abbr-within-parentheses"
|
||||
, "textlint-rule-alex"
|
||||
, "textlint-rule-common-misspellings"
|
||||
, "textlint-rule-diacritics"
|
||||
, "textlint-rule-en-max-word-count"
|
||||
, "textlint-rule-max-comma"
|
||||
, "textlint-rule-no-start-duplicated-conjunction"
|
||||
, "textlint-rule-period-in-list-item"
|
||||
, "textlint-rule-stop-words"
|
||||
, "textlint-rule-terminology"
|
||||
, "textlint-rule-unexpanded-acronym"
|
||||
, "textlint-rule-write-good"
|
||||
, "thelounge"
|
||||
, "thelounge-plugin-closepms"
|
||||
, "thelounge-plugin-giphy"
|
||||
, "thelounge-plugin-shortcuts"
|
||||
, "thelounge-theme-abyss"
|
||||
, "thelounge-theme-amoled"
|
||||
, "thelounge-theme-amoled-sourcecodepro"
|
||||
, "thelounge-theme-bdefault"
|
||||
, "thelounge-theme-bmorning"
|
||||
, "thelounge-theme-chord"
|
||||
, "thelounge-theme-classic"
|
||||
, "thelounge-theme-common"
|
||||
, "thelounge-theme-crypto"
|
||||
, "thelounge-theme-discordapp"
|
||||
, "thelounge-theme-dracula"
|
||||
, "thelounge-theme-dracula-official"
|
||||
, "thelounge-theme-flat-blue"
|
||||
, "thelounge-theme-flat-dark"
|
||||
, "thelounge-theme-gruvbox"
|
||||
, "thelounge-theme-hexified"
|
||||
, "thelounge-theme-ion"
|
||||
, "thelounge-theme-light"
|
||||
, "thelounge-theme-midnight"
|
||||
, "thelounge-theme-mininapse"
|
||||
, "thelounge-theme-monokai-console"
|
||||
, "thelounge-theme-mortified"
|
||||
, "thelounge-theme-neuron-fork"
|
||||
, "thelounge-theme-new-morning"
|
||||
, "thelounge-theme-new-morning-compact"
|
||||
, "thelounge-theme-nologo"
|
||||
, "thelounge-theme-nord"
|
||||
, "thelounge-theme-onedark"
|
||||
, "thelounge-theme-purplenight"
|
||||
, "thelounge-theme-scoutlink"
|
||||
, "thelounge-theme-seraphimrp"
|
||||
, "thelounge-theme-solarized"
|
||||
, "thelounge-theme-solarized-fork-monospace"
|
||||
, "thelounge-theme-zenburn"
|
||||
, "thelounge-theme-zenburn-monospace"
|
||||
, "thelounge-theme-zenburn-sourcecodepro"
|
||||
, "three"
|
||||
, "tiddlywiki"
|
||||
, "titanium"
|
||||
, "triton"
|
||||
, "tsun"
|
||||
, "ts-node"
|
||||
, "ttf2eot"
|
||||
, "typescript"
|
||||
, "typescript-language-server"
|
||||
, "uglify-js"
|
||||
, "undollar"
|
||||
, "ungit"
|
||||
, "unified-language-server"
|
||||
, "vega-cli"
|
||||
, "vega-lite"
|
||||
, "vercel"
|
||||
, "vim-language-server"
|
||||
, "vls"
|
||||
, "vscode-css-languageserver-bin"
|
||||
, "vscode-html-languageserver-bin"
|
||||
, "vscode-json-languageserver"
|
||||
, "vscode-json-languageserver-bin"
|
||||
, "vscode-langservers-extracted"
|
||||
, { "vscode-lldb-build-deps": "../../applications/editors/vscode/extensions/vscode-lldb/build-deps" }
|
||||
, "vue-cli"
|
||||
, "vue-language-server"
|
||||
, "wavedrom-cli"
|
||||
, "web-ext"
|
||||
, "webpack"
|
||||
, "webpack-cli"
|
||||
, "webpack-dev-server"
|
||||
, "copy-webpack-plugin"
|
||||
, "webtorrent-cli"
|
||||
, "wring"
|
||||
, "write-good"
|
||||
, "yaml-language-server"
|
||||
, "yalc"
|
||||
, "yarn"
|
||||
, "yo"
|
||||
, "zx"
|
||||
]
|
||||
136645
pkgs/development/node-packages/node-packages.nix
generated
Normal file
136645
pkgs/development/node-packages/node-packages.nix
generated
Normal file
File diff suppressed because it is too large
Load diff
533
pkgs/development/node-packages/overrides.nix
Normal file
533
pkgs/development/node-packages/overrides.nix
Normal file
|
|
@ -0,0 +1,533 @@
|
|||
# Do not use overrides in this file to add `meta.mainProgram` to packges. Use `./main-programs.nix`
|
||||
# instead.
|
||||
{ pkgs, nodejs }:
|
||||
|
||||
let
|
||||
inherit (pkgs)
|
||||
stdenv
|
||||
lib
|
||||
callPackage
|
||||
fetchFromGitHub
|
||||
fetchurl
|
||||
nixosTests;
|
||||
|
||||
since = version: lib.versionAtLeast nodejs.version version;
|
||||
before = version: lib.versionOlder nodejs.version version;
|
||||
in
|
||||
|
||||
final: prev: {
|
||||
"@angular/cli" = prev."@angular/cli".override {
|
||||
prePatch = ''
|
||||
export NG_CLI_ANALYTICS=false
|
||||
'';
|
||||
};
|
||||
|
||||
"@electron-forge/cli" = prev."@electron-forge/cli".override {
|
||||
buildInputs = [ final.node-gyp-build ];
|
||||
};
|
||||
|
||||
"@hyperspace/cli" = prev."@hyperspace/cli".override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
buildInputs = [ final.node-gyp-build ];
|
||||
postInstall = ''wrapProgram "$out/bin/hyp" --prefix PATH : ${ lib.makeBinPath [ nodejs ] }'';
|
||||
};
|
||||
hyperspace-cli = final."@hyperspace/cli";
|
||||
|
||||
"@medable/mdctl-cli" = prev."@medable/mdctl-cli".override {
|
||||
nativeBuildInputs = with pkgs; with darwin.apple_sdk.frameworks; [
|
||||
glib
|
||||
libsecret
|
||||
pkg-config
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
AppKit
|
||||
Security
|
||||
];
|
||||
buildInputs = [
|
||||
final.node-gyp-build
|
||||
final.node-pre-gyp
|
||||
nodejs
|
||||
];
|
||||
};
|
||||
mdctl-cli = final."@medable/mdctl-cli";
|
||||
|
||||
autoprefixer = prev.autoprefixer.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/autoprefixer" \
|
||||
--prefix NODE_PATH : ${final.postcss}/lib/node_modules
|
||||
'';
|
||||
passthru.tests = {
|
||||
simple-execution = callPackage ./package-tests/autoprefixer.nix { inherit (final) autoprefixer; };
|
||||
};
|
||||
};
|
||||
|
||||
aws-azure-login = prev.aws-azure-login.override (oldAttrs: {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
prePatch = ''
|
||||
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
|
||||
'';
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/aws-azure-login \
|
||||
--set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium}/bin/chromium
|
||||
'';
|
||||
meta = oldAttrs.meta // { platforms = lib.platforms.linux; };
|
||||
});
|
||||
|
||||
bitwarden-cli = prev."@bitwarden/cli".override {
|
||||
name = "bitwarden-cli";
|
||||
};
|
||||
|
||||
bower2nix = prev.bower2nix.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
for prog in bower2nix fetch-bower; do
|
||||
wrapProgram "$out/bin/$prog" --prefix PATH : ${lib.makeBinPath [ pkgs.git pkgs.nix ]}
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
carbon-now-cli = prev.carbon-now-cli.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
prePatch = ''
|
||||
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
|
||||
'';
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/carbon-now \
|
||||
--set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium
|
||||
'';
|
||||
};
|
||||
|
||||
coc-imselect = prev.coc-imselect.override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { broken = since "10"; };
|
||||
});
|
||||
|
||||
dat = prev.dat.override (oldAttrs: {
|
||||
buildInputs = [ final.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ];
|
||||
meta = oldAttrs.meta // { broken = since "12"; };
|
||||
});
|
||||
|
||||
deltachat-desktop = prev."deltachat-desktop-../../applications/networking/instant-messengers/deltachat-desktop".override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { broken = true; }; # use the top-level package instead
|
||||
});
|
||||
|
||||
# NOTE: this is a stub package to fetch npm dependencies for
|
||||
# ../../applications/video/epgstation
|
||||
epgstation = prev."epgstation-../../applications/video/epgstation".override (oldAttrs: {
|
||||
buildInputs = [ final.node-pre-gyp final.node-gyp-build ];
|
||||
meta = oldAttrs.meta // { platforms = lib.platforms.none; };
|
||||
});
|
||||
|
||||
# NOTE: this is a stub package to fetch npm dependencies for
|
||||
# ../../applications/video/epgstation/client
|
||||
epgstation-client = prev."epgstation-client-../../applications/video/epgstation/client".override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { platforms = lib.platforms.none; };
|
||||
});
|
||||
|
||||
expo-cli = prev."expo-cli".override (oldAttrs: {
|
||||
# The traveling-fastlane-darwin optional dependency aborts build on Linux.
|
||||
dependencies = builtins.filter (d: d.packageName != "@expo/traveling-fastlane-${if stdenv.isLinux then "darwin" else "linux"}") oldAttrs.dependencies;
|
||||
});
|
||||
|
||||
fast-cli = prev.fast-cli.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
prePatch = ''
|
||||
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
|
||||
'';
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/fast \
|
||||
--set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium
|
||||
'';
|
||||
};
|
||||
|
||||
flood = prev.flood.override {
|
||||
buildInputs = [ final.node-pre-gyp ];
|
||||
};
|
||||
|
||||
git-ssb = prev.git-ssb.override (oldAttrs: {
|
||||
buildInputs = [ final.node-gyp-build ];
|
||||
meta = oldAttrs.meta // { broken = since "10"; };
|
||||
});
|
||||
|
||||
hsd = prev.hsd.override {
|
||||
buildInputs = [ final.node-gyp-build pkgs.unbound ];
|
||||
};
|
||||
|
||||
ijavascript = prev.ijavascript.override (oldAttrs: {
|
||||
preRebuild = ''
|
||||
export NPM_CONFIG_ZMQ_EXTERNAL=true
|
||||
'';
|
||||
buildInputs = oldAttrs.buildInputs ++ [ final.node-gyp-build pkgs.zeromq ];
|
||||
});
|
||||
|
||||
insect = prev.insect.override (oldAttrs: {
|
||||
nativeBuildInputs = oldAttrs.nativeBuildInputs or [] ++ [ pkgs.psc-package final.pulp ];
|
||||
});
|
||||
|
||||
intelephense = prev.intelephense.override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { license = lib.licenses.unfree; };
|
||||
});
|
||||
|
||||
joplin = prev.joplin.override {
|
||||
nativeBuildInputs = [ pkgs.pkg-config ];
|
||||
buildInputs = with pkgs; [
|
||||
# required by sharp
|
||||
# https://sharp.pixelplumbing.com/install
|
||||
vips
|
||||
|
||||
libsecret
|
||||
final.node-gyp-build
|
||||
final.node-pre-gyp
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.AppKit
|
||||
darwin.apple_sdk.frameworks.Security
|
||||
];
|
||||
};
|
||||
|
||||
jsonplaceholder = prev.jsonplaceholder.override {
|
||||
buildInputs = [ nodejs ];
|
||||
postInstall = ''
|
||||
exe=$out/bin/jsonplaceholder
|
||||
mkdir -p $out/bin
|
||||
cat >$exe <<EOF
|
||||
#!${pkgs.runtimeShell}
|
||||
exec -a jsonplaceholder ${nodejs}/bin/node $out/lib/node_modules/jsonplaceholder/index.js
|
||||
EOF
|
||||
chmod a+x $exe
|
||||
'';
|
||||
};
|
||||
|
||||
makam = prev.makam.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postFixup = ''
|
||||
wrapProgram "$out/bin/makam" --prefix PATH : ${lib.makeBinPath [ nodejs ]}
|
||||
${
|
||||
if stdenv.isLinux
|
||||
then "patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 \"$out/lib/node_modules/makam/makam-bin-linux64\""
|
||||
else ""
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
manta = prev.manta.override {
|
||||
nativeBuildInputs = with pkgs; [ nodejs-14_x installShellFiles ];
|
||||
postInstall = ''
|
||||
# create completions, following upstream procedure https://github.com/joyent/node-manta/blob/v5.2.3/Makefile#L85-L91
|
||||
completion_cmds=$(find ./bin -type f -printf "%f\n")
|
||||
|
||||
node ./lib/create_client.js
|
||||
for cmd in $completion_cmds; do
|
||||
installShellCompletion --cmd $cmd --bash <(./bin/$cmd --completion)
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
mermaid-cli = prev."@mermaid-js/mermaid-cli".override (
|
||||
if stdenv.isDarwin
|
||||
then {}
|
||||
else {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
prePatch = ''
|
||||
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
|
||||
'';
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/mmdc \
|
||||
--set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium
|
||||
'';
|
||||
});
|
||||
|
||||
near-cli = prev.near-cli.override {
|
||||
nativeBuildInputs = with pkgs; [
|
||||
libusb1
|
||||
final.prebuild-install
|
||||
final.node-gyp-build
|
||||
pkg-config
|
||||
];
|
||||
};
|
||||
|
||||
node-gyp = prev.node-gyp.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
# Teach node-gyp to use nodejs headers locally rather that download them form https://nodejs.org.
|
||||
# This is important when build nodejs packages in sandbox.
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/node-gyp" \
|
||||
--set npm_config_nodedir ${nodejs}
|
||||
'';
|
||||
};
|
||||
|
||||
node-inspector = prev.node-inspector.override (oldAttrs: {
|
||||
buildInputs = [ final.node-pre-gyp ];
|
||||
meta = oldAttrs.meta // { broken = since "10"; };
|
||||
});
|
||||
|
||||
node-red = prev.node-red.override {
|
||||
buildInputs = [ final.node-pre-gyp ];
|
||||
};
|
||||
|
||||
node2nix = prev.node2nix.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
# We need to use master because of a fix that replaces git:// url to https://.
|
||||
src = fetchFromGitHub {
|
||||
owner = "svanderburg";
|
||||
repo = "node2nix";
|
||||
rev = "68f5735f9a56737e3fedceb182705985e3ab8799";
|
||||
sha256 = "sha256-NK6gDTkGx0GG7yPTwgtFC4ttQZPfcLaLp8W8OOMO6bg=";
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/node2nix" --prefix PATH : ${lib.makeBinPath [ pkgs.nix ]}
|
||||
'';
|
||||
};
|
||||
|
||||
parcel = prev.parcel.override {
|
||||
buildInputs = [ final.node-gyp-build ];
|
||||
preRebuild = ''
|
||||
sed -i -e "s|#!/usr/bin/env node|#! ${nodejs}/bin/node|" node_modules/node-gyp-build/bin.js
|
||||
'';
|
||||
};
|
||||
|
||||
pnpm = prev.pnpm.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
|
||||
preRebuild = ''
|
||||
sed 's/"link:/"file:/g' --in-place package.json
|
||||
'';
|
||||
|
||||
postInstall = let
|
||||
pnpmLibPath = lib.makeBinPath [
|
||||
nodejs.passthru.python
|
||||
nodejs
|
||||
];
|
||||
in ''
|
||||
for prog in $out/bin/*; do
|
||||
wrapProgram "$prog" --prefix PATH : ${pnpmLibPath}
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
postcss-cli = prev.postcss-cli.override (oldAttrs: {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/postcss" \
|
||||
--prefix NODE_PATH : ${final.postcss}/lib/node_modules \
|
||||
--prefix NODE_PATH : ${final.autoprefixer}/lib/node_modules
|
||||
ln -s '${final.postcss}/lib/node_modules/postcss' "$out/lib/node_modules/postcss"
|
||||
'';
|
||||
passthru.tests = {
|
||||
simple-execution = callPackage ./package-tests/postcss-cli.nix {
|
||||
inherit (final) postcss-cli;
|
||||
};
|
||||
};
|
||||
meta = oldAttrs.meta // { maintainers = with lib.maintainers; [ Luflosi ]; };
|
||||
});
|
||||
|
||||
# To update prisma, please first update prisma-engines to the latest
|
||||
# version. Then change the correct hash to this package. The PR should hold
|
||||
# two commits: one for the engines and the other one for the node package.
|
||||
prisma = prev.prisma.override rec {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
|
||||
inherit (pkgs.prisma-engines) version;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/prisma/-/prisma-${version}.tgz";
|
||||
sha512 = "sha512-l9MOgNCn/paDE+i1K2fp9NZ+Du4trzPTJsGkaQHVBufTGqzoYHuNk8JfzXuIn0Gte6/ZjyKj652Jq/Lc1tp2yw==";
|
||||
};
|
||||
postInstall = with pkgs; ''
|
||||
wrapProgram "$out/bin/prisma" \
|
||||
--set PRISMA_MIGRATION_ENGINE_BINARY ${prisma-engines}/bin/migration-engine \
|
||||
--set PRISMA_QUERY_ENGINE_BINARY ${prisma-engines}/bin/query-engine \
|
||||
--set PRISMA_QUERY_ENGINE_LIBRARY ${lib.getLib prisma-engines}/lib/libquery_engine.node \
|
||||
--set PRISMA_INTROSPECTION_ENGINE_BINARY ${prisma-engines}/bin/introspection-engine \
|
||||
--set PRISMA_FMT_BINARY ${prisma-engines}/bin/prisma-fmt
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
simple-execution = pkgs.callPackage ./package-tests/prisma.nix {
|
||||
inherit (final) prisma;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
pulp = prev.pulp.override {
|
||||
# tries to install purescript
|
||||
npmFlags = "--ignore-scripts";
|
||||
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/pulp" --suffix PATH : ${lib.makeBinPath [
|
||||
pkgs.purescript
|
||||
]}
|
||||
'';
|
||||
};
|
||||
|
||||
reveal-md = prev.reveal-md.override (
|
||||
lib.optionalAttrs (!stdenv.isDarwin) {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
prePatch = ''
|
||||
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
|
||||
'';
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/reveal-md \
|
||||
--set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium
|
||||
'';
|
||||
}
|
||||
);
|
||||
|
||||
ssb-server = prev.ssb-server.override (oldAttrs: {
|
||||
buildInputs = [ pkgs.automake pkgs.autoconf final.node-gyp-build ];
|
||||
meta = oldAttrs.meta // { broken = since "10"; };
|
||||
});
|
||||
|
||||
stf = prev.stf.override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { broken = since "10"; };
|
||||
});
|
||||
|
||||
tailwindcss = prev.tailwindcss.override {
|
||||
plugins = [ ];
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
nodePath=""
|
||||
for p in "$out" "${final.postcss}" $plugins; do
|
||||
nodePath="$nodePath''${nodePath:+:}$p/lib/node_modules"
|
||||
done
|
||||
wrapProgram "$out/bin/tailwind" \
|
||||
--prefix NODE_PATH : "$nodePath"
|
||||
wrapProgram "$out/bin/tailwindcss" \
|
||||
--prefix NODE_PATH : "$nodePath"
|
||||
unset nodePath
|
||||
'';
|
||||
passthru.tests = {
|
||||
simple-execution = callPackage ./package-tests/tailwindcss.nix {
|
||||
inherit (final) tailwindcss;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
teck-programmer = prev.teck-programmer.override {
|
||||
nativeBuildInputs = [ final.node-gyp-build ];
|
||||
buildInputs = [ pkgs.libusb1 ];
|
||||
};
|
||||
|
||||
tedicross = prev."tedicross-git+https://github.com/TediCross/TediCross.git#v0.8.7".override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
makeWrapper '${nodejs}/bin/node' "$out/bin/tedicross" \
|
||||
--add-flags "$out/lib/node_modules/tedicross/main.js"
|
||||
'';
|
||||
};
|
||||
|
||||
thelounge = prev.thelounge.override (oldAttrs: {
|
||||
buildInputs = [ final.node-pre-gyp ];
|
||||
postInstall = ''
|
||||
echo /var/lib/thelounge > $out/lib/node_modules/thelounge/.thelounge_home
|
||||
patch -d $out/lib/node_modules/thelounge -p1 < ${./thelounge-packages-path.patch}
|
||||
'';
|
||||
passthru.tests = { inherit (nixosTests) thelounge; };
|
||||
meta = oldAttrs.meta // { maintainers = with lib.maintainers; [ winter ]; };
|
||||
});
|
||||
|
||||
thelounge-plugin-closepms = prev.thelounge-plugin-closepms.override {
|
||||
nativeBuildInputs = [ final.node-pre-gyp ];
|
||||
};
|
||||
|
||||
thelounge-plugin-giphy = prev.thelounge-plugin-giphy.override {
|
||||
nativeBuildInputs = [ final.node-pre-gyp ];
|
||||
};
|
||||
|
||||
thelounge-theme-flat-blue = prev.thelounge-theme-flat-blue.override {
|
||||
nativeBuildInputs = [ final.node-pre-gyp ];
|
||||
};
|
||||
|
||||
thelounge-theme-flat-dark = prev.thelounge-theme-flat-dark.override {
|
||||
nativeBuildInputs = [ final.node-pre-gyp ];
|
||||
};
|
||||
|
||||
triton = prev.triton.override {
|
||||
nativeBuildInputs = [ pkgs.installShellFiles ];
|
||||
postInstall = ''
|
||||
installShellCompletion --cmd triton --bash <($out/bin/triton completion)
|
||||
'';
|
||||
};
|
||||
|
||||
ts-node = prev.ts-node.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/ts-node" \
|
||||
--prefix NODE_PATH : ${final.typescript}/lib/node_modules
|
||||
'';
|
||||
};
|
||||
|
||||
tsun = prev.tsun.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/tsun" \
|
||||
--prefix NODE_PATH : ${final.typescript}/lib/node_modules
|
||||
'';
|
||||
};
|
||||
|
||||
typescript-language-server = prev.typescript-language-server.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/typescript-language-server" \
|
||||
--suffix PATH : ${lib.makeBinPath [ final.typescript ]}
|
||||
'';
|
||||
};
|
||||
|
||||
uppy-companion = prev."@uppy/companion".override {
|
||||
name = "uppy-companion";
|
||||
};
|
||||
|
||||
vega-cli = prev.vega-cli.override {
|
||||
nativeBuildInputs = [ pkgs.pkg-config ];
|
||||
buildInputs = with pkgs; [
|
||||
final.node-pre-gyp
|
||||
pixman
|
||||
cairo
|
||||
pango
|
||||
libjpeg
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.CoreText
|
||||
];
|
||||
};
|
||||
|
||||
vega-lite = prev.vega-lite.override {
|
||||
postInstall = ''
|
||||
cd node_modules
|
||||
for dep in ${final.vega-cli}/lib/node_modules/vega-cli/node_modules/*; do
|
||||
if [[ ! -d $dep ]]; then
|
||||
ln -s "${final.vega-cli}/lib/node_modules/vega-cli/node_modules/$dep"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
passthru.tests = {
|
||||
simple-execution = callPackage ./package-tests/vega-lite.nix {
|
||||
inherit (final) vega-lite;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
wavedrom-cli = prev.wavedrom-cli.override {
|
||||
nativeBuildInputs = [ pkgs.pkg-config final.node-pre-gyp ];
|
||||
# These dependencies are required by
|
||||
# https://github.com/Automattic/node-canvas.
|
||||
buildInputs = with pkgs; [
|
||||
pixman
|
||||
cairo
|
||||
pango
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.CoreText
|
||||
];
|
||||
};
|
||||
|
||||
webtorrent-cli = prev.webtorrent-cli.override {
|
||||
buildInputs = [ final.node-gyp-build ];
|
||||
};
|
||||
|
||||
yaml-language-server = prev.yaml-language-server.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/yaml-language-server" \
|
||||
--prefix NODE_PATH : ${final.prettier}/lib/node_modules
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
{ runCommand, autoprefixer }:
|
||||
|
||||
let
|
||||
inherit (autoprefixer) packageName version;
|
||||
in
|
||||
|
||||
runCommand "${packageName}-tests" { meta.timeout = 60; }
|
||||
''
|
||||
# get version of installed program and compare with package version
|
||||
claimed_version="$(${autoprefixer}/bin/autoprefixer --version | awk '{print $2}')"
|
||||
if [[ "$claimed_version" != "${version}" ]]; then
|
||||
echo "Error: program version does not match package version ($claimed_version != ${version})"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# run dummy commands
|
||||
${autoprefixer}/bin/autoprefixer --help > /dev/null
|
||||
${autoprefixer}/bin/autoprefixer --info > /dev/null
|
||||
|
||||
# Testing the actual functionality is done in the test for postcss
|
||||
# because autoprefixer is a postcss plugin
|
||||
|
||||
# needed for Nix to register the command as successful
|
||||
touch $out
|
||||
''
|
||||
45
pkgs/development/node-packages/package-tests/postcss-cli.nix
Normal file
45
pkgs/development/node-packages/package-tests/postcss-cli.nix
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
{ runCommand, postcss-cli }:
|
||||
|
||||
let
|
||||
inherit (postcss-cli) packageName version;
|
||||
in
|
||||
|
||||
runCommand "${packageName}-tests" { meta.timeout = 60; }
|
||||
''
|
||||
# get version of installed program and compare with package version
|
||||
claimed_version="$(${postcss-cli}/bin/postcss --version)"
|
||||
if [[ "$claimed_version" != "${version}" ]]; then
|
||||
echo "Error: program version does not match package version ($claimed_version != ${version})"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# run basic help command
|
||||
${postcss-cli}/bin/postcss --help > /dev/null
|
||||
|
||||
# basic autoprefixer test
|
||||
config_dir="$(mktemp -d)"
|
||||
clean_up() {
|
||||
rm -rf "$config_dir"
|
||||
}
|
||||
trap clean_up EXIT
|
||||
echo "
|
||||
module.exports = {
|
||||
plugins: {
|
||||
'autoprefixer': { overrideBrowserslist: 'chrome 40' },
|
||||
},
|
||||
}
|
||||
" > "$config_dir/postcss.config.js"
|
||||
input='a{ user-select: none; }'
|
||||
expected_output='a{ -webkit-user-select: none; user-select: none; }'
|
||||
actual_output="$(echo $input | ${postcss-cli}/bin/postcss --no-map --config $config_dir)"
|
||||
if [[ "$actual_output" != "$expected_output" ]]; then
|
||||
echo "Error: autoprefixer did not output the correct CSS:"
|
||||
echo "$actual_output"
|
||||
echo "!="
|
||||
echo "$expected_output"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# needed for Nix to register the command as successful
|
||||
touch $out
|
||||
''
|
||||
56
pkgs/development/node-packages/package-tests/prisma.nix
Normal file
56
pkgs/development/node-packages/package-tests/prisma.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
{ lib, pkgs, runCommand, prisma }:
|
||||
|
||||
let
|
||||
inherit (prisma) packageName;
|
||||
prismaMajorVersion = lib.versions.majorMinor prisma.version;
|
||||
enginesMajorVersion = lib.versions.majorMinor pkgs.prisma-engines.version;
|
||||
in
|
||||
|
||||
runCommand "${packageName}-tests" {
|
||||
nativeBuildInputs = with pkgs; [ prisma sqlite-interactive ];
|
||||
meta.timeout = 60;
|
||||
}
|
||||
''
|
||||
mkdir $out
|
||||
cd $out
|
||||
|
||||
if [ "${prismaMajorVersion}" != "${enginesMajorVersion}" ]; then
|
||||
echo "nodePackages.prisma in version ${prismaMajorVersion} and prisma-engines in ${enginesMajorVersion}. Major versions must match."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Ensure CLI runs
|
||||
prisma --help > /dev/null
|
||||
|
||||
# Init a new project
|
||||
prisma init > /dev/null
|
||||
|
||||
# Create a simple data model
|
||||
cat << EOF > prisma/schema.prisma
|
||||
datasource db {
|
||||
provider = "sqlite"
|
||||
url = "file:test.db"
|
||||
}
|
||||
|
||||
generator js {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
|
||||
model A {
|
||||
id Int @id @default(autoincrement())
|
||||
b String @default("foo")
|
||||
}
|
||||
EOF
|
||||
|
||||
# Format
|
||||
prisma format > /dev/null
|
||||
|
||||
# Create the database
|
||||
prisma db push --skip-generate > /dev/null
|
||||
|
||||
# The database file should exist and be a SQLite database
|
||||
sqlite3 prisma/test.db "SELECT id, b FROM A" > /dev/null
|
||||
|
||||
# Introspect the database
|
||||
prisma db pull > /dev/null
|
||||
''
|
||||
47
pkgs/development/node-packages/package-tests/tailwindcss.nix
Normal file
47
pkgs/development/node-packages/package-tests/tailwindcss.nix
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
{ runCommand, tailwindcss, nodePackages }:
|
||||
|
||||
let
|
||||
|
||||
inherit (tailwindcss) packageName version;
|
||||
|
||||
tailwindcssInput = builtins.toFile "input.css" ''
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
'';
|
||||
|
||||
tailwindcssWithPlugins = tailwindcss.overrideAttrs (oldAttrs: {
|
||||
plugins = [
|
||||
nodePackages."@tailwindcss/typography"
|
||||
];
|
||||
});
|
||||
|
||||
tailwindcssWithPluginsConfig = builtins.toFile "tailwind.config.js" ''
|
||||
module.exports = {
|
||||
content: ["./with-typography.input"],
|
||||
plugins: [
|
||||
require('@tailwindcss/typography'),
|
||||
],
|
||||
}
|
||||
'';
|
||||
|
||||
in
|
||||
|
||||
runCommand "${packageName}-tests" { meta.timeout = 60; }
|
||||
''
|
||||
mkdir $out
|
||||
|
||||
# Ensure CLI runs
|
||||
${tailwindcss}/bin/tailwind --help > /dev/null
|
||||
${tailwindcss}/bin/tailwindcss --help > /dev/null
|
||||
|
||||
# Ensure CLI with plugins runs
|
||||
echo '"ml-4 prose"' > ./with-typography.input
|
||||
${tailwindcssWithPlugins}/bin/tailwind \
|
||||
--config ${tailwindcssWithPluginsConfig} \
|
||||
--input ${tailwindcssInput} \
|
||||
--output $out/with-typography.css
|
||||
|
||||
grep -q ml-4 $out/with-typography.css
|
||||
grep -q prose $out/with-typography.css
|
||||
''
|
||||
24
pkgs/development/node-packages/package-tests/vega-lite.nix
Normal file
24
pkgs/development/node-packages/package-tests/vega-lite.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{ runCommand, vega-lite }:
|
||||
|
||||
let
|
||||
inherit (vega-lite) packageName version;
|
||||
in
|
||||
|
||||
runCommand "${packageName}-tests" { meta.timeout = 60; }
|
||||
''
|
||||
# get version of installed program and compare with package version
|
||||
claimed_version="$(${vega-lite}/bin/vl2vg --version)"
|
||||
if [[ "$claimed_version" != "${version}" ]]; then
|
||||
echo "Error: program version does not match package version ($claimed_version != ${version})"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# run dummy commands
|
||||
${vega-lite}/bin/vl2vg --help > /dev/null
|
||||
${vega-lite}/bin/vl2svg --help > /dev/null
|
||||
${vega-lite}/bin/vl2png --help > /dev/null
|
||||
${vega-lite}/bin/vl2pdf --help > /dev/null
|
||||
|
||||
# needed for Nix to register the command as successful
|
||||
touch $out
|
||||
''
|
||||
15
pkgs/development/node-packages/thelounge-packages-path.patch
Normal file
15
pkgs/development/node-packages/thelounge-packages-path.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
diff --git a/src/helper.js b/src/helper.js
|
||||
index 27352b53..7078e4c5 100644
|
||||
--- a/src/helper.js
|
||||
+++ b/src/helper.js
|
||||
@@ -110,6 +110,10 @@ function setHome(newPath) {
|
||||
userLogsPath = path.join(homePath, "logs");
|
||||
clientCertificatesPath = path.join(homePath, "certificates");
|
||||
|
||||
+ if (process.env.THELOUNGE_PACKAGES !== undefined) {
|
||||
+ packagesPath = process.env.THELOUNGE_PACKAGES;
|
||||
+ }
|
||||
+
|
||||
// Reload config from new home location
|
||||
if (fs.existsSync(configPath)) {
|
||||
const userConfig = require(configPath);
|
||||
Loading…
Add table
Add a link
Reference in a new issue