diff options
Diffstat (limited to 'user/settings/git.nix')
-rw-r--r-- | user/settings/git.nix | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/user/settings/git.nix b/user/settings/git.nix new file mode 100644 index 00000000..503b9e3f --- /dev/null +++ b/user/settings/git.nix @@ -0,0 +1,77 @@ +{ config, pkgs, ... }: + +{ + home.packages = with pkgs; [ + gitAndTools.git-extras + ]; + programs.git = { + enable = true; + userName = "Alan Pearce"; + userEmail = "alan@alanpearce.eu"; + extraConfig = { + pull = { + rebase = true; + }; + push = { + default = "current"; + followTags = true; + }; + rebase = { + autosquash = true; + }; + rerere = { + enable = true; + }; + diff = { + algorithm = "patience"; + tool = "icdiff"; + }; + difftool = { + prompt = false; + }; + "difftool.icdiff" = { + cmd = "${pkgs.icdiff}/bin/icdiff --line-numbers $LOCAL $REMOTE"; + }; + "difftool.sopsdiffer" = { + textconf = "${pkgs.sops}/bin/sops -d"; + }; + "merge.npm-merge-driver" = { + name = "automatically merge npm lockfiles"; + driver = "npx npm-merge-driver merge %A %O %B %P"; + }; + remote = { + autoSetupMerge = true; + }; + "branch.master" = { + rebase = false; + }; + }; + signing = { + key = "0xCD4BEB92A8D46583"; + }; + lfs = { + enable = true; + }; + aliases = { + authors = "shortlog -s -n"; + mup = "merge FETCH_HEAD"; + rup = "rebase FETCH_HEAD"; + st = "status -sb"; + ci = "commit"; + br = "branch"; + co = "checkout"; + lasttag = "!sh -c 'git tag --sort=version:refname | grep \"^v\\\\?[0-9]\" | tail -n1'"; + pending = "!sh -c 'git log --oneline --grep=\"#\" ...$(git lasttag)'"; + lg = "log --pretty=format:'%Cred%h%Creset -%Creset %s %Cgreen(%cr) %C(bold blue)<%an> %Cred%d%Creset'"; + prl = "log --pretty=format:'%Cred%h%Creset -%Creset %s %Cgreen(%cr) %C(bold blue)<%an> %Cred%d%Creset' --grep='#'"; + ignored = "ls-files --others -i --exclude-standard"; + }; + ignores = [ + ".DS_Store" + "*_flymake.*" + "*~" + "\#*\#" + ".\#*" + ]; + }; +} |