xin/configs/git.nix

133 lines
3.6 KiB
Nix

{ config, isUnstable, ... }:
let
rewriteGitHub = if config.networking.hostName != "stan" then {
url = { "ssh://git@github.com/" = { insteadOf = "https://github.com/"; }; };
} else {
url = { };
};
in {
programs.git = {
enable = true;
lfs.enable = true;
config = if isUnstable then [
{ init = { defaultBranch = "main"; }; }
{
user = {
name = "Aaron Bieber";
email = "aaron@bolddaemon.com";
signingKey = if isUnstable then
"key::sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIB1cBO17AFcS2NtIT+rIxR2Fhdu3HD4de4+IsFyKKuGQAAAACnNzaDpsZXNzZXI="
else
"35863350BFEAC101DB1A4AF01F81112D62A9ADCE";
};
}
{ branch = { sort = "-committerdate"; }; }
{
alias = {
log = "log --color=never";
diff = "diff --color=always";
pr = ''"!f() { git fetch-pr upstream $1; git checkout pr/$1; }; f"'';
fetch-pr = ''
"!f() { git fetch $1 refs/pull/$2/head:refs/remotes/pr/$2; }; f"'';
};
}
{ push = { default = "current"; }; }
{ gpg = if isUnstable then { format = "ssh"; } else { }; }
{ commit = if isUnstable then { gpgsign = true; } else { }; }
{
color = {
branch = false;
interactive = false;
log = false;
status = false;
ui = false;
};
}
{ safe = { directory = "/home/qbit/src/nix-conf"; }; }
{ transfer = { fsckobjects = true; }; }
{ fetch = { fsckobjects = true; }; }
{ github = { user = "qbit"; }; }
{ inherit (rewriteGitHub) url; }
{
sendmail = {
smtpserver = "mail.messagingengine.com";
smtpuser = "qbit@fastmail.com";
smtpauth = "PLAIN";
smtpencryption = "tls";
smtpserverport = 587;
cc = "aaron@bolddaemon.com";
confirm = "auto";
};
}
{ pull = { rebase = false; }; }
{ include = { path = "~/work/git/gitconfig"; }; }
] else {
init = { defaultBranch = "main"; };
user = {
name = "Aaron Bieber";
email = "aaron@bolddaemon.com";
signingKey = if isUnstable then
"key::sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIHrYWbbgBkGcOntDqdMaWVZ9xn+dHM+Ap6s1HSAalL28AAAACHNzaDptYWlu"
else
"35863350BFEAC101DB1A4AF01F81112D62A9ADCE";
};
branch = { sort = "-committerdate"; };
alias = {
log = "log --color=never";
diff = "diff --color=always";
pr = ''"!f() { git fetch-pr upstream $1; git checkout pr/$1; }; f"'';
fetch-pr =
''"!f() { git fetch $1 refs/pull/$2/head:refs/remotes/pr/$2; }; f"'';
};
push = { default = "current"; };
gpg = if isUnstable then { format = "ssh"; } else { };
commit = if isUnstable then { gpgsign = true; } else { };
color = {
branch = false;
interactive = false;
log = false;
status = false;
ui = false;
};
transfer = { fsckobjects = true; };
fetch = { fsckobjects = true; };
github = { user = "qbit"; };
url = {
"ssh://git@github.com/" = { insteadOf = "https://github.com/"; };
};
sendmail = {
smtpserver = "mail.messagingengine.com";
smtpuser = "qbit@fastmail.com";
smtpauth = "PLAIN";
smtpencryption = "tls";
smtpserverport = 587;
cc = "aaron@bolddaemon.com";
confirm = "auto";
};
pull = { rebase = false; };
include = { path = "~/work/git/gitconfig"; };
};
};
}