You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
nix: flake.nix hand-types stale package versions (maxplayer 0.1.1 vs workspace 0.5.6, relay 0.1.0 vs buzz-relay 0.2.0) — derive them from the manifests #958
The label is what nix shows: store path names (maxplayer-0.1.1), nix flake show, nix profile list, and any deployed nixosConfigurations.relay closure. The binary inside says something else — maxplayer --version comes from Cargo and prints 0.5.6. One artifact, two versions, and the nix one is the stale one. After #818 lands (PR #955 stamps the build commit into --version), a nix user will hold a binary that names its exact commit while its store path claims a release four minors old.
Nothing today compares the two, so this cannot fail CI and will drift again the next time the workspace bumps.
Change
Derive, do not relabel. A hand-typed string went stale once; a second hand-typed string will too.
maxplayer and maxplayer-relay-write-policy: version = (builtins.fromTOML (builtins.readFile ./Cargo.toml)).workspace.package.version;
maxplayer-relay: version = (builtins.fromTOML (builtins.readFile ./crates/buzz/crates/buzz-relay/Cargo.toml)).package.version;
No literal version string remains in flake.nix for any package.
Acceptance
nix eval --raw .#packages.<system>.maxplayer.version prints exactly the [workspace.package] version from Cargo.toml; the relay package prints exactly buzz-relay's.
grep -nE 'version = "[0-9]' flake.nix prints nothing.
Optional and worth it: one line in scripts/verify-release-version.sh (already the release gate for the version string, per stamp the build commit into maxplayer --version #818) that fails a release when the flake-evaluated version differs from Cargo.toml. Only if nix is available on the release runner; otherwise leave it out and say so.
Whether maxplayer-relay-write-policy is a workspace member is not confirmed here — read its cargoBuildFlags at :106 and the crate's manifest before choosing rule 1 or 2 for it.
nix is not installed on the box that measured this, so the acceptance commands were not run. Someone with nix should evaluate before and after.
Surfaced by the #818 worker (w-818-version-stamp) while stamping --version; parked as "818-siblings" and filed on Bob's word.
Filed by maxie (forge v2 domain lead) under the shared maxy-player credential, on Bob's order 2026-09-01 21:44 PDT.
flake.nixhand-types package versions that no longer match the crates it builds. Measured atmain=c1338504.The mismatch
:43-44pname = "maxplayer"; version = "0.1.1"maxplayerworkspace crate (src = self)Cargo.toml:20[workspace.package] version = "0.5.6", inherited bycrates/maxplayer/Cargo.toml:8(version.workspace = true). Latest tagv0.5.6.:102-103pname = "maxplayer-relay-write-policy"; version = "0.1.1"src = self):135-136pname = "maxplayer-relay"; version = "0.1.0"buzz-relaycrate (src = ./crates/buzz)crates/buzz/crates/buzz-relay/Cargo.toml:7Why it matters
The label is what nix shows: store path names (
maxplayer-0.1.1),nix flake show,nix profile list, and any deployednixosConfigurations.relayclosure. The binary inside says something else —maxplayer --versioncomes from Cargo and prints0.5.6. One artifact, two versions, and the nix one is the stale one. After #818 lands (PR #955 stamps the build commit into--version), a nix user will hold a binary that names its exact commit while its store path claims a release four minors old.Nothing today compares the two, so this cannot fail CI and will drift again the next time the workspace bumps.
Change
Derive, do not relabel. A hand-typed string went stale once; a second hand-typed string will too.
maxplayerandmaxplayer-relay-write-policy:version = (builtins.fromTOML (builtins.readFile ./Cargo.toml)).workspace.package.version;maxplayer-relay:version = (builtins.fromTOML (builtins.readFile ./crates/buzz/crates/buzz-relay/Cargo.toml)).package.version;flake.nixfor any package.Acceptance
nix eval --raw .#packages.<system>.maxplayer.versionprints exactly the[workspace.package]version fromCargo.toml; the relay package prints exactlybuzz-relay's.grep -nE 'version = "[0-9]' flake.nixprints nothing.scripts/verify-release-version.sh(already the release gate for the version string, per stamp the build commit intomaxplayer --version#818) that fails a release when the flake-evaluated version differs fromCargo.toml. Only if nix is available on the release runner; otherwise leave it out and say so.Bounds
version =lines and nothing else inflake.nix. PR cli: stamp the build commit intomaxplayer --version(closes #818) #955 (stamp the build commit intomaxplayer --version#818) adds aMAXPLAYER_BUILD_COMMITline at:47in the same block and leaves:44alone, so the two are disjoint but adjacent; whichever lands second rebases trivially.maxplayer-relay-write-policyis a workspace member is not confirmed here — read itscargoBuildFlagsat:106and the crate's manifest before choosing rule 1 or 2 for it.Surfaced by the #818 worker (
w-818-version-stamp) while stamping--version; parked as "818-siblings" and filed on Bob's word.Filed by maxie (forge v2 domain lead) under the shared
maxy-playercredential, on Bob's order 2026-09-01 21:44 PDT.