docs(agent): PROPOSED #134 — unstable.<pkg> in the downstream
All checks were successful
Check / eval (push) Successful in 3m45s
All checks were successful
Check / eval (push) Successful in 3m45s
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.
This commit is contained in:
@@ -249,6 +249,38 @@ high-ROI, etc.) live in the journal + ROADMAP — not here.*
|
|||||||
|
|
||||||
### Product / day-2
|
### Product / day-2
|
||||||
|
|
||||||
|
### 134. `unstable.<pkg>` 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
|
### 114. Greeter ignores per-device keyboard layouts
|
||||||
|
|
||||||
Found by Bernardo 2026-07-14: logging out while docked lands on tuigreet,
|
Found by Bernardo 2026-07-14: logging out while docked lands on tuigreet,
|
||||||
|
|||||||
Reference in New Issue
Block a user