From 919ee3e5cf96a7910cb032bab3bf0f82b929808e Mon Sep 17 00:00:00 2001 From: Kate Adkins Date: Fri, 15 Nov 2024 06:03:02 -0700 Subject: [PATCH] git: add mergiraf and difftastic --- flake.nix | 1 + nixos/configs/dotfiles/default.nix | 1 + nixos/configs/dotfiles/git.hm.nix | 59 ++++++++++++++++++++++++++++++ nixos/configs/dotfiles/hm.nix | 19 ---------- nixos/packages/default.pkgs.nix | 6 ++- packages/mergiraf.nix | 29 +++++++++++++++ 6 files changed, 94 insertions(+), 21 deletions(-) create mode 100644 nixos/configs/dotfiles/git.hm.nix create mode 100644 packages/mergiraf.nix diff --git a/flake.nix b/flake.nix index f02f714..be2731b 100644 --- a/flake.nix +++ b/flake.nix @@ -144,6 +144,7 @@ avbroot = callPackage ./packages/avbroot { }; okc-agents = callPackage ./packages/okc-agents.nix { }; _7zz = pkgs._7zz.override { useUasm = true; }; + mergiraf = callPackage ./packages/mergiraf.nix { }; # libraries libnfc-nci = callPackage ./packages/libnfc-nci { }; diff --git a/nixos/configs/dotfiles/default.nix b/nixos/configs/dotfiles/default.nix index 01f5aaf..3fe830d 100644 --- a/nixos/configs/dotfiles/default.nix +++ b/nixos/configs/dotfiles/default.nix @@ -12,5 +12,6 @@ imports = [ (normalizeModule ./kakoune.hm.nix) (normalizeModule ./kakoune-lsp.hm.nix) + (normalizeModule ./git.hm.nix) ]; } diff --git a/nixos/configs/dotfiles/git.hm.nix b/nixos/configs/dotfiles/git.hm.nix new file mode 100644 index 0000000..1c696fa --- /dev/null +++ b/nixos/configs/dotfiles/git.hm.nix @@ -0,0 +1,59 @@ +{ deprekages, pkgs, ... }: +{ + + # + # Git. + # + programs.git = { + enable = true; + lfs.enable = true; + + # Note: we no longer set a name, here, forcing us to choose our e-mail and username + # on a per-project basis. + + # Proide the difftastic command. + difftastic.enable = true; + + extraConfig = { + # Use main as our branch names. + init.defaultBranch = "main"; + + # + # Use mergiraf. + # + + # Set up the merge driver... + merge.mergiraf = { + name = "mergiraf"; + driver = "${deprekages.mergiraf}/bin/mergiraf merge --git %O %A %B -s %S -x %X -y %Y -p %P"; + }; + + # ... and set when to use it. + core.attributesFile = toString ( + pkgs.writeText ".gitattributes" '' + *.java merge=mergiraf + *.rs merge=mergiraf + *.go merge=mergiraf + *.js merge=mergiraf + *.jsx merge=mergiraf + *.json merge=mergiraf + *.yml merge=mergiraf + *.yaml merge=mergiraf + *.html merge=mergiraf + *.htm merge=mergiraf + *.xhtml merge=mergiraf + *.xml merge=mergiraf + *.c merge=mergiraf + *.cc merge=mergiraf + *.h merge=mergiraf + *.cpp merge=mergiraf + *.hpp merge=mergiraf + *.cs merge=mergiraf + *.dart merge=mergiraf + '' + ); + + }; + }; + +} diff --git a/nixos/configs/dotfiles/hm.nix b/nixos/configs/dotfiles/hm.nix index 7a8f2c8..f2035c5 100644 --- a/nixos/configs/dotfiles/hm.nix +++ b/nixos/configs/dotfiles/hm.nix @@ -6,25 +6,6 @@ # Tie our configruation to the version it was written for. home.stateVersion = "24.05"; - # - # Git. - # - programs.git = { - enable = true; - lfs.enable = true; - - # Note: we no longer set a name, here, forcing us to choose our e-mail and username - # on a per-project basis. - - # Use main as our branch names. - extraConfig = { - init.defaultBranch = "main"; - }; - }; - - # Manuals are broken on macOS, for now. :( - manual.manpages.enable = false; - # # "Raw file" dotfiles. # These aren't generated by Nix, specifically so we can use them on Windows as well. diff --git a/nixos/packages/default.pkgs.nix b/nixos/packages/default.pkgs.nix index 8e33659..09095f0 100644 --- a/nixos/packages/default.pkgs.nix +++ b/nixos/packages/default.pkgs.nix @@ -67,6 +67,10 @@ with pkgs; cyberchef dasel delta + deprekages.age-plugin-yubikey + deprekages.avbroot + deprekages.mergiraf + difftastic dmidecode dterm edir @@ -90,8 +94,6 @@ with pkgs; jre jmtpfs killall - deprekages.age-plugin-yubikey - deprekages.avbroot libimobiledevice libsecret lz4 diff --git a/packages/mergiraf.nix b/packages/mergiraf.nix new file mode 100644 index 0000000..d85bf44 --- /dev/null +++ b/packages/mergiraf.nix @@ -0,0 +1,29 @@ +{ + lib, + rustPlatform, + fetchFromGitea, +}: + +rustPlatform.buildRustPackage rec { + pname = "mergiraf"; + version = "0.3.1"; + + doCheck = false; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "mergiraf"; + repo = "mergiraf"; + rev = "v${version}"; + hash = "sha256-ORCGGSODZnZH3Ukzmqrweth4KggWGt5YFYEqA4DbTls="; + }; + + cargoHash = "sha256-Rr59x+/sDA0ttkVZh7hVhnvkNogQj9q9aXomNjHIXII="; + + meta = { + description = "A syntax-aware git merge driver for a growing collection of programming languages and file formats"; + homepage = "https://codeberg.org/mergiraf/mergiraf/releases"; + license = lib.licenses.gpl3Only; + mainProgram = "mergiraf"; + }; +}