{ user ? throw "user argument is required" }: { pkgs, ... }: { home-manager.users."${user.name}" = { programs.git = { enable = true; lfs.enable = true; userName = user.fullName; userEmail = user.email; signing = { signByDefault = true; key = null; }; extraConfig.credential.helper = "store"; hooks = let commit-msg-hook = pkgs.writeShellScriptBin "git-commit-msg" '' git interpret-trailers --if-exists doNothing --trailer \ "Signed-off-by: $(git config user.name) <$(git config user.email)>" \ --in-place "$1" ''; in { commit-msg = "${commit-msg-hook}/bin/git-commit-msg"; }; }; }; }