{ config, lib, pkgs, ... }: let cfg = config.youthlic.programs.fish; in { options = { youthlic.programs.fish = { enable = lib.mkEnableOption "fish"; }; }; config = lib.mkIf cfg.enable { programs = { fish = { enable = true; preferAbbrs = true; interactiveShellInit = '' fish_vi_key_bindings ''; plugins = [ { name = with pkgs.fishPlugins.foreign-env; pname + "-" + version; src = pkgs.fishPlugins.foreign-env.overrideAttrs { postInstall = # bash '' ln -s $out/share/fish/vendor_functions.d $out/functions ''; }; } ]; functions = { __fish_command_not_found_handler = { body = "__fish_default_command_not_found_handler $argv[1]"; onEvent = "fish_command_not_found"; }; fish_greeting = { body = '' fastfetch ''; }; }; shellInitLast = # fish '' if test -d ~/.guix-profile set -gx GUIX_PROFILE ~/.guix-profile if test -f $GUIX_PROFILE/etc/profile fenv source $GUIX_PROFILE/etc/profile end if test -d $GUIX_PROFILE/lib/locale set -gx GUIX_LOCPATH $GUIX_PROFILE/lib/locale end end ''; }; fastfetch.enable = true; }; }; }