32 lines
1.4 KiB
Nix
32 lines
1.4 KiB
Nix
# Tiny generated-project interface fixture. Real offline Yarn installation
|
|
# remains covered by the consuming Studio and Package-builder checks.
|
|
{ stdenvNoCC, nodejs }:
|
|
{ src, overrideAttrs ? null }:
|
|
let
|
|
project = stdenvNoCC.mkDerivation {
|
|
name = "yarn-dependencies-transfer-fixture";
|
|
inherit src;
|
|
configurePhase = ''
|
|
mkdir -p node_modules/fixture node_modules/.bin .yarn/cache
|
|
printf '%s\n' '{"main":"index.cjs"}' > node_modules/fixture/package.json
|
|
printf '%s\n' 'module.exports = {value: "retained dependency"};' > node_modules/fixture/index.cjs
|
|
ln node_modules/fixture/index.cjs node_modules/fixture/twin.cjs
|
|
ln -s fixture node_modules/alias
|
|
printf '%s\n' '#!${nodejs}/bin/node' 'console.log("linked executable");' > node_modules/fixture/cli.cjs
|
|
chmod +x node_modules/fixture/cli.cjs
|
|
ln -s ../fixture/cli.cjs node_modules/.bin/fixture
|
|
printf '%s\n' 'hidden dependency data' > node_modules/.fixture-data
|
|
printf '%s\n' 'disposable linker state' > node_modules/.yarn-state.yml
|
|
printf '%s\n' 'disposable archive' > .yarn/cache/fixture.zip
|
|
'';
|
|
postInstall = ''
|
|
test ! -e node_modules
|
|
test ! -e .yarn/cache
|
|
test ! -e "$out/.yarn-state.yml"
|
|
test ! -e "$out/node_modules"
|
|
test "$(stat -c %i "$out/fixture/index.cjs")" = "$(stat -c %i "$out/fixture/twin.cjs")"
|
|
'';
|
|
};
|
|
in
|
|
if overrideAttrs == null then project else project.overrideAttrs overrideAttrs
|