node-modules.nix 1.1 KB

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