node-modules.nix 1.1 KB

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