{ 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 = { nos = "nh os switch"; nob = "nh os boot"; nfu = "nix flake update"; ll = "ls -lah"; la = "ls -A"; md = "mkdir -p"; rmf = "rm -rf"; gl = "git log --oneline --graph --decorate"; untar = "tar -xzvf"; tarc = "tar -czvf"; ff = "fastfetch"; cat = "bat"; ls = "eza"; }; 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; } ]; }; }; }