Add modules.toolkit, an aggregator that enables fish, tmux, nvim, git, and direnv as one unit, and makes fish the login shell, so any Host or Guest shell feels identical. Each member is set via mkDefault, so a Host can still override any single piece while the one flag brings up the whole bundle. neogaia now enables the bundle as a single line in place of its five individual enables and its explicit default-shell line, keeping the Host a flat checklist. Also lands the domain model, ADR 0006, and the guests spec: the toolkit is the first piece of the wider guests work, and the guest-base will auto-enable this bundle.
21 lines
786 B
Nix
21 lines
786 B
Nix
{ config, lib, ... }:
|
|
# The baseline interactive toolset as one deliberate bundle.
|
|
let
|
|
cfg = config.modules.toolkit;
|
|
in
|
|
{
|
|
options.modules.toolkit.enable =
|
|
lib.mkEnableOption "the baseline interactive environment — fish, tmux, nvim, git, and direnv — as one unit";
|
|
|
|
# Each piece is turned on at default priority, so a host can still override any one of them.
|
|
config = lib.mkIf cfg.enable {
|
|
modules.fish.enable = lib.mkDefault true;
|
|
# fish is also the login shell, so the bundled environment is what a shell drops into.
|
|
modules.fish.defaultShell = lib.mkDefault true;
|
|
modules.tmux.enable = lib.mkDefault true;
|
|
modules.nvim.enable = lib.mkDefault true;
|
|
modules.git.enable = lib.mkDefault true;
|
|
modules.direnv.enable = lib.mkDefault true;
|
|
};
|
|
}
|