Skip to content

Instantly share code, notes, and snippets.

@Mic92
Last active April 30, 2026 10:50
Show Gist options
  • Select an option

  • Save Mic92/2b4c1baf2aaa1d534f6ac051ecf7aca7 to your computer and use it in GitHub Desktop.

Select an option

Save Mic92/2b4c1baf2aaa1d534f6ac051ecf7aca7 to your computer and use it in GitHub Desktop.
buildbot-nix-www hybrid mockup

buildbot-nix — hybrid mockup (freestyle redesign)

This iteration deviates from the original spec in service of a more cohesive, less cluttered design. The earlier hybrid kept the spec's multi-section page structure (phase chevrons, separate Build-failures section, Logs tab, etc.). This redesign collapses the run page to a single expandable table, drops the secondary sticky sub-header, and repurposes derivation.html.

Both themes work via Tailwind dark: classes. Theme toggle persists in localStorage["bb-theme"]. Tested at viewport 1400×1000.

Page-by-page

index.html — repository landing

  • Single sticky global nav (~56 px). Page chrome lives inside the nav: breadcrumb-area shows Repositories · 8 active, page actions are [Mine | All] segmented + Sync button, then global search.
  • One repo card per row: 4-px status bar · org-icon · org/repo · forge pill · last commit (mono, dimmed) · status icon · time · duration.
  • Dropped from spec/earlier: the per-row 8-bar sparkline. Each row was already showing status icon + ago + duration — the sparkline added texture without decision-relevant data. Hover still reveals 98% · 7/day.

project.html — project activity

  • Same single sticky nav with nix-community / buildbot-nix breadcrumb.
  • Dropped from spec/earlier: the 80-px sparkline-strip card. Replaced with a one-line summary: Last 30 builds ▮▮▮▮▮▮ 27✓ 2✗ 1◐ · avg 4m 12s · 7/day using a 120-px inline pip.
  • Tabs Activity | Branches | Pull requests are in-flow (not sticky) — they scroll away with the content, freeing vertical space below the nav.
  • Compact 2-line run rows: title row carries status icon + #996
    • bold message + status chips. Metadata row underneath carries ref pill + sha + author + time + duration. The original 3-line layout had the duration stacked under the status icon and the ref/sha/author line in the middle; this version puts every scan- level signal (status, message, chips) on the same line.

run.html — single run (THE BIG REDESIGN)

The original mockup had Summary + Logs tabs, three sections (phase chevrons / Build failures / Attributes), a separate metadata <dl>, and a Logs tab with system-grouped sidebar. In practice this meant three places to look at the same failed log (Build-failures inline tail, Logs-tab full log, derivation.html log) and ~1500 px of scroll before reaching the action items.

The freestyle version is one expandable table:

  • Single sticky nav (no second sub-header bar). Breadcrumb carries the run status icon, run number, message. Page action is one Rebuild ▾ button (the chevron implies the menu of "rebuild all / rebuild failed only / force re-evaluate", not yet wired).
  • One-line status sentence below the nav, with a [show details] disclosure that reveals trigger/worker/sha/queue-time. By default most users never need to expand this.
  • Filter chips (all | failed 6 | dep-failed 81 | running 1 | success 42 | cached 130) drive a single Attributes table.
  • The Attributes table is the page. Each row is a <details> element. Failed rows are pre-expanded showing a log tail and a View full log → link to derivation.html. Other rows expand on click. Status icon, attribute, derivation, and duration columns. Per-row Rebuild attribute icon button on failed/active rows; nothing on cached rows.
  • Dropped: Build-failures section (merged into table), Logs tab (per-row expansion replaces it), phase chevrons (the status sentence carries everything they said), full metadata card (compressed into the disclosure), Cancel button (only meaningful on a running run; here the run is finished).

derivation.html — cross-run history of one drv

The previous design used this page to host the full log + lifecycle timeline + nix-log-copy pill. That made it a fourth view of the same log already visible on the run page.

Repurposed as the canonical "deep dive on one derivation":

  • Header card: drv path (full SHA), latest status, sparkline of last 30 builds across runs, success rate, avg duration, first failure run #.
  • Build history table: every run that built this drv — status, run number, branch/SHA, duration, when, worker. Click a run to jump back into context.
  • Built for: the attributes that pull this drv into their closure (cross-link back to the run page).
  • Inspect locally: copy-paste-ready nix log / nix build / nix derivation show invocations for the drv.

The lifecycle pills (Queued / Scheduled / Built / Failed) and inline log tail are gone — both belong to a specific build, which the run page shows.

What's still good for the spec

The pieces that survived from the spec / earlier hybrid:

  • Both themes via Tailwind dark:. Toggle persists.
  • 4-px status bar on repo and run rows.
  • Forge badge GITHUB/GITEA after repo name.
  • Ref-pill colouring (main outline, PR blue, merge-queue amber).
  • Heroicons everywhere (no emoji).
  • Black log box with line numbers (now only inside the inline Attributes-row expansion, not a separate page).
  • _shared.js with theme toggle, tab switcher (still used on project.html for Activity/Branches/PRs), filter chips, global / keyboard shortcut.

Open questions

  1. The single Rebuild ▾ button has no actual menu yet. Need to spec the menu items (rebuild all / rebuild failed only / force re-evaluate, plus possibly "rebuild and follow logs").
  2. The Attributes table shows ~16 of 260 rows by default with a prose footer "Showing first 16 of 260 attributes." Need pagination or virtualised scrolling for large runs.
  3. Live-updating UX: when a run is in progress, the page should stream attribute states (sse-connect-style). Static mockup doesn't show this.
  4. "Built for" list on derivation.html is single-flat. For a widely-shared drv this could be hundreds of attrs — needs a separate page or pagination.
  5. Compare tab from the earlier spec is dropped entirely in this redesign. If we need cross-run diff, it would live as a small Compare with… button on run.html's status sentence.
  6. Index page [Mine | All] segmented — still shows count 8 active but doesn't differentiate. Need to surface "0 broken / 2 running / 1 outdated" or similar?

Screenshots

_shots/ contains both-theme screenshots of every page taken via agent-browser at viewport 1400×1000.

