treefmt: apply prettier
Pure `nix fmt` output from the commit before this one — no hand edits. 203 files: 52 md, 42 tsx, 32 js, 32 css, 21 ts, 13 html, 8 json, 3 mjs. Reproduce with `nix develop -c nix fmt` on the parent commit; the result should be byte-identical to this tree. None of the 13 `.prettierignore` entries appears here — verified by intersecting the changed-file list against the ignore file, with a control proving the intersection finds a match when one exists.
This commit is contained in:
parent
5d24bedd60
commit
39b95c2ede
203 changed files with 10090 additions and 6085 deletions
|
|
@ -4,7 +4,7 @@ The minimal **root privileged-helper** for hive-c0re. It runs as root and
|
|||
exposes a narrow unix socket at `/run/hive/priv.sock` that accepts `PrivRequest`
|
||||
JSON lines and performs only the handful of operations that genuinely require
|
||||
root — bind-mount edits, `nsenter` into a container, btrfs subvolume ops. All
|
||||
coordination logic (broker, HTTP, scheduling) stays in the *unprivileged*
|
||||
coordination logic (broker, HTTP, scheduling) stays in the _unprivileged_
|
||||
`hive-c0re` process, which delegates here.
|
||||
|
||||
## Why it exists
|
||||
|
|
@ -43,22 +43,22 @@ not the whole daemon-shared crate.
|
|||
**Why not let `nixos-container` build it (the old `create`-only
|
||||
behaviour, `update` used its own `--flake` path)**: `nixos-container`'s
|
||||
own `buildFlake()` — invoked whenever `--system-path` isn't passed —
|
||||
builds to a *hardcoded relative path*. `$systemPath` is only ever
|
||||
builds to a _hardcoded relative path_. `$systemPath` is only ever
|
||||
assigned from the CLI flag or from `buildFlake()`'s own result, so with
|
||||
no flag it stays `undef` and `"$systemPath.tmp"` interpolates to the
|
||||
bare string `.tmp` in whatever the caller's cwd happens to be.
|
||||
`buildFlake()` itself takes no lock at all: `create` wraps its *whole
|
||||
action* in an exclusive `flock` before calling it, but `update` used to
|
||||
`buildFlake()` itself takes no lock at all: `create` wraps its _whole
|
||||
action_ in an exclusive `flock` before calling it, but `update` used to
|
||||
call it with no lock whatsoever — so `create`'s lock never protected
|
||||
against a concurrent `update` clobbering the same `.tmp`. hive-priv never
|
||||
sets a per-call cwd, so with `services.hyperhive.c0re.buildSlots > 1`,
|
||||
two concurrent calls (any mix of `create`/`update`) could share that one
|
||||
`.tmp`: one's `readlink(".tmp")` resolving to the *other's* build
|
||||
`.tmp`: one's `readlink(".tmp")` resolving to the _other's_ build
|
||||
output, handing an agent's container the wrong agent's closure — the
|
||||
"agent container gets closure of other agent" bug (hyperhive#3312).
|
||||
|
||||
Building the toplevel here and passing the resolved store path via
|
||||
`--system-path` for *every* call means `buildFlake()` never runs at all,
|
||||
`--system-path` for _every_ call means `buildFlake()` never runs at all,
|
||||
for either verb — no shared `.tmp` left to race on, no locking invariant
|
||||
of a script we don't own to keep track of. `--no-link` avoids a
|
||||
competing out-link race of our own; we only need the store path, not a
|
||||
|
|
@ -68,7 +68,7 @@ same window every other `--print-out-paths` consumer already relies on).
|
|||
|
||||
**Forwards stderr live, captures stdout silently — deliberately not
|
||||
symmetric.** This build is the multi-minute phase of a `create`/
|
||||
`update`, and it used to run *inside* `nixos-container`'s own `--flake`
|
||||
`update`, and it used to run _inside_ `nixos-container`'s own `--flake`
|
||||
invocation, which streams every line to the caller in real time.
|
||||
Buffering it instead (`Command::output()`, as this function first
|
||||
shipped) regressed that: nothing on the wire — dashboard or
|
||||
|
|
@ -77,13 +77,13 @@ at once. So both pipes are drained concurrently (needed to avoid
|
|||
deadlocking if either pipe fills while the other is being read), but
|
||||
only stderr — where nix's own progress goes — is forwarded live, same
|
||||
shape as `container_run_streaming`. stdout is different:
|
||||
`--print-out-paths` writes *only* the final store path there, once, at
|
||||
`--print-out-paths` writes _only_ the final store path there, once, at
|
||||
the end — forwarding it the same way would risk interleaving a progress
|
||||
line into the value this function hands back as `--system-path`, trading
|
||||
a closure-mixup bug for a corrupted-argument one. So stdout lines are
|
||||
accumulated silently and only consulted after the exit status is known
|
||||
to be success — and even then, exactly one non-empty, trimmed line is
|
||||
required (`nix build --print-out-paths` prints one line *per output*,
|
||||
required (`nix build --print-out-paths` prints one line _per output_,
|
||||
not one line total; `config.system.build.toplevel` is single-output
|
||||
today, but a bare whole-buffer `.trim()` would silently hand a
|
||||
multi-line string to `--system-path` the day that ever changes, and a
|
||||
|
|
|
|||
Loading…
Reference in a new issue