node-modules.nix 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. { hash, lib, stdenvNoCC, bun, cacert, curl }:
  2. args:
  3. stdenvNoCC.mkDerivation {
  4. pname = "opencode-node_modules";
  5. version = args.version;
  6. src = args.src;
  7. impureEnvVars =
  8. lib.fetchers.proxyImpureEnvVars
  9. ++ [
  10. "GIT_PROXY_COMMAND"
  11. "SOCKS_SERVER"
  12. ];
  13. nativeBuildInputs = [ bun cacert curl ];
  14. dontConfigure = true;
  15. buildPhase = ''
  16. runHook preBuild
  17. export HOME=$(mktemp -d)
  18. export BUN_INSTALL_CACHE_DIR=$(mktemp -d)
  19. bun install \
  20. --cpu="*" \
  21. --os="*" \
  22. --frozen-lockfile \
  23. --ignore-scripts \
  24. --no-progress \
  25. --linker=isolated
  26. bun --bun ${args.canonicalizeScript}
  27. bun --bun ${args.normalizeBinsScript}
  28. runHook postBuild
  29. '';
  30. installPhase = ''
  31. runHook preInstall
  32. mkdir -p $out
  33. while IFS= read -r dir; do
  34. rel="''${dir#./}"
  35. dest="$out/$rel"
  36. mkdir -p "$(dirname "$dest")"
  37. cp -R "$dir" "$dest"
  38. done < <(find . -type d -name node_modules -prune | sort)
  39. runHook postInstall
  40. '';
  41. dontFixup = true;
  42. outputHashAlgo = "sha256";
  43. outputHashMode = "recursive";
  44. outputHash = hash;
  45. }