From 0a3fb53ee2c9e1e5976d21dd9de650ce7d462e08 Mon Sep 17 00:00:00 2001 From: Thierry Delafontaine Date: Mon, 27 Oct 2025 11:13:17 +0100 Subject: [PATCH] delta: add jujutsu integration option --- modules/programs/delta.nix | 23 +++++++++++++++++++ tests/modules/programs/delta/default.nix | 2 ++ .../delta/delta-with-jujutsu-integration.nix | 21 +++++++++++++++++ .../delta-without-jujutsu-integration.nix | 10 ++++++++ 4 files changed, 56 insertions(+) create mode 100644 tests/modules/programs/delta/delta-with-jujutsu-integration.nix create mode 100644 tests/modules/programs/delta/delta-without-jujutsu-integration.nix diff --git a/modules/programs/delta.nix b/modules/programs/delta.nix index 45c17250c..aeb3d80ad 100644 --- a/modules/programs/delta.nix +++ b/modules/programs/delta.nix @@ -64,6 +64,16 @@ in ''; }; + enableJujutsuIntegration = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable jujutsu integration for delta. + + When enabled, delta will be configured as jujutsus's pager, diff filter, and merge tool. + ''; + }; + finalPackage = mkOption { type = types.package; readOnly = true; @@ -123,5 +133,18 @@ in delta = cfg.options; }; }) + + (lib.mkIf (cfg.enable && cfg.enableJujutsuIntegration) { + programs.jujutsu.settings = { + merge-tools.delta.diff-expected-exit-codes = [ + 0 + 1 + ]; + ui = { + diff-formatter = ":git"; + pager = "${lib.getExe cfg.package}"; + }; + }; + }) ]; } diff --git a/tests/modules/programs/delta/default.nix b/tests/modules/programs/delta/default.nix index 9db4a1d1e..b31b4a8c4 100644 --- a/tests/modules/programs/delta/default.nix +++ b/tests/modules/programs/delta/default.nix @@ -3,5 +3,7 @@ delta-final-package = ./delta-final-package.nix; delta-with-git-integration = ./delta-with-git-integration.nix; delta-without-git-integration = ./delta-without-git-integration.nix; + delta-with-jujutsu-integration = ./delta-with-jujutsu-integration.nix; + delta-without-jujutsu-integration = ./delta-without-jujutsu-integration.nix; delta-migration = ./delta-migration.nix; } diff --git a/tests/modules/programs/delta/delta-with-jujutsu-integration.nix b/tests/modules/programs/delta/delta-with-jujutsu-integration.nix new file mode 100644 index 000000000..d24bd208a --- /dev/null +++ b/tests/modules/programs/delta/delta-with-jujutsu-integration.nix @@ -0,0 +1,21 @@ +{ config, lib, ... }: +{ + programs.delta = { + enable = true; + enableJujutsuIntegration = true; + }; + + programs.jujutsu.enable = true; + + nmt.script = '' + assertFileExists home-files/.config/jj/config.toml + assertFileContent home-files/.config/jj/config.toml ${builtins.toFile "expected" '' + [merge-tools.delta] + diff-expected-exit-codes = [0, 1] + + [ui] + diff-formatter = ":git" + pager = "${lib.getExe config.programs.delta.package}" + ''} + ''; +} diff --git a/tests/modules/programs/delta/delta-without-jujutsu-integration.nix b/tests/modules/programs/delta/delta-without-jujutsu-integration.nix new file mode 100644 index 000000000..072644ed9 --- /dev/null +++ b/tests/modules/programs/delta/delta-without-jujutsu-integration.nix @@ -0,0 +1,10 @@ +{ + programs.delta = { + enable = true; + enableJujutsuIntegration = false; + }; + + nmt.script = '' + assertPathNotExists home-files/.config/jj/config.toml + ''; +}