Translate the CachyOS fish snapshot into a home-manager Module: the fastfetch greeting, the bat-backed manpager, the done and bang-bang plugins (from nixpkgs, not a plugin manager), the history/backup/copy helper functions, and the eza and navigation aliases. Pacman-specific aliases are dropped or replaced with NixOS equivalents (update -> nixos-rebuild switch, cleanup -> nix-collect-garbage). Enabling the Module also makes fish the user's default login shell.
3.7 KiB
3.7 KiB
spec, blocked-by
| spec | blocked-by |
|---|---|
| laptop-mvi | 0001-skeleton-and-building-host |
What to build
A fish Module, configured natively via home-manager, that makes the shell feel like the current CachyOS setup but is correct for NixOS. Translate the existing cachyos-config.fish and the rest of the fish snapshot under reference/home/.config/fish/: the greeting, the bat-manpager, the done and bang-bang plugins, the helper functions, and the eza/nav aliases. Drop or replace every Arch/pacman-specific part with its NixOS equivalent. Set fish as the default login shell.
Configure the plugins natively through home-manager rather than a fish plugin manager.
Acceptance criteria
- A fish
Module(following theEnable convention) is enabled onneogaiaand configured natively via home-manager. - The greeting, bat-manpager,
doneand bang-bang plugins, helper functions, and eza/nav aliases from the reference config are reproduced. - All Arch/pacman-specific parts are dropped or replaced with NixOS equivalents.
- fish is the user's default login shell.
- The
neogaiatoplevel still builds with the fishModuleenabled.
Implementation Notes
- Plugins are native, not inlined.
doneandbang-bangcome frompkgs.fishPlugins.*viaprograms.fish.plugins; home-manager drops them into~/.config/fish/conf.d/where fish auto-sources them. The reference config inlined the bang-bang__history_previous_commandfunctions and binds by hand; the plugin supplies those, so they are not re-inlined. donetuning usesset -g, notset -U. The reference set__done_min_cmd_duration/__done_notification_urgency_levelas universal variables, which persist to the universal-variable file and then ignore config changes. A declarative config must own these each session, so they are set global (set -g) ininteractiveShellInit.- Arch/pacman aliases dropped:
grubup,fixpacman,mirror(cachyos-rate-mirrors),apt/apt-get(man pacman),big(expac),gitpkg,rip(expac). Replaced with NixOS equivalents:update→sudo nixos-rebuild switch(waspacman -Syu),cleanup→sudo nix-collect-garbage -d(waspacman -Rns). - Machine-specific PATH hacks dropped, per spec story 6 ("no impure environment lookup"). The hardcoded
BUN_INSTALL, thenode-v24...tarball path, and~/Applications/depot_toolsfromconfig.fishare absolute/impure and are not reproduced; such tooling should be Nix-provided when its own Module arrives. The portable bits are kept:~/.local/binon PATH (guarded) and sourcing~/.fish_profile. env.fishandrustup.fishdeliberately not carried over.ANDROID_HOME/platform-tools (Android SDK) andsource ~/.cargo/env.fish(rust) are dev-toolchain integrations outside the MVI's core tooling (fish/tmux/nvim/Claude Code); they belong to future per-toolchain Modules that provide those tools through Nix rather than sourcing an impure env file.hw(hwinfo --short) andtb(nc termbin.com 9999) dropped. These are generic rather than pacman-specific, but each needs an extra package (hwinfo, anetcat) that the minimal install does not otherwise pull in; left out of the MVI and easy to add later.copykept verbatim (including the upstreamtrim-rightcall) to preserve exact parity with the current shell.- Verification. The
neogaiasystem toplevel builds (the spec's primary seam). The rendered~/.config/fish/was inspected in the build output: aliases, the three helper functions, thefastfetchgreeting, the bat manpager, thedonetuning vars, and theconf.d/plugin-done.fish+conf.d/plugin-bang-bang.fishplugin files are all present;users.users.alexion.shellresolves topkgs.fish.