1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-11-08 11:36:05 +01:00

git: configure patdiff through [patdiff] git section (#6978)

This adds the ability to enable the patdiff program as git differ.
Website of the project: https://opensource.janestreet.com/patdiff/
This commit is contained in:
Plume 2025-05-08 15:15:51 +02:00 committed by GitHub
parent 50894120e8
commit 2ede089d11
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 68 additions and 1 deletions

View file

@ -496,6 +496,17 @@ in
'';
};
};
patdiff = {
enable = mkEnableOption "" // {
description = ''
Whether to enable the {command}`patdiff` differ.
See <https://opensource.janestreet.com/patdiff/>
'';
};
package = mkPackageOption pkgs "patdiff" { };
};
};
};
@ -526,10 +537,11 @@ in
cfg.difftastic.enable
cfg.diff-highlight.enable
cfg.riff.enable
cfg.patdiff.enable
];
in
lib.count lib.id enabled <= 1;
message = "Only one of 'programs.git.delta.enable' or 'programs.git.difftastic.enable' or 'programs.git.diff-so-fancy.enable' or 'programs.git.diff-highlight' can be set to true at the same time.";
message = "Only one of 'programs.git.delta.enable' or 'programs.git.difftastic.enable' or 'programs.git.diff-so-fancy.enable' or 'programs.git.diff-highlight' or 'programs.git.patdiff' can be set to true at the same time.";
}
];
@ -902,6 +914,20 @@ in
}
)
(
let
patdiffPackage = cfg.patdiff.package;
patdiffCommand = "${lib.getExe' patdiffPackage "patdiff-git-wrapper"}";
in
mkIf cfg.patdiff.enable {
home.packages = [ patdiffPackage ];
programs.git.iniContent = {
diff.external = patdiffCommand;
};
}
)
(mkIf (cfg.riff.enable && cfg.riff.commandLineOptions != "") {
home.sessionVariables.RIFF = cfg.riff.commandLineOptions;
})

View file

@ -45,6 +45,7 @@ let
"gh-dash"
"ghostty"
"git"
"patdiff"
"gitMinimal"
"git-cliff"
"git-credential-oauth"

View file

@ -9,4 +9,5 @@
git-without-signing = ./git-without-signing.nix;
git-with-hooks = ./git-with-hooks.nix;
git-with-maintenance = ./git-with-maintenance.nix;
git-patdiff = ./git-patdiff.nix;
}

View file

@ -0,0 +1,19 @@
[commit]
gpgSign = true
[diff]
external = "@patdiff@/bin/patdiff-git-wrapper"
[gpg]
format = "openpgp"
[gpg "openpgp"]
program = "path-to-gpg"
[tag]
gpgSign = true
[user]
email = "user@example.org"
name = "John Doe"
signingKey = "00112233445566778899AABBCCDDEEFF"

View file

@ -0,0 +1,20 @@
{
programs.git = {
enable = true;
signing = {
signer = "path-to-gpg";
format = "openpgp";
key = "00112233445566778899AABBCCDDEEFF";
signByDefault = true;
};
userEmail = "user@example.org";
userName = "John Doe";
patdiff.enable = true;
};
nmt.script = ''
assertFileExists home-files/.config/git/config
assertFileContent home-files/.config/git/config ${./git-patdiff-expected.conf}
'';
}