{ ... }:

{
  programs.git = {
    enable = true;
    signing = {
      key = "5EFFB75F7C9B74EAA5C4637547940175096C1330";
      signByDefault = true;
    };
    userEmail = "aliceghuston@gmail.com";
    userName = "ahuston-0";
    aliases = {
      gone = ''
        !git for-each-ref --format '%(refname:short) %(upstream)' | # dump all older branches
                        awk 'NF < 2 {print $1}' | # get nuked branches
                        grep -Pv "(^origin/|^origin$|stash)" | # filter out remotes & stash
                        sed 's/\\x27/\\x5C\\x27/' | # remove single quotes, for xargs reasons
                        xargs -r git branch -D # nuke the branches
        # !git fetch -p && git for-each-ref --format '%(refname:short) %(upstream:track)' | # dump all branches
        #                 awk '$2 == "[gone]" {print $1}' | # get nuked branches
        #                 sed 's/\\x27/\\x5C\\x27/' | # remove single quotes, for xargs reasons
        #                 xargs -r git branch -D; # nuke the branches #
      '';
    };
    extraConfig = {
      push.autosetupremote = true;
      pull.rebase = true;
      color.ui = true;
      init.defaultBranch = "main";
      format.signoff = true;
    };
  };
}