summary refs log tree commit diff stats
path: root/user/settings/git.nix
diff options
context:
space:
mode:
authorAlan Pearce2025-03-04 10:51:11 +0100
committerAlan Pearce2025-03-04 10:51:11 +0100
commitca30c291884e7751dcd93378492502ac79847a5c (patch)
tree3661c18a20310a756f0ca8db36281ca3907e4574 /user/settings/git.nix
parentf291e3cf780d1dc2f834a17a06b8f54a91a417e5 (diff)
downloadnixfiles-ca30c291884e7751dcd93378492502ac79847a5c.tar.lz
nixfiles-ca30c291884e7751dcd93378492502ac79847a5c.tar.zst
nixfiles-ca30c291884e7751dcd93378492502ac79847a5c.zip
git: install mergiraf for semantic merging
Diffstat (limited to 'user/settings/git.nix')
-rw-r--r--user/settings/git.nix10
1 files changed, 10 insertions, 0 deletions
diff --git a/user/settings/git.nix b/user/settings/git.nix
index b1750618..ae5947d5 100644
--- a/user/settings/git.nix
+++ b/user/settings/git.nix
@@ -70,6 +70,10 @@ in
       merge = {
         conflictStyle = "zdiff3";
       };
+      "merge.mergiraf" = {
+        name = "mergiraf";
+        driver = "${pkgs.mergiraf}/bin/mergiraf merge --git %O %A %B -s %S -x %X -y %Y -p %P -l %L";
+      };
       diff = {
         algorithm = "histogram";
         colorMoved = "plain";
@@ -159,11 +163,17 @@ in
       };
     };
   };
+  xdg.configFile."git/attributes" = {
+    source = (pkgs.runCommandLocal "mergiraf-gitattributes" { } ''
+      ${pkgs.mergiraf}/bin/mergiraf languages --gitattributes >> $out
+    '');
+  };
   home.packages = with pkgs; [
     git-extras # delete-merged-branches and friends
     git-worktree-switcher
     ghq
     # reduce these on server
+    mergiraf
     gitui
     gitstatus
     hut # sourcehut tools