this repo has no description
1{
2 pkgs,
3 inputs,
4 config,
5 ...
6}:
7{
8 programs.gh = {
9 enable = true;
10
11 extensions = with pkgs; [
12 gh-dash
13 gh-eco
14 gh-actions-cache
15 ];
16
17 settings.aliases.co = "pr checkout";
18 settings.aliases.patch = "!patch2pr";
19 settings.version = "1";
20 };
21
22 # manual.manpages.enable = true;
23
24 home.packages = [
25 # pkgs.git-branchless
26 pkgs.git-gone
27 pkgs.git-cliff
28 # pkgs.git-revise
29 # pkgs.gitAndTools.git-imerge
30 pkgs.prr
31 # inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.prr
32 pkgs.hut
33 inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.imbox
34 # pkgs.radicle-node
35 ];
36
37 programs.diff-so-fancy = {
38 enable = true;
39 enableGitIntegration = true;
40 };
41
42 programs.git = {
43 enable = true;
44
45 lfs.enable = true;
46
47 attributes = [
48 "*.ex diff=elixir"
49 "*.exs diff=elixir"
50 "mix.lock merge=binary"
51
52 "*.erl diff=erlang"
53 "*.hrl diff=erlang"
54 "rebar.lock merge=binary"
55
56 "*.tex diff=tex"
57
58 "*.rs diff=rust"
59 "Cargo.lock merge=binary"
60
61 "*.css diff=css"
62
63 "*.md diff=markdown"
64
65 "flake.lock merge=binary"
66
67 "yarn.lock merge=binary"
68
69 "*.lockb diff=lockb"
70 ];
71
72 ignores = inputs.self.lib.readFileWithComments ./git/ignore;
73
74 settings = {
75 alias = {
76 b = "branch";
77 ca = "commit --amend";
78 ci = "commit";
79 co = "checkout";
80 rci = "commit --amend --reuse-message HEAD";
81
82 lg = "log --color --graph --abbrev-commit --pretty=simple-oneline";
83
84 squash = "!git rebase -i \"$(git merge-base HEAD \"$(git default-branch)\")\"";
85
86 st = "status -sb";
87 todo = "grep -Ee '\\\\bTODO:?\\\\b'";
88 fixme = "grep -Ee '\\\\bFIX(ME)?:?\\\\b'";
89
90 default-branch = "!git symbolic-ref --short refs/remotes/origin/HEAD | sed 's|^origin/||'";
91
92 cleanup = "!git branch --format=\"%(if:notequals=*)%(HEAD)%(then)%(if:notequals=\${1:-$(git default-branch)})%(refname:lstrip=2)%(then)%(refname:lstrip=2)%(end)%(end)\" --merged \"\$(git default-branch)\" | xargs -rpxL1 git branch -d";
93 };
94
95 core.commitGraph = true;
96
97 init.defaultBranch = "master";
98
99 user = {
100 name = "Łukasz Jan Niemier";
101 useConfigOnly = true;
102 };
103
104 merge = {
105 ff = false;
106 conflictstyle = "zdiff3";
107 };
108
109 branch.autoSetupRebase = "always";
110
111 signing.format = "ssh";
112
113 commit = {
114 gpgSign = true;
115 verbose = true;
116 cleanup = "scissors";
117 };
118
119 diff = {
120 indentHeuristic = true;
121 algorithm = "histogram";
122 mnemonicPrefix = true;
123 renames = "copies";
124
125 tool = "difftastic";
126
127 markdown.xfuncname = "^(#+\\s+.*)$";
128
129 lockb = {
130 textconv = "${pkgs.bun}/bin/bun";
131 binary = true;
132 };
133 };
134
135 difftool = {
136 prompt = false;
137
138 difftastic.cmd = "${pkgs.difftastic}/bin/difft \"$LOCAL\" \"$REMOTE\"";
139 };
140
141 pager.difftool = true;
142
143 fetch.prune = true;
144
145 tag = {
146 forceSignAnnotated = true;
147 sort = "version:refname";
148 };
149
150 versionsort.suffix = [
151 ""
152 "-rc"
153 "-pre"
154 ];
155
156 push = {
157 default = "simple";
158 autoSetupRemote = true;
159 followTags = true;
160 gpgSign = "if-asked";
161 };
162
163 pull = {
164 rebase = true;
165 twohead = "ort";
166 };
167
168 rebase = {
169 autostash = true;
170 autosquash = true;
171 updateRefs = true;
172 };
173
174 url."git@github.com:".pushInsteadOf = [
175 "https://github.com/"
176 "git://github.com/"
177 ];
178
179 sendemail = {
180 smtpserver = "${config.programs.msmtp.package}/bin/msmtp";
181 bcc = config.accounts.email.accounts.hauleth.address;
182 annotate = true;
183 };
184
185 maintenance = {
186 # It will ask 1password for access to SSH key/GH token. That is
187 # irritating
188 prefetch.enabled = false;
189 };
190
191 pretty = {
192 simple-oneline = "%C(yellow)%h%C(auto)%d %s [%C(green)%aN <%aE>%C(reset)] (%C(blue)%ar%C(reset))";
193 simple-oneline-sign = "%C(yellow)%h%C(auto)%d %s [%C(green)%aN <%aE>%C(reset)] (%C(blue)%ar%C(reset)) %G?";
194 };
195
196 branchless."revsets.alias".work = "heads(draft())";
197 };
198 };
199}