| 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 |