!NhAsaYbbgmzHtXTPQJ:funklause.de

Nix NodeJS

210 Members
61 Servers

Load older messages


SenderMessageTime
9 Aug 2023
@lily:lily.flowersLily Foster
In reply to @countoren:matrix.org
what will be the differnece between fetchNpmDeps to node2nix?
* node2nix generates nix expressions and does its own locking of dependencies needed for a node package. It also includes (questionable...) build logic to turn those into a coherent package with built libraries, cli scripts, and such. fetchNpmDeps just reads an existing package-lock.json and downloads those deps in a way that npm can find them later when in the nix sandbox (which has no internet). buildNpmPackage includes hooks that have their own build logic to turn an npm application into a coherent package
23:30:41
@countoren:matrix.orgcountorenso there will be no way to manually replace/add dependencies with buildNpmPackage23:31:07
@lily:lily.flowersLily Foster If they need to be replaced then the package-lock.json file needs to be patched 23:31:22
@countoren:matrix.orgcountorenor non strightforawd at least23:31:29
@lily:lily.flowersLily Foster Which can be done, but there's no concept of "replacing" specifically in buildNpmPackage (since you'd just be patching the upstream files before buildNpmPackage even sees it) 23:31:51
@lily:lily.flowersLily Foster (I mean similar would be true of node2nix as well) 23:31:59
@lily:lily.flowersLily Foster * If they need to be replaced then the package.json and/or package-lock.json files need to be patched 23:32:20
@lily:lily.flowersLily Foster * If they need to be replaced then the package-lock.json and possibly package.json files need to be patched 23:32:34
@countoren:matrix.orgcountorenyes, but it will be easier to store and compose the tars like what I did with node2nix23:33:01
@countoren:matrix.orgcountorenin nix expressions23:33:05
@countoren:matrix.orgcountorennpm pack to get the private tars23:33:21
@countoren:matrix.orgcountorenand then just replace them in sources of node2nix23:33:32
@countoren:matrix.orgcountorenbut I guess there should be a way to do it in the package-lock23:34:04
@lily:lily.flowersLily Foster Like editing the .nix file output of running node2nix? 23:34:08
@countoren:matrix.orgcountorenyes23:34:17
@countoren:matrix.orgcountorenno23:34:22
@countoren:matrix.orgcountorensorry23:34:24
@lily:lily.flowersLily FosterApologies, I'm still having trouble grasping what exactly it is you are attempting here 😅23:34:47
@countoren:matrix.orgcountorenI didnt edit the genereated one I added those when composing them in the flake23:34:59
@countoren:matrix.orgcountoren:) nvm i think if the token will work there is a good chance that it will solve my problem23:35:31
@countoren:matrix.orgcountoren

but as a reference this is my composed node2nix:

    globalBuildInputsSet = import ./server/supplement.nix {
		inherit nodeEnv;
		inherit (pkgs) stdenv lib nix-gitignore fetchurl fetchgit;
	};
    globalBuildInputs = pkgs.lib.attrValues globalBuildInputsSet;
	nodeEnv = import ./server/node-env.nix {
	  nodejs = nodejs13;
	  inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript;
	  inherit pkgs;
	  libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
	};
	client = (import ./server/node-packages.nix {
	    inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
	    inherit globalBuildInputs nodeEnv;
        sourcesOverride = srcs:
        srcs // {
          "@fortawesome/pro-light-svg-icons-5.14.0" = srcs."@fortawesome/pro-light-svg-icons-5.14.0" // {
        	  src = ./server/fortawesome-pro-light-svg-icons-5.14.0.tgz;
          };
          "@fortawesome/pro-solid-svg-icons-5.14.0" = srcs."@fortawesome/pro-solid-svg-icons-5.14.0" // {
        	  src = ./server/fortawesome-pro-solid-svg-icons-5.14.0.tgz;
          };
          "@fortawesome/fontawesome-common-types-0.2.30" = srcs."@fortawesome/fontawesome-common-types-0.2.30" // {
        	  src = ./server/fortawesome-fontawesome-common-types-0.2.30.tgz;
          };
          "@fortawesome/fontawesome-svg-core-1.2.30" = srcs."@fortawesome/fontawesome-svg-core-1.2.30" // {
        	  src = ./server/fortawesome-fontawesome-svg-core-1.2.30.tgz;
          };
          "@fortawesome/angular-fontawesome-0.5.0" = srcs."@fortawesome/angular-fontawesome-0.5.0" // {
        	  src = ./server/fortawesome-angular-fontawesome-0.5.0.tgz;
          };
        };
       });
