!NhAsaYbbgmzHtXTPQJ:funklause.de

Nix NodeJS

183 Members
51 Servers

Load older messages


SenderMessageTime
12 Jan 2025
@emilazy:matrix.orgemily had to backport a bunch of Node.js changes to fix a failure but the libuv, compiler versions, etc. differ across branches 20:13:06
@emilazy:matrix.orgemily hm, no, sorry, that was 22 and only on x86_64-darwin 20:13:06
@emilazy:matrix.orgemilywell, it still might be my fault :) but I remember 23 building20:13:41
@emilazy:matrix.orgemily I believe next cycle is merging all the other Node/libuv changes from unstable so at latest it should be fixed then but … ideally it'd get fixed before then too 20:13:41
13 Jan 2025
@rosssmyth:matrix.orgrosssmyth I am curious why with pnpm.fetchDeps I am required to provide a hash, but then with rustPlatform.importCargoLock I am not required to provide a hash for the fetched dependencies. 03:40:58
@winter:catgirl.cloudWinterbecause importCargoLock parses and evaluates the lock file in Nix code03:44:28
@winter:catgirl.cloudWinterfetchDeps does not03:44:32
@winter:catgirl.cloudWinterthere is an importCargoLock equivalent for npm, but not for pnpm.03:45:00
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoeRedacted or Malformed Event07:12:14
@phaer:matrix.orgphaerIf anyone got time for a 1-character-PR: I think a check in linkNodeModulesHook is broken: https://github.com/NixOS/nixpkgs/pull/37263112:24:59
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe
{
  lib,
  stdenv,
  buildNpmPackage,
  fetchFromGitHub,
  nodejs,
  pnpm,
  cacert,
}:

buildNpmPackage rec {
  pname = "ni";
  version = "23.2.0";

  src = fetchFromGitHub {
    owner = "antfu-collective";
    repo = "ni";
    tag = "v${version}";
    hash = "sha256-f210qz53IgUXDon4bWIp+dynJ3aWi0za0puPjplzmqg=";
  };

  buildInputs = [
  ];
  nativeBuildInputs = [
    nodejs
  ];
  npmConfigHook = pnpm.configHook;
  npmDeps = pnpmDeps;
  pnpmDeps = pnpm.fetchDeps {
    inherit pname version src;
    hash = "sha256-+hnkj0uevURkRboTH8WbSt82pZTdWL4ii1PKr6NO0Cg=";
  };


  meta = {
    description = "Use the right package manager";
    homepage = "https://github.com/antfu-collective/ni";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ xiaoxiangmoe ];
  };
}

This raise a error

       >  UNABLE_TO_GET_ISSUER_CERT_LOCALLY  request to https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz failed, reason: unable to get local issuer certificate
       >
       > FetchError: request to https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz failed, reason: unable to get local issuer certificate
       >     at ClientRequest.<anonymous> (/nix/store/hhprmwazmgvxqff5zpra2bw0cb12f4sl-pnpm-9.15.3/libexec/pnpm/dist/pnpm.cjs:66979:18)
       >     at ClientRequest.emit (node:events:518:28)
       >     at emitErrorEvent (node:_http_client:103:11)
       >     at TLSSocket.socketErrorListener (node:_http_client:506:5)
       >     at TLSSocket.emit (node:events:518:28)
       >     at emitErrorNT (node:internal/streams/destroy:170:8)
       >     at emitErrorCloseNT (node:internal/streams/destroy:129:3)
       >     at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
       > Progress: resolved 685, reused 0, downloaded 0, added 0
       For full logs, run 'nix log /nix/store/i13ksyg9fqd8rlc3dywlarsvm5ix2cbn-ni-pnpm-deps.drv'.
14:33:34
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe *
{
  lib,
  stdenv,
  buildNpmPackage,
  fetchFromGitHub,
  nodejs,
  pnpm,
  cacert,
}:

buildNpmPackage rec {
  pname = "ni";
  version = "23.2.0";

  src = fetchFromGitHub {
    owner = "antfu-collective";
    repo = "ni";
    tag = "v${version}";
    hash = "sha256-f210qz53IgUXDon4bWIp+dynJ3aWi0za0puPjplzmqg=";
  };

  buildInputs = [
  ];
  nativeBuildInputs = [
    nodejs
  ];
  npmConfigHook = pnpm.configHook;
  npmDeps = pnpmDeps;
  pnpmDeps = pnpm.fetchDeps {
    inherit pname version src;
    hash = "sha256-+hnkj0uevURkRboTH8WbSt82pZTdWL4ii1PKr6NO0Cg=";
  };


  meta = {
    description = "Use the right package manager";
    homepage = "https://github.com/antfu-collective/ni";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ xiaoxiangmoe ];
  };
}

