summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/default.nix1
-rw-r--r--modules/home/default.nix5
-rw-r--r--modules/home/riff.nix49
3 files changed, 55 insertions, 0 deletions
diff --git a/modules/default.nix b/modules/default.nix
index e8a1832..c599041 100644
--- a/modules/default.nix
+++ b/modules/default.nix
@@ -1,6 +1,7 @@
{
imports = [
./darwin
+ ./home
./nixos
];
}
diff --git a/modules/home/default.nix b/modules/home/default.nix
new file mode 100644
index 0000000..408e172
--- /dev/null
+++ b/modules/home/default.nix
@@ -0,0 +1,5 @@
+{
+ flake.homeModules = {
+ riff = ./riff.nix;
+ };
+}
diff --git a/modules/home/riff.nix b/modules/home/riff.nix
new file mode 100644
index 0000000..3a3e748
--- /dev/null
+++ b/modules/home/riff.nix
@@ -0,0 +1,49 @@
+# 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";
+ };
+ };
+}