out=/nix/store/sncnzyvbaz64c2pqwx8i80s34r4gv3by-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/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-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.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 error: … while evaluating the attribute 'assertion' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:147:25: 146| { 147| inherit (our) assertion; | ^ 148| breakdown = lib.hasInfix "el: 10240 MiB (MemoryMin)" our.message; … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:144:17: 143| }; 144| our = lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions; | ^ 145| in … while calling 'findFirst' at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:649:20: 648| findFirst = 649| pred: default: list: | ^ 650| let … while evaluating a branch condition at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:653:5: 652| in 653| if index == null then default else elemAt list index; | ^ 654| … from call site at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:651:15: 650| let 651| index = findFirstIndex pred null list; | ^ 652| in … while calling 'findFirstIndex' at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:579:20: 578| findFirstIndex = 579| pred: default: list: | ^ 580| let … while evaluating a branch condition at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:609:5: 608| in 609| if resultIndex < 0 then default else resultIndex; | ^ 610| … while calling the 'lessThan' builtin at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:609:20: 608| in 609| if resultIndex < 0 then default else resultIndex; | ^ 610| … while calling the 'foldl'' builtin at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:594:21: 593| # We start with index -1 and the 0'th element of the list, which satisfies the invariant 594| resultIndex = foldl' ( | ^ 595| index: el: … while calling anonymous lambda at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:595:16: 594| resultIndex = foldl' ( 595| index: el: | ^ 596| if index < 0 then … while evaluating a branch condition at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:598:11: 597| # No match yet before the current index, we need to check the element 598| if pred el then | ^ 599| # We have a match! Turn it into the actual index to prevent future iterations from modifying it … from call site at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:598:14: 597| # No match yet before the current index, we need to check the element 598| if pred el then | ^ 599| # We have a match! Turn it into the actual index to prevent future iterations from modifying it … while calling anonymous lambda at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:144:32: 143| }; 144| our = lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions; | ^ 145| in … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:144:35: 143| }; 144| our = lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions; | ^ 145| in … while calling anonymous lambda at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/strings.nix:918:7: 917| else 918| content: builtins.match ".*${escapedInfix}.*" "${content}" != null; | ^ 919| … while calling the 'match' builtin at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/strings.nix:918:16: 917| else 918| content: builtins.match ".*${escapedInfix}.*" "${content}" != null; | ^ 919| … while evaluating the second argument passed to builtins.match … while evaluating the attribute 'message' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:153:7: 152| assertion = reservationTotal + reservedMiB <= capacityMiB; 153| message = '' | ^ 154| dvt.resources.memory: machine is over-provisioned. Memory reservations total … while calling the 'toString' builtin at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:155:61: 154| dvt.resources.memory: machine is over-provisioned. Memory reservations total 155| ${toString reservationTotal} MiB + systemReserved ${toString reservedMiB} MiB | ^ 156| exceed the ${toString capacityMiB} MiB of physical RAM in the facter … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:38:17: 37| capacityMiB = guardLib.facterMemoryMiB report; 38| reservedMiB = cfg.systemReserved; | ^ 39| … 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 … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:11: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … in the left operand of the AND (&&) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:28: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … while calling the 'isAttrs' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:14: 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:925:37: 924| 925| matchedOptions = mapAttrs (n: v: v.matchedOptions) resultsByName; | ^ 926| … while evaluating the attribute 'matchedOptions' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:891:13: 890| { 891| matchedOptions = evalOptionValue loc opt defns'; | ^ 892| unmatchedDefns = [ ]; … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:891:30: 890| { 891| matchedOptions = evalOptionValue loc opt defns'; | ^ 892| unmatchedDefns = [ ]; … while calling 'evalOptionValue' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1101:15: 1100| evalOptionValue = 1101| loc: opt: defs: | ^ 1102| let … in the left operand of the update (//) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1145:5: 1144| in 1145| warnDeprecation opt | ^ 1146| // { … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1139:9: 1138| warnDeprecation = 1139| if (opt.type.deprecationMessage != null) then | ^ 1140| warn "The type `types.${opt.type.name}' of option `${showOption loc}' defined in ${showFiles opt.declarations} is deprecated. ${opt.type.deprecationMessage}" … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:888:19: 887| let 888| opt = fixupOptionType loc (mergeOptionDecls loc decls); | ^ 889| in … while calling 'fixupOptionType' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1471:10: 1470| fixupOptionType = 1471| loc: opt: | ^ 1472| if opt.type.getSubModules or null == null then … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1472:5: 1471| loc: opt: 1472| if opt.type.getSubModules or null == null then | ^ 1473| opt // { type = opt.type or types.unspecified; } … while evaluating the attribute 'type.getSubModules' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:100:7: 99| systemReserved = lib.mkOption { 100| type = resourceLib.memoryType; | ^ 101| default = 1024; error: attribute 'memoryType' missing at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:100:14: 99| systemReserved = lib.mkOption { 100| type = resourceLib.memoryType; | ^ 101| default = 1024; 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 error: … while evaluating the attribute 'assertion' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:233:11: 232| { 233| assertion = guardAssertion cfg; | ^ 234| burstWarning = lib.any (w: lib.hasInfix "runs out of memory" w) cfg.warnings; … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:233:23: 232| { 233| assertion = guardAssertion cfg; | ^ 234| burstWarning = lib.any (w: lib.hasInfix "runs out of memory" w) cfg.warnings; … while calling 'guardAssertion' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:58:5: 57| guardAssertion = 58| cfg: | ^ 59| (lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions).assertion; … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:59:6: 58| cfg: 59| (lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions).assertion; | ^ 60| in … while calling 'findFirst' at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:649:20: 648| findFirst = 649| pred: default: list: | ^ 650| let … while evaluating a branch condition at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:653:5: 652| in 653| if index == null then default else elemAt list index; | ^ 654| … from call site at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:651:15: 650| let 651| index = findFirstIndex pred null list; | ^ 652| in … while calling 'findFirstIndex' at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:579:20: 578| findFirstIndex = 579| pred: default: list: | ^ 580| let … while evaluating a branch condition at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:609:5: 608| in 609| if resultIndex < 0 then default else resultIndex; | ^ 610| … while calling the 'lessThan' builtin at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:609:20: 608| in 609| if resultIndex < 0 then default else resultIndex; | ^ 610| … while calling the 'foldl'' builtin at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:594:21: 593| # We start with index -1 and the 0'th element of the list, which satisfies the invariant 594| resultIndex = foldl' ( | ^ 595| index: el: … while calling anonymous lambda at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:595:16: 594| resultIndex = foldl' ( 595| index: el: | ^ 596| if index < 0 then … while evaluating a branch condition at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:598:11: 597| # No match yet before the current index, we need to check the element 598| if pred el then | ^ 599| # We have a match! Turn it into the actual index to prevent future iterations from modifying it … from call site at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:598:14: 597| # No match yet before the current index, we need to check the element 598| if pred el then | ^ 599| # We have a match! Turn it into the actual index to prevent future iterations from modifying it … while calling anonymous lambda at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:59:21: 58| cfg: 59| (lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions).assertion; | ^ 60| in … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:59:24: 58| cfg: 59| (lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions).assertion; | ^ 60| in … while calling anonymous lambda at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/strings.nix:918:7: 917| else 918| content: builtins.match ".*${escapedInfix}.*" "${content}" != null; | ^ 919| … while calling the 'match' builtin at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/strings.nix:918:16: 917| else 918| content: builtins.match ".*${escapedInfix}.*" "${content}" != null; | ^ 919| … while evaluating the second argument passed to builtins.match … while evaluating the attribute 'message' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:153:7: 152| assertion = reservationTotal + reservedMiB <= capacityMiB; 153| message = '' | ^ 154| dvt.resources.memory: machine is over-provisioned. Memory reservations total … while calling the 'toString' builtin at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:155:61: 154| dvt.resources.memory: machine is over-provisioned. Memory reservations total 155| ${toString reservationTotal} MiB + systemReserved ${toString reservedMiB} MiB | ^ 156| exceed the ${toString capacityMiB} MiB of physical RAM in the facter … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:38:17: 37| capacityMiB = guardLib.facterMemoryMiB report; 38| reservedMiB = cfg.systemReserved; | ^ 39| … 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 … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:11: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … in the left operand of the AND (&&) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:28: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … while calling the 'isAttrs' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:14: 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:925:37: 924| 925| matchedOptions = mapAttrs (n: v: v.matchedOptions) resultsByName; | ^ 926| … while evaluating the attribute 'matchedOptions' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:891:13: 890| { 891| matchedOptions = evalOptionValue loc opt defns'; | ^ 892| unmatchedDefns = [ ]; … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:891:30: 890| { 891| matchedOptions = evalOptionValue loc opt defns'; | ^ 892| unmatchedDefns = [ ]; … while calling 'evalOptionValue' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1101:15: 1100| evalOptionValue = 1101| loc: opt: defs: | ^ 1102| let … in the left operand of the update (//) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1145:5: 1144| in 1145| warnDeprecation opt | ^ 1146| // { … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1139:9: 1138| warnDeprecation = 1139| if (opt.type.deprecationMessage != null) then | ^ 1140| warn "The type `types.${opt.type.name}' of option `${showOption loc}' defined in ${showFiles opt.declarations} is deprecated. ${opt.type.deprecationMessage}" … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:888:19: 887| let 888| opt = fixupOptionType loc (mergeOptionDecls loc decls); | ^ 889| in … while calling 'fixupOptionType' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1471:10: 1470| fixupOptionType = 1471| loc: opt: | ^ 1472| if opt.type.getSubModules or null == null then … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1472:5: 1471| loc: opt: 1472| if opt.type.getSubModules or null == null then | ^ 1473| opt // { type = opt.type or types.unspecified; } … while evaluating the attribute 'type.getSubModules' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:100:7: 99| systemReserved = lib.mkOption { 100| type = resourceLib.memoryType; | ^ 101| default = 1024; error: attribute 'memoryType' missing at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:100:14: 99| systemReserved = lib.mkOption { 100| type = resourceLib.memoryType; | ^ 101| default = 1024; 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 error: … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:126:14: 125| "test reservations that fit pass the assertion" = { 126| expr = guardAssertion (guardFor { | ^ 127| units = { … while calling 'guardAssertion' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:58:5: 57| guardAssertion = 58| cfg: | ^ 59| (lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions).assertion; … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:59:6: 58| cfg: 59| (lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions).assertion; | ^ 60| in … while calling 'findFirst' at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:649:20: 648| findFirst = 649| pred: default: list: | ^ 650| let … while evaluating a branch condition at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:653:5: 652| in 653| if index == null then default else elemAt list index; | ^ 654| … from call site at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:651:15: 650| let 651| index = findFirstIndex pred null list; | ^ 652| in … while calling 'findFirstIndex' at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:579:20: 578| findFirstIndex = 579| pred: default: list: | ^ 580| let … while evaluating a branch condition at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:609:5: 608| in 609| if resultIndex < 0 then default else resultIndex; | ^ 610| … while calling the 'lessThan' builtin at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:609:20: 608| in 609| if resultIndex < 0 then default else resultIndex; | ^ 610| … while calling the 'foldl'' builtin at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:594:21: 593| # We start with index -1 and the 0'th element of the list, which satisfies the invariant 594| resultIndex = foldl' ( | ^ 595| index: el: … while calling anonymous lambda at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:595:16: 594| resultIndex = foldl' ( 595| index: el: | ^ 596| if index < 0 then … while evaluating a branch condition at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:598:11: 597| # No match yet before the current index, we need to check the element 598| if pred el then | ^ 599| # We have a match! Turn it into the actual index to prevent future iterations from modifying it … from call site at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/lists.nix:598:14: 597| # No match yet before the current index, we need to check the element 598| if pred el then | ^ 599| # We have a match! Turn it into the actual index to prevent future iterations from modifying it … while calling anonymous lambda at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:59:21: 58| cfg: 59| (lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions).assertion; | ^ 60| in … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:59:24: 58| cfg: 59| (lib.findFirst (a: lib.hasInfix "dvt.resources.memory" a.message) null cfg.assertions).assertion; | ^ 60| in … while calling anonymous lambda at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/strings.nix:918:7: 917| else 918| content: builtins.match ".*${escapedInfix}.*" "${content}" != null; | ^ 919| … while calling the 'match' builtin at «github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c?narHash=sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC%2BeBu2zKlp8%3D»/lib/strings.nix:918:16: 917| else 918| content: builtins.match ".*${escapedInfix}.*" "${content}" != null; | ^ 919| … while evaluating the second argument passed to builtins.match … while evaluating the attribute 'message' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:153:7: 152| assertion = reservationTotal + reservedMiB <= capacityMiB; 153| message = '' | ^ 154| dvt.resources.memory: machine is over-provisioned. Memory reservations total … while calling the 'toString' builtin at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:155:61: 154| dvt.resources.memory: machine is over-provisioned. Memory reservations total 155| ${toString reservationTotal} MiB + systemReserved ${toString reservedMiB} MiB | ^ 156| exceed the ${toString capacityMiB} MiB of physical RAM in the facter … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:38:17: 37| capacityMiB = guardLib.facterMemoryMiB report; 38| reservedMiB = cfg.systemReserved; | ^ 39| … 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 … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:11: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … in the left operand of the AND (&&) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:28: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … while calling the 'isAttrs' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:14: 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:925:37: 924| 925| matchedOptions = mapAttrs (n: v: v.matchedOptions) resultsByName; | ^ 926| … while evaluating the attribute 'matchedOptions' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:891:13: 890| { 891| matchedOptions = evalOptionValue loc opt defns'; | ^ 892| unmatchedDefns = [ ]; … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:891:30: 890| { 891| matchedOptions = evalOptionValue loc opt defns'; | ^ 892| unmatchedDefns = [ ]; … while calling 'evalOptionValue' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1101:15: 1100| evalOptionValue = 1101| loc: opt: defs: | ^ 1102| let … in the left operand of the update (//) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1145:5: 1144| in 1145| warnDeprecation opt | ^ 1146| // { … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1139:9: 1138| warnDeprecation = 1139| if (opt.type.deprecationMessage != null) then | ^ 1140| warn "The type `types.${opt.type.name}' of option `${showOption loc}' defined in ${showFiles opt.declarations} is deprecated. ${opt.type.deprecationMessage}" … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:888:19: 887| let 888| opt = fixupOptionType loc (mergeOptionDecls loc decls); | ^ 889| in … while calling 'fixupOptionType' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1471:10: 1470| fixupOptionType = 1471| loc: opt: | ^ 1472| if opt.type.getSubModules or null == null then … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1472:5: 1471| loc: opt: 1472| if opt.type.getSubModules or null == null then | ^ 1473| opt // { type = opt.type or types.unspecified; } … while evaluating the attribute 'type.getSubModules' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:100:7: 99| systemReserved = lib.mkOption { 100| type = resourceLib.memoryType; | ^ 101| default = 1024; error: attribute 'memoryType' missing at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:100:14: 99| systemReserved = lib.mkOption { 100| type = resourceLib.memoryType; | ^ 101| default = 1024; 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 error: … while evaluating the attribute 'warned' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:248:11: 247| { 248| warned = lib.any (w: lib.hasInfix "could not parse" w) cfg.warnings; | ^ 249| listed = cfg.dvt.resources.memory.accounting.unparseable; … while calling the 'any' builtin at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:248:20: 247| { 248| warned = lib.any (w: lib.hasInfix "could not parse" w) cfg.warnings; | ^ 249| listed = cfg.dvt.resources.memory.accounting.unparseable; … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/guard.unit.nix:248:66: 247| { 248| warned = lib.any (w: lib.hasInfix "could not parse" w) cfg.warnings; | ^ 249| listed = cfg.dvt.resources.memory.accounting.unparseable; … 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 `warnings': … 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/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/flake-module.nix, via option flake.nixosModules.resource-guard': … 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 … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:166:7: 165| warnings = 166| lib.optional (active && ceilingTotal + reservedMiB > capacityMiB) '' | ^ 167| dvt.resources.memory: MemoryMax ceilings total ${toString ceilingTotal} MiB … while calling 'optional' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/lists.nix:785:20: 784| */ 785| optional = cond: elem: if cond then [ elem ] else [ ]; | ^ 786| … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/lists.nix:785:26: 784| */ 785| optional = cond: elem: if cond then [ elem ] else [ ]; | ^ 786| … in the right operand of the AND (&&) operator at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:166:28: 165| warnings = 166| lib.optional (active && ceilingTotal + reservedMiB > capacityMiB) '' | ^ 167| dvt.resources.memory: MemoryMax ceilings total ${toString ceilingTotal} MiB … while calling the 'lessThan' builtin at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:166:58: 165| warnings = 166| lib.optional (active && ceilingTotal + reservedMiB > capacityMiB) '' | ^ 167| dvt.resources.memory: MemoryMax ceilings total ${toString ceilingTotal} MiB … from call site at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:38:17: 37| capacityMiB = guardLib.facterMemoryMiB report; 38| reservedMiB = cfg.systemReserved; | ^ 39| … 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 … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:11: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … in the left operand of the AND (&&) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:28: 1187| name: value: 1188| if isAttrs value && cond value then recurse (path ++ [ name ]) value else f (path ++ [ name ]) value | ^ 1189| ); … while calling the 'isAttrs' builtin at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/attrsets.nix:1188:14: 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:925:37: 924| 925| matchedOptions = mapAttrs (n: v: v.matchedOptions) resultsByName; | ^ 926| … while evaluating the attribute 'matchedOptions' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:891:13: 890| { 891| matchedOptions = evalOptionValue loc opt defns'; | ^ 892| unmatchedDefns = [ ]; … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:891:30: 890| { 891| matchedOptions = evalOptionValue loc opt defns'; | ^ 892| unmatchedDefns = [ ]; … while calling 'evalOptionValue' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1101:15: 1100| evalOptionValue = 1101| loc: opt: defs: | ^ 1102| let … in the left operand of the update (//) operator at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1145:5: 1144| in 1145| warnDeprecation opt | ^ 1146| // { … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1139:9: 1138| warnDeprecation = 1139| if (opt.type.deprecationMessage != null) then | ^ 1140| warn "The type `types.${opt.type.name}' of option `${showOption loc}' defined in ${showFiles opt.declarations} is deprecated. ${opt.type.deprecationMessage}" … from call site at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:888:19: 887| let 888| opt = fixupOptionType loc (mergeOptionDecls loc decls); | ^ 889| in … while calling 'fixupOptionType' at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1471:10: 1470| fixupOptionType = 1471| loc: opt: | ^ 1472| if opt.type.getSubModules or null == null then … while evaluating a branch condition at /build/storedata/nix/store/lr5ld8f0qbyhjx3nr9mxfvg4cndvpggp-source/lib/modules.nix:1472:5: 1471| loc: opt: 1472| if opt.type.getSubModules or null == null then | ^ 1473| opt // { type = opt.type or types.unspecified; } … while evaluating the attribute 'type.getSubModules' at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:100:7: 99| systemReserved = lib.mkOption { 100| type = resourceLib.memoryType; | ^ 101| default = 1024; error: attribute 'memoryType' missing at /build/storedata/nix/store/ad7j7iwqkw2bhrswr0bcp4l4qy6ywjzc-source/nixosModules/resource-guard/default.nix:100:14: 99| systemReserved = lib.mkOption { 100| type = resourceLib.memoryType; | ^ 101| default = 1024; ✅ 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 😢 81/85 successful error: Tests failed