{pkgs, ...}: { # Required by the fzf fish plugin programs.fzf = { enable = true; }; home.packages = with pkgs; [ fd bat ]; programs.fish = { enable = true; generateCompletions = true; plugins = [ { name = "fzf"; src = pkgs.fishPlugins.fzf-fish.src; } { name = "z"; src = pkgs.fishPlugins.z.src; } { name = "pure"; src = pkgs.fishPlugins.pure.src; } ]; functions = { # disable the fish greeting fish_greeting = ""; }; }; # sets the "default" shell to fish # actually keeps bash as a posix-compliant default but starts fish if the shell is not bash # See https://nixos.wiki/wiki/Fish programs.bash = { enable = true; initExtra = '' if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] then shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" exec ${pkgs.fish}/bin/fish $LOGIN_OPTION fi ''; }; }