diff --git a/flake.nix b/flake.nix index 6f927eb..e26b206 100644 --- a/flake.nix +++ b/flake.nix @@ -44,6 +44,7 @@ ./modules/tmux.nix ./modules/zsh.nix ./modules/ssh.nix + ./modules/git.nix ]; home.username = "yanlin"; diff --git a/modules/git.nix b/modules/git.nix new file mode 100644 index 0000000..cb84d03 --- /dev/null +++ b/modules/git.nix @@ -0,0 +1,72 @@ +{ config, pkgs, ... }: + +{ + programs.git = { + enable = true; + + userName = "Yan Lin"; + userEmail = "github@yanlincs.com"; + + extraConfig = { + credential.helper = ""; + + core = { + editor = "nvim"; + autocrlf = "input"; + ignorecase = false; + }; + + init.defaultBranch = "main"; + + push = { + default = "simple"; + autoSetupRemote = true; + }; + + pull = { + rebase = true; + }; + + merge = { + conflictstyle = "diff3"; + }; + + diff = { + colorMoved = "default"; + }; + + status = { + showUntrackedFiles = "all"; + }; + }; + + aliases = { + st = "status"; + co = "checkout"; + br = "branch"; + ci = "commit"; + unstage = "reset HEAD --"; + last = "log -1 HEAD"; + visual = "!gitk"; + + # Better logging + lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; + lga = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all"; + + # Quick operations + up = "pull --rebase"; + cm = "commit -m"; + ca = "commit --amend"; + + # Show changes + d = "diff"; + dc = "diff --cached"; + ds = "diff --stat"; + + # Stash operations + sl = "stash list"; + sp = "stash pop"; + ss = "stash save"; + }; + }; +} \ No newline at end of file