{ config, lib, namespace, options, pkgs, ... }: with lib.${namespace}; let inherit (lib) mkIf; inherit (lib.${namespace}) mkBoolOpt; cfg = config.${namespace}.apps.cli-apps.fish; in { options.${namespace}.apps.cli-apps.fish = { enable = mkBoolOpt true "Whether or not to enable the fish shell"; }; config = mkIf cfg.enable { programs = { fish = { enable = true; shellInit = '' zoxide init fish | source direnv hook fish | source source ~/.config/op/plugins.sh set -x LESS_TERMCAP_mb \e'[01;32m' set -x LESS_TERMCAP_md \e'[01;32m' set -x LESS_TERMCAP_me \e'[0m' set -x LESS_TERMCAP_se \e'[0m' set -x LESS_TERMCAP_so \e'[01;47;34m' set -x LESS_TERMCAP_ue \e'[0m' set -x LESS_TERMCAP_us \e'[01;36m' set -x LESS -R set -x GROFF_NO_SGR 1 ''; shellAliases = { vim = "hx"; ls = "eza -lh --icons --git"; lss = "ls --total-size"; }; plugins = with pkgs.fishPlugins; [ { name = "forgit"; src = forgit.src; } ]; }; zoxide = { enable = true; options = [ "--cmd cd" ]; }; }; }; }