feat(flake): #134 — unstable.<pkg> in the downstream, one input, no hand pins
All checks were successful
Check / eval (push) Successful in 4m16s
All checks were successful
Check / eval (push) Successful in 4m16s
Nomarchy now carries a nixpkgs-unstable input and exposes it through overlays.default as an `unstable` attrset: in the template's `home.packages = with pkgs; [ … ]` a user writes `unstable.lmstudio` and is done. Downstream stays one locked input; nomarchy-pull moves it. lib.nix needed zero changes — mkFlake's pkgs already applies the overlay. The import is plain and non-recursive, so configs that never reference unstable. pay nothing beyond the input fetch; allowUnfree mirrors the base set so the motivating lmstudio resolves. Home packages are the supported surface (documented convention). Costs stated in the README, not hidden: you own the pinned+unstable combination; a second toolchain lands in your closure (~690 of ~4k paths shared, measured on lmstudio); it moves when the lock moves. Lock bumps now move two channels — VERIFICATION §5 and CONVENTIONS updated accordingly. flake.lock gained exactly one node (nixos-unstable @ 753cc8a); nothing else moved. Verification: V1 — nix flake check --no-build green; new eval-only checks.unstable-seam green (26.05pre vs 26.11pre lib.version, no builds); template HM activation built via mkFlake with unstable.hello enabled and its closure carries the unstable store path (pg2zfr… vs pinned nm7p8w…). Implementation by a Sonnet subagent; design and review on Fable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -89,29 +89,6 @@ rofi#2317, and take the fix when a release carries it. If it is still open at
|
||||
the next lock bump, that is fine — nothing here rots meanwhile.
|
||||
*Last checked 2026-07-17: open, no maintainer response, no linked PR.*
|
||||
|
||||
### 134. `unstable.<pkg>` in the downstream — decided, build it
|
||||
|
||||
**Decided 2026-07-17 (Bernardo): Nomarchy carries the channel.** Add a
|
||||
`nixpkgs-unstable` input to the distro flake and expose it through
|
||||
`overlays.default` as an `unstable` attrset, so
|
||||
`home.packages = [ unstable.lmstudio ];` just works — downstream stays one
|
||||
locked input and `nomarchy-pull` still moves it. Scope is **home packages
|
||||
only**; no `unstable.*` surface in system.nix, no `stable.` synonym for now.
|
||||
The input rides in the eval unconditionally (an unused input still locks +
|
||||
fetches — accepted). Original diagnosis stands: `mkFlake` has no overlay
|
||||
seam and `homeConfigurations` uses mkFlake's own `pkgs`, so nothing short of
|
||||
the distro carrying the channel keeps the user out of `fetchTarball` pinning.
|
||||
|
||||
Costs accepted with the ruling, to be stated in docs, not hidden: lock bumps
|
||||
now move two channels (VERIFICATION §5 full-checklist applies to both); a
|
||||
user who reaches for `unstable.` pays a second stdenv/glibc in their closure
|
||||
(measured: lmstudio shares only ~690 of ~3.7–4k paths); and nothing upstream
|
||||
tests pinned-Nomarchy + unstable-app together — the README needs an explicit
|
||||
"you own this combination" paragraph. Ship with a commented example in
|
||||
`templates/downstream/home.nix` (opt-in convention) and a README table note.
|
||||
Pass = flake check green + a V1 build of the template HM closure with one
|
||||
`unstable.` package enabled. Related: #133.
|
||||
|
||||
## LATER
|
||||
|
||||
- **Wallpapers artifact split** (ROADMAP § Faster switches — decided,
|
||||
@@ -312,7 +289,7 @@ decide. **Resolved** entries stay for history; agents treat them as closed.
|
||||
is promoted, a public binary cache (cachix) is the likely first step.
|
||||
- **#134 unstable packages** — build it: Nomarchy carries the
|
||||
`nixpkgs-unstable` input, `unstable.*` via the overlay, home-scope only.
|
||||
Moved to NEXT with the full decided shape.
|
||||
Shipped the same day (ROADMAP § `unstable.<pkg>` in the downstream).
|
||||
- **#114 greeter layouts** — document only: a VT has one keymap by design,
|
||||
so tuigreet cannot honour per-device layouts. Shipped as the README
|
||||
"Greeter keyboard layout" note + a RECOVERY.md pointer; entry deleted.
|
||||
|
||||
@@ -68,5 +68,7 @@ those, it probably shouldn't exist.
|
||||
- Commit style: `feat|fix|test|docs|chore(scope): summary`, body with
|
||||
what/why + verification tier + what remains. Bookkeeping (`agent/`
|
||||
updates) rides in the same commit as the change.
|
||||
- `flake.lock` moves only when the task *is* a lock bump, and only within
|
||||
the pinned release branches.
|
||||
- `flake.lock` moves only when the task *is* a lock bump. The release
|
||||
inputs stay within their pinned release branches; the `nixpkgs-unstable`
|
||||
input (#134, feeds `unstable.*`) tracks `nixos-unstable` and bumps
|
||||
together with the rest — never alone, never `nix flake update`.
|
||||
|
||||
@@ -19,6 +19,25 @@ Template:
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-17 — #134: `unstable.<pkg>` seam shipped
|
||||
- **Task:** BACKLOG #134 (NEXT, decided shape from this morning's triage).
|
||||
- **Did:** `nixpkgs-unstable` input + `unstable` attrset in
|
||||
`overlays.default` (plain lazy import, allowUnfree mirrored);
|
||||
`lib.nix` untouched by design — mkFlake's pkgs already applies the
|
||||
overlay. Template opt-in comment (`unstable.lmstudio`), README costs
|
||||
paragraph, `checks.unstable-seam` (eval-only), VERIFICATION §5 +
|
||||
CONVENTIONS two-channel lock rules. Lock gained exactly one node
|
||||
(nixos-unstable @ 753cc8a, 2026-07-15). Sonnet implemented; design +
|
||||
review here.
|
||||
- **Verified:** V1 — flake check green; unstable-seam check green
|
||||
(26.05pre vs 26.11pre lib.version); template HM activation built with
|
||||
`unstable.hello` and its closure carries the unstable store path
|
||||
(pg2zfr… vs pinned nm7p8w…).
|
||||
- **Pending:** nothing; Bernardo's real-world case is him adding
|
||||
`unstable.lmstudio` to ~/.nomarchy/home.nix whenever he likes.
|
||||
- **Next suggestion:** queue is NEXT-empty save watches (#143/#146/#149);
|
||||
NOW holds only the install-findings stub awaiting Bernardo's call.
|
||||
|
||||
## 2026-07-17 — #127 CLOSED: the brick was hypridle eating its own resume path
|
||||
- **Task:** BACKLOG #127 (NOW). Two Sonnet forensics passes over the machine's
|
||||
journal; interpretation, verdict and close-out here. Bernardo ruled: close +
|
||||
|
||||
@@ -137,7 +137,10 @@ Maintenance follows the same ladder:
|
||||
- **Flake lock bumps**: treat as maximum-blast-radius changes. Build,
|
||||
boot the VM, run the full regression checklist, and do a visual
|
||||
spot-check of the session (themes can shift with upstream package
|
||||
changes). Never merge a lock bump on "it evaluates".
|
||||
changes). Never merge a lock bump on "it evaluates". Since #134 the
|
||||
lock carries **two channels** (the release pin and the
|
||||
`nixos-unstable` pin feeding `unstable.*`) — a bump moves both, and
|
||||
this checklist applies to both.
|
||||
- **Theme imports / new themes**: import via `tools/import-palettes.py`,
|
||||
then the full §3 visual protocol; additionally verify the theme-switch
|
||||
round trip (into the new theme and back out).
|
||||
|
||||
Reference in New Issue
Block a user