!NhAsaYbbgmzHtXTPQJ:funklause.de

Nix NodeJS

186 Members
54 Servers

Load older messages


SenderMessageTime
29 Apr 2025
@c3n21:matrix.orgc3n21

Yes the fetcher seems to 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:34:14
@c3n21:matrix.orgc3n21 *

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:matrix.orgc3n21 *

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_mullan:matrix.orgCathal 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:matrix.orgc3n21 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_mullan:matrix.orgCathalI'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-L19716:48:16
@cathal_mullan:matrix.orgCathalMight 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_mullan:matrix.orgCathal* 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:matrix.orgc3n21Yes 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 wrapper16:57:25
@c3n21:matrix.orgc3n21

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_mullan:matrix.orgCathalWrapping 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-L8717:00:52
@dolcetriade:matrix.orgDolceTriade joined the room.23:12:13
@dolcetriade:matrix.orgDolceTriade Hello, I've been searching for a way to override the version of nodejs when using buildNpmPackage, but when I do this using the ways I know of, it always also includes the original version of the nodejs in the closure. For example, I'm trying to build mongosh with a newer version of nodejs, so I'm doing something like buildNpmPackage { ... nodejs = nodejs_23; };. Is there a way to ensure the original version of nodejs is not included? 23:17:59
@dolcetriade:matrix.orgDolceTriadeI've also tried buildNpmPackage.override { nodejs = nodejs_23; }. And also tried to use a nixpkgs overlay to override nodejs = nodejs_2323:19:15
@dolcetriade:matrix.orgDolceTriadeRedacted or Malformed Event23:19:21
@dolcetriade:matrix.orgDolceTriadeActually I think the overlay method works. I just had to overlay buildPackages instead of pkgs... Now to figure out how to remove nodejs-source from the closure23:25:46
9 May 2025
@gdesforges:matrix.org@gdesforges:matrix.org left the room.17:07:02
14 May 2025
@winter:catgirl.cloudWinter i'm not sure what you mean by this -- (buildNpmPackage.override { nodejs = ...; }) { ... } should work just fine 00:22:34
@winter:catgirl.cloudWinter i'm not sure what you mean by the buildPackages part -- (buildNpmPackage.override { nodejs = ...; }) { ... } should work just fine 00:22:44
@dolcetriade:matrix.orgDolceTriade

Dunno...

  buildPackages' = buildPackages.extend (self: super: {nodejs = nodejs_23;});
  buildNpmPackage23 = buildNpmPackage.override {
    buildPackages = buildPackages';
  };

Ended up with something like this and this seemed to work. There are probably better ways to do this 🤷

22:37:02
@dolcetriade:matrix.orgDolceTriadeI think I traced this down to npm-hooks or something22:37:19
@dolcetriade:matrix.orgDolceTriadeWe don't properly passthrough nodejs down there22:37:30
17 May 2025
@terrorjack:matrix.orgterrorjack set a profile picture.08:53:40
21 May 2025
@ofalvai:matrix.orgofalvai joined the room.14:05:08
24 May 2025
@sfkvso:matrix.org@sfkvso:matrix.org left the room.18:59:50
2 Jun 2025
@deeok:matrix.orgmatrixrooms.info mod bot (does NOT read/send messages and/or invites; used for checking reported rooms) joined the room.18:19:07
7 Jun 2025
@deeok:matrix.orgmatrixrooms.info mod bot (does NOT read/send messages and/or invites; used for checking reported rooms) left the room.22:26:01
@deeok:matrix.orgmatrixrooms.info mod bot (does NOT read/send messages and/or invites; used for checking reported rooms) joined the room.23:42:43
9 Jun 2025
@sigmasquadron:matrix.orgSigmaSquadron joined the room.13:17:03
22 Jun 2025
@ss:someonex.netSomeoneSerge (back on matrix) changed their display name from SomeoneSerge (UTC+U[-12,12]) to SomeoneSerge (Ever OOMed by Element).12:13:53

Show newer messages


Back to Room ListRoom Version: 6