60 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   config,
 | |
|   lib,
 | |
|   namespace,
 | |
|   options,
 | |
|   pkgs,
 | |
|   ...
 | |
| }:
 | |
| with lib;
 | |
| with lib.${namespace};
 | |
| let
 | |
|   cfg = config.${namespace}.tools.git;
 | |
|   user = config.${namespace}.user;
 | |
| in
 | |
| {
 | |
|   options.${namespace}.tools.git = with types; {
 | |
|     enable = mkBoolOpt true "Wether or not to enable git (Default enabled)";
 | |
|     userName = mkOpt types.str user.fullName "The name to use git with";
 | |
|     userEmail = mkOpt types.str user.email "The email to use git with";
 | |
|     signingKey = mkOpt types.str "ACCFA2DB47795D9E" "The key ID to sign commits with.";
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
|     environment.systemPackages = with pkgs; [
 | |
|       git
 | |
|       gitAndTools.gh
 | |
|       # gitbutler
 | |
|     ];
 | |
| 
 | |
|     ${namespace}.home.extraOptions = {
 | |
|       programs.git = {
 | |
|         enable = true;
 | |
|         inherit (cfg) userName userEmail;
 | |
|         lfs.enable = true;
 | |
|         signing = {
 | |
|           key = cfg.signingKey;
 | |
|           signByDefault = true;
 | |
|         };
 | |
|         extraConfig = {
 | |
|           init = {
 | |
|             defaultBranch = "main";
 | |
|           };
 | |
|           pull = {
 | |
|             rebase = true;
 | |
|           };
 | |
|           push = {
 | |
|             autoSetupRemote = true;
 | |
|           };
 | |
|           rebase = {
 | |
|             autoStash = true;
 | |
|           };
 | |
|           safe = {
 | |
|             directory = "${config.users.users.${user.name}.home}/projects/config";
 | |
|           };
 | |
|           lfs."https://git.christophhollizeck.dev/Daholli/nixos-config.git/info/lfs".locksverify = true;
 | |
|         };
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 |