summaryrefslogtreecommitdiffstats
path: root/common/commandline/fish.nix
blob: 6e67865751e13df6680271cceb7bee766fcf8737 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
{ 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";
    };
  };

  environment.systemPackages = [
    pkgs.fishPlugins.fish-bd
    pkgs.fishPlugins.grc
    pkgs.fishPlugins.puffer
    pkgs.grc
  ];

  home-manager.sharedModules = [
    {
      programs.fish.enable = true;
    }
  ];
}