dotnix/apps/nogui/git.nix

78 lines
2.0 KiB
Nix

{
pkgs,
config,
...
}: let
insteadOf = prefix: domain: {
"https://${domain}/".insteadOf = "${prefix}:";
"git@${domain}:".insteadOf = "ssh:${prefix}:";
};
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAUxLwkJOlalAHTdkbh+m49XTZGKDqWz1o/o8OLmtQdX";
sshSigning = {
user.signingkey = key;
commit.gpgSign = true;
tag.gpgSign = true;
gpg = {
format = "ssh";
ssh.allowedSignersFile = "${pkgs.writeText "allowedSigners" "git@jolheiser.com ${key}"}";
};
};
in {
programs.git = {
enable = true;
userName = "jolheiser";
userEmail = "git@jolheiser.com";
aliases = {
wt = "worktree";
ci = "commit -s -S -m";
ca = "commit --amend";
pf = "push --force";
br = "branch";
aa = "add .";
adog = "log --all --decorate --oneline --graph";
poh = "push origin HEAD";
cb = "checkout -b";
fu = "fetch upstream";
fo = "fetch origin";
dh = "diff HEAD";
unstage = "restore --staged";
last = "log --show-signature --format=fuller --max-count=1 HEAD";
tui = "!lazygit";
};
lfs.enable = true;
ignores = [".idea/" "result" "node_modules" "ve"];
extraConfig =
{
init.defaultBranch = "main";
merge.conflictstyle = "zdiff3";
diff.colorMoved = "default";
core.editor = "hx";
push = {
sutoSetupRemote = true;
default = "current";
gpgSign = "if-asked";
};
rerere.enabled = true;
pull.rebase = true;
diff.algorithm = "histogram";
merge.tool = "hx";
url =
insteadOf "jo" "git.jolheiser.com"
// insteadOf "gh" "github.com"
// insteadOf "jj" "git.jojodev.com"
// insteadOf "gt" "gitea.com"
// insteadOf "gl" "gitlab.com"
// insteadOf "cb" "codeberg.org";
}
// sshSigning;
difftastic = {
enable = true;
};
includes = [
{
path = config.age.secrets.git-send-email.path;
}
];
};
}