{ config, lib, pkgs, ... }: let cfg = config.hm.shell.fish; in { options.hm.shell.fish.enable = lib.mkEnableOption "enables fish shell"; config = lib.mkIf cfg.enable { programs.fish = { enable = true; interactiveShellInit = '' set fish_greeting fastfetch ''; shellAliases = { update = "git add . && git commit -m \"$1\" && nix flake update && nh os switch ."; ns = "nix-search -p"; nd = "nix develop ."; nos = "nh os switch ."; nob = "nh os boot ."; nfu = "nix flake update"; md = "mkdir -p"; rmf = "rm -rf"; untar = "tar -xzvf"; tarc = "tar -czvf"; du = "dust -b"; awk = "choose"; dig = "doggo"; ping = "gping"; ps = "procs"; ff = "fastfetch"; cat = "bat"; yt = "yt-dlp"; }; plugins = [ { name = "transient-fish"; src = pkgs.fishPlugins.transient-fish.src; } { name = "fishbang"; src = pkgs.fishPlugins.fishbang.src; } { name = "puffer"; src = pkgs.fishPlugins.puffer.src; } { name = "pisces"; src = pkgs.fishPlugins.pisces.src; } { name = "fzf-fish"; src = pkgs.fishPlugins.fzf-fish.src; } { name = "fish-you-should-use"; src = pkgs.fishPlugins.fish-you-should-use.src; } { name = "colored-man-pages"; src = pkgs.fishPlugins.colored-man-pages.src; } { name = "fifc"; src = pkgs.fishPlugins.fifc.src; } ]; }; }; }