34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { host, ... }:
 | |
| let
 | |
|   inherit (import ../../hosts/${host}/variables.nix) gitUsername gitEmail;
 | |
| in
 | |
| {
 | |
|   programs.git = {
 | |
|     enable = true;
 | |
|     userName = "${gitUsername}";
 | |
|     userEmail = "${gitEmail}";
 | |
| 
 | |
|     extraConfig = {
 | |
|       # FOSS-friendly settings
 | |
|       push.default = "simple"; # Match modern push behavior
 | |
|       credential.helper = "cache --timeout=7200";
 | |
|       init.defaultBranch = "main"; # Set default new branches to 'main'
 | |
|       log.decorate = "full"; # Show branch/tag info in git log
 | |
|       log.date = "iso"; # ISO 8601 date format
 | |
|       # Conflict resolution style for readable diffs
 | |
|       merge.conflictStyle = "diff3";
 | |
|     };
 | |
|     # Optional: FOSS-friendly Git aliases
 | |
|     aliases = {
 | |
|       br = "branch --sort=-committerdate";
 | |
|       co = "checkout";
 | |
|       df = "diff";
 | |
|       com = "commit -a";
 | |
|       gs = "stash";
 | |
|       gp = "pull";
 | |
|       lg = "log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%d%Creset %s %C(green)(%cr)%C(bold blue) <%an>%Creset' --abbrev-commit";
 | |
|       st = "status";
 | |
|     };
 | |
|   };
 | |
| }
 |