out=/nix/store/nqwik00ymry20ak0idr295fnzqq831gj-nix-unit-check Running tests for x86_64-linux warning: `--gc-roots-dir' not specified warning: not writing modified lock file of flake 'path:/nix/store/91jv2jdgblhyfwxsnp5p0k3play5av6n-source': • Updated input 'clan-core': 'git+https://git.clan.lol/clan/clan-core?ref=refs/heads/main&rev=5cf3efca371d3fbcc6ac0a1bf84edb79629dd0fd' (2026-07-22) → 'path:/nix/store/y8hw0fq81igisgvc73z6skgrzblmswl8-source?lastModified=1&narHash=sha256-OzvNtZUPrYeQqOO7TZd4iup3i9NeQesK1UmKIQLHaao%3D' (1970-01-01) • Updated input 'ethereum-nix': 'github:nix-community/ethereum.nix/12621446ed2cc4a0840bbc9de1a96baef84cce28?narHash=sha256-LV5%2BM47NCQj2vUk%2BJ1vah3kKDfix7J3eUbrC2Q8e8KI%3D' (2026-07-21) → 'path:/nix/store/qd8pvn5zijd87gkfwc2hknqj8cvdicbk-source?lastModified=1&narHash=sha256-LV5%2BM47NCQj2vUk%2BJ1vah3kKDfix7J3eUbrC2Q8e8KI%3D' (1970-01-01) • Updated input 'flake-parts': follows 'clan-core/flake-parts' → 'path:/nix/store/xfg4bws749i95jvnxhymxmfwailzk38q-source?lastModified=1&narHash=sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w%2B6NWK9yA%3D' (1970-01-01) • Added input 'flake-parts/nixpkgs-lib': 'github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D' (2026-06-28) • Updated input 'nix-unit': 'github:nix-community/nix-unit/21a5496ae32b16b73601ef835b9f6497b19024dc?narHash=sha256-eXyZw2ddCKT5xMY8SDnV6lkr61zvSc7CNJeJSAjKqN4%3D' (2026-07-16) → 'path:/nix/store/8cm9f310i77mqdaz579p48pgq229kbdy-source?lastModified=1&narHash=sha256-eXyZw2ddCKT5xMY8SDnV6lkr61zvSc7CNJeJSAjKqN4%3D' (1970-01-01) • Updated input 'nix-unit/nixpkgs': 'github:NixOS/nixpkgs/421eebfd0ec7bccd4abe826ce62d7e6e83129493?narHash=sha256-/FCliTPgiuV1owejZFNx3Ch9irdvkOfOFl%2BHHZ%2BDrtM%3D' (2026-07-20) → 'github:NixOS/nixpkgs/35d3407a3816f3b341d8cf1d60abaf2b7b8166ac?narHash=sha256-BoYPdqk6jlKXy%2BDyUzyGV/CtRGfAhk2MmIgBhsemTGI%3D' (2026-07-15) • Updated input 'nixpkgs': follows 'clan-core/nixpkgs' → 'path:/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source?lastModified=1&narHash=sha256-hCafbexZ0iZ/7QYkKWxCxviTU%2Bc0PDhkieiUVVPCHtY%3D' (1970-01-01) unpacking 'github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D' into the Git cache... unpacking 'github:numtide/treefmt-nix/df3c0640565d04a0261253cdd89fce78ec50168a?narHash=sha256-47cxbcZODibHv3rELFQ9vZly0vUNkND/atn/U7HLeb0%3D' into the Git cache... ✅ system-agnostic.dvt-ecl-adapters.besu.test devnet (network = null) passes null through ✅ system-agnostic.dvt-ecl-adapters.besu.test network is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.erigon.test chain is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.erigon.test devnet (network = null) falls back to the module default ✅ system-agnostic.dvt-ecl-adapters.firewall.test a custom torrent port replaces the default in the registration ✅ system-agnostic.dvt-ecl-adapters.firewall.test disabling the downloader withdraws the torrent registration ☢️ system-agnostic.dvt-ecl-adapters.firewall.test erigon registers only its torrent port error: … while evaluating the attribute 'tcp' … while calling anonymous lambda at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1187:17: 1186| mapAttrs ( 1187| name: value: | ^ 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:85: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … while calling anonymous lambda at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:283:71: 282| # For definitions that have an associated option 283| declaredConfig = mapAttrsRecursiveCond (v: !isOption v) (_: v: v.value) options; | ^ 284| … while evaluating the attribute 'value' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1147:7: 1146| // { 1147| value = addErrorContext "while evaluating the option `${showOption loc}':" value; | ^ 1148| inherit (res.defsFinal') highestPrio; … while evaluating the option `dvt.firewall.public.tcp': … while evaluating the attribute 'mergedValue' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1244:5: 1243| # Type-check the remaining definitions, and merge them. Or throw if no definitions. 1244| mergedValue = | ^ 1245| if isDefined then … while evaluating the attribute 'value' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/types.nix:743:13: 742| headError = checkDefsForError check loc defs; 743| value = map (x: x.optionalValue.value or x.mergedValue) evals; | ^ 744| valueMeta.list = map (v: v.checkedAndMerged.valueMeta) evals; … while calling the 'map' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/types.nix:743:21: 742| headError = checkDefsForError check loc defs; 743| value = map (x: x.optionalValue.value or x.mergedValue) evals; | ^ 744| valueMeta.list = map (v: v.checkedAndMerged.valueMeta) evals; … while calling the 'filter' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/types.nix:724:21: 723| let 724| evals = filter (x: x.optionalValue ? value) ( | ^ 725| concatLists ( … while calling anonymous lambda at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/types.nix:724:29: 723| let 724| evals = filter (x: x.optionalValue ? value) ( | ^ 725| concatLists ( … while evaluating the attribute 'optionalValue' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1310:5: 1309| 1310| optionalValue = if isDefined then { value = mergedValue; } else { }; | ^ 1311| }; … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1310:21: 1309| 1310| optionalValue = if isDefined then { value = mergedValue; } else { }; | ^ 1311| }; … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1221:7: 1220| # above are lazy and thus never forced on this branch. 1221| if | ^ 1222| length defs == 1 … in the right operand of the AND (&&) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1223:9: 1222| length defs == 1 1223| && ( | ^ 1224| let … while evaluating definitions from `/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/flake.nix': … in the argument of the not operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1228:31: 1227| addErrorContext "while evaluating definitions from `${d.file}':" ( 1228| !(isAttrs d.value && d.value ? _type) | ^ 1229| ) … in the left operand of the AND (&&) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1228:31: 1227| addErrorContext "while evaluating definitions from `${d.file}':" ( 1228| !(isAttrs d.value && d.value ? _type) | ^ 1229| ) … while calling the 'isAttrs' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1228:15: 1227| addErrorContext "while evaluating definitions from `${d.file}':" ( 1228| !(isAttrs d.value && d.value ? _type) | ^ 1229| ) … while evaluating the attribute 'value' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/types.nix:733:25: 732| inherit (def) file; 733| value = def'; | ^ 734| } … while calling the 'elemAt' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/lists.nix:347:43: 346| */ 347| imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list); | ^ 348| error: attribute '"torrent.port"' missing at /build/storedata/nix/store/91jv2jdgblhyfwxsnp5p0k3play5av6n-source/clanServices/dvt/roles/ecl/erigon.nix:29:62: 28| let 29| torrent = lib.optional (!cfg.settings."no-downloader") cfg.settings."torrent.port"; | ^ 30| in ✅ system-agnostic.dvt-ecl-adapters.firewall.test inventory p2p ports flow into the registration ✅ system-agnostic.dvt-ecl-adapters.firewall.test the firewall role opens nothing when no adapter registered ports ☢️ system-agnostic.dvt-ecl-adapters.firewall.test the firewall role opens registered ports on every public interface error: … while evaluating the attribute 'eth0' … while evaluating the attribute 'allowedTCPPorts' at /build/storedata/nix/store/91jv2jdgblhyfwxsnp5p0k3play5av6n-source/clanServices/dvt/roles/ecl/adapters.unit.nix:109:39: 108| adapterModules: publicInterfaces: 109| lib.mapAttrs (_: i: { inherit (i) allowedTCPPorts allowedUDPPorts; }) | ^ 110| (inputs.nixpkgs.lib.nixosSystem { … from call site at /build/storedata/nix/store/91jv2jdgblhyfwxsnp5p0k3play5av6n-source/clanServices/dvt/roles/ecl/adapters.unit.nix:109:39: 108| adapterModules: publicInterfaces: 109| lib.mapAttrs (_: i: { inherit (i) allowedTCPPorts allowedUDPPorts; }) | ^ 110| (inputs.nixpkgs.lib.nixosSystem { … while calling anonymous lambda at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1187:17: 1186| mapAttrs ( 1187| name: value: | ^ 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:85: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … while calling anonymous lambda at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:283:71: 282| # For definitions that have an associated option 283| declaredConfig = mapAttrsRecursiveCond (v: !isOption v) (_: v: v.value) options; | ^ 284| … while evaluating the attribute 'value' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1147:7: 1146| // { 1147| value = addErrorContext "while evaluating the option `${showOption loc}':" value; | ^ 1148| inherit (res.defsFinal') highestPrio; … while evaluating the option `networking.firewall.interfaces.eth0.allowedTCPPorts': … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1136:35: 1135| # yield a value computed from the definitions 1136| value = if opt ? apply then opt.apply res.mergedValue else res.mergedValue; | ^ 1137| … while calling 'canonicalizePortList' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/nixos/modules/services/networking/firewall.nix:11:26: 10| 11| canonicalizePortList = ports: lib.unique (builtins.sort builtins.lessThan ports); | ^ 12| … while calling the 'foldl'' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/nixos/modules/services/networking/firewall.nix:11:33: 10| 11| canonicalizePortList = ports: lib.unique (builtins.sort builtins.lessThan ports); | ^ 12| … while calling the 'sort' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/nixos/modules/services/networking/firewall.nix:11:45: 10| 11| canonicalizePortList = ports: lib.unique (builtins.sort builtins.lessThan ports); | ^ 12| … while evaluating the attribute 'mergedValue' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1244:5: 1243| # Type-check the remaining definitions, and merge them. Or throw if no definitions. 1244| mergedValue = | ^ 1245| if isDefined then … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1245:7: 1244| mergedValue = 1245| if isDefined then | ^ 1246| if type.merge ? v2 then … while evaluating the attribute 'values' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1238:11: 1237| { 1238| values = defsSorted; | ^ 1239| inherit (defsFiltered) highestPrio; … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1209:11: 1208| # Avoid sorting if we don't have to. 1209| if any (def: def.value._type or "" == "order") defsFiltered.values then | ^ 1210| sortProperties defsFiltered.values … while calling the 'any' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1209:14: 1208| # Avoid sorting if we don't have to. 1209| if any (def: def.value._type or "" == "order") defsFiltered.values then | ^ 1210| sortProperties defsFiltered.values … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1204:24: 1203| # Process mkOverride properties. 1204| defsFiltered = filterOverrides' defsNormalized; | ^ 1205| … while calling anonymous lambda at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1422:5: 1421| in 1422| defs: | ^ 1423| # Optimize for the singleton case, equivalent to the `else` clause. … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1424:5: 1423| # Optimize for the singleton case, equivalent to the `else` clause. 1424| if length defs == 1 then | ^ 1425| { … while calling the 'length' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1424:8: 1423| # Optimize for the singleton case, equivalent to the `else` clause. 1424| if length defs == 1 then | ^ 1425| { … while calling the 'concatMap' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1189:26: 1188| # Process mkMerge and mkIf properties. 1189| defsNormalized = concatMap ( | ^ 1190| m: … while calling anonymous lambda at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1190:11: 1189| defsNormalized = concatMap ( 1190| m: | ^ 1191| map ( … while calling the 'map' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1191:11: 1190| m: 1191| map ( | ^ 1192| value: … while evaluating definitions from `/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/flake.nix': … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1200:80: 1199| } 1200| ) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) | ^ 1201| ) defs; … while calling 'dischargeProperties' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1376:5: 1375| dischargeProperties = 1376| def: | ^ 1377| if def._type or "" == "merge" then … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1377:5: 1376| def: 1377| if def._type or "" == "merge" then | ^ 1378| concatMap dischargeProperties def.contents … while evaluating the attribute 'value' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:849:21: 848| inherit (module) file; 849| inherit value; | ^ 850| }) module.config … while calling the 'foldl'' builtin at /build/storedata/nix/store/91jv2jdgblhyfwxsnp5p0k3play5av6n-source/clanServices/dvt/roles/firewall.nix:39:31: 38| networking.firewall.interfaces = lib.genAttrs settings.publicInterfaces (_: { 39| allowedTCPPorts = lib.unique config.dvt.firewall.public.tcp; | ^ 40| allowedUDPPorts = lib.unique config.dvt.firewall.public.udp; … from call site at /build/storedata/nix/store/91jv2jdgblhyfwxsnp5p0k3play5av6n-source/clanServices/dvt/roles/firewall.nix:39:42: 38| networking.firewall.interfaces = lib.genAttrs settings.publicInterfaces (_: { 39| allowedTCPPorts = lib.unique config.dvt.firewall.public.tcp; | ^ 40| allowedUDPPorts = lib.unique config.dvt.firewall.public.udp; … while calling anonymous lambda at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1187:17: 1186| mapAttrs ( 1187| name: value: | ^ 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:85: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … while calling anonymous lambda at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:283:71: 282| # For definitions that have an associated option 283| declaredConfig = mapAttrsRecursiveCond (v: !isOption v) (_: v: v.value) options; | ^ 284| … while evaluating the attribute 'value' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1147:7: 1146| // { 1147| value = addErrorContext "while evaluating the option `${showOption loc}':" value; | ^ 1148| inherit (res.defsFinal') highestPrio; … while evaluating the option `dvt.firewall.public.tcp': … while evaluating the attribute 'mergedValue' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1244:5: 1243| # Type-check the remaining definitions, and merge them. Or throw if no definitions. 1244| mergedValue = | ^ 1245| if isDefined then … while evaluating the attribute 'value' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/types.nix:743:13: 742| headError = checkDefsForError check loc defs; 743| value = map (x: x.optionalValue.value or x.mergedValue) evals; | ^ 744| valueMeta.list = map (v: v.checkedAndMerged.valueMeta) evals; … while calling the 'map' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/types.nix:743:21: 742| headError = checkDefsForError check loc defs; 743| value = map (x: x.optionalValue.value or x.mergedValue) evals; | ^ 744| valueMeta.list = map (v: v.checkedAndMerged.valueMeta) evals; … while calling the 'filter' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/types.nix:724:21: 723| let 724| evals = filter (x: x.optionalValue ? value) ( | ^ 725| concatLists ( … while calling anonymous lambda at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/types.nix:724:29: 723| let 724| evals = filter (x: x.optionalValue ? value) ( | ^ 725| concatLists ( … while evaluating the attribute 'optionalValue' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1310:5: 1309| 1310| optionalValue = if isDefined then { value = mergedValue; } else { }; | ^ 1311| }; … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1310:21: 1309| 1310| optionalValue = if isDefined then { value = mergedValue; } else { }; | ^ 1311| }; … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1221:7: 1220| # above are lazy and thus never forced on this branch. 1221| if | ^ 1222| length defs == 1 … in the right operand of the AND (&&) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1223:9: 1222| length defs == 1 1223| && ( | ^ 1224| let … while evaluating definitions from `/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/flake.nix': … in the argument of the not operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1228:31: 1227| addErrorContext "while evaluating definitions from `${d.file}':" ( 1228| !(isAttrs d.value && d.value ? _type) | ^ 1229| ) … in the left operand of the AND (&&) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1228:31: 1227| addErrorContext "while evaluating definitions from `${d.file}':" ( 1228| !(isAttrs d.value && d.value ? _type) | ^ 1229| ) … while calling the 'isAttrs' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1228:15: 1227| addErrorContext "while evaluating definitions from `${d.file}':" ( 1228| !(isAttrs d.value && d.value ? _type) | ^ 1229| ) … while evaluating the attribute 'value' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/types.nix:733:25: 732| inherit (def) file; 733| value = def'; | ^ 734| } … while calling the 'elemAt' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/lists.nix:347:43: 346| */ 347| imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list); | ^ 348| error: attribute '"torrent.port"' missing at /build/storedata/nix/store/91jv2jdgblhyfwxsnp5p0k3play5av6n-source/clanServices/dvt/roles/ecl/erigon.nix:29:62: 28| let 29| torrent = lib.optional (!cfg.settings."no-downloader") cfg.settings."torrent.port"; | ^ 30| in ✅ system-agnostic.dvt-ecl-adapters.firewall.test the role registers the executor and beacon p2p ports ✅ system-agnostic.dvt-ecl-adapters.geth.test devnet (network = null) passes null through ✅ system-agnostic.dvt-ecl-adapters.geth.test network is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.grandine.test checkpointSyncUrl is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.grandine.test devnet (network = null) falls back to the module default ✅ system-agnostic.dvt-ecl-adapters.grandine.test network is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.grandine.test unset checkpointSyncUrl leaves the option at its null default unpacking 'github:numtide/blueprint/56131e8628f173d24a27f6d27c0215eff57e40dd?narHash=sha256-Dt9t1TGRmJFc0xVYhttNBD6QsAgHOHCArqGa0AyjrJY%3D' into the Git cache... ✅ system-agnostic.dvt-ecl-adapters.lighthouse.test checkpointSyncUrl is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.lighthouse.test devnet (network = null) passes null through ✅ system-agnostic.dvt-ecl-adapters.lighthouse.test directPeering adds boot-nodes for dialing peers ✅ system-agnostic.dvt-ecl-adapters.lighthouse.test directPeering adds trusted-peers for each peer ✅ system-agnostic.dvt-ecl-adapters.lighthouse.test network is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.lighthouse.test no trusted-peers flag when directPeering is disabled ✅ system-agnostic.dvt-ecl-adapters.lighthouse.test unset checkpointSyncUrl adds no checkpoint flag to extraArgs ✅ system-agnostic.dvt-ecl-adapters.lodestar.test checkpointSyncUrl is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.lodestar.test devnet (network = null) falls back to the module default ✅ system-agnostic.dvt-ecl-adapters.lodestar.test network is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.lodestar.test unset checkpointSyncUrl leaves the option at its null default ✅ system-agnostic.dvt-ecl-adapters.memory.test adapters default EL and CL budgets to upstream guidance ✅ system-agnostic.dvt-ecl-adapters.memory.test adapters put the client in the per-network child slice ✅ system-agnostic.dvt-ecl-adapters.memory.test cgroupLimits maps request and limit verbatim ✅ system-agnostic.dvt-ecl-adapters.memory.test cgroupLimits passes a slice through as Slice ✅ system-agnostic.dvt-ecl-adapters.memory.test cgroupLimits with only a limit sets no MemoryMin ✅ system-agnostic.dvt-ecl-adapters.memory.test cgroupLimits with only a request sets no MemoryMax ✅ system-agnostic.dvt-ecl-adapters.memory.test explicit -Xmx in jvmOpts wins over the derived heap ✅ system-agnostic.dvt-ecl-adapters.memory.test heapMiB is 80 percent of the process budget ✅ system-agnostic.dvt-ecl-adapters.memory.test inventory memory settings override the adapter defaults ✅ system-agnostic.dvt-ecl-adapters.memory.test lighthouse overlay applies the budget to the unit ✅ system-agnostic.dvt-ecl-adapters.memory.test limit without request sets only the kill line ✅ system-agnostic.dvt-ecl-adapters.memory.test request above limit trips the assertion ✅ system-agnostic.dvt-ecl-adapters.memory.test request without limit sets no MemoryMax ✅ system-agnostic.dvt-ecl-adapters.memory."test resources.memory.request keeps non-heap jvmOpts and appends -Xmx" ✅ system-agnostic.dvt-ecl-adapters.memory.test teku memory derives -Xmx from request and maps the cgroup pair ✅ system-agnostic.dvt-ecl-adapters.memory.test unset memory leaves the unit unconstrained ✅ system-agnostic.dvt-ecl-adapters.nethermind.test chainspec is selected from the packaged chainspecs ✅ system-agnostic.dvt-ecl-adapters.nethermind.test devnet (network = null) sets no chainspec ✅ system-agnostic.dvt-ecl-adapters.nethermind.test fast and snap sync are enabled by default ✅ system-agnostic.dvt-ecl-adapters.nimbus.test checkpointSyncUrl is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.nimbus.test devnet (network = null) falls back to the module default ✅ system-agnostic.dvt-ecl-adapters.nimbus.test network is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.nimbus.test unset checkpointSyncUrl leaves the option at its null default ✅ system-agnostic.dvt-ecl-adapters.prysm.test checkpointSyncUrl also feeds genesis-beacon-api-url ✅ system-agnostic.dvt-ecl-adapters.prysm.test checkpointSyncUrl is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.prysm.test devnet (network = null) passes null through ✅ system-agnostic.dvt-ecl-adapters.prysm.test network is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.prysm.test unset checkpointSyncUrl leaves the option at its null default ✅ system-agnostic.dvt-ecl-adapters.reth.test chain is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.reth.test devnet (network = null) falls back to the module default ✅ system-agnostic.dvt-ecl-adapters.teku.test checkpointSyncUrl is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.teku.test devnet (network = null) falls back to the module default ✅ system-agnostic.dvt-ecl-adapters.teku.test network is passed through from the clan service ✅ system-agnostic.dvt-ecl-adapters.teku.test unset checkpointSyncUrl leaves the option at its null default ✅ system-agnostic.dvt-lib.beacon.test co-located machine yields the local beacon address ✅ system-agnostic.dvt-lib.beacon.test honours a non-default beacon rest port ✅ system-agnostic.dvt-lib.beacon.test signer-only machine yields null ✅ system-agnostic.dvt-lib.wg.canonAddrOf.test equals canonicalizeIPv6 of the raw addrOf form ✅ system-agnostic.dvt-lib.wg.canonAddrOf.test matches the canonical hash-derived admin address ✅ system-agnostic.dvt-lib.wg.canonicalizeIPv6.test collapses a leading zero run ✅ system-agnostic.dvt-lib.wg.canonicalizeIPv6.test collapses a trailing zero run ✅ system-agnostic.dvt-lib.wg.canonicalizeIPv6.test collapses only the longest zero run, leaving a lone zero literal ✅ system-agnostic.dvt-lib.wg.canonicalizeIPv6.test collapses the fixed prefix zero run ✅ system-agnostic.dvt-lib.wg.canonicalizeIPv6.test leaves an address with no zero run untouched ✅ system-agnostic.dvt-lib.wg.canonicalizeIPv6.test strips a single per-hextet leading zero ✅ system-agnostic.dvt-lib.wg.canonicalizeIPv6.test strips multiple leading zeros within a hextet evaluation warning: system.stateVersion is not set, defaulting to 26.11. Read why this matters on https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion. ✅ system-agnostic.dvt-resource-guard.guard.test MemoryMin is preferred over MemoryMax as the reservation evaluation warning: system.stateVersion is not set, defaulting to 26.11. Read why this matters on https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion. ✅ system-agnostic.dvt-resource-guard.guard."test a slice-less unit protects system.slice" evaluation warning: system.stateVersion is not set, defaulting to 26.11. Read why this matters on https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion. ✅ system-agnostic.dvt-resource-guard.guard.test infinity is unbounded, not unparseable ✅ system-agnostic.dvt-resource-guard.guard.test machines without a facter report skip the check evaluation warning: system.stateVersion is not set, defaulting to 26.11. Read why this matters on https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion. ✅ system-agnostic.dvt-resource-guard.guard.test nested slices carry subtree sums evaluation warning: system.stateVersion is not set, defaulting to 26.11. Read why this matters on https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion. ✅ system-agnostic.dvt-resource-guard.guard.test over-provisioned reservations fail with a breakdown evaluation warning: system.stateVersion is not set, defaulting to 26.11. Read why this matters on https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion. ✅ system-agnostic.dvt-resource-guard.guard.test overcommitted ceilings warn but do not fail evaluation warning: system.stateVersion is not set, defaulting to 26.11. Read why this matters on https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion. ✅ system-agnostic.dvt-resource-guard.guard.test reservations that fit pass the assertion evaluation warning: system.stateVersion is not set, defaulting to 26.11. Read why this matters on https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion. ✅ system-agnostic.dvt-resource-guard.guard.test unparseable limits are surfaced as a warning ✅ system-agnostic.dvt-resource-guard.parse.test a report without phys_mem yields no capacity ✅ system-agnostic.dvt-resource-guard.parse.test base-1024 suffixes ✅ system-agnostic.dvt-resource-guard.parse.test digit strings are bytes ✅ system-agnostic.dvt-resource-guard.parse.test facter phys_mem is summed into MiB ✅ system-agnostic.dvt-resource-guard.parse.test infinity means unbounded ✅ system-agnostic.dvt-resource-guard.parse.test integer values are bytes ✅ system-agnostic.dvt-resource-guard.parse.test list values follow last-assignment-wins ✅ system-agnostic.dvt-resource-guard.parse.test percentages resolve against physical RAM ✅ system-agnostic.dvt-resource-guard.parse.test unrecognised values are marked, not dropped 😢 90/92 successful error: Tests failed