a0852ff479
Reads the to-build derivation DAG from Nix (derivation show -r + --dry-run), applies a heuristic/history build-cost model with Amdahl core-scaling, and computes critical-path / peak-concurrency / list-scheduled makespan across a node×core grid to recommend a remote-builder shape. - schedule.py: pure critical-path, peak-concurrency, p-machine list scheduler - costmodel.py: heuristic table + --history override + core re-weighting - graph.py: DAG extraction via nix - estimate.py/cli.py: sweep + knee recommendation + report - tests: scheduler validated on toy DAGs (all pass) Prior-art gap documented (Hubble, nixbuild.net) in README.
27 lines
676 B
TOML
27 lines
676 B
TOML
[build-system]
|
||
requires = ["hatchling"]
|
||
build-backend = "hatchling.build"
|
||
|
||
[project]
|
||
name = "nix-estimator"
|
||
version = "0.1.0"
|
||
description = "Estimate the best remote-builder configuration (nodes × cores) for a Nix build"
|
||
readme = "README.md"
|
||
requires-python = ">=3.10"
|
||
license = "MIT"
|
||
authors = [{ name = "Oleks" }]
|
||
keywords = ["nix", "build", "scheduling", "critical-path", "remote-builders"]
|
||
dependencies = [] # stdlib only — shells out to `nix`
|
||
|
||
[project.scripts]
|
||
nix-estimate = "nix_estimator.cli:main"
|
||
|
||
[project.optional-dependencies]
|
||
dev = ["pytest>=7"]
|
||
|
||
[tool.hatch.build.targets.wheel]
|
||
packages = ["nix_estimator"]
|
||
|
||
[tool.pytest.ini_options]
|
||
testpaths = ["tests"]
|