blob: 8e413e8a6db333a79c54f8017357e866475181a1 (
plain) (
tree)
|
|
{
lib,
config,
...
}: let
cfg = config.soispha.programs.git;
gitIgnoreFile = ./git_ignore.git;
gitTemplateFile = ./git_template.git;
in {
options.soispha.programs.git = {
enable = lib.mkEnableOption "an opinionated git config";
defaultBranchName = lib.mkOption {
type = lib.types.str;
description = "The Name of the default branch.";
default = "prime";
};
};
config = lib.mkIf cfg.enable {
home-manager.users.soispha = {
programs.git = {
enable = true;
#package = pkgs.gitAndTools.gitFull; # TODO: for git send-email support
aliases = import ./aliases.nix {
inherit lib;
inherit (cfg) defaultBranchName;
};
extraConfig = {
core = {
excludesFile = "${gitIgnoreFile}";
};
rebase = {
autoStash = true;
autoSquash = true;
};
init = {
defaultBranch = cfg.defaultBranchName;
};
user = {
name = "Benedikt Peetz";
email = "benedikt.peetz@b-peetz.de";
# signingKey = "[is down below]";
};
help = {
autocorrect = 5;
};
push = {
gpgSign = "if-asked";
};
commit = {
template = "${gitTemplateFile}";
};
diff = {
colorMoved = "default";
# Usually leads to better results
algorithm = "patience";
bin = {
textconv = "hexdump -v -C";
};
};
# Makes it a bit more readable
blame = {
coloring = "repeatedLines";
markIgnoredLines = true;
markUnblamables = true;
};
merge = {
conflictstyle = "zdiff3";
};
url = {
"git@codeberg.org:" = {
insteadOf = "@cb:";
};
"https://codeberg.org/" = {
insteadOf = "cb://";
};
"git@github.com:" = {
insteadOf = "@gh:";
};
"https://github.com/" = {
insteadOf = "gh://";
};
"git@gitlab.com:" = {
insteadOf = "@gl:";
};
"https://gitlab.com/" = {
insteadOf = "gl://";
};
};
};
delta = {
enable = true;
options = {
decorations = {
commit-decoration-style = "bold yellow box ul";
file-decoration-style = "none";
file-style = "bold yellow ul";
};
keep-plus-minus-markers = true;
features = "decorations";
whitespace-error-style = "22 reverse";
};
};
signing = {
key = "8321ED3A8DB999A51F3BF80FF2682914EA42DE26";
signByDefault = true;
};
};
};
};
}
|