I’m trying to build a svelte app with nix and mkYarnPackage:
npm init svelte@next web
yarn install
rm -rf node_modules
default.nix
{ pkgs ? import <nixpkgs> {}, ... }:
{
web = pkgs.mkYarnPackage rec {
name = "web-${version}";
version = "0.0.1";
src = ./.;
packageJson = "${src}/package.json";
yarnLock = "${src}/yarn.lock";
installPhase = ''
yarn --offline build
mkdir $out
mv build $out
'';
distPhase = "true";
};
}
Out of the box this doesn’t work claiming it can’t find svelte-kit.js:
❯ nix build
builder for '/nix/store/q9kk5dm3dci5cvmqs6qv105w534wbls1-web-0.0.1.drv' failed with exit code 127; last 10 log lines:
installing
yarn run v1.22.10
warning package.json: No license field
warning Skipping preferred cache folder "/homeless-shelter/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/build/.yarn-cache-1000".
$ svelte-kit.js build
warning Cannot find a suitable global folder. Tried these: "/usr/local, /homeless-shelter/.yarn"
/bin/sh: svelte-kit.js: not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[2 built (1 failed), 0.0 MiB DL]
error: build of '/nix/store/q9kk5dm3dci5cvmqs6qv105w534wbls1-web-0.0.1.drv' failed
If I update the package.json to point to the node_module directory for svelte-kit.js then I get this:
❯ nix build
builder for '/nix/store/y8pcrdfdwavmcwb7anp7m0gnapmjzbs2-web-0.0.1.drv' failed with exit code 1; last 10 log lines:
> The service was stopped
Error: The service was stopped
at /build/web/deps/web/node_modules/esbuild/lib/main.js:1066:33
at /build/web/deps/web/node_modules/esbuild/lib/main.js:568:9
at Socket.afterClose (/build/web/deps/web/node_modules/esbuild/lib/main.js:546:7)
at Socket.emit (events.js:327:22)
at endReadableNT (internal/streams/readable.js:1327:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[2 built (1 failed), 0.0 MiB DL]
error: build of '/nix/store/y8pcrdfdwavmcwb7anp7m0gnapmjzbs2-web-0.0.1.drv' failed
yarn install && yarn build on the command line works; I’m using niv for dependencies so the yarn on my command line and derivation are the same. I’m not sure why this isn’t working. Do I need to create a nodePackage for the svelte-kit.js binary?