summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorseth <[email protected]>2024-10-17 12:13:37 -0400
committerseth <[email protected]>2024-10-17 12:13:37 -0400
commitb5e262b160a132d4d7dafe5bf3bb20298b8afb11 (patch)
treef60f3e01ad648ff51772d7e980ca738ce2c64b41 /modules
parentac8a610195ad7c086c4ed1e9da24b0485f72ec1e (diff)
home/riff: init module
Diffstat (limited to 'modules')
-rw-r--r--modules/home/riff.nix50
1 files changed, 50 insertions, 0 deletions
diff --git a/modules/home/riff.nix b/modules/home/riff.nix
new file mode 100644
index 0000000..dadc9cf
--- /dev/null
+++ b/modules/home/riff.nix
@@ -0,0 +1,50 @@
+# TODO: Upstream this
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+let
+ cfg = config.programs.git.riff;
+ cfg' = config.programs.git;
+
+ exe = baseNameOf (lib.getExe cfg.package);
+in
+{
+ options.programs.git.riff = {
+ enable = lib.mkEnableOption "diff filtering through `riff`";
+
+ package = lib.mkPackageOption pkgs "riffdiff" { };
+ };
+
+ config = lib.mkIf cfg.enable {
+ assertions = [
+ {
+ assertion =
+ let
+ enabled = [
+ cfg'.delta.enable
+ cfg'.diff-so-fancy.enable
+ cfg'.difftastic.enable
+ cfg.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.riff.enable` can be set to true at the same time.";
+ }
+ ];
+
+ home.packages = [ cfg.package ];
+
+ programs.git.iniContent = {
+ pager = {
+ diff = exe;
+ log = exe;
+ show = exe;
+ };
+
+ interactive.diffFilter = exe + " --color=on";
+ };
+ };
+}