1{ pkgs, ... }:
2{
3 programs.git = {
4 enable = true;
5 extraConfig = {
6 pull.rebase = true;
7 safe.directory = "/etc/nixos";
8 diff.external = "${pkgs.difftastic}/bin/difft";
9 };
10 lfs.enable = true;
11 aliases = {
12 a = "add -p";
13 co = "checkout";
14 cob = "checkout -b";
15 f = "fetch -p";
16 c = "commit";
17 ps = "push";
18 pl = "pull";
19 rb = "rebase";
20 ba = "branch -a";
21 bd = "branch -d";
22 bD = "branch -D";
23 d = "diff";
24 dc = "diff --cached";
25 ds = "diff --staged";
26 rs = "restore";
27 rss = "restore --staged";
28 s = "status -sb";
29 ss = "stash";
30 ssp = "stash pop";
31 ssl = "stash list";
32 ssd = "stash drop";
33 # reset
34 rsoft = "reset --soft";
35 rhard = "reset --hard";
36 rs1ft = "soft HEAD~1";
37 rh1rd = "hard HEAD~1";
38 # logging
39 l = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
40 plog = "log --graph --pretty='format:%C(red)%d%C(reset) %C(yellow)%h%C(reset) %ar %C(green)%aN%C(reset) %s'";
41 tlog = "log --stat --since='1 Day Ago' --graph --pretty=oneline --abbrev-commit --date=relative";
42 rank = "shortlog -sn --no-merges";
43 # delete merged branches
44 bdm = "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d";
45 };
46 };
47}