// hybrid mockup helpers — vanilla, no deps
(() => {
const root = document.documentElement;
// Global "/" focuses the first visible search input. Esc clears it.
document.addEventListener("keydown", (e) => {
if (e.key === "/" && !/^(input|textarea)$/i.test(e.target.tagName)) {
// Prefer the page's contextual filter (anything outside <header>) over
// the global nav search; falls back to the header search on landing.
const inPage = document.querySelector(
'main input[type="search"], main input[placeholder*="ilter"], main input[placeholder*="essage"]'
);
const input = inPage || document.querySelector('header input[type="search"]');
if (input) { e.preventDefault(); input.focus(); input.select(); }
} else if (e.key === "Escape" && /^(input|textarea)$/i.test(e.target.tagName)) {
e.target.blur();
}
});
// Theme: read pref, default dark
const stored = localStorage.getItem("bb-theme");
if (stored === "light") root.classList.remove("dark");
else if (stored === "dark") root.classList.add("dark");
function setTheme(dark) {
root.classList.toggle("dark", dark);
localStorage.setItem("bb-theme", dark ? "dark" : "light");
}
document.addEventListener("click", (e) => {
const t = e.target.closest("[data-theme-toggle]");
if (t) { setTheme(!root.classList.contains("dark")); return; }
// Tabs: button[data-tab-target="#paneId"] within a [data-tabs] group
const tab = e.target.closest("[data-tab-target]");
if (tab) {
const group = tab.closest("[data-tabs]") || document;
group.querySelectorAll("[data-tab-target]").forEach((b) => {
b.classList.toggle("tab-active", b === tab);
});
const sel = tab.getAttribute("data-tab-target");
// Panes may live outside the tab group — search whole document if none here
let panes = group.querySelectorAll("[data-tab-pane]");
if (panes.length === 0) panes = document.querySelectorAll("[data-tab-pane]");
panes.forEach((p) => {
p.classList.toggle("hidden", "#" + p.id !== sel);
});
return;
}
// Sidebar job select
const job = e.target.closest("[data-job]");
if (job) {
job.parentElement.querySelectorAll("[data-job]").forEach((j) =>
j.classList.toggle("job-active", j === job)
);
return;
}
// Attribute filter chips
const chip = e.target.closest("[data-filter]");
if (chip) {
const group = chip.closest("[data-chips]");
if (!group) return;
group.querySelectorAll("[data-filter]").forEach((c) =>
c.classList.toggle("chip-active", c === chip)
);
const f = chip.getAttribute("data-filter");
const tableId = group.getAttribute("data-chips");
const rows = document.querySelectorAll(`#${tableId} tr[data-state]`);
let shown = 0;
rows.forEach((r) => {
const hide = f !== "all" && r.dataset.state !== f;
r.classList.toggle("hidden", hide);
if (!hide) shown++;
});
const counter = document.querySelector(`[data-count-for="${tableId}"]`);
if (counter) {
if (f === "all") {
counter.classList.add("hidden");
counter.textContent = "";
} else {
counter.classList.remove("hidden");
counter.textContent = `Showing ${shown} of ${rows.length}`;
}
}
}
});
})();
<!doctype html>
<html lang="en" class="dark">
<head>
<meta charset="utf-8">
<title>cnix-store.drv — buildbot-nix</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = { darkMode: 'class', theme: { extend: { colors: {
bblink:'#58a6ff', bbgreen:'#22c55e', bbred:'#f85149', bbamber:'#d29922',
}}}};
</script>
<style>.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}</style>
</head>
<body class="bg-gray-50 text-gray-900 dark:bg-[#1b1f23] dark:text-zinc-200 antialiased">
<header class="h-14 sticky top-0 z-20 bg-white/95 dark:bg-zinc-900/95 backdrop-blur border-b border-gray-200 dark:border-zinc-800 px-6 flex items-center gap-3">
<a href="index.html" class="flex items-center gap-2 font-semibold tracking-tight shrink-0">
<svg viewBox="0 0 24 24" class="w-6 h-6 text-bbgreen" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2 L4 7 v10 l8 5 8-5 V7 z"/></svg>
<span>buildbot-nix</span>
</a>
<span class="text-gray-300 dark:text-zinc-600 shrink-0">/</span>
<a href="project.html" class="text-sm text-gray-500 dark:text-zinc-400 hover:text-gray-900 dark:hover:text-zinc-100 shrink-0">nix-community/buildbot-nix</a>
<span class="text-gray-300 dark:text-zinc-600 shrink-0">/</span>
<a href="run.html" class="text-sm text-gray-500 dark:text-zinc-400 hover:text-gray-900 dark:hover:text-zinc-100 shrink-0">#996</a>
<span class="text-gray-300 dark:text-zinc-600 shrink-0">/</span>
<span class="text-sm font-mono truncate min-w-0"><span class="text-gray-400 dark:text-zinc-500">2j6hssm…</span>-cnix-store-0.4.1.0.drv</span>
<div class="ml-auto flex items-center gap-2 shrink-0">
<button class="text-sm px-2.5 py-1 rounded border border-gray-300 dark:border-zinc-700 hover:bg-gray-100 dark:hover:bg-zinc-800 inline-flex items-center gap-1" title="Rebuild this derivation">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/></svg>
Rebuild
</button>
</div>
<div class="relative shrink-0">
<svg viewBox="0 0 24 24" class="w-4 h-4 absolute left-2 top-2 text-gray-400 dark:text-zinc-500" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></svg>
<input type="search" class="bg-gray-50 border border-gray-200 dark:bg-zinc-800 dark:border-zinc-700 rounded-md text-sm pl-7 pr-9 py-1.5 w-48 focus:outline-none focus:border-blue-500" placeholder="Search…">
<kbd class="absolute right-2 top-1.5 text-[10px] font-mono px-1 rounded border border-gray-200 dark:border-zinc-700 text-gray-400 dark:text-zinc-500 bg-white dark:bg-zinc-900">/</kbd>
</div>
<button data-theme-toggle class="p-1.5 rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-500 dark:text-zinc-400 shrink-0" title="Toggle theme">
<svg viewBox="0 0 24 24" class="w-5 h-5 hidden dark:inline" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M2 12h2M20 12h2M5 5l1.5 1.5M17.5 17.5L19 19M5 19l1.5-1.5M17.5 6.5L19 5"/></svg>
<svg viewBox="0 0 24 24" class="w-5 h-5 inline dark:hidden" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</button>
<img src="https://github.com/Mic92.png?size=32" class="w-8 h-8 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700 shrink-0">
</header>
<main class="max-w-[1400px] mx-auto px-6 py-6 space-y-6">
<!-- Summary header card: drv path + latest status + sparkline + stats -->
<section class="bg-white dark:bg-zinc-900/40 border border-gray-200 dark:border-zinc-800 rounded-lg p-5">
<div class="flex items-center gap-4 flex-wrap">
<svg viewBox="0 0 24 24" class="w-8 h-8 text-bbred shrink-0" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M6 6l12 12M18 6L6 18"/></svg>
<div class="min-w-0 flex-1">
<h1 class="text-lg font-mono truncate"><span class="text-gray-400 dark:text-zinc-500">/nix/store/</span><span class="text-gray-400 dark:text-zinc-500">2j6hssm5dzj5srcs1m8hccvyambpdq9r</span>-cnix-store-0.4.1.0.drv</h1>
<div class="text-sm text-gray-500 dark:text-zinc-400 mt-0.5">
Latest: <span class="text-bbred font-medium">failed</span> in <a href="run.html" class="text-blue-600 dark:text-bblink hover:underline">run #996</a> · 2 days ago · built as <span class="font-mono">packages.x86_64-linux.cnix-store</span>
</div>
</div>
<button class="text-xs text-gray-500 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-800 px-2 py-1 rounded border border-gray-200 dark:border-zinc-700 inline-flex items-center gap-1.5" title="Copy store path">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg>
Copy path
</button>
</div>
<!-- Cross-run stats -->
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mt-5 pt-4 border-t border-gray-100 dark:border-zinc-800">
<div>
<div class="text-xs uppercase tracking-wide text-gray-500 dark:text-zinc-500">Last 30 builds</div>
<div class="mt-1 flex items-end gap-2">
<svg width="120" height="20">
<g>
<rect x="0" y="6" width="3" height="14" rx="1" fill="#22c55e"/>
<rect x="4" y="2" width="3" height="18" rx="1" fill="#22c55e"/>
<rect x="8" y="4" width="3" height="16" rx="1" fill="#22c55e"/>
<rect x="12" y="3" width="3" height="17" rx="1" fill="#22c55e"/>
<rect x="16" y="6" width="3" height="14" rx="1" fill="#22c55e"/>
<rect x="20" y="2" width="3" height="18" rx="1" fill="#22c55e"/>
<rect x="24" y="4" width="3" height="16" rx="1" fill="#22c55e"/>
<rect x="28" y="6" width="3" height="14" rx="1" fill="#22c55e"/>
<rect x="32" y="3" width="3" height="17" rx="1" fill="#22c55e"/>
<rect x="36" y="2" width="3" height="18" rx="1" fill="#22c55e"/>
<rect x="40" y="4" width="3" height="16" rx="1" fill="#22c55e"/>
<rect x="44" y="6" width="3" height="14" rx="1" fill="#22c55e"/>
<rect x="48" y="3" width="3" height="17" rx="1" fill="#22c55e"/>
<rect x="52" y="2" width="3" height="18" rx="1" fill="#22c55e"/>
<rect x="56" y="4" width="3" height="16" rx="1" fill="#22c55e"/>
<rect x="60" y="6" width="3" height="14" rx="1" fill="#22c55e"/>
<rect x="64" y="3" width="3" height="17" rx="1" fill="#22c55e"/>
<rect x="68" y="2" width="3" height="18" rx="1" fill="#22c55e"/>
<rect x="72" y="4" width="3" height="16" rx="1" fill="#22c55e"/>
<rect x="76" y="6" width="3" height="14" rx="1" fill="#22c55e"/>
<rect x="80" y="3" width="3" height="17" rx="1" fill="#22c55e"/>
<rect x="84" y="2" width="3" height="18" rx="1" fill="#22c55e"/>
<rect x="88" y="4" width="3" height="16" rx="1" fill="#22c55e"/>
<rect x="92" y="6" width="3" height="14" rx="1" fill="#22c55e"/>
<rect x="96" y="3" width="3" height="17" rx="1" fill="#22c55e"/>
<rect x="100" y="2" width="3" height="18" rx="1" fill="#22c55e"/>
<rect x="104" y="6" width="3" height="14" rx="1" fill="#f85149"/>
<rect x="108" y="2" width="3" height="18" rx="1" fill="#f85149"/>
<rect x="112" y="4" width="3" height="16" rx="1" fill="#f85149"/>
<rect x="116" y="6" width="3" height="14" rx="1" fill="#f85149"/>
</g>
</svg>
</div>
</div>
<div>
<div class="text-xs uppercase tracking-wide text-gray-500 dark:text-zinc-500">Success rate</div>
<div class="mt-1 text-lg font-medium tabular-nums">87%</div>
<div class="text-xs text-gray-500 dark:text-zinc-400">26 / 30</div>
</div>
<div>
<div class="text-xs uppercase tracking-wide text-gray-500 dark:text-zinc-500">Avg duration</div>
<div class="mt-1 text-lg font-medium tabular-nums">2m 04s</div>
<div class="text-xs text-gray-500 dark:text-zinc-400">last 30</div>
</div>
<div>
<div class="text-xs uppercase tracking-wide text-gray-500 dark:text-zinc-500">First failure</div>
<div class="mt-1 text-lg font-medium tabular-nums">#993</div>
<div class="text-xs text-gray-500 dark:text-zinc-400">3 days ago</div>
</div>
</div>
</section>
<!-- Build history across runs -->
<section>
<h2 class="text-base font-semibold mb-3">Build history</h2>
<div class="bg-white dark:bg-zinc-900/40 border border-gray-200 dark:border-zinc-800 rounded-lg overflow-hidden">
<table class="w-full text-sm">
<thead class="text-left text-xs uppercase tracking-wide text-gray-500 dark:text-zinc-400 bg-gray-50 dark:bg-zinc-800/40 border-b border-gray-200 dark:border-zinc-800">
<tr>
<th class="px-4 py-2 w-10"></th>
<th class="px-2 py-2 w-20">Run</th>
<th class="px-2 py-2">Branch / SHA</th>
<th class="px-2 py-2 w-32">Duration</th>
<th class="px-2 py-2 w-32">When</th>
<th class="px-2 py-2">Worker</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-100 dark:divide-zinc-800">
<tr class="hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<td class="px-4 py-2"><svg class="w-4 h-4 text-bbred" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M6 6l12 12M18 6L6 18"/></svg></td>
<td class="px-2 py-2"><a href="run.html" class="text-blue-600 dark:text-bblink hover:underline">#996</a></td>
<td class="px-2 py-2"><span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded text-xs">pull/625</span> <span class="font-mono text-xs text-gray-500 dark:text-zinc-400">a1b2c3d</span></td>
<td class="px-2 py-2 tabular-nums">2m 12s</td>
<td class="px-2 py-2 text-gray-500 dark:text-zinc-400" title="2026-04-28 18:42:09 UTC">2 days ago</td>
<td class="px-2 py-2 font-mono text-xs text-gray-500 dark:text-zinc-400">nix-build-x86_64-linux-2</td>
</tr>
<tr class="hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<td class="px-4 py-2"><svg class="w-4 h-4 text-bbred" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M6 6l12 12M18 6L6 18"/></svg></td>
<td class="px-2 py-2"><a href="run.html" class="text-blue-600 dark:text-bblink hover:underline">#995</a></td>
<td class="px-2 py-2"><span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded text-xs">pull/625</span> <span class="font-mono text-xs text-gray-500 dark:text-zinc-400">9bc12ef</span></td>
<td class="px-2 py-2 tabular-nums">2m 08s</td>
<td class="px-2 py-2 text-gray-500 dark:text-zinc-400">2 days ago</td>
<td class="px-2 py-2 font-mono text-xs text-gray-500 dark:text-zinc-400">nix-build-x86_64-linux-1</td>
</tr>
<tr class="hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<td class="px-4 py-2"><svg class="w-4 h-4 text-bbred" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M6 6l12 12M18 6L6 18"/></svg></td>
<td class="px-2 py-2"><a href="run.html" class="text-blue-600 dark:text-bblink hover:underline">#994</a></td>
<td class="px-2 py-2"><span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded text-xs">pull/625</span> <span class="font-mono text-xs text-gray-500 dark:text-zinc-400">3bc12ef</span></td>
<td class="px-2 py-2 tabular-nums">2m 01s</td>
<td class="px-2 py-2 text-gray-500 dark:text-zinc-400">2 days ago</td>
<td class="px-2 py-2 font-mono text-xs text-gray-500 dark:text-zinc-400">nix-build-x86_64-linux-3</td>
</tr>
<tr class="hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<td class="px-4 py-2"><svg class="w-4 h-4 text-bbred" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M6 6l12 12M18 6L6 18"/></svg></td>
<td class="px-2 py-2"><a href="run.html" class="text-blue-600 dark:text-bblink hover:underline">#993</a></td>
<td class="px-2 py-2"><span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded text-xs">pull/625</span> <span class="font-mono text-xs text-gray-500 dark:text-zinc-400">7c8d9ef</span></td>
<td class="px-2 py-2 tabular-nums">1m 58s</td>
<td class="px-2 py-2 text-gray-500 dark:text-zinc-400">3 days ago</td>
<td class="px-2 py-2 font-mono text-xs text-gray-500 dark:text-zinc-400">nix-build-x86_64-linux-2</td>
</tr>
<tr class="hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<td class="px-4 py-2"><svg class="w-4 h-4 text-bbgreen" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12l5 5L20 7"/></svg></td>
<td class="px-2 py-2"><a href="#" class="text-blue-600 dark:text-bblink hover:underline">#992</a></td>
<td class="px-2 py-2"><span class="px-1.5 py-px border border-gray-300 dark:border-zinc-600 text-gray-600 dark:text-zinc-300 rounded text-xs">main</span> <span class="font-mono text-xs text-gray-500 dark:text-zinc-400">b00c4fe</span></td>
<td class="px-2 py-2 tabular-nums">2m 04s</td>
<td class="px-2 py-2 text-gray-500 dark:text-zinc-400">3 days ago</td>
<td class="px-2 py-2 font-mono text-xs text-gray-500 dark:text-zinc-400">nix-build-x86_64-linux-1</td>
</tr>
<tr class="hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<td class="px-4 py-2"><svg class="w-4 h-4 text-bbgreen" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12l5 5L20 7"/></svg></td>
<td class="px-2 py-2"><a href="#" class="text-blue-600 dark:text-bblink hover:underline">#991</a></td>
<td class="px-2 py-2"><span class="px-1.5 py-px border border-gray-300 dark:border-zinc-600 text-gray-600 dark:text-zinc-300 rounded text-xs">main</span> <span class="font-mono text-xs text-gray-500 dark:text-zinc-400">deadb33</span></td>
<td class="px-2 py-2 tabular-nums">2m 01s</td>
<td class="px-2 py-2 text-gray-500 dark:text-zinc-400">4 days ago</td>
<td class="px-2 py-2 font-mono text-xs text-gray-500 dark:text-zinc-400">nix-build-x86_64-linux-2</td>
</tr>
<tr class="hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<td class="px-4 py-2"><svg class="w-4 h-4 text-bbgreen" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12l5 5L20 7"/></svg></td>
<td class="px-2 py-2"><a href="#" class="text-blue-600 dark:text-bblink hover:underline">#990</a></td>
<td class="px-2 py-2"><span class="px-1.5 py-px border border-gray-300 dark:border-zinc-600 text-gray-600 dark:text-zinc-300 rounded text-xs">main</span> <span class="font-mono text-xs text-gray-500 dark:text-zinc-400">c0ffee1</span></td>
<td class="px-2 py-2 tabular-nums">2m 09s</td>
<td class="px-2 py-2 text-gray-500 dark:text-zinc-400">5 days ago</td>
<td class="px-2 py-2 font-mono text-xs text-gray-500 dark:text-zinc-400">nix-build-x86_64-linux-3</td>
</tr>
</tbody>
</table>
</div>
<div class="text-center mt-3">
<button class="text-sm text-gray-500 dark:text-zinc-400 hover:text-gray-900 dark:hover:text-zinc-200">Load older builds…</button>
</div>
</section>
<!-- Dependents (attrs that pull this drv into their closure) -->
<section>
<h2 class="text-base font-semibold mb-3">Built for</h2>
<div class="bg-white dark:bg-zinc-900/40 border border-gray-200 dark:border-zinc-800 rounded-lg p-4 text-sm flex flex-wrap gap-2">
<a href="#" class="font-mono text-xs px-2 py-1 rounded bg-gray-100 dark:bg-zinc-800 hover:bg-gray-200 dark:hover:bg-zinc-700">packages.x86_64-linux.cnix-store</a>
<a href="#" class="font-mono text-xs px-2 py-1 rounded bg-gray-100 dark:bg-zinc-800 hover:bg-gray-200 dark:hover:bg-zinc-700">packages.x86_64-linux.hci</a>
<a href="#" class="font-mono text-xs px-2 py-1 rounded bg-gray-100 dark:bg-zinc-800 hover:bg-gray-200 dark:hover:bg-zinc-700">apps.x86_64-linux.hci.program</a>
<a href="#" class="font-mono text-xs px-2 py-1 rounded bg-gray-100 dark:bg-zinc-800 hover:bg-gray-200 dark:hover:bg-zinc-700">devShells.x86_64-linux.default</a>
<a href="#" class="font-mono text-xs px-2 py-1 rounded bg-gray-100 dark:bg-zinc-800 hover:bg-gray-200 dark:hover:bg-zinc-700">nixosConfigurations.ci-runner</a>
</div>
</section>
<!-- Inspect locally -->
<section>
<h2 class="text-base font-semibold mb-3">Inspect locally</h2>
<div class="bg-white dark:bg-zinc-900/40 border border-gray-200 dark:border-zinc-800 rounded-lg divide-y divide-gray-100 dark:divide-zinc-800">
<div class="flex items-center gap-3 px-4 py-3">
<span class="text-xs text-gray-500 dark:text-zinc-400 shrink-0 w-32">Read full log</span>
<code class="flex-1 font-mono text-xs text-gray-700 dark:text-zinc-300 truncate">nix log /nix/store/2j6hssm5dzj5srcs1m8hccvyambpdq9r-cnix-store-0.4.1.0.drv</code>
<button class="text-gray-400 hover:text-gray-700 dark:hover:text-zinc-200 shrink-0" title="Copy">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg>
</button>
</div>
<div class="flex items-center gap-3 px-4 py-3">
<span class="text-xs text-gray-500 dark:text-zinc-400 shrink-0 w-32">Reproduce build</span>
<code class="flex-1 font-mono text-xs text-gray-700 dark:text-zinc-300 truncate">nix build /nix/store/2j6hssm5dzj5srcs1m8hccvyambpdq9r-cnix-store-0.4.1.0.drv^*</code>
<button class="text-gray-400 hover:text-gray-700 dark:hover:text-zinc-200 shrink-0" title="Copy">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg>
</button>
</div>
<div class="flex items-center gap-3 px-4 py-3">
<span class="text-xs text-gray-500 dark:text-zinc-400 shrink-0 w-32">Show derivation</span>
<code class="flex-1 font-mono text-xs text-gray-700 dark:text-zinc-300 truncate">nix derivation show /nix/store/2j6hssm5dzj5srcs1m8hccvyambpdq9r-cnix-store-0.4.1.0.drv</code>
<button class="text-gray-400 hover:text-gray-700 dark:hover:text-zinc-200 shrink-0" title="Copy">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg>
</button>
</div>
</div>
</section>
</main>
<script src="_shared.js"></script>
</body>
</html>
<!doctype html>
<html lang="en" class="dark">
<head>
<meta charset="utf-8">
<title>buildbot-nix — Repositories</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = { darkMode: 'class', theme: { extend: { colors: {
bblink:'#58a6ff', bbgreen:'#22c55e', bbred:'#f85149', bbamber:'#d29922',
}}}};
</script>
<style>.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}</style>
</head>
<body class="bg-gray-50 text-gray-900 dark:bg-[#1b1f23] dark:text-zinc-200 antialiased">
<!-- Single sticky global nav -->
<header class="h-14 sticky top-0 z-20 bg-white/95 dark:bg-zinc-900/95 backdrop-blur border-b border-gray-200 dark:border-zinc-800 px-6 flex items-center gap-3">
<a href="index.html" class="flex items-center gap-2 font-semibold tracking-tight shrink-0">
<svg viewBox="0 0 24 24" class="w-6 h-6 text-bbgreen" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2 L4 7 v10 l8 5 8-5 V7 z"/></svg>
<span>buildbot-nix</span>
</a>
<span class="text-gray-300 dark:text-zinc-600 shrink-0">/</span>
<span class="text-sm text-gray-700 dark:text-zinc-300 shrink-0">Repositories</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 shrink-0">8 active</span>
<!-- Page actions -->
<div class="ml-auto flex items-center gap-2 shrink-0">
<div class="inline-flex bg-gray-50 border border-gray-200 dark:bg-zinc-800 dark:border-zinc-700 rounded-md p-0.5 text-sm">
<button class="px-2.5 py-0.5 rounded bg-gray-900 text-white dark:bg-zinc-700 dark:text-zinc-100">Mine</button>
<button class="px-2.5 py-0.5 rounded text-gray-500 hover:text-gray-900 dark:text-zinc-400 dark:hover:text-zinc-200">All</button>
</div>
<button hx-post="/nix/_/reload-projects" class="text-sm text-gray-600 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-800 inline-flex items-center gap-1.5 px-2 py-1 rounded" title="Re-fetch from configured forges">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/></svg>
Sync
</button>
</div>
<div class="relative shrink-0">
<svg viewBox="0 0 24 24" class="w-4 h-4 absolute left-2 top-2 text-gray-400 dark:text-zinc-500" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></svg>
<input type="search" class="bg-gray-50 border border-gray-200 dark:bg-zinc-800 dark:border-zinc-700 rounded-md text-sm pl-7 pr-9 py-1.5 w-56 focus:outline-none focus:border-blue-500" placeholder="Search…">
<kbd class="absolute right-2 top-1.5 text-[10px] font-mono px-1 rounded border border-gray-200 dark:border-zinc-700 text-gray-400 dark:text-zinc-500 bg-white dark:bg-zinc-900">/</kbd>
</div>
<button data-theme-toggle class="p-1.5 rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-500 dark:text-zinc-400 shrink-0" title="Toggle theme">
<svg viewBox="0 0 24 24" class="w-5 h-5 hidden dark:inline" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M2 12h2M20 12h2M5 5l1.5 1.5M17.5 17.5L19 19M5 19l1.5-1.5M17.5 6.5L19 5"/></svg>
<svg viewBox="0 0 24 24" class="w-5 h-5 inline dark:hidden" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</button>
<img src="https://github.com/Mic92.png?size=32" class="w-8 h-8 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700 shrink-0">
</header>
<main class="max-w-[1400px] mx-auto px-6 py-6">
<div class="bg-white dark:bg-zinc-900/40 border border-gray-200 dark:border-zinc-800 rounded-lg overflow-hidden">
<a href="project.html" class="group flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 grid grid-cols-[1fr_auto_auto] items-center gap-4 px-5 py-3 min-w-0">
<div class="flex items-center gap-2.5 min-w-0">
<img src="https://github.com/nix-community.png?size=32" class="w-5 h-5 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700">
<span class="font-medium truncate">nix-community/buildbot-nix</span>
<span class="text-[10px] uppercase tracking-wide bg-gray-100 text-gray-500 dark:bg-zinc-800 dark:text-zinc-400 px-1.5 py-0.5 rounded shrink-0">github</span>
</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mono truncate max-w-md hidden md:block">main · a1b2c3d · Merge pull request #625 from Mic92/eval-cache</div>
<div class="flex items-center gap-3 shrink-0 text-sm">
<svg viewBox="0 0 24 24" class="w-4 h-4 text-bbgreen" fill="none" stroke="currentColor" stroke-width="2.5"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="text-gray-500 dark:text-zinc-400 tabular-nums w-20 text-right">22m ago</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 tabular-nums w-14 text-right hidden lg:inline">4m 12s</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 opacity-0 group-hover:opacity-100 transition w-24 text-right hidden lg:inline">98% · 7/day</span>
</div>
</div>
</a>
<a href="project.html" class="group flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbamber"></span>
<div class="flex-1 grid grid-cols-[1fr_auto_auto] items-center gap-4 px-5 py-3 min-w-0">
<div class="flex items-center gap-2.5 min-w-0">
<img src="https://github.com/Mic92.png?size=32" class="w-5 h-5 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700">
<span class="font-medium truncate">Mic92/sops-nix</span>
<span class="text-[10px] uppercase tracking-wide bg-gray-100 text-gray-500 dark:bg-zinc-800 dark:text-zinc-400 px-1.5 py-0.5 rounded shrink-0">github</span>
</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mono truncate max-w-md hidden md:block">refactor/templates · 9f0d2ab · feat: add age key rotation helper</div>
<div class="flex items-center gap-3 shrink-0 text-sm">
<svg viewBox="0 0 24 24" class="w-4 h-4 text-bbamber animate-spin" fill="none" stroke="currentColor" stroke-width="2"><title>running</title><path d="M21 12a9 9 0 1 1-3-6.7"/></svg>
<span class="text-gray-500 dark:text-zinc-400 tabular-nums w-20 text-right">running</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 tabular-nums w-14 text-right hidden lg:inline">1m 47s</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 opacity-0 group-hover:opacity-100 transition w-24 text-right hidden lg:inline">94% · 3/day</span>
</div>
</div>
</a>
<a href="project.html" class="group flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbred"></span>
<div class="flex-1 grid grid-cols-[1fr_auto_auto] items-center gap-4 px-5 py-3 min-w-0">
<div class="flex items-center gap-2.5 min-w-0">
<img src="https://github.com/nix-community.png?size=32" class="w-5 h-5 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700">
<span class="font-medium truncate">nix-community/disko</span>
<span class="text-[10px] uppercase tracking-wide bg-gray-100 text-gray-500 dark:bg-zinc-800 dark:text-zinc-400 px-1.5 py-0.5 rounded shrink-0">github</span>
</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mono truncate max-w-md hidden md:block">main · 7732cc1 · tests: btrfs subvol mount permissions</div>
<div class="flex items-center gap-3 shrink-0 text-sm">
<svg viewBox="0 0 24 24" class="w-4 h-4 text-bbred" fill="none" stroke="currentColor" stroke-width="2.5"><title>failed</title><path d="M6 6l12 12M18 6L6 18"/></svg>
<span class="text-gray-500 dark:text-zinc-400 tabular-nums w-20 text-right">1h ago</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 tabular-nums w-14 text-right hidden lg:inline">8m 03s</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 opacity-0 group-hover:opacity-100 transition w-24 text-right hidden lg:inline">63% · 12/day</span>
</div>
</div>
</a>
<a href="project.html" class="group flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 grid grid-cols-[1fr_auto_auto] items-center gap-4 px-5 py-3 min-w-0">
<div class="flex items-center gap-2.5 min-w-0">
<img src="https://github.com/nix-community.png?size=32" class="w-5 h-5 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700">
<span class="font-medium truncate">nix-community/nixos-anywhere</span>
<span class="text-[10px] uppercase tracking-wide bg-gray-100 text-gray-500 dark:bg-zinc-800 dark:text-zinc-400 px-1.5 py-0.5 rounded shrink-0">github</span>
</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mono truncate max-w-md hidden md:block">main · 4d9e1b3 · doc: kexec on aarch64 troubleshooting</div>
<div class="flex items-center gap-3 shrink-0 text-sm">
<svg viewBox="0 0 24 24" class="w-4 h-4 text-bbgreen" fill="none" stroke="currentColor" stroke-width="2.5"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="text-gray-500 dark:text-zinc-400 tabular-nums w-20 text-right">3h ago</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 tabular-nums w-14 text-right hidden lg:inline">2m 41s</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 opacity-0 group-hover:opacity-100 transition w-24 text-right hidden lg:inline">100% · 2/day</span>
</div>
</div>
</a>
<a href="project.html" class="group flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 grid grid-cols-[1fr_auto_auto] items-center gap-4 px-5 py-3 min-w-0">
<div class="flex items-center gap-2.5 min-w-0">
<img src="https://github.com/clan-lol.png?size=32" class="w-5 h-5 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700">
<span class="font-medium truncate">clan/clan-core</span>
<span class="text-[10px] uppercase tracking-wide bg-gray-100 text-gray-500 dark:bg-zinc-800 dark:text-zinc-400 px-1.5 py-0.5 rounded shrink-0">gitea</span>
</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mono truncate max-w-md hidden md:block">main · c0a7e88 · vm: persistent state per machine</div>
<div class="flex items-center gap-3 shrink-0 text-sm">
<svg viewBox="0 0 24 24" class="w-4 h-4 text-bbgreen" fill="none" stroke="currentColor" stroke-width="2.5"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="text-gray-500 dark:text-zinc-400 tabular-nums w-20 text-right">5h ago</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 tabular-nums w-14 text-right hidden lg:inline">52s</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 opacity-0 group-hover:opacity-100 transition w-24 text-right hidden lg:inline">89% · 19/day</span>
</div>
</div>
</a>
<a href="project.html" class="group flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 grid grid-cols-[1fr_auto_auto] items-center gap-4 px-5 py-3 min-w-0">
<div class="flex items-center gap-2.5 min-w-0">
<img src="https://github.com/numtide.png?size=32" class="w-5 h-5 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700">
<span class="font-medium truncate">numtide/treefmt-nix</span>
<span class="text-[10px] uppercase tracking-wide bg-gray-100 text-gray-500 dark:bg-zinc-800 dark:text-zinc-400 px-1.5 py-0.5 rounded shrink-0">github</span>
</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mono truncate max-w-md hidden md:block">main · ee21ff0 · go: bump to 1.23</div>
<div class="flex items-center gap-3 shrink-0 text-sm">
<svg viewBox="0 0 24 24" class="w-4 h-4 text-bbgreen" fill="none" stroke="currentColor" stroke-width="2.5"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="text-gray-500 dark:text-zinc-400 tabular-nums w-20 text-right">8h ago</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 tabular-nums w-14 text-right hidden lg:inline">1m 02s</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 opacity-0 group-hover:opacity-100 transition w-24 text-right hidden lg:inline">100% · 1/day</span>
</div>
</div>
</a>
<a href="project.html" class="group flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 grid grid-cols-[1fr_auto_auto] items-center gap-4 px-5 py-3 min-w-0">
<div class="flex items-center gap-2.5 min-w-0">
<img src="https://github.com/nix-community.png?size=32" class="w-5 h-5 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700">
<span class="font-medium truncate">nix-community/srvos</span>
<span class="text-[10px] uppercase tracking-wide bg-gray-100 text-gray-500 dark:bg-zinc-800 dark:text-zinc-400 px-1.5 py-0.5 rounded shrink-0">github</span>
</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mono truncate max-w-md hidden md:block">main · 1b0fa44 · nginx: enable HTTP/3 by default</div>
<div class="flex items-center gap-3 shrink-0 text-sm">
<svg viewBox="0 0 24 24" class="w-4 h-4 text-bbgreen" fill="none" stroke="currentColor" stroke-width="2.5"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="text-gray-500 dark:text-zinc-400 tabular-nums w-20 text-right">yesterday</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 tabular-nums w-14 text-right hidden lg:inline">6m 28s</span>
<span class="text-xs text-gray-400 dark:text-zinc-500 opacity-0 group-hover:opacity-100 transition w-24 text-right hidden lg:inline">100% · 4/day</span>
</div>
</div>
</a>
</div>
</main>
<script src="_shared.js"></script>
</body>
</html>
<!doctype html>
<html lang="en" class="dark">
<head>
<meta charset="utf-8">
<title>nix-community/buildbot-nix · buildbot-nix</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = { darkMode: 'class', theme: { extend: { colors: {
bblink:'#58a6ff', bbgreen:'#22c55e', bbred:'#f85149', bbamber:'#d29922',
}}}};
</script>
<style>
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
@keyframes bbpulse {0%,100%{opacity:1}50%{opacity:.4}} .bb-pulse{animation:bbpulse 1.4s infinite}
.tab-active { color: rgb(17 24 39); border-bottom: 2px solid rgb(37 99 235); font-weight: 500; }
.dark .tab-active { color: rgb(244 244 245); border-bottom-color: #58a6ff; }
</style>
</head>
<body class="bg-gray-50 text-gray-900 dark:bg-[#1b1f23] dark:text-zinc-200 antialiased">
<!-- Single sticky global nav -->
<header class="h-14 sticky top-0 z-20 bg-white/95 dark:bg-zinc-900/95 backdrop-blur border-b border-gray-200 dark:border-zinc-800 px-6 flex items-center gap-3">
<a href="index.html" class="flex items-center gap-2 font-semibold tracking-tight shrink-0">
<svg viewBox="0 0 24 24" class="w-6 h-6 text-bbgreen" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2 L4 7 v10 l8 5 8-5 V7 z"/></svg>
<span>buildbot-nix</span>
</a>
<span class="text-gray-300 dark:text-zinc-600 shrink-0">/</span>
<a href="index.html" class="text-sm text-gray-500 dark:text-zinc-400 hover:text-gray-900 dark:hover:text-zinc-100 shrink-0">nix-community</a>
<span class="text-gray-300 dark:text-zinc-600 shrink-0">/</span>
<span class="text-sm font-medium shrink-0">buildbot-nix</span>
<a href="https://github.com/nix-community/buildbot-nix" class="text-gray-400 hover:text-gray-700 dark:hover:text-zinc-200 shrink-0" title="Open on GitHub">
<svg viewBox="0 0 24 24" class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2"><path d="M7 17L17 7M17 7H8M17 7v9"/></svg>
</a>
<div class="ml-auto"></div>
<div class="relative shrink-0">
<svg viewBox="0 0 24 24" class="w-4 h-4 absolute left-2 top-2 text-gray-400 dark:text-zinc-500" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></svg>
<input type="search" class="bg-gray-50 border border-gray-200 dark:bg-zinc-800 dark:border-zinc-700 rounded-md text-sm pl-7 pr-9 py-1.5 w-56 focus:outline-none focus:border-blue-500" placeholder="Search…">
<kbd class="absolute right-2 top-1.5 text-[10px] font-mono px-1 rounded border border-gray-200 dark:border-zinc-700 text-gray-400 dark:text-zinc-500 bg-white dark:bg-zinc-900">/</kbd>
</div>
<button data-theme-toggle class="p-1.5 rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-500 dark:text-zinc-400 shrink-0" title="Toggle theme">
<svg viewBox="0 0 24 24" class="w-5 h-5 hidden dark:inline" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M2 12h2M20 12h2M5 5l1.5 1.5M17.5 17.5L19 19M5 19l1.5-1.5M17.5 6.5L19 5"/></svg>
<svg viewBox="0 0 24 24" class="w-5 h-5 inline dark:hidden" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</button>
<img src="https://github.com/Mic92.png?size=32" class="w-8 h-8 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700 shrink-0">
</header>
<main class="max-w-[1400px] mx-auto px-6 py-6 space-y-4">
<!-- Inline summary line with mini sparkline (replaces the old sparkline-strip card) -->
<div class="flex items-center gap-3 flex-wrap text-sm">
<span class="text-gray-700 dark:text-zinc-300">Last 30 builds</span>
<svg width="120" height="16" class="shrink-0">
<g>
<rect x="0" y="6" width="3" height="10" rx="1" fill="#22c55e"/>
<rect x="4" y="2" width="3" height="14" rx="1" fill="#22c55e"/>
<rect x="8" y="4" width="3" height="12" rx="1" fill="#22c55e"/>
<rect x="12" y="1" width="3" height="15" rx="1" fill="#22c55e"/>
<rect x="16" y="3" width="3" height="13" rx="1" fill="#22c55e"/>
<rect x="20" y="5" width="3" height="11" rx="1" fill="#22c55e"/>
<rect x="24" y="0" width="3" height="16" rx="1" fill="#22c55e"/>
<rect x="28" y="3" width="3" height="13" rx="1" fill="#22c55e"/>
<rect x="32" y="6" width="3" height="10" rx="1" fill="#22c55e"/>
<rect x="36" y="2" width="3" height="14" rx="1" fill="#f85149"/>
<rect x="40" y="5" width="3" height="11" rx="1" fill="#22c55e"/>
<rect x="44" y="1" width="3" height="15" rx="1" fill="#22c55e"/>
<rect x="48" y="3" width="3" height="13" rx="1" fill="#22c55e"/>
<rect x="52" y="6" width="3" height="10" rx="1" fill="#22c55e"/>
<rect x="56" y="3" width="3" height="13" rx="1" fill="#22c55e"/>
<rect x="60" y="5" width="3" height="11" rx="1" fill="#22c55e"/>
<rect x="64" y="1" width="3" height="15" rx="1" fill="#22c55e"/>
<rect x="68" y="3" width="3" height="13" rx="1" fill="#22c55e"/>
<rect x="72" y="5" width="3" height="11" rx="1" fill="#22c55e"/>
<rect x="76" y="2" width="3" height="14" rx="1" fill="#22c55e"/>
<rect x="80" y="4" width="3" height="12" rx="1" fill="#22c55e"/>
<rect x="84" y="2" width="3" height="14" rx="1" fill="#f85149"/>
<rect x="88" y="6" width="3" height="10" rx="1" fill="#22c55e"/>
<rect x="92" y="0" width="3" height="16" rx="1" fill="#22c55e"/>
<rect x="96" y="5" width="3" height="11" rx="1" fill="#22c55e"/>
<rect x="100" y="3" width="3" height="13" rx="1" fill="#22c55e"/>
<rect x="104" y="5" width="3" height="11" rx="1" fill="#22c55e"/>
<rect x="108" y="2" width="3" height="14" rx="1" fill="#22c55e"/>
<rect x="112" y="4" width="3" height="12" rx="1" fill="#22c55e"/>
<rect x="116" y="3" width="3" height="13" rx="1" fill="#d29922"/>
</g>
</svg>
<span class="text-gray-500 dark:text-zinc-400">27<span class="text-bbgreen">✓</span> 2<span class="text-bbred">✗</span> 1<span class="text-bbamber">◐</span> · avg 4m 12s · 7/day</span>
</div>
<!-- Tabs (in-flow, not sticky) + filter -->
<div class="flex items-center border-b border-gray-200 dark:border-zinc-800">
<nav data-tabs class="flex gap-5 text-sm">
<button data-tab-target="#tab-activity" class="tab-active py-2 inline-flex items-center gap-1.5">
<svg viewBox="0 0 24 24" class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12h4l2-7 4 14 2-7h6"/></svg>
Activity
</button>
<button data-tab-target="#tab-branches" class="py-2 inline-flex items-center gap-1.5 text-gray-500 dark:text-zinc-400 hover:text-gray-900 dark:hover:text-zinc-200">
<svg viewBox="0 0 24 24" class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2"><circle cx="6" cy="6" r="2"/><circle cx="6" cy="18" r="2"/><circle cx="18" cy="8" r="2"/><path d="M6 8v8M18 10v2a4 4 0 0 1-4 4H6"/></svg>
Branches
</button>
<button data-tab-target="#tab-prs" class="py-2 inline-flex items-center gap-1.5 text-gray-500 dark:text-zinc-400 hover:text-gray-900 dark:hover:text-zinc-200">
<svg viewBox="0 0 24 24" class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2"><circle cx="6" cy="6" r="2"/><circle cx="6" cy="18" r="2"/><circle cx="18" cy="18" r="2"/><path d="M6 8v8M14 6h2a2 2 0 0 1 2 2v8"/></svg>
Pull requests
</button>
</nav>
<div class="ml-auto pb-2">
<input type="search" placeholder="Filter by message or sha…" class="px-2.5 py-1 text-sm border border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-800 rounded-md w-56 focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
</div>
<!-- Activity: 2-line compact run rows -->
<div id="tab-activity" data-tab-pane class="bg-white dark:bg-zinc-900/40 border border-gray-200 dark:border-zinc-800 rounded-lg overflow-hidden">
<a href="run.html" class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbamber animate-pulse"></span>
<div class="flex-1 px-4 py-2.5 min-w-0">
<div class="flex items-center gap-2.5">
<svg class="w-4 h-4 text-bbamber bb-pulse shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><title>running</title><path d="M21 12a9 9 0 1 1-3-6.7"/></svg>
<span class="text-gray-400 dark:text-zinc-500 text-sm tabular-nums shrink-0">#997</span>
<span class="font-medium truncate flex-1">www: prototype hybrid landing page</span>
<div class="flex gap-1 text-[11px] shrink-0">
<span title="8 passed" class="px-1.5 py-px rounded font-medium bg-green-500 text-white">8✓</span>
<span title="3 running" class="px-1.5 py-px rounded font-medium bg-amber-500 text-white">3◐</span>
<span title="41 cached" class="px-1.5 py-px rounded bg-gray-200 text-gray-600 dark:bg-zinc-700 dark:text-zinc-300">41⊘</span>
</div>
</div>
<div class="flex items-center gap-2 text-xs text-gray-500 dark:text-zinc-400 mt-0.5 ml-6.5 pl-1">
<span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded">pull/631</span>
<span class="font-mono">3fa9c1d</span>
<img src="https://github.com/Mic92.png?size=32" class="w-3.5 h-3.5 rounded-full"> Mic92
<span>·</span><span>just now</span>
<span>·</span><span class="tabular-nums">1m 12s</span>
</div>
</div>
</a>
<a href="run.html" class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbred"></span>
<div class="flex-1 px-4 py-2.5 min-w-0">
<div class="flex items-center gap-2.5">
<svg class="w-4 h-4 text-bbred shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="2.5" stroke="currentColor"><title>failed</title><path d="M6 6l12 12M18 6L6 18"/></svg>
<span class="text-gray-400 dark:text-zinc-500 text-sm tabular-nums shrink-0">#996</span>
<span class="font-medium truncate flex-1">packages: build python modules against patched buildbot python</span>
<div class="flex gap-1 text-[11px] shrink-0">
<span title="12 passed" class="px-1.5 py-px rounded font-medium bg-green-500 text-white">12✓</span>
<span title="2 failed" class="px-1.5 py-px rounded font-medium bg-red-500 text-white">2✗</span>
<span title="45 cached" class="px-1.5 py-px rounded bg-gray-200 text-gray-600 dark:bg-zinc-700 dark:text-zinc-300">45⊘</span>
</div>
</div>
<div class="flex items-center gap-2 text-xs text-gray-500 dark:text-zinc-400 mt-0.5 ml-6.5 pl-1">
<span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded">pull/625</span>
<span class="font-mono">a1b2c3d</span>
<img src="https://github.com/Mic92.png?size=32" class="w-3.5 h-3.5 rounded-full"> Mic92
<span>·</span><span>2 days ago</span>
<span>·</span><span class="tabular-nums">25s</span>
</div>
</div>
</a>
<a href="run.html" class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 px-4 py-2.5 min-w-0">
<div class="flex items-center gap-2.5">
<svg class="w-4 h-4 text-bbgreen shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="2.5" stroke="currentColor"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="text-gray-400 dark:text-zinc-500 text-sm tabular-nums shrink-0">#995</span>
<span class="font-medium truncate flex-1">Merge pull request #623 from nix-community/dependabot/pip/ruff-0.12</span>
<div class="flex gap-1 text-[11px] shrink-0">
<span class="px-1.5 py-px rounded font-medium bg-green-500 text-white">15✓</span>
<span class="px-1.5 py-px rounded bg-gray-200 text-gray-600 dark:bg-zinc-700 dark:text-zinc-300">45⊘</span>
</div>
</div>
<div class="flex items-center gap-2 text-xs text-gray-500 dark:text-zinc-400 mt-0.5 ml-6.5 pl-1">
<span class="px-1.5 py-px border border-gray-300 dark:border-zinc-600 text-gray-600 dark:text-zinc-300 rounded">main</span>
<span class="font-mono">7c8d9ef</span>
<img src="https://github.com/mergify.png?size=32" class="w-3.5 h-3.5 rounded-full"> mergify[bot]
<span>·</span><span>2 days ago</span>
<span>·</span><span class="tabular-nums">4m 02s</span>
</div>
</div>
</a>
<a href="run.html" class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 px-4 py-2.5 min-w-0">
<div class="flex items-center gap-2.5">
<svg class="w-4 h-4 text-bbgreen shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="2.5" stroke="currentColor"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="text-gray-400 dark:text-zinc-500 text-sm tabular-nums shrink-0">#994</span>
<span class="font-medium truncate flex-1">gh-readonly-queue: bump ruff to 0.12</span>
<div class="flex gap-1 text-[11px] shrink-0">
<span class="px-1.5 py-px rounded font-medium bg-green-500 text-white">15✓</span>
<span class="px-1.5 py-px rounded bg-gray-200 text-gray-600 dark:bg-zinc-700 dark:text-zinc-300">45⊘</span>
</div>
</div>
<div class="flex items-center gap-2 text-xs text-gray-500 dark:text-zinc-400 mt-0.5 ml-6.5 pl-1">
<span title="gh-readonly-queue/main/pr-623-7c8d9ef" class="px-1.5 py-px bg-amber-50 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300 rounded">merge-queue</span>
<span class="font-mono">7c8d9ef</span>
<img src="https://github.com/dependabot.png?size=32" class="w-3.5 h-3.5 rounded-full"> dependabot[bot]
<span>·</span><span>2 days ago</span>
<span>·</span><span class="tabular-nums">3m 48s</span>
</div>
</div>
</a>
<a href="run.html" class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 px-4 py-2.5 min-w-0">
<div class="flex items-center gap-2.5">
<svg class="w-4 h-4 text-bbgreen shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="2.5" stroke="currentColor"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="text-gray-400 dark:text-zinc-500 text-sm tabular-nums shrink-0">#993</span>
<span class="font-medium truncate flex-1">bump ruff to 0.12</span>
<div class="flex gap-1 text-[11px] shrink-0">
<span class="px-1.5 py-px rounded font-medium bg-green-500 text-white">14✓</span>
<span class="px-1.5 py-px rounded bg-gray-200 text-gray-600 dark:bg-zinc-700 dark:text-zinc-300">46⊘</span>
</div>
</div>
<div class="flex items-center gap-2 text-xs text-gray-500 dark:text-zinc-400 mt-0.5 ml-6.5 pl-1">
<span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded">pull/623</span>
<span class="font-mono">5512aa0</span>
<img src="https://github.com/dependabot.png?size=32" class="w-3.5 h-3.5 rounded-full"> dependabot[bot]
<span>·</span><span>3 days ago</span>
<span>·</span><span class="tabular-nums">4m 11s</span>
</div>
</div>
</a>
<a href="run.html" class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 px-4 py-2.5 min-w-0">
<div class="flex items-center gap-2.5">
<svg class="w-4 h-4 text-bbgreen shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="2.5" stroke="currentColor"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="text-gray-400 dark:text-zinc-500 text-sm tabular-nums shrink-0">#992</span>
<span class="font-medium truncate flex-1">nix-eval-jobs: stream attrs as they arrive instead of buffering</span>
<div class="flex gap-1 text-[11px] shrink-0">
<span class="px-1.5 py-px rounded font-medium bg-green-500 text-white">60✓</span>
</div>
</div>
<div class="flex items-center gap-2 text-xs text-gray-500 dark:text-zinc-400 mt-0.5 ml-6.5 pl-1">
<span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded">pull/622</span>
<span class="font-mono">b00c4fe</span>
<img src="https://github.com/Mic92.png?size=32" class="w-3.5 h-3.5 rounded-full"> Mic92
<span>·</span><span>3 days ago</span>
<span>·</span><span class="tabular-nums">5m 55s</span>
</div>
</div>
</a>
<a href="run.html" class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 px-4 py-2.5 min-w-0">
<div class="flex items-center gap-2.5">
<svg class="w-4 h-4 text-bbgreen shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="2.5" stroke="currentColor"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="text-gray-400 dark:text-zinc-500 text-sm tabular-nums shrink-0">#991</span>
<span class="font-medium truncate flex-1">flake.lock: Update</span>
<div class="flex gap-1 text-[11px] shrink-0">
<span class="px-1.5 py-px rounded font-medium bg-green-500 text-white">15✓</span>
<span class="px-1.5 py-px rounded bg-gray-200 text-gray-600 dark:bg-zinc-700 dark:text-zinc-300">45⊘</span>
</div>
</div>
<div class="flex items-center gap-2 text-xs text-gray-500 dark:text-zinc-400 mt-0.5 ml-6.5 pl-1">
<span class="px-1.5 py-px border border-gray-300 dark:border-zinc-600 text-gray-600 dark:text-zinc-300 rounded">main</span>
<span class="font-mono">deadb33</span>
<img src="https://github.com/mergify.png?size=32" class="w-3.5 h-3.5 rounded-full"> mergify[bot]
<span>·</span><span>4 days ago</span>
<span>·</span><span class="tabular-nums">4m 20s</span>
</div>
</div>
</a>
</div>
<!-- Branches -->
<div id="tab-branches" data-tab-pane class="hidden bg-white dark:bg-zinc-900/40 border border-gray-200 dark:border-zinc-800 rounded-lg overflow-hidden">
<div class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 grid grid-cols-[1fr_auto_auto] items-center gap-4 px-5 py-3">
<div>
<div class="font-medium">main</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mono mt-0.5">7c8d9ef · Merge pull request #623 · 2 days ago</div>
</div>
<span class="text-xs text-gray-500 dark:text-zinc-400 tabular-nums">128 runs</span>
<a href="run.html" class="text-xs text-blue-600 dark:text-bblink hover:underline">latest →</a>
</div>
</div>
<div class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbamber animate-pulse"></span>
<div class="flex-1 grid grid-cols-[1fr_auto_auto] items-center gap-4 px-5 py-3">
<div>
<div class="font-medium">refactor/templates</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mono mt-0.5">9f0d2ab · feat: add age key rotation helper · just now</div>
</div>
<span class="text-xs text-gray-500 dark:text-zinc-400 tabular-nums">7 runs</span>
<a href="run.html" class="text-xs text-blue-600 dark:text-bblink hover:underline">latest →</a>
</div>
</div>
<div class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<span class="w-1 bg-bbred"></span>
<div class="flex-1 grid grid-cols-[1fr_auto_auto] items-center gap-4 px-5 py-3">
<div>
<div class="font-medium">flake-update</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mono mt-0.5">deadb33 · flake.lock: Update · 4 days ago</div>
</div>
<span class="text-xs text-gray-500 dark:text-zinc-400 tabular-nums">42 runs</span>
<a href="run.html" class="text-xs text-blue-600 dark:text-bblink hover:underline">latest →</a>
</div>
</div>
</div>
<!-- PRs -->
<div id="tab-prs" data-tab-pane class="hidden bg-white dark:bg-zinc-900/40 border border-gray-200 dark:border-zinc-800 rounded-lg overflow-hidden">
<div class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbamber animate-pulse"></span>
<div class="flex-1 grid grid-cols-[auto_1fr_auto_auto] items-center gap-4 px-5 py-3">
<span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded text-xs">pull/631</span>
<div>
<div class="font-medium truncate">www: prototype hybrid landing page</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mt-0.5"><img src="https://github.com/Mic92.png?size=32" class="w-3.5 h-3.5 rounded-full inline"> Mic92 · just now</div>
</div>
<span class="text-xs text-gray-500 dark:text-zinc-400">3 builds</span>
<a href="run.html" class="text-xs text-blue-600 dark:text-bblink hover:underline">latest →</a>
</div>
</div>
<div class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40 border-b border-gray-100 dark:border-zinc-800">
<span class="w-1 bg-bbred"></span>
<div class="flex-1 grid grid-cols-[auto_1fr_auto_auto] items-center gap-4 px-5 py-3">
<span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded text-xs">pull/625</span>
<div>
<div class="font-medium truncate">packages: build python modules against patched buildbot python</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mt-0.5"><img src="https://github.com/Mic92.png?size=32" class="w-3.5 h-3.5 rounded-full inline"> Mic92 · 2 days ago</div>
</div>
<span class="text-xs text-gray-500 dark:text-zinc-400">5 builds</span>
<a href="run.html" class="text-xs text-blue-600 dark:text-bblink hover:underline">latest →</a>
</div>
</div>
<div class="flex items-stretch hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<span class="w-1 bg-bbgreen"></span>
<div class="flex-1 grid grid-cols-[auto_1fr_auto_auto] items-center gap-4 px-5 py-3">
<span class="px-1.5 py-px bg-blue-50 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 rounded text-xs">pull/622</span>
<div>
<div class="font-medium truncate">nix-eval-jobs: stream attrs as they arrive instead of buffering</div>
<div class="text-xs text-gray-500 dark:text-zinc-400 mt-0.5"><img src="https://github.com/Mic92.png?size=32" class="w-3.5 h-3.5 rounded-full inline"> Mic92 · 3 days ago</div>
</div>
<span class="text-xs text-gray-500 dark:text-zinc-400">2 builds</span>
<a href="run.html" class="text-xs text-blue-600 dark:text-bblink hover:underline">latest →</a>
</div>
</div>
</div>
<div class="text-center mt-2">
<button class="text-sm text-gray-500 dark:text-zinc-400 hover:text-gray-900 dark:hover:text-zinc-200">Load older runs…</button>
</div>
</main>
<script src="_shared.js"></script>
</body>
</html>
<!doctype html>
<html lang="en" class="dark">
<head>
<meta charset="utf-8">
<title>Run #996 — buildbot-nix</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = { darkMode: 'class', theme: { extend: { colors: {
bblink:'#58a6ff', bbgreen:'#22c55e', bbred:'#f85149', bbamber:'#d29922',
}}}};
</script>
<style>
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
details>summary{list-style:none;cursor:pointer}
details>summary::-webkit-details-marker{display:none}
details[open]>summary .row-marker { background: rgb(243 244 246); }
.dark details[open]>summary .row-marker { background: rgb(39 39 42); }
.chip-active { background: rgb(17 24 39); color: white; border-color: rgb(17 24 39); }
.dark .chip-active { background: #58a6ff; color: white; border-color: #58a6ff; }
</style>
</head>
<body class="bg-gray-50 text-gray-900 dark:bg-[#1b1f23] dark:text-zinc-200 antialiased">
<!-- Single sticky global nav: breadcrumb · run status · title · actions -->
<header class="h-14 sticky top-0 z-20 bg-white/95 dark:bg-zinc-900/95 backdrop-blur border-b border-gray-200 dark:border-zinc-800 px-6 flex items-center gap-3">
<a href="index.html" class="flex items-center gap-2 font-semibold tracking-tight shrink-0">
<svg viewBox="0 0 24 24" class="w-6 h-6 text-bbgreen" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2 L4 7 v10 l8 5 8-5 V7 z"/></svg>
<span>buildbot-nix</span>
</a>
<span class="text-gray-300 dark:text-zinc-600 shrink-0">/</span>
<a href="project.html" class="text-sm text-gray-500 dark:text-zinc-400 hover:text-gray-900 dark:hover:text-zinc-100 shrink-0">nix-community/buildbot-nix</a>
<span class="text-gray-300 dark:text-zinc-600 shrink-0">/</span>
<svg viewBox="0 0 24 24" class="w-4 h-4 text-bbred shrink-0" fill="none" stroke="currentColor" stroke-width="2.5"><title>Run failed</title><path d="M6 6l12 12M18 6L6 18"/></svg>
<span class="text-sm font-medium shrink-0">#996</span>
<span class="text-gray-300 dark:text-zinc-600 shrink-0">—</span>
<a href="#" class="text-sm text-gray-700 dark:text-zinc-300 truncate min-w-0 hover:underline" title="packages: build python tests in parallel for nix-eval-jobs">packages: build python tests in parallel for nix-eval-jobs</a>
<div class="ml-auto flex items-center gap-2 shrink-0">
<button class="text-sm px-2.5 py-1 rounded border border-gray-300 dark:border-zinc-700 hover:bg-gray-100 dark:hover:bg-zinc-800 inline-flex items-center gap-1" title="Rebuild this run (menu: rebuild all, rebuild failed only, force re-evaluation)">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/></svg>
Rebuild
<svg viewBox="0 0 24 24" class="w-3 h-3 opacity-60" fill="none" stroke="currentColor" stroke-width="2"><path d="m6 9 6 6 6-6"/></svg>
</button>
</div>
<div class="relative shrink-0">
<svg viewBox="0 0 24 24" class="w-4 h-4 absolute left-2 top-2 text-gray-400 dark:text-zinc-500" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></svg>
<input type="search" class="bg-gray-50 border border-gray-200 dark:bg-zinc-800 dark:border-zinc-700 rounded-md text-sm pl-7 pr-9 py-1.5 w-48 focus:outline-none focus:border-blue-500" placeholder="Search…">
<kbd class="absolute right-2 top-1.5 text-[10px] font-mono px-1 rounded border border-gray-200 dark:border-zinc-700 text-gray-400 dark:text-zinc-500 bg-white dark:bg-zinc-900">/</kbd>
</div>
<button data-theme-toggle class="p-1.5 rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-500 dark:text-zinc-400 shrink-0" title="Toggle theme">
<svg viewBox="0 0 24 24" class="w-5 h-5 hidden dark:inline" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M2 12h2M20 12h2M5 5l1.5 1.5M17.5 17.5L19 19M5 19l1.5-1.5M17.5 6.5L19 5"/></svg>
<svg viewBox="0 0 24 24" class="w-5 h-5 inline dark:hidden" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</button>
<img src="https://github.com/Mic92.png?size=32" class="w-8 h-8 rounded-full ring-1 ring-gray-200 dark:ring-zinc-700 shrink-0">
</header>
<main class="max-w-[1400px] mx-auto px-6 py-6 space-y-5">
<!-- One-line status sentence + collapsible details -->
<details class="text-sm group">
<summary class="flex items-center gap-2 flex-wrap cursor-pointer select-none">
<span class="text-bbred font-medium">Build failed</span>
<span class="text-gray-400 dark:text-zinc-500">—</span>
<span class="text-gray-700 dark:text-zinc-300">6 of 179 attributes</span>
<span class="text-gray-400 dark:text-zinc-500">in</span>
<span class="text-gray-700 dark:text-zinc-300 tabular-nums">25s</span>
<span class="text-gray-400 dark:text-zinc-500">·</span>
<a href="https://github.com/Mic92" class="inline-flex items-center gap-1 text-gray-700 dark:text-zinc-300 hover:underline"><img src="https://github.com/Mic92.png?size=32" class="w-4 h-4 rounded-full">Mic92</a>
<span class="text-gray-400 dark:text-zinc-500">·</span>
<a href="#" class="text-blue-600 dark:text-bblink hover:underline">pull/625</a>
<span class="text-gray-400 dark:text-zinc-500">·</span>
<a href="#" class="font-mono text-blue-600 dark:text-bblink hover:underline">a1b2c3d</a>
<span class="text-gray-400 dark:text-zinc-500">·</span>
<span class="text-gray-500 dark:text-zinc-400" title="2026-04-28 18:42:09 UTC">2 days ago</span>
<span class="ml-auto text-xs text-gray-500 dark:text-zinc-400 inline-flex items-center gap-1">
<span class="group-open:hidden">show details</span>
<span class="hidden group-open:inline">hide details</span>
<svg viewBox="0 0 24 24" class="w-3 h-3 transition group-open:rotate-180" fill="none" stroke="currentColor" stroke-width="2"><path d="m6 9 6 6 6-6"/></svg>
</span>
</summary>
<div class="mt-3 grid grid-cols-2 md:grid-cols-4 gap-x-6 gap-y-1 text-xs text-gray-600 dark:text-zinc-400 max-w-3xl">
<div><span class="text-gray-500 dark:text-zinc-500">Trigger</span> <span class="font-mono">onPullRequest.default</span></div>
<div><span class="text-gray-500 dark:text-zinc-500">Worker</span> <span class="font-mono">nix-build-x86_64-linux-2</span></div>
<div><span class="text-gray-500 dark:text-zinc-500">Queue</span> <span class="tabular-nums">4s</span></div>
<div><span class="text-gray-500 dark:text-zinc-500">Run</span> <span class="tabular-nums">21s</span></div>
<div class="col-span-2 md:col-span-4 inline-flex items-center gap-1.5">
<span class="text-gray-500 dark:text-zinc-500">SHA</span>
<span class="font-mono">a1b2c3d92a0d710d36812c9b3e68f39b6ab056ee</span>
<button class="text-gray-400 hover:text-gray-700 dark:hover:text-zinc-200" title="Copy">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg>
</button>
</div>
</div>
</details>
<!-- Filter chips -->
<div data-chips="attr-rows" class="flex items-center gap-3 flex-wrap">
<input type="search" placeholder="Filter attributes…" class="flex-1 max-w-sm px-3 py-1.5 text-sm border border-gray-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 rounded">
<div class="flex gap-2 text-xs flex-wrap">
<button data-filter="all" class="chip-active px-2.5 py-1 rounded-full border border-gray-300 dark:border-zinc-700">all</button>
<button data-filter="failed" class="px-2.5 py-1 rounded-full font-medium bg-red-500 text-white hover:bg-red-600">failed <span class="tabular-nums font-semibold">6</span></button>
<button data-filter="dep-failed" class="px-2.5 py-1 rounded-full font-medium bg-orange-500 text-white hover:bg-orange-600">dep-failed <span class="tabular-nums font-semibold">81</span></button>
<button data-filter="running" class="px-2.5 py-1 rounded-full font-medium bg-amber-500 text-white hover:bg-amber-600">running <span class="tabular-nums font-semibold">1</span></button>
<button data-filter="success" class="px-2.5 py-1 rounded-full font-medium bg-green-500 text-white hover:bg-green-600">success <span class="tabular-nums font-semibold">42</span></button>
<button data-filter="cached" class="px-2.5 py-1 rounded-full bg-gray-200 text-gray-700 dark:bg-zinc-700 dark:text-zinc-200 hover:bg-gray-300 dark:hover:bg-zinc-600">cached <span class="tabular-nums font-semibold">130</span></button>
</div>
<span data-count-for="attr-rows" class="hidden text-xs text-gray-500 dark:text-zinc-400 tabular-nums"></span>
</div>
<!-- Single expandable Attributes table. Failed rows pre-expand with log tail. -->
<div id="attr-rows" class="bg-white dark:bg-zinc-900/40 border border-gray-200 dark:border-zinc-800 rounded-lg divide-y divide-gray-100 dark:divide-zinc-800 overflow-hidden">
<!-- failed: pre-expanded with inline log tail -->
<details open data-state="failed" class="group">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbred mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><title>failed</title><path d="M6 6l12 12M18 6L6 18"/></svg>
<span class="font-mono text-sm truncate">packages.x86_64-linux.cnix-store</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">2j6hssm…dq9r</span>-cnix-store.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbred" style="width:90%"></div></div>
<span class="tabular-nums text-xs">2m12s</span>
</div>
<div class="flex justify-end gap-0.5">
<button onclick="event.preventDefault();event.stopPropagation()" class="w-6 h-6 inline-flex items-center justify-center rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-500 dark:text-zinc-400" title="Rebuild this attribute">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/></svg>
</button>
</div>
</summary>
<div class="px-4 pb-4 pt-1 space-y-2 bg-gray-50/60 dark:bg-zinc-900/30">
<div class="flex items-center gap-2 text-xs text-gray-500 dark:text-zinc-400">
<span>Failed in step <span class="font-mono">configurePhase</span></span>
<span class="ml-auto"><a href="derivation.html" class="text-blue-600 dark:text-bblink hover:underline">View full log →</a></span>
</div>
<pre class="bg-black text-zinc-200 mono text-xs p-4 rounded overflow-x-auto leading-relaxed">Configuring cnix-store-0.4.1.0...
checking for pkg-config... /nix/store/...-pkg-config-0.29.2/bin/pkg-config
checking for nix-store... 2.34.6
Error: [Cabal-7600]
Setup: The pkg-config package 'nix-store' version &gt;=2.28 &amp;&amp; &lt;2.34 is
required but the version installed on the system is version 2.34.6
[1 of 14] Compiling Hercules.CNix.Store.Context ( src/Context.hs )
src/Context.hs:42:7: error:
• Couldn't match type 'Ptr NixStore' with 'ForeignPtr NixStore'
• In the first argument of 'withForeignPtr'
|
42 | withForeignPtr store $ \p -&gt;
| ^^^^^^^^^^^^^^^^^^^^
<span class="text-red-400">error: builder for '/nix/store/2j6hssm…-cnix-store-0.4.1.0.drv' failed with exit code 1</span></pre>
</div>
</details>
<details open data-state="failed" class="group">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbred mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><title>failed</title><path d="M6 6l12 12M18 6L6 18"/></svg>
<span class="font-mono text-sm truncate">packages.x86_64-linux.hci</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">zbwcb0y…snqb</span>-hci-0.3.9.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbred" style="width:36%"></div></div>
<span class="tabular-nums text-xs">53s</span>
</div>
<div class="flex justify-end gap-0.5">
<button onclick="event.preventDefault();event.stopPropagation()" class="w-6 h-6 inline-flex items-center justify-center rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-500 dark:text-zinc-400" title="Rebuild this attribute">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/></svg>
</button>
</div>
</summary>
<div class="px-4 pb-4 pt-1 space-y-2 bg-gray-50/60 dark:bg-zinc-900/30">
<div class="flex items-center gap-2 text-xs text-gray-500 dark:text-zinc-400">
<span>Failed in step <span class="font-mono">buildPhase</span></span>
<span class="ml-auto"><a href="derivation.html" class="text-blue-600 dark:text-bblink hover:underline">View full log →</a></span>
</div>
<pre class="bg-black text-zinc-200 mono text-xs p-4 rounded overflow-x-auto leading-relaxed">Linking dist/build/hci/hci ...
/nix/store/...-binutils-2.43/bin/ld: cannot find -lnixstore: No such file or directory
collect2: error: ld returned 1 exit status
<span class="text-red-400">error: builder for '/nix/store/zbwcb0y…-hci-0.3.9.drv' failed with exit code 1</span></pre>
</div>
</details>
<details data-state="failed">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbred mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><title>failed</title><path d="M6 6l12 12M18 6L6 18"/></svg>
<span class="font-mono text-sm truncate">checks.x86_64-linux.gitea</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">a9k2m1x…lsit</span>-nixos-test-gitea.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbred" style="width:60%"></div></div>
<span class="tabular-nums text-xs">1m28s</span>
</div>
<div class="flex justify-end gap-0.5">
<button onclick="event.preventDefault();event.stopPropagation()" class="w-6 h-6 inline-flex items-center justify-center rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-500 dark:text-zinc-400" title="Rebuild this attribute">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/></svg>
</button>
</div>
</summary>
<div class="px-4 pb-4 pt-1 bg-gray-50/60 dark:bg-zinc-900/30">
<pre class="bg-black text-zinc-200 mono text-xs p-4 rounded overflow-x-auto leading-relaxed">machine: waiting for TCP port 3000 on localhost ............ timed out
Test "wait_for_open_port" failed with error: "Timed out after 60s"
<span class="text-red-400">error: builder for '/nix/store/a9k2m1x…-nixos-test-gitea.drv' failed with exit code 1</span></pre>
</div>
</details>
<details data-state="failed">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbred mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><title>failed</title><path d="M6 6l12 12M18 6L6 18"/></svg>
<span class="font-mono text-sm truncate">packages.x86_64-linux.docs</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">p4f8b2n…1ets</span>-buildbot-nix-docs.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbred" style="width:14%"></div></div>
<span class="tabular-nums text-xs">19s</span>
</div>
<div class="flex justify-end gap-0.5">
<button onclick="event.preventDefault();event.stopPropagation()" class="w-6 h-6 inline-flex items-center justify-center rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-500 dark:text-zinc-400" title="Rebuild this attribute">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/></svg>
</button>
</div>
</summary>
</details>
<details data-state="failed">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbred mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><title>failed</title><path d="M6 6l12 12M18 6L6 18"/></svg>
<span class="font-mono text-sm truncate">checks.aarch64-linux.gitea</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">q1n8z0r…7hbw</span>-nixos-test-gitea.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbred" style="width:65%"></div></div>
<span class="tabular-nums text-xs">1m34s</span>
</div>
<div class="flex justify-end gap-0.5">
<button onclick="event.preventDefault();event.stopPropagation()" class="w-6 h-6 inline-flex items-center justify-center rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-500 dark:text-zinc-400" title="Rebuild this attribute">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/></svg>
</button>
</div>
</summary>
</details>
<details data-state="failed">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbred mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><title>failed</title><path d="M6 6l12 12M18 6L6 18"/></svg>
<span class="font-mono text-sm truncate">packages.aarch64-darwin.cnix-store</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">m3v7d9k…0axc</span>-cnix-store.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbred" style="width:75%"></div></div>
<span class="tabular-nums text-xs">1m48s</span>
</div>
<div class="flex justify-end gap-0.5">
<button onclick="event.preventDefault();event.stopPropagation()" class="w-6 h-6 inline-flex items-center justify-center rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-500 dark:text-zinc-400" title="Rebuild this attribute">
<svg viewBox="0 0 24 24" class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/></svg>
</button>
</div>
</summary>
</details>
<!-- running -->
<details data-state="running">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbamber mx-auto animate-spin" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><title>running</title><path d="M21 12a9 9 0 1 1-3-6.7"/></svg>
<span class="font-mono text-sm truncate">checks.x86_64-linux.github</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">n2h8s5v…1gwk</span>-nixos-test-github.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbamber" style="width:55%"></div></div>
<span class="tabular-nums text-xs">1m20s…</span>
</div>
</summary>
</details>
<!-- dep-failed -->
<details data-state="dep-failed">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-orange-500 mx-auto" viewBox="0 0 20 20" fill="currentColor"><title>dependency failed</title><circle cx="10" cy="10" r="8"/><path d="M6.5 6.5l7 7" stroke="#fff" stroke-width="2" stroke-linecap="round"/></svg>
<span class="font-mono text-sm truncate">apps.x86_64-linux.hci.program</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">v8r2k9a…3mfp</span>-hci-wrapped.drv</a>
<div class="text-xs text-gray-400 dark:text-zinc-500">— blocked by hci.drv</div>
</summary>
</details>
<details data-state="dep-failed">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-orange-500 mx-auto" viewBox="0 0 20 20" fill="currentColor"><title>dependency failed</title><circle cx="10" cy="10" r="8"/><path d="M6.5 6.5l7 7" stroke="#fff" stroke-width="2" stroke-linecap="round"/></svg>
<span class="font-mono text-sm truncate">devShells.x86_64-linux.default</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">k0d3g7n…2qye</span>-nix-shell.drv</a>
<div class="text-xs text-gray-400 dark:text-zinc-500">— blocked by hci.drv</div>
</summary>
</details>
<details data-state="dep-failed">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-orange-500 mx-auto" viewBox="0 0 20 20" fill="currentColor"><title>dependency failed</title><circle cx="10" cy="10" r="8"/><path d="M6.5 6.5l7 7" stroke="#fff" stroke-width="2" stroke-linecap="round"/></svg>
<span class="font-mono text-sm truncate">nixosConfigurations.ci-runner</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">j7y0q4b…6vam</span>-nixos-system-ci-runner.drv</a>
<div class="text-xs text-gray-400 dark:text-zinc-500">— blocked by gitea.drv</div>
</summary>
</details>
<!-- success -->
<details data-state="success">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbgreen mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="font-mono text-sm truncate">checks.x86_64-linux.treefmt</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">c1m6a8r…4tjx</span>-treefmt-check.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbgreen" style="width:6%"></div></div>
<span class="tabular-nums text-xs">8s</span>
</div>
</summary>
</details>
<details data-state="success">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbgreen mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="font-mono text-sm truncate">packages.x86_64-linux.buildbot-nix</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">g8l3w0p…5ncb</span>-buildbot-nix-1.4.0.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbgreen" style="width:48%"></div></div>
<span class="tabular-nums text-xs">1m10s</span>
</div>
</summary>
</details>
<details data-state="success">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbgreen mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="font-mono text-sm truncate">checks.x86_64-linux.mypy</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">l9r4t8d…0ugv</span>-mypy-check.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbgreen" style="width:11%"></div></div>
<span class="tabular-nums text-xs">15s</span>
</div>
</summary>
</details>
<details data-state="success">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-bbgreen mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><title>passed</title><path d="M5 12l5 5L20 7"/></svg>
<span class="font-mono text-sm truncate">checks.x86_64-linux.ruff</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">o3n9e2k…6iwq</span>-ruff-check.drv</a>
<div class="flex items-center gap-2">
<div class="flex-1 h-1 rounded bg-gray-100 dark:bg-zinc-800 overflow-hidden"><div class="h-full bg-bbgreen" style="width:4%"></div></div>
<span class="tabular-nums text-xs">5s</span>
</div>
</summary>
</details>
<!-- cached -->
<details data-state="cached">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-gray-300 dark:text-zinc-600 mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><title>cached</title><circle cx="12" cy="12" r="9"/><path d="M5 5l14 14"/></svg>
<span class="font-mono text-sm truncate text-gray-500 dark:text-zinc-500">packages.x86_64-linux.nix-eval-jobs</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">r6a1y4g…8pmz</span>-nix-eval-jobs-3.1.0.drv</a>
<span class="text-xs text-gray-400 dark:text-zinc-500">cached</span>
</summary>
</details>
<details data-state="cached">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-gray-300 dark:text-zinc-600 mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><title>cached</title><circle cx="12" cy="12" r="9"/><path d="M5 5l14 14"/></svg>
<span class="font-mono text-sm truncate text-gray-500 dark:text-zinc-500">formatter.x86_64-linux</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">u4i2d8w…1hco</span>-treefmt.drv</a>
<span class="text-xs text-gray-400 dark:text-zinc-500">cached</span>
</summary>
</details>
<details data-state="cached">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-gray-300 dark:text-zinc-600 mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><title>cached</title><circle cx="12" cy="12" r="9"/><path d="M5 5l14 14"/></svg>
<span class="font-mono text-sm truncate text-gray-500 dark:text-zinc-500">checks.x86_64-linux.deadnix</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">w7s6n1e…4kvy</span>-deadnix-check.drv</a>
<span class="text-xs text-gray-400 dark:text-zinc-500">cached</span>
</summary>
</details>
<details data-state="cached">
<summary class="row-marker grid grid-cols-[36px_1fr_320px_140px_64px] gap-3 items-center px-4 py-2.5 hover:bg-gray-50 dark:hover:bg-zinc-800/40">
<svg class="w-4 h-4 text-gray-300 dark:text-zinc-600 mx-auto" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><title>cached</title><circle cx="12" cy="12" r="9"/><path d="M5 5l14 14"/></svg>
<span class="font-mono text-sm truncate text-gray-500 dark:text-zinc-500">checks.x86_64-linux.statix</span>
<a href="derivation.html" onclick="event.stopPropagation()" class="font-mono text-xs text-blue-600 dark:text-bblink hover:underline truncate"><span class="text-gray-400 dark:text-zinc-500">x9b3m5r…0qfa</span>-statix-check.drv</a>
<span class="text-xs text-gray-400 dark:text-zinc-500">cached</span>
</summary>
</details>
</div>
<p class="text-xs text-gray-500 dark:text-zinc-400">Showing first 16 of 260 attributes. Use chips above to filter.</p>
</main>
<script src="_shared.js"></script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment