feat(toolkit): bundle the baseline interactive toolset (task 0001) #27
Reference in New Issue
Block a user
Delete Branch "task-0001-toolkit-bundle"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds
modules.toolkit, a deliberate bundle Module that turns on the baseline interactive environment — fish, tmux, nvim, git, and direnv — as one unit and makes fish the login shell, so any Host or Guest shell feels identical. It follows the sanctioned aggregator pattern ofmodules/desktop/desktop.nix: theenablesets each member'senable = lib.mkDefault true, so a Host can still override any single piece while the one flag brings up the bundle.neogaiais converted as the demonstrating Host: its five individualmodules.{fish,git,direnv,tmux,nvim}.enablelines and its explicitmodules.fish.defaultShell = truecollapse to a singlemodules.toolkit.enable = true, keeping the Host a flat checklist.Verified:
nix flake checkbuildschecks.x86_64-linux.neogaia;nix evalof each of the five members'enablereturnstrue;fish.defaultShellistrueand the login shell resolves to fish.Review
Risk
Overall: Low
mkDefaultpreserves per-host override, no migrations or deletions.nix flake checkbuilding the host toplevel; config is declarative and self-validating.mkIf.Standards — unaddressed
modules/desktop/desktop.nix(judgement call): the new module is a near-verbatim structural clone of the desktop aggregator. Kept — this is the intended, ADR-0004-sanctioned aggregator pattern; a third aggregator would be the point to extract a shared helper.Spec — unaddressed
mkDefault trueover plaintruefor the members: kept deliberately — letting a Host override a single member is the intended flexibility and matches the existingdesktopaggregator.gitis enabled via the bundle rather than an explicit per-host line: kept deliberately — collapsing the members into one line is the intended flat-checklist outcome; the git identity Module is still enabled on the Host.— Claude
66379c6b02to8cd59cb292