npm ci in buildPhase hangs because the Nix build sandbox has no network access. Adopt nix-bitcoin's approach: fetchNodeModules pre-fetches node_modules as a fixed-output derivation (which has network access), and the main build copies them offline. Uses the same node_modules hash as upstream nix-bitcoin for RTL 0.15.8.