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:
parent
50894120e8
commit
2ede089d11
5 changed files with 68 additions and 1 deletions
|
|
@ -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;
|
||||
})
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ let
|
|||
"gh-dash"
|
||||
"ghostty"
|
||||
"git"
|
||||
"patdiff"
|
||||
"gitMinimal"
|
||||
"git-cliff"
|
||||
"git-credential-oauth"
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
19
tests/modules/programs/git/git-patdiff-expected.conf
Normal file
19
tests/modules/programs/git/git-patdiff-expected.conf
Normal 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"
|
||||
20
tests/modules/programs/git/git-patdiff.nix
Normal file
20
tests/modules/programs/git/git-patdiff.nix
Normal 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}
|
||||
'';
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue