git.nix
1 { 2 config, 3 lib, 4 pkgs, 5 ... 6 }: 7 let 8 inherit (lib) enabled merge mkIf; 9 in 10 { 11 environment.shellAliases = merge { 12 redo = "commit --amend -S"; 13 p = "push"; 14 pl = "pull"; 15 f = "fetch"; 16 s = "status"; 17 cl = "clone"; 18 ad = "add ."; 19 cm = "commit -m"; 20 lp = "log --pretty=format:'%C(yellow)%h%Creset -%C(red)%an%Creset, %ar : %s'"; 21 }; 22 23 environment.systemPackages = [ 24 pkgs.git-absorb 25 pkgs.tig 26 ]; 27 28 home-manager.sharedModules = [ 29 { 30 programs.git = enabled { 31 userName = "ay-mxn"; 32 userEmail = "171892944+ay-mxn@users.noreply.github.com"; 33 34 lfs.enable = true; 35 difftastic.enable = true; 36 37 extraConfig = 38 merge { 39 init.defaultBranch = "main"; 40 commit.verbose = true; 41 log.date = "iso"; 42 branch.sort = "-committerdate"; 43 pull.rebase = true; 44 push.autoSetupRemote = true; 45 merge.conflictStyle = "zdiff3"; 46 rebase.autoSquash = true; 47 rebase.autoStash = true; 48 rebase.updateRefs = true; 49 rerere.enabled = true; 50 51 alias.recent = "! git branch --sort=-committerdate --format=\"%(committerdate:relative)%09%(refname:short)\" | head -10"; 52 } 53 // lib.optionalAttrs config.isDesktop { 54 core.sshCommand = "ssh -i ~/.ssh/id"; 55 commit.gpgSign = true; 56 tag.gpgSign = true; 57 gpg.format = "ssh"; 58 user.signingKey = "~/.ssh/id"; 59 }; 60 }; 61 } 62 ]; 63 }