{ config, lib, pkgs, inputs, ... }: with lib; { config = mkMerge [ (mkIf (config.nathan.programs.util.git.enable && config.nathan.programs.util.git.gpgSign) { programs.git.signing = { key = lib.mkDefault "B7A40A5D78C08885"; signByDefault = lib.mkDefault config.nathan.programs.util.git.gpgSign; }; }) (mkIf (config.nathan.programs.util.git.enable && config.nathan.programs.util.git.sshSign) { home.file.allowedSigners = { target = ".ssh/allowed_signers"; text = (import ../../../info/ssh-keys.nix).allowedSigners; }; programs.git = { extraConfig = { commit.gpgsign = true; gpg.format = "ssh"; user.signingkey = "~/.ssh/id_ed25519.pub"; gpg.ssh.allowedSignersFile = "~/.ssh/allowed_signers"; }; }; }) (mkIf config.nathan.programs.util.git.enable { # Git adjacent packages home.packages = [ inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".git-branchless ]; ######################### ## Git configuration ######################### programs.git = { enable = true; package = pkgs.gitAndTools.gitFull; userName = lib.mkDefault "Nathan McCarty"; userEmail = lib.mkDefault "nathan@mccarty.io"; ignores = [ "**/*~" "*~" "*_archive" "/auto/" "auto-save-list" ".cask/" ".dir-locals.el" "dist/" "**/.DS_Store" "*.elc" "/elpa/" "/.emacs.desktop" "/.emacs.desktop.lock" "/eshell/history" "/eshell/lastdir" "flycheck_*.el" "*_flymake.*" "/network-security.data" ".org-id-locations" ".persp" ".projectile" "*.rel" "/server/" "tramp" "\\#*\\#" ]; delta.enable = true; lfs.enable = true; extraConfig = { init = { defaultBranch = "trunk"; }; log = { showSignature = true; abbrevCommit = true; follow = true; decorate = false; }; rerere = { enable = true; autoupdate = true; }; merge = { ff = "only"; conflictstyle = "diff3"; }; push = { default = "simple"; followTags = true; }; pull = { rebase = true; }; status = { showUntrackedFiles = "all"; }; transfer = { fsckobjects = true; }; color = { ui = "auto"; }; diff = { mnemonicPrefix = true; renames = true; wordRegex = "."; submodule = "log"; }; # credential = { helper = "cache"; }; # Disable annoying safe directory nonsense safe = { directory = "*"; }; }; }; }) ]; }