git: add mergiraf and difftastic

This commit is contained in:
Kate 2024-11-15 06:03:02 -07:00
parent 5e14c5aff4
commit 919ee3e5cf
6 changed files with 94 additions and 21 deletions

View file

@ -144,6 +144,7 @@
avbroot = callPackage ./packages/avbroot { }; avbroot = callPackage ./packages/avbroot { };
okc-agents = callPackage ./packages/okc-agents.nix { }; okc-agents = callPackage ./packages/okc-agents.nix { };
_7zz = pkgs._7zz.override { useUasm = true; }; _7zz = pkgs._7zz.override { useUasm = true; };
mergiraf = callPackage ./packages/mergiraf.nix { };
# libraries # libraries
libnfc-nci = callPackage ./packages/libnfc-nci { }; libnfc-nci = callPackage ./packages/libnfc-nci { };

View file

@ -12,5 +12,6 @@
imports = [ imports = [
(normalizeModule ./kakoune.hm.nix) (normalizeModule ./kakoune.hm.nix)
(normalizeModule ./kakoune-lsp.hm.nix) (normalizeModule ./kakoune-lsp.hm.nix)
(normalizeModule ./git.hm.nix)
]; ];
} }

View file

@ -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
''
);
};
};
}

View file

@ -6,25 +6,6 @@
# Tie our configruation to the version it was written for. # Tie our configruation to the version it was written for.
home.stateVersion = "24.05"; 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. # "Raw file" dotfiles.
# These aren't generated by Nix, specifically so we can use them on Windows as well. # These aren't generated by Nix, specifically so we can use them on Windows as well.

View file

@ -67,6 +67,10 @@ with pkgs;
cyberchef cyberchef
dasel dasel
delta delta
deprekages.age-plugin-yubikey
deprekages.avbroot
deprekages.mergiraf
difftastic
dmidecode dmidecode
dterm dterm
edir edir
@ -90,8 +94,6 @@ with pkgs;
jre jre
jmtpfs jmtpfs
killall killall
deprekages.age-plugin-yubikey
deprekages.avbroot
libimobiledevice libimobiledevice
libsecret libsecret
lz4 lz4

29
packages/mergiraf.nix Normal file
View file

@ -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";
};
}