diff --git a/nix-js/runtime-ts/src/builtins/attrs.ts b/nix-js/runtime-ts/src/builtins/attrs.ts index 20789d1..c4eb38f 100644 --- a/nix-js/runtime-ts/src/builtins/attrs.ts +++ b/nix-js/runtime-ts/src/builtins/attrs.ts @@ -72,9 +72,21 @@ export const intersectAttrs = const f1 = forceAttrs(e1); const f2 = forceAttrs(e2); const attrs: NixAttrs = {}; - for (const key of Object.keys(f2)) { - if (Object.hasOwn(f1, key)) { - attrs[key] = f2[key]; + const k1 = Object.keys(f1); + const k2 = Object.keys(f2); + if (k1.length < k2.length) { + for (let i = 0; i < k1.length; i++) { + const key = k1[i]; + if (key in f2) { + attrs[key] = f2[key]; + } + } + } else { + for (let i = 0; i < k2.length; i++) { + const key = k2[i]; + if (key in f1) { + attrs[key] = f2[key]; + } } } return attrs;