linuxware/programs/git.nix

96 lines
2.1 KiB
Nix

{ ... }:
{
# Enable GIT.
programs.git = {
enable = true;
aliases = {
# List aliases
aliases = "config --get-regexp alias";
# List all the contributors with commit amount
contributors = "shortlog --summary --numbered";
# Output verbose info about branches and tags
branches = "branch -avv";
# List all tags
tags = "tag -l";
# Pretty logs
plog = "log --graph --decorate --all";
# Pretty grep
gcommit = "log --graph --decorate --grep";
};
extraConfig = {
core = {
# Set the editor to be used by GIT
editor = "nvim";
# Custom .gitignore
excludesfile = "~/.gitignore";
# Treat trailing whitespaces and spaces before tabs as an error
whitespace = "space-before-tab,-indent-with-non-tab,trailing-space";
};
color = {
# Use colors in GIT commmands.
ui = "auto";
};
commit = {
# https://help.github.com/articles/signing-commits-using-gpg/
gpgsign = true;
};
tag = {
gpgsign = true;
};
difftool = {
prompt = true;
};
mergetool = {
# https://www.git-scm.com/docs/git-mergetool#Documentation/git-mergetool.txt---no-prompt
prompt = false;
};
merge = {
# https://git-scm.com/docs/git-merge#_how_conflicts_are_presented
conflictstyle = "diff3";
};
push = {
# https://stackoverflow.com/questions/21839651/git-what-is-the-difference-between-push-default-matching-and-simple
default = "simple";
# git-push pushes relevant annotated tags when pushing branches out
followTags = true;
};
user = {
name = "Alexandre Cavalheiro S. Tiago da Silva";
email = "contact@thewizard.link";
signingkey = "A1D3A2B4E14BD7C0445BB749A5767B54367CFBDF";
};
pull = {
ff = "only";
};
init = {
defaultBranch = "main";
};
credential = {
helper = "/usr/libexec/git-core/git-credential-libsecret";
};
};
};
}