summaryrefslogtreecommitdiffstats
path: root/common/commandline/fish.nix
blob: 4c3d5c6ba20a90655998c2ebf21ea3cdbbcbdf10 (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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
{ 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;
    }
  ];
}