Files
eureka-cpu b585b1b7bf
buildbot/nix-eval evaluation succeeded in 3m 21s
buildbot/nix-build gitea:clan/dvt-lite#checks.x86_64-linux.integration-test-geth-prysm failed
buildbot/nix-build gitea:clan/dvt-lite#checks.x86_64-linux.integration-test-reth-teku failed
buildbot/nix-build 2 of 29 attributes failed
ecl: apply ethpandaops defaults and add reference tests
Set the standard ethpandaops port and option defaults across all EL and
CL adapters. Checkpoint sync defaults to beaconstate.ethstaker.cc on
known networks for Teku, Prysm, Nimbus, Lodestar, Grandine, and
Lighthouse. Teku gets --data-storage-mode=prune. Besu gets
--nat-method=NONE. Reth, lodestar, and grandine get explicit metrics
ports to match ethpandaops (lodestar/grandine upstream modules differ).
Systemd stop timeouts are 300 s on all EL and CL units.

Add two nix-unit test files:
- defaults.unit.nix: reads the upstream ethpandaops ethereum_node role
  YAML from the flake input and asserts our ECL role defaults match
  (P2P ports, QUIC, REST, engine API, fee recipient).
- Per-client tests in adapters.unit.nix: same approach for per-client
  roles, covering metrics ports, NAT method, storage mode, and Prysm's
  unified P2P port mapping.

The ethpandaops repo is added as a flake = false input so the YAML is
read with builtins.readFile at eval time — no IFD, no sandbox issues.
2026-09-21 16:37:08 +00:00

129 lines
3.6 KiB
Nix

{
description = "dvt-lite";
inputs = {
clan-core.url = "git+https://git.clan.lol/clan/clan-core";
flake-parts.follows = "clan-core/flake-parts";
nixpkgs.follows = "clan-core/nixpkgs";
treefmt-nix.follows = "clan-core/treefmt-nix";
dirk-fork.url = "github:brianmcgee/dirk/head-tracking";
ethpandaops-general = {
url = "github:ethpandaops/ansible-collection-general";
flake = false;
};
nix-unit = {
# nix-unit builds against a specific Nix release (nixVersions.nixComponents_*),
# which clan-core's nixpkgs pin often predates. Let it use its own locked
# nixpkgs rather than following ours.
url = "github:nix-community/nix-unit";
inputs.treefmt-nix.follows = "treefmt-nix";
};
ethereum-nix = {
# Pinned to the commit before the RFC 42 settings migration (3188b22,
# "refactor(modules): migrate NixOS modules to RFC 42 settings pattern"),
# which removed the typed `args` API our lighthouse adapter consumes.
url = "github:nix-community/ethereum.nix/12621446ed2cc4a0840bbc9de1a96baef84cce28";
inputs.nixpkgs.follows = "clan-core/nixpkgs";
inputs.treefmt-nix.follows = "clan-core/treefmt-nix";
};
uv2nix = {
url = "github:pyproject-nix/uv2nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.pyproject-nix.follows = "pyproject-nix";
};
pyproject-nix = {
url = "github:pyproject-nix/pyproject.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
pyproject-build-systems = {
url = "github:pyproject-nix/build-system-pkgs";
inputs.nixpkgs.follows = "nixpkgs";
inputs.pyproject-nix.follows = "pyproject-nix";
inputs.uv2nix.follows = "uv2nix";
};
};
outputs =
inputs@{
clan-core,
flake-parts,
...
}:
flake-parts.lib.mkFlake
{
inherit inputs;
}
{
systems = [
"x86_64-linux"
];
imports = [
# Import clan's flake-parts modules
clan-core.flakeModules.clan
clan-core.flakeModules.testModule
# exposes the nix-unit suites as `checks.<system>.nix-unit`
inputs.nix-unit.modules.flake.default
inputs.treefmt-nix.flakeModule
./clanServices/flake-module.nix
./nixosModules/flake-module.nix
./packages/flake-module.nix
];
perSystem = _: {
nix-unit = {
inputs = {
inherit (inputs)
nixpkgs
flake-parts
nix-unit
clan-core
ethereum-nix
ethpandaops-general
;
};
allowNetwork = true;
};
treefmt = {
# In a linked worktree `.git` is a file, so a `.git/config`
# find-up walks past the worktree root and lands on the parent
# checkout. Ask git for the tree root instead.
projectRootFile = null;
settings.tree-root-cmd = "git rev-parse --show-toplevel";
programs = {
nixfmt.enable = true;
deadnix.enable = true;
statix.enable = true;
prettier.enable = true;
};
settings.formatter = {
deadnix.priority = 1;
statix.priority = 2;
nixfmt.priority = 3;
prettier = {
options = [
"--tab-width"
"4"
];
includes = [ "*.{md}" ];
};
};
};
};
};
}