{ pkgs, ... }: { programs.fish = { enable = true; useBabelfish = true; interactiveShellInit = builtins.readFile ./fish.fish; shellAbbrs = { o = "open"; cpr = "rsync -ah --inplace --info=progress2"; # Jujutsu # ======= ja = "jj absorb"; jb = "jj bookmark"; jbc = "jj bookmark create"; jbl = "jj bookmark list"; jbm = "jj bookmark move"; jbt = "jj bookmark track"; jc = "jj commit"; jcs = "jj show"; jde = "jj desc"; jed = "jj edit"; jl = "jj log"; jn = "jj new"; jr = "jj rebase"; ju = "jj undo"; jf = "jj git fetch"; jfc = "jj git clone --colocate"; ji = "jj git init --colocate"; jp = "jj git push"; # 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; } ]; }