{ pkgs, ... }: { programs.fish = { enable = true; useBabelfish = true; interactiveShellInit = builtins.readFile ./fish.fish; shellAbbrs = { o = "xdg-open"; cpr = "rsync -ah --inplace --info=progress2"; # Git # === g = "git"; gc = "git commit"; gca = "git commit --all"; gcs = "git show"; gco = "git switch"; # Fetch (f) gf = "git fetch"; gfc = "git clone"; gfm = "git pull"; # Index (i) gia = "git add"; gid = "git diff --cached"; # Log (l) gl = "git log --topo-order"; glc = "git shortlog --summary --numbered"; glg = "git log --topo-order --graph --oneline --all"; glo = "git log --topo-order --oneline"; # Merge (m) gm = "git merge"; gmt = "git mergetool"; # Push (p) gp = "git push"; gpf = "git push --force-with-lease"; gpt = "git push --tags"; # Rebase (r) gr = "git rebase"; # Stash (s) gs = "git stash"; # Working Copy (w) gws = "git status"; gwd = "git diff"; gwdt = "GIT_EXTERNAL_DIFF=difft git diff"; gwD = "git diff --word-diff"; }; }; users.defaultUserShell = pkgs.fish; environment.systemPackages = [ pkgs.fishPlugins.fish-bd pkgs.fishPlugins.grc pkgs.fishPlugins.puffer pkgs.grc ]; home-manager.sharedModules = [ { programs.fish.enable = true; } ]; }