From be636e14b9faf4dc194a001a5d0a6b4ae58b4760 Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Wed, 15 Jul 2026 18:00:09 +0100 Subject: [PATCH] =?UTF-8?q?docs(agent):=20PROPOSED=20#134=20=E2=80=94=20un?= =?UTF-8?q?stable.=20in=20the=20downstream?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bernardo wants a newer LM Studio and rejected the only mechanism that works today (a hand-pinned fetchTarball rev+sha256 in home.nix — verified working, but a second unlocked pin and exactly the Nix expertise the distro exists to spare its users). He is taking stable 0.4.15-2 for now. Records why there is no seam (mkFlake takes src/username/hardwareProfile/ system; homeConfigurations uses mkFlake's own pkgs, so a system.nix overlay cannot reach a home package), the sketch he asked for (unstable.lmstudio, maybe stable. as an explicit synonym), and the shape that keeps the one-input promise: carry nixpkgs-unstable upstream and expose it via overlays.default, so downstream stays single-input and locked. Costs left open for triage, not decided: two-channel lock churn against the full-checklist rule, closure duplication (measured: the two lmstudio build closures share 690 of ~3.7-4k paths), the weakening of "tested together upstream", whether an unreferenced input should lock at all, and whether the seam covers system.nix too. Cheaper fallback noted (mkFlake `overlays ? []`). PROPOSED per BACKLOG rules — awaiting triage, not implemented. --- agent/BACKLOG.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index a3b6aa7..8cb1619 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -249,6 +249,38 @@ high-ROI, etc.) live in the journal + ROADMAP — not here.* ### Product / day-2 +### 134. `unstable.` in the downstream — a newer app without a second flake + +Bernardo 2026-07-15, wanting a newer LM Studio (pinned 0.4.15-2 vs unstable +0.4.19-2) and disliking the only path that works today. There is **no seam**: +`mkFlake` takes `src`/`username`/`hardwareProfile`/`system` only, and +`homeConfigurations` is built from mkFlake's own `pkgs` (`inherit pkgs`), so a +`nixpkgs.overlays` in system.nix cannot reach a home package. The user is left +hand-pinning a `fetchTarball` rev+sha256 in home.nix (verified working) — a +second pin with no lock, which is exactly the Nix expertise the distro exists +to spare them. Sketch: `home.packages = [ unstable.lmstudio ];`, and maybe +`stable.` as an explicit synonym for today's bare `pkgs`. + +The shape that keeps the promises: Nomarchy carries the `nixpkgs-unstable` +input **itself** and exposes it through `overlays.default` as an `unstable` +attrset, so downstream stays **one input**, stays locked, and `nomarchy-pull` +still moves it. Cost/questions to settle before building: +- Lock churn: every lock bump now moves two channels, and the full-checklist + rule (VERIFICATION §5) applies to both. +- Duplication: measured — pinned vs unstable lmstudio build closures share + only 690 of ~3.7–4k paths (separate stdenv bootstrap). Opt-in per package, + but a user who reaches for it pays a second glibc/stack in the closure. +- "Tested together upstream" weakens by construction: nothing validates + pinned-Nomarchy + unstable-app. Needs an explicit, documented "you own this + combination" line, not silence. +- Does `unstable` belong in the eval by default, or only when referenced? + (An unused input still locks + fetches.) +- Scope: home packages only, or system.nix too? + +Alternative if that is too much surface: give `mkFlake` an `overlays ? []` +param (one-line seam, user still owns their own input/pin — cheaper for us, +still expert-only for them). Related: #133. + ### 114. Greeter ignores per-device keyboard layouts Found by Bernardo 2026-07-14: logging out while docked lands on tuigreet,