This raise a error on macOS

       >  UNABLE_TO_GET_ISSUER_CERT_LOCALLY  request to https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz failed, reason: unable to get local issuer certificate
       >
       > FetchError: request to https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz failed, reason: unable to get local issuer certificate
       >     at ClientRequest.<anonymous> (/nix/store/hhprmwazmgvxqff5zpra2bw0cb12f4sl-pnpm-9.15.3/libexec/pnpm/dist/pnpm.cjs:66979:18)
       >     at ClientRequest.emit (node:events:518:28)
       >     at emitErrorEvent (node:_http_client:103:11)
       >     at TLSSocket.socketErrorListener (node:_http_client:506:5)
       >     at TLSSocket.emit (node:events:518:28)
       >     at emitErrorNT (node:internal/streams/destroy:170:8)
       >     at emitErrorCloseNT (node:internal/streams/destroy:129:3)
       >     at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
       > Progress: resolved 685, reused 0, downloaded 0, added 0
       For full logs, run 'nix log /nix/store/i13ksyg9fqd8rlc3dywlarsvm5ix2cbn-ni-pnpm-deps.drv'.
14:34:05
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoeIs there anyway to add cacert for pnpm.fetchDeps in macOS?14:41:32
@lily:lily.flowersLily Foster
In reply to @xiaoxiangmoe:matrix.org
Is there anyway to add cacert for pnpm.fetchDeps in macOS?
nativeBuildInputs in the pnpm.fetchDeps?
14:42:15
@lily:lily.flowersLily Foster(i'd be surprised though if that fetcher was made so uncarefully to not handle cert stuff like other fechers (e.g. npm) do)14:43:11
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe

But this also not working

 WARN  GET https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz error (UNABLE_TO_GET_ISSUER_CERT_LOCALLY). Will retry in 1 minute. 1 retries left.
14:43:30
15 Jan 2025
@rosssmyth:matrix.orgrosssmyth

After setting up my aforementioned pnpm build, I am now wondering why the devshell and build derivations behave differently. My outputs look like this:

      devShells.default = pkgs.mkShellNoCC {
        inherit pnpmDeps cargoDeps;
        inputsFrom = [ self.packages.${system}.default ];
      };

      packages.default = pkgs.stdenvNoCC.mkDerivation (finalAttrs: {
        inherit pnpmDeps cargoDeps pname version;
        src = gitignoreSource ./.;
        strict = true;
        doCheck = false;
        nativeBuildInputs = with pkgs; [
          wasm-bindgen-cli
          nodejs
          nodejs.pkgs.pnpm.configHook
          pkgs.rustPlatform.cargoSetupHook
          wrappedWasmPack
          (rust-bin.stable.latest.default.override {targets = ["wasm32-unknown-unknown"];})
        ];

        buildPhase = ''
          pnpm build
        '';
        installPhase = ''
          mv dist/ $out
        '';
      });

The packaging derivation works exactly how I want it. But the devshell does not. Specifically, while in the packaging derivation all the dependencies are installed and then all I need to do is run "pnpm build" in the build phase as shown. But in the dev shell when I execute "pnpm build" pnpm complains that I need to install the dependencies still.

Is there something I am missing? Is mkshell different from mkderivation in a way that prevents this? Obviously it is impure, but I'd like to confine the dependencies in the store as much as I can.

02:58:12
@winter:catgirl.cloudWinterit does not have the config hook.03:12:47
@winter:catgirl.cloudWinter*run03:13:18
@winter:catgirl.cloudWinterthose setup hooks do not run when in a devshell03:13:37
@rosssmyth:matrix.orgrosssmyth😔03:26:03
@rosssmyth:matrix.orgrosssmythIt does download them somewhere to my store. It's just not setup so that pnpm can see the dependencies 03:26:40
@winter:catgirl.cloudWinteryou can set that up with a shell hook03:39:57
@rosssmyth:matrix.orgrosssmythgood idea 03:41:34
@rosssmyth:matrix.orgrosssmythThat does work03:41:43
@ss:someonex.netSomeoneSerge (Ever OOMed by Element) changed their display name from SomeoneSerge (utc+3) to SomeoneSerge.19:02:28
16 Jan 2025
@hasnep:matrix.orgHannes joined the room.01:28:40
@hasnep:matrix.orgHannes Hi, can someone tell what is the preferred way of packaging a Node.js CLI in nixpkgs? Should I add it to pkgs/development/node-packages/node-packages.json or use buildNpmPackage? 02:14:21
@emilazy:matrix.orgemilylatter02:16:10
@hasnep:matrix.orgHannesThanks, I'm glad because I tried the first method and it wasn't working 😅02:16:47

Show newer messages


Back to Room ListRoom Version: 6