# CLI FEATURES (home-manager) **Shell and terminal tooling with Fish + Nushell dual configuration** ## OVERVIEW 8 CLI modules with integrated tooling across Fish and Nushell shells. ## STRUCTURE ``` cli/ ├── default.nix # Imports + shared tools (bat, eza, direnv) ├── fish.nix # Fish shell + aliases ├── fzf.nix # Fuzzy finder ├── nitch.nix # System info tool ├── nushell.nix # Nushell + aliases ├── secrets.nix # Password-store integration ├── starship.nix # Shell prompt └── zellij.nix # Terminal multiplexer ``` ## WHERE TO LOOK | Task | Location | Notes | |------|----------|-------| | Add CLI tool | default.nix home.packages | Check if shell integration needed | | Shell aliases | fish.nix or nushell.nix | Kept in sync between shells | | Prompt config | starship.nix | Uses nerd-fonts symbols | | Secret access | secrets.nix | Agenix integration | ## CONVENTIONS ### Shell Integration Pattern Tools with shell hooks enabled in both Fish and Nushell: - **carapace**: Completions - **zoxide**: Smart cd - **eza**: ls replacement - **direnv**: Directory environments - **fzf**: Fuzzy finding ### NixOS Rebuild Aliases (both shells) ``` nr/nrs - nixos-rebuild [switch] snr/snrs - sudo nixos-rebuild [switch] hms - home-manager switch ``` ### Bat Theme Custom `universal` theme generated from nix-colors palette in default.nix (lines 34-157). ### Secrets Integration Fish/Nushell source `$HOME/.secrets` if `secrets.enable = true` (CLI secrets feature). ## ANTI-PATTERNS - **DON'T** add aliases to only one shell - keep Fish/Nushell in sync - **DON'T** use `programs.bash` - Nushell is default shell - **DON'T** bypass carapace for completions - integrated by default ## NOTES - zellij-ps custom package for project session management - Default shell set to Nushell in hosts/common/default.nix - Bat theme dynamically generated (no external theme files) - lf file manager uses bat for previews - Agenix CLI (agenix-cli) included for secret management