| 29 Apr 2025 |
c3n21 | * Yes the fetcher seems to work but when you try to run the entrypoint script it doesn't work
Try this
{
lib,
stdenv,
nodejs,
fetchFromGitHub,
yarn-berry_3,
}:
let
yarn-berry = yarn-berry_3;
in
stdenv.mkDerivation (finalAttrs: rec {
pname = "verdaccio";
version = "6.1.2";
src = fetchFromGitHub {
owner = "verdaccio";
repo = pname;
rev = "v${version}";
hash = "sha256-EssvN5HtGI5Hmw4EXetj5nzrkBZAAJGgOx09dlYJzhI=";
};
nativeBuildInputs = [
nodejs
yarn-berry
yarn-berry.yarnBerryConfigHook
];
offlineCache = yarn-berry.fetchYarnBerryDeps {
inherit (finalAttrs) src;
hash = "sha256-jzkmDxQtIFMa1LIPcvKKsXIItPntgXTavoWhd5eZWyQ=";
};
buildPhase = ''
runHook preBuild
yarn run build
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r {bin,build,package.json,.pnp.cjs} $out/
runHook postInstall
'';
meta = with lib; {
description = "A simple, zero-config-required local private npm registry";
longDescription = ''
Verdaccio is a simple, zero-config-required local private npm registry. No need for an entire database just to get started! Verdaccio comes out of the box with its own tiny database, and the ability to proxy other registries (eg. npmjs.org), caching the downloaded modules along the way. For those looking to extend their storage capabilities, Verdaccio supports various community-made plugins to hook into services such as Amazon's s3, Google Cloud Storage or create your own plugin.
'';
homepage = "https://verdaccio.org";
license = licenses.mit;
};
})
| 16:35:00 |
c3n21 | * Yes the fetcher seems to work but when you try to run the entrypoint script it doesn't work
Try this
{
lib,
stdenv,
nodejs,
fetchFromGitHub,
yarn-berry_3,
}:
let
yarn-berry = yarn-berry_3;
in
stdenv.mkDerivation (finalAttrs: rec {
pname = "verdaccio";
version = "6.1.2";
src = fetchFromGitHub {
owner = "verdaccio";
repo = pname;
rev = "v${version}";
hash = "sha256-EssvN5HtGI5Hmw4EXetj5nzrkBZAAJGgOx09dlYJzhI=";
};
nativeBuildInputs = [
nodejs
yarn-berry
yarn-berry.yarnBerryConfigHook
];
offlineCache = yarn-berry.fetchYarnBerryDeps {
inherit (finalAttrs) src;
hash = "sha256-jzkmDxQtIFMa1LIPcvKKsXIItPntgXTavoWhd5eZWyQ=";
};
buildPhase = ''
runHook preBuild
yarn run build
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r {bin,build,package.json,.pnp.cjs} $out/
runHook postInstall
'';
meta = with lib; {
description = "A simple, zero-config-required local private npm registry";
longDescription = ''
Verdaccio is a simple, zero-config-required local private npm registry. No need for an entire database just to get started! Verdaccio comes out of the box with its own tiny database, and the ability to proxy other registries (eg. npmjs.org), caching the downloaded modules along the way. For those looking to extend their storage capabilities, Verdaccio supports various community-made plugins to hook into services such as Amazon's s3, Google Cloud Storage or create your own plugin.
'';
homepage = "https://verdaccio.org";
license = licenses.mit;
};
})
and run ./result/bin/verdaccio
| 16:36:05 |
Cathal | Yeah I see what you mean now. I wonder if the yarnInstallHook has any support for PNP mode? Probably not though. | 16:38:45 |
c3n21 | Yeah, at this point I'm wondering if I should just wait the release of 7.x as the author told me that it will use pnpm or just try to hack this around | 16:44:21 |
Cathal | I'm no yarn expert, but from a quick search seems that it should be possible to wrap the end binary to correctly pass the .pnp files, or set an env var. I came across this for example: https://github.com/madjam002/yarnpnp2nix/blob/master/lib/mkYarnPackage.nix#L196-L197 | 16:48:16 |
Cathal | Might be more trouble than it's worth for the Verdaccio pakcage specifically, since they're switching to pnpm anyways, but there will likely be other packages who hit this issue in the future. | 16:51:29 |
Cathal | * Might be more trouble than it's worth for the Verdaccio package specifically, since they're switching to pnpm anyways, but there will likely be other packages who hit this issue in the future. | 16:51:36 |
c3n21 | Yes this did indeed work, the only problem is that I'm not so acquaintanted with Nix packaging and I don't know if a node package can also have a wrapper | 16:57:25 |
c3n21 | Yes I think that perhaps it should be wiser to package it for pnpm for now and use the unstable versioning till 7.x is released.
Meanwhile I will raise the topic about pnp
| 16:58:55 |
Cathal | Wrapping node packages is fine, here's an example of the Prisma package doing it: https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/pr/prisma/package.nix#L83-L87 | 17:00:52 |
| DolceTriade joined the room. | 23:12:13 |