| 1 Feb 2024 |
Lily Foster | it will need to be fixed before 4.3 or something, presumably | 17:14:44 |
| 2 Feb 2024 |
teto | Is it expected for npm link to fail ? from a nix develop with buildNpmPackage
➜ npm link package.json
npm ERR! code ENOENT
npm ERR! syscall mkdir
npm ERR! path /nix/store/d6lkbndr98lcn8spbqxfq52f2ldvqhks-nodejs-20.11.0/lib/node_modules/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, mkdir '/nix/store/d6lkbndr98lcn8spbqxfq52f2ldvqhks-nodejs-20.11.0/lib/node_modules/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
| 12:59:02 |
Lily Foster | In reply to @keiichi:matrix.org
Is it expected for npm link to fail ? from a nix develop with buildNpmPackage
➜ npm link package.json
npm ERR! code ENOENT
npm ERR! syscall mkdir
npm ERR! path /nix/store/d6lkbndr98lcn8spbqxfq52f2ldvqhks-nodejs-20.11.0/lib/node_modules/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, mkdir '/nix/store/d6lkbndr98lcn8spbqxfq52f2ldvqhks-nodejs-20.11.0/lib/node_modules/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
i just looked it up to double check, but npm link operates on the global prefix apparently (i.e. the dir node is "installed" to) so yeah without changing the prefix via npm config, it's not gonna do anything useful from nix | 13:05:51 |
Lily Foster | (regardless of being in a dev shell, i imagine) | 13:06:07 |
teto | it seemed like it but I preferred to be sure ty | 13:06:59 |
| 5 Feb 2024 |
| @ThorHop:matrix.org removed their profile picture. | 22:45:11 |
| @ThorHop:matrix.org removed their display name IdeallyYes. | 22:46:21 |
| @ThorHop:matrix.org left the room. | 22:46:57 |
| 6 Feb 2024 |
Nicola Squartini | Hi, I'm trying to put a flake.nix in a NextJS project, that contains a very basic packages.default output with buildNpmPackage | 10:41:30 |
Nicola Squartini | the problem is that whenever I use a revative import to a local .ts file I get error Module not found: Can't resolve './<file name>' | 10:43:36 |
Nicola Squartini | although npm run build work normally when I run it from the shell | 10:44:29 |
Nicola Squartini | to reproduce you can create a Next project with npx create-next-app@latest and accept the defaults | 10:46:50 |
Nicola Squartini | and then add an import to a local file | 10:47:19 |
ghpzin | Did you git add that file ? | 10:49:59 |
Nicola Squartini | yes, here is the flake:
{
description = "Blog";
inputs = {
flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
outputs = { flake-utils, nixpkgs, self }:
flake-utils.lib.eachDefaultSystem (system:
let pkgs = import nixpkgs { inherit system; }; in
{
devShells.default = pkgs.mkShell {
packages = with pkgs; [
nodejs_21
prefetch-npm-deps
];
};
formatter = pkgs.nixpkgs-fmt;
packages.default =
let
packageJson = builtins.fromJSON (builtins.readFile ./package.json);
in
pkgs.buildNpmPackage {
pname = packageJson.name;
version = packageJson.version;
npmDepsHash = "sha256-gjQCVQI7Tp+L6ZF9phJFZQaaPwtPDp0xVOYMF+CPHIg=";
src = ./.;
BUILD_ID = self.rev or self.dirtyRev;
NEXT_TELEMETRY_DISABLED = 1;
#installPhase = ''
# runHook preInstall
# cp -r out $out
# runHook postInstall
#'';
};
}
);
}
| 10:50:29 |
Nicola Squartini | nix build works as long as I don't add local imports | 10:51:02 |
Nicola Squartini | imports from node_modules don't have issues | 10:51:38 |
Nicola Squartini | In reply to @9hp71n:matrix.org Did you git add that file ? ahh, you are right! I actually forgot to add that fiel | 10:54:29 |
Nicola Squartini | sorry about that | 10:55:04 |
Nicola Squartini | thank you so much 🙏 | 10:56:39 |
| 8 Feb 2024 |
@adis:blad.is | Is there any rationale for keeeping buildNpmPackage around anymore? Imo it should be dropped in favour of just using stdenv.mkDerivation | 01:26:21 |
@kranzes:matrix.org | Explain | 03:12:07 |
@kranzes:matrix.org | Is this because of npmHooks? | 03:12:36 |
@kranzes:matrix.org | Or whatever that's called | 03:12:47 |
@kranzes:matrix.org | I don't mind buildNpmPackage | 03:13:12 |
@adis:blad.is | In reply to @kranzes:matrix.org Is this because of npmHooks? This is because it's not really doing much, so it's a functional stdenv abstraction for not much gain | 04:11:08 |
@adis:blad.is | Essentially it's just this:
stdenv.mkDerivation (args // {
inherit npmDeps npmBuildScript;
nativeBuildInputs = nativeBuildInputs
++ [ nodejs npmConfigHook npmBuildHook npmInstallHook nodejs.python ]
++ lib.optionals stdenv.isDarwin [ darwin.cctools ];
buildInputs = buildInputs ++ [ nodejs ];
strictDeps = true;
# Stripping takes way too long with the amount of files required by a typical Node.js project.
dontStrip = args.dontStrip or true;
meta = (args.meta or { }) // { platforms = args.meta.platforms or nodejs.meta.platforms; };
})
| 04:11:32 |
@adis:blad.is | My take is: Just use the hooks | 04:12:49 |
@adis:blad.is | stdenv.mkDerivation wrappers are an anti-pattern | 04:13:19 |
@adis:blad.is | Using the hooks is more composable as well | 04:14:06 |