23:36:32
@lily:lily.flowersLily Foster
In reply to @countoren:matrix.org
:) nvm i think if the token will work there is a good chance that it will solve my problem
Alright, let me know and I'll send a PR so we can get it into nixpkgs. Keep in mind buildNpmPackage/fetchNpmDeps needs a FOD hash for now separate from the package-lock.json (but one day we want a importNpmLockfile kinda like what Rust has with importCargoLock which would avoid the need for that FOD hash in most scenarios)
23:37:09
@countoren:matrix.orgcountorenwhat is FOD ? first time seeing this abrv :)23:38:30
@lily:lily.flowersLily Foster
In reply to @countoren:matrix.org

but as a reference this is my composed node2nix:

    globalBuildInputsSet = import ./server/supplement.nix {
		inherit nodeEnv;
		inherit (pkgs) stdenv lib nix-gitignore fetchurl fetchgit;
	};
    globalBuildInputs = pkgs.lib.attrValues globalBuildInputsSet;
	nodeEnv = import ./server/node-env.nix {
	  nodejs = nodejs13;
	  inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript;
	  inherit pkgs;
	  libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
	};
	client = (import ./server/node-packages.nix {
	    inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
	    inherit globalBuildInputs nodeEnv;
        sourcesOverride = srcs:
        srcs // {
          "@fortawesome/pro-light-svg-icons-5.14.0" = srcs."@fortawesome/pro-light-svg-icons-5.14.0" // {
        	  src = ./server/fortawesome-pro-light-svg-icons-5.14.0.tgz;
          };
          "@fortawesome/pro-solid-svg-icons-5.14.0" = srcs."@fortawesome/pro-solid-svg-icons-5.14.0" // {
        	  src = ./server/fortawesome-pro-solid-svg-icons-5.14.0.tgz;
          };
          "@fortawesome/fontawesome-common-types-0.2.30" = srcs."@fortawesome/fontawesome-common-types-0.2.30" // {
        	  src = ./server/fortawesome-fontawesome-common-types-0.2.30.tgz;
          };
          "@fortawesome/fontawesome-svg-core-1.2.30" = srcs."@fortawesome/fontawesome-svg-core-1.2.30" // {
        	  src = ./server/fortawesome-fontawesome-svg-core-1.2.30.tgz;
          };
          "@fortawesome/angular-fontawesome-0.5.0" = srcs."@fortawesome/angular-fontawesome-0.5.0" // {
        	  src = ./server/fortawesome-angular-fontawesome-0.5.0.tgz;
          };
        };
       });
Oh I see, yeah having the token should avoid the need to vendor those fontawesome tarballs. I would add token support to node2nix to avoid you having to rewrite code from node2nix to buildNpmPackage, but the node2nix code is highly cursed and as I mentioned there's no real investment anymore maintenance given the architectural and practical issues the approach has, unfortunately
23:38:45
@lily:lily.flowersLily Foster
In reply to @countoren:matrix.org
what is FOD ? first time seeing this abrv :)
Oh yeah, sorry, Fixed-Output Derivation. It's like when you have a fetchFromGitHub in a package and need to provide a hash of the download in advance. buildNpmPackage expects a npmDepsHash that's more or less equivalent to that, just being a hash of the fetched npm deps rather than some concrete upstream
23:39:59
@countoren:matrix.orgcountoreno ye, I noticed it. IMO it make sense and dont feel much of trouble23:43:38
@countoren:matrix.orgcountorenthe way I usually explain it to beginner it is your way to sign that this is what you want.23:44:34
@lily:lily.flowersLily FosterYeah, that makes sense I suppose23:45:36
@lily:lily.flowersLily Foster
In reply to @lily:lily.flowers
Okay I made a thing for passing in an environment variable that looks like NIX_NPM_TOKENS='{"regsistry.fontawesome.com":"token"}'. Do you think you could apply this patch to your nixpkgs and see if you can set NIX_NPM_TOKENS on your builder/nix daemon? https://github.com/lilyinstarlight/nixpkgs/compare/5a8e9243812ba528000995b294292d3b5e120947...24f435dd88b47f53011bc1f296fd0347699ef451.diff
Oh also NIX_NPM_TOKENS needs to be set on the nix daemon if running Nix in multi-user mode (the default unless you are running as root user). I will leave it up to you on how to do that, but in general it will eventually end up being some systemd override to add Environment=NIX_NPM_TOKENS={...} (and overrides usually go in somewhere like /etc/systemd/system/nix-daemon.service.d/)
23:47:45
@countoren:matrix.orgcountorenI was thinking actually clone me a copy apply the diff and add it to my flake23:48:44

Show newer messages


Back to Room ListRoom Version: 6