| 9 Mar 2026 |
Scrumplex | * I am currently working on importPnpmLock to support package builds without having a pnpmDeps FOD: https://tangled.org/scrumplex.net/importPnpmLock.nix
This is mostly useful for projects that use dependabot or renovate where keeping pnpmDeps up-to-date is cumbersome.
It is very bare bones, but should support everything pnpm has to offer due to its fundamental design:
Instead of trying to be smart about it, we just use the existing mitmcache infrastructure from nixpkgs. Luckily, the pnpm lock file contains everything* we need and the only issue is that it's a YAML file, leading to IFD in my implementation. While a pnpm2nix-style script would have avoided IFD, it would have the same issues as the status quo (updating hashes).
*: Git as well as tarball dependencies are not locked with the exact tarball hash. Those have to be specified manually, similar to how importCargoLock does it. | 20:58:21 |
@rosssmyth:matrix.org | Nice! I was looking into making an IFD pnpm lockfile import | 23:52:30 |
| 10 Mar 2026 |
| amadaluzia -> 4d2.org joined the room. | 01:46:22 |
| 11 Mar 2026 |
| srasu joined the room. | 01:48:34 |
srasu | Hello! I'm trying out packaging out-of-your-element and I'm trying to figure out how to use buildNpmPackage to do so. It seems like doing that doesn't result in me being able to call the various scripts available via npm run <subcommand>, which is the primary way to interact with it. Is there a way to do that with buildNpmPackage? | 01:50:35 |
hexa | none of the scripts looks like a build script | 02:00:15 |
srasu | that's correct, there's no "build", it's just a collection of scripts meant to be run with npm run | 02:01:08 |
srasu | The flow I'm looking for here more or less is to be able to do a nix run .#ooye-setup to call the npm run setup command, use it interactively to produce a file, then use requireFile to provide it to another derivation that will call npm run start | 02:01:28 |
srasu | I don't know if that will be feasible | 02:01:54 |
srasu | I think I figured it out for my case | 02:58:27 |
srasu | I ended up needing to make my own installPhase that copied over the project to the $out and used makeWrapper to make scripts that call node to run the relevant scripts. | 02:59:00 |
srasu | {
lib,
pkgs,
buildNpmPackage,
importNpmLock,
nodejs ? pkgs.nodejs_22,
...
}:
buildNpmPackage (finalAttrs: {
pname = "ooye";
version = "3.4";
src = builtins.fetchGit {
url = https://gitdab.com/cadence/out-of-your-element/;
rev = "c55e6c611585f4c1dbfd8c767e5f872fbeb0c66a";
ref = "v${finalAttrs.version}";
};
npmDepsHash = "";
npmDeps = importNpmLock { npmRoot = finalAttrs.src; };
npmConfigHook = importNpmLock.npmConfigHook;
dontNpmBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out
mkdir -p $out/bin
cp -R . $out/source
makeWrapper ${nodejs}/bin/node $out/bin/ooye-setup --add-flags $out/source/scripts/setup.js
makeWrapper ${nodejs}/bin/node $out/bin/ooye --add-flags $out/source/start.js
runHook postInstall
'';
npmPackFlags = [ "--ignore-scripts" ];
})
Like this | 02:59:36 |
| benwebb joined the room. | 06:27:08 |
| 14 Mar 2026 |
| amadaluzia -> 4d2.org changed their display name from amadaluzia to amadaluzia[uorg]. | 18:50:18 |
| amadaluzia joined the room. | 19:30:57 |
| amadaluzia -> 4d2.org changed their display name from amadaluzia[uorg] to amadaluzia -> 4d2.org. | 21:22:21 |
| 16 Mar 2026 |
| purepani changed their display name from purepani to purepanid. | 05:55:09 |
| purepani changed their display name from purepanid to purepani. | 05:55:50 |
| 19 Mar 2026 |
| René changed their display name from Rene to René. | 13:43:25 |
| 23 Mar 2026 |
| azban joined the room. | 22:17:24 |
azban | are node binaries supposed to be able to run without having node specified as a package in your environment? | 22:17:48 |
dish [Fox/It/She] | yes | 22:23:50 |
| 24 Mar 2026 |
azban | any idea why that wouldn't be the case with this config? https://github.com/NixOS/nixpkgs/blob/51600fecc3d3a57353c4f9cf72a22f1f9efc58ae/pkgs/by-name/ea/eas-cli/package.nix | 00:04:48 |
azban | getting: env: ‘node’: No such file or directory.. Do I need to wrap this to point to the write node? | 00:05:35 |
azban | * getting: env: ‘node’: No such file or directory.. Do I need to wrap this to point to the right node? | 00:05:49 |
azban | that seemed to do it | 00:11:34 |
dish [Fox/It/She] | In reply to @azban:matrix.org any idea why that wouldn't be the case with this config? https://github.com/NixOS/nixpkgs/blob/51600fecc3d3a57353c4f9cf72a22f1f9efc58ae/pkgs/by-name/ea/eas-cli/package.nix the file that gets symlinked as $out/bin/eas in postFixup doesn't have its shebang fixed with patchShebangs since patchShebangsHook runs in fixupPhase which is right before the code in postFixup runs | 02:44:51 |
dish [Fox/It/She] | and so it doesnt have a correct shebang that would point to a nodejs already | 02:45:08 |
dish [Fox/It/She] | and having the proper shebang would register the correct nodejs as a dependency and then you wouldn't have to wrap it | 02:45:31 |
dish [Fox/It/She] | so tl;dr the packaging is slightly wrong and then it doesnt work properly | 02:47:01 |