docs(agent): #128 — 14d prune for system and Home Manager gens
Some checks failed
Check / eval (push) Has been cancelled

Same floor (keep current + ≥3 past); age window 14 days not 30; apply
independently to system and HM profiles.
This commit is contained in:
2026-07-15 11:55:58 +01:00
parent 9dac8a8b23
commit 1f6f21249e
2 changed files with 30 additions and 27 deletions

View File

@@ -78,40 +78,43 @@ cable leaves. Capture steps in HARDWARE-QUEUE.
## NEXT
### 128. Auto-prune NixOS generations: >30 days, but keep ≥3 past
### 128. Auto-prune system + HM generations: >14 days, but keep ≥3 past
Bernardo 2026-07-15: automatic cleanup of **NixOS** (system) generations
so the boot menu and store do not grow without bound, with a safety floor:
Bernardo 2026-07-15 (refined same day): automatic cleanup of **both**
NixOS (system) and Home Manager (per-user) generations so boot menu,
desktop rollback, and store do not grow without bound, with a safety floor:
1. **Age:** candidates older than **30 days** may be removed.
1. **Age:** candidates older than **14 days** may be removed.
2. **Count floor:** always keep the **current** generation and at least
**3 past** generations — even if those three are older than 30 days.
3. Combined: delete only gens that are **both** older than 30 days **and**
older than the third-most-recent past generation. Gens within 30 days
**3 past** generations — even if those three are older than 14 days.
3. Combined: delete only gens that are **both** older than 14 days **and**
older than the third-most-recent past generation. Gens within 14 days
stay regardless of how many there are (until they age out).
4. **Apply the same rule independently** to the system profile and to each
user's Home Manager profile (desktop rollback in Recovery Desktop).
**Why this shape:** pure age GC (`--delete-older-than`) can wipe a machine
that is rarely rebuilt down to one generation and remove useful rollback
targets; pure count limits (`configurationLimit`) drop recent work just
because the user iterates a lot. Age + floor keeps travel-laptop machines
safe and busy desktops tidy.
safe and busy desktops tidy. 14d matches the existing store GC cadence
rather than a longer 30d hold.
**Today:** `nix.gc` is already weekly with `--delete-older-than 14d`
(`modules/nixos/default.nix`) — store GC, no min-generation floor, and
14d not 30d. This item should replace/refine that policy (or add a
dedicated generation pruner if stock GC cannot express the floor).
(`modules/nixos/default.nix`) — store GC, **no** min-generation floor, and
it is not framed as an explicit dual system+HM policy. This item should
replace/refine that (or add a dedicated pruner if stock GC cannot express
the floor on both profiles). Bootloader list
(`boot.loader.systemd-boot.configurationLimit`) may need to stay in sync
so removed system profiles do not leave dead boot entries.
**Scope (settle if needed):** system profile only vs also Home Manager
user generations (desktop rollback in Recovery). Bootloader list
(`boot.loader.systemd-boot.configurationLimit`) may need to stay in
sync so removed profiles do not leave dead boot entries.
Pass = weekly (or post-rebuild) cleanup enforces 30d + keep ≥3 past on
system generations; a machine with only old gens never goes below
current+3; docs/RECOVERY still matches the boot-menu story; doctor or a
check asserts the timer/unit exists and the prune script's dry-run
logic. V3: run on a box with many gens and confirm boot menu +
`nix-env -p /nix/var/nix/profiles/system --list-generations`.
Pass = weekly (or post-rebuild) cleanup enforces 14d + keep ≥3 past on
**system and HM** generations; a machine with only old gens never goes
below current+3 on either profile; docs/RECOVERY still matches boot-menu
and desktop rollback; doctor or a check asserts the timer/unit exists and
the prune script's dry-run logic. V3: box with many gens — boot menu +
`nix-env -p /nix/var/nix/profiles/system --list-generations` +
`home-manager generations` after a prune.
### 120. A netinstall ISO, next to the fat offline one

View File

@@ -20,12 +20,12 @@ Template:
---
## 2026-07-15 — File #128 generation auto-prune policy (no code)
- **Task:** Bernardo: auto-clean NixOS gens older than 30 days but always
keep ≥3 past generations.
- **Did:** NEXT **#128**. Policy restated; noted existing `nix.gc` weekly
`--delete-older-than 14d` has no min-generation floor.
- **Task:** Bernardo: auto-clean gens older than N days but always keep
≥3 past; include HM; prefer 14d over 30d.
- **Did:** NEXT **#128** — system **and** Home Manager; **14 days** + keep
≥3 past. Noted existing `nix.gc` weekly 14d has no min-generation floor.
- **Verified:** V0 (docs/agent only).
- **Pending:** implement when picked; optional HM gens scope.
- **Pending:** implement when picked.
- **Next suggestion:** implement #128, or human #115/#120.
## 2026-07-15 — #111 Recovery + #105 System IA + #110 retire Control Center