{...}: let name = "Christoph Schmatzler"; in { programs.git = { enable = true; ignores = ["*.swp"]; userName = name; lfs = { enable = true; }; extraConfig = { init.defaultBranch = "main"; core = { editor = "vim"; autocrlf = "input"; }; # commit.gpgsign = true; pull.rebase = true; rebase.autoStash = true; }; }; home.shellAliases = { g = "git"; ga = "git add"; gaa = "git add --all"; gapa = "git add --patch"; gau = "git add --update"; gav = "git add --verbose"; gap = "git apply"; gapt = "git apply --3way"; gb = "git branch"; gba = "git branch --all"; gbd = "git branch --delete"; gbD = "git branch --delete --force"; gbl = "git blame -w"; gbnm = "git branch --no-merged"; gbr = "git branch --remote"; gbs = "git bisect"; gbsb = "git bisect bad"; gbsg = "git bisect good"; gbsn = "git bisect new"; gbso = "git bisect old"; gbsr = "git bisect reset"; gbss = "git bisect start"; gc = "git commit --verbose"; gca = "git commit --verbose --all"; gcam = "git commit --all --message"; gcas = "git commit --all --signoff"; gcasm = "git commit --all --signoff --message"; gcb = "git checkout -b"; gcB = "git checkout -B"; gcf = "git config --list"; gclean = "git clean --interactive -d"; gcl = "git clone --recurse-submodules"; gclf = "git clone --recursive --shallow-submodules --filter=blob:none --also-filter-submodules"; gcm = "git checkout main"; gcmsg = "git commit --message"; gcn = "git commit --verbose --no-edit"; gco = "git checkout"; gcor = "git checkout --recurse-submodules"; gcount = "git shortlog --summary --numbered"; gcp = "git cherry-pick"; gcpa = "git cherry-pick --abort"; gcpc = "git cherry-pick --continue"; gcs = "git commit --gpg-sign"; gcss = "git commit --gpg-sign --signoff"; gcssm = "git commit --gpg-sign --signoff --message"; gcsm = "git commit --signoff --message"; gd = "git diff"; gdca = "git diff --cached"; gdcw = "git diff --cached --word-diff"; gds = "git diff --staged"; gdw = "git diff --word-diff"; gdt = "git diff-tree --no-commit-id --name-only -r"; gdup = "git diff @{upstream}"; gf = "git fetch"; gfa = "git fetch --all --tags --prune"; gfo = "git fetch origin"; gfg = "git ls-files | grep"; gg = "git gui citool"; gga = "git gui citool --amend"; ggpull = "git pull origin \"$(git branch --show-current)\""; ggpush = "git push origin \"$(git branch --show-current)\""; ggsup = "git branch --set-upstream-to=origin/$(git branch --show-current)"; ghh = "git help"; gignore = "git update-index --assume-unchanged"; gignored = "git ls-files -v | grep \"^[[:lower:]]\""; gl = "git pull"; glg = "git log --stat"; glgp = "git log --stat --patch"; glgg = "git log --graph"; glgga = "git log --graph --decorate --all"; glgm = "git log --graph --max-count=10"; glo = "git log --oneline --decorate"; glog = "git log --oneline --decorate --graph"; gloga = "git log --oneline --decorate --graph --all"; glol = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset\""; glola = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset\" --all"; glols = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset\" --stat"; glod = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset\""; glods = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset\" --date=short"; gluc = "git pull upstream $(git branch --show-current)"; glum = "git pull upstream main"; gm = "git merge"; gma = "git merge --abort"; gmc = "git merge --continue"; gms = "git merge --squash"; gmff = "git merge --ff-only"; gmtl = "git mergetool --no-prompt"; gmtlvim = "git mergetool --no-prompt --tool=vimdiff"; gmum = "git merge upstream/main"; gmom = "git merge origin/main"; gp = "git push"; gpd = "git push --dry-run"; gpf = "git push --force-with-lease"; gpod = "git push origin --delete"; gpoat = "git push origin --all && git push origin --tags"; gpr = "git pull --rebase"; gpra = "git pull --rebase --autostash"; gprav = "git pull --rebase --autostash -v"; gprom = "git pull --rebase origin main"; gpromi = "git pull --rebase=interactive origin main"; gprv = "git pull --rebase -v"; gprum = "git pull --rebase upstream main"; gprumi = "git pull --rebase=interactive upstream main"; gpsup = "git push --set-upstream origin $(git branch --show-current)"; gpsupf = "git push --set-upstream origin $(git branch --show-current) --force-with-lease"; gpv = "git push --verbose"; gpu = "git push upstream"; gr = "git remote"; gra = "git remote add"; grb = "git rebase"; grba = "git rebase --abort"; grbc = "git rebase --continue"; grbd = "git rebase develop"; grbi = "git rebase --interactive"; grbm = "git rebase main"; grbo = "git rebase --onto"; grbom = "git rebase origin/main"; grbs = "git rebase --skip"; grbum = "git rebase upstream/main"; grev = "git revert"; greva = "git revert --abort"; grevc = "git revert --continue"; grf = "git reflog"; grh = "git reset"; grhh = "git reset --hard"; grhk = "git reset --keep"; grhs = "git reset --soft"; grm = "git rm"; grmc = "git rm --cached"; grmv = "git remote rename"; groh = "git reset origin/$(git branch --show-current) --hard"; grrm = "git remote remove"; grs = "git restore"; grset = "git remote set-url"; grss = "git restore --source"; grst = "git restore --staged"; grt = "cd \"$(git rev-parse --show-toplevel || echo .)\""; gru = "git reset --"; grup = "git remote update"; grv = "git remote --verbose"; gsb = "git status --short --branch"; gsh = "git show"; gsi = "git submodule init"; gsps = "git show --pretty=short --show-signature"; gss = "git status --short"; gst = "git status"; gsta = "git stash push"; gstaa = "git stash apply"; gstall = "git stash --all"; gstc = "git stash clear"; gstd = "git stash drop"; gstl = "git stash list"; gstp = "git stash pop"; gsts = "git stash show --patch"; gstu = "git stash push --include-untracked"; gsu = "git submodule update"; gsw = "git switch"; gswc = "git switch --create"; gswd = "git switch develop"; gswm = "git switch main"; gta = "git tag --annotate"; gts = "git tag --sign"; gtv = "git tag | sort -V"; gunignore = "git update-index --no-assume-unchanged"; gunwip = "git rev-list --max-count=1 --format=\"%s\" HEAD | grep -q \"\\--wip--\" && git reset HEAD~1"; gwch = "git whatchanged -p --abbrev-commit --pretty=medium"; gwipe = "git reset --hard && git clean --force -df"; gwt = "git worktree"; gwta = "git worktree add"; gwtls = "git worktree list"; gwtmv = "git worktree move"; gwtrm = "git worktree remove"; gwip = "git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message \"--wip-- [skip ci]\""; }; }