{ config, lib, pkgs, ... }: { programs.git = { enable = true; lfs.enable = true; ignores = [ "*~" "*.swp" "result" "dist-newstyle" ".direnv" "*.bak" ".pre-commit-config.yaml" ]; signing = { key = "41A6D13FECA21280"; signByDefault = false; }; settings = { pull = { rebase = true; }; merge = { conflictstyle = "diff3"; }; submodule = { recurse = true; }; user = { # TODO create option for my own account meta data email = "me@failco.de"; name = "Alexander Kobjolke"; }; alias = { a = "add"; c = "commit"; ca = "commit --amend"; can = "commit --amend --no-edit"; cl = "clone"; cm = "commit -m"; co = "checkout"; cp = "cherry-pick"; cpx = "cherry-pick -x"; d = "diff"; f = "fetch"; fo = "fetch origin"; fu = "fetch upstream"; lol = "log --graph --decorate --pretty=oneline --abbrev-commit"; lola = "log --graph --decorate --pretty=oneline --abbrev-commit --all"; pl = "pull"; pr = "pull -r"; ps = "push"; psf = "push -f"; rb = "rebase"; rbi = "rebase -i"; r = "remote"; ra = "remote add"; rr = "remote rm"; rv = "remote -v"; rs = "remote show"; st = "status"; }; init.defaultBranch = "main"; }; }; programs.delta = { enable = true; enableGitIntegration = true; }; programs.git-cliff = { enable = true; }; }