{ lib, pkgs, ... }: { home.packages = with pkgs; [ gitAndTools.pre-commit git-credential-manager gh ]; programs.git = { enable = true; userName = "Franck Cuny"; userEmail = "franck@fcuny.net"; aliases = { amend = "commit --amend"; }; includes = [ { condition = "hasconfig:remote.*.url:git@github.rbx.com:**"; path = pkgs.writeText "finsitGitConfig" (lib.generators.toGitINI { user.email = "fcuny@roblox.com"; }); } { condition = "hasconfig:remote.*.url:git@github.com:Roblox/**"; path = pkgs.writeText "finsitGitConfig" (lib.generators.toGitINI { user.email = "fcuny@roblox.com"; }); } ]; extraConfig = { core.whitespace = "trailing-space,space-before-tab"; color.ui = "true"; # abort if the remote branch does not match the local one push.default = "simple"; # https://adamj.eu/tech/2024/01/18/git-improve-diff-histogram/ diff.algorithm = "histogram"; init.defaultBranch = "main"; pull.rebase = true; rebase = { # Automatically create a temporary stash entry before the # operation begins, and apply it after the operation ends. autoStash = true; # Print a warning if some commits are removed missingCommitsCheck = "warn"; }; branch.autosetuprebase = "remote"; branch.sort = "authordate"; url = { "ssh://git@github.rbx.com/" = { insteadOf = "https://github.rbx.com/"; }; }; }; }; }