diff --git a/modules/programs/jujutsu.nix b/modules/programs/jujutsu.nix index b8bbc1c30..330b7d7f9 100644 --- a/modules/programs/jujutsu.nix +++ b/modules/programs/jujutsu.nix @@ -66,10 +66,9 @@ in config = mkIf cfg.enable { home.packages = mkIf (cfg.package != null) [ cfg.package ]; - home.file."${configDir}/jj/config.toml" = mkIf (cfg.settings != { }) { - source = tomlFormat.generate "jujutsu-config" ( - cfg.settings - // lib.optionalAttrs (cfg.ediff) ( + programs.jujutsu.settings = lib.mkMerge [ + (lib.mkIf cfg.ediff { + merge-tools.ediff = let emacsDiffScript = pkgs.writeShellScriptBin "emacs-ediff" '' set -euxo pipefail @@ -77,18 +76,19 @@ in ''; in { - merge-tools.ediff = { - program = lib.getExe emacsDiffScript; - merge-args = [ - "$left" - "$right" - "$base" - "$output" - ]; - }; - } - ) - ); + program = lib.getExe emacsDiffScript; + merge-args = [ + "$left" + "$right" + "$base" + "$output" + ]; + }; + }) + ]; + + home.file."${configDir}/jj/config.toml" = mkIf (cfg.settings != { }) { + source = tomlFormat.generate "jujutsu-config" cfg.settings; }; }; } diff --git a/tests/modules/programs/jujutsu/example-config.nix b/tests/modules/programs/jujutsu/example-config.nix index 38c8de442..37705a152 100644 --- a/tests/modules/programs/jujutsu/example-config.nix +++ b/tests/modules/programs/jujutsu/example-config.nix @@ -7,6 +7,7 @@ in programs.jujutsu = { enable = true; package = config.lib.test.mkStubPackage { }; + ediff = true; settings = { user = { name = "John Doe"; @@ -17,8 +18,12 @@ in nmt.script = '' assertFileExists 'home-files/${configDir}/jj/config.toml' - assertFileContent 'home-files/${configDir}/jj/config.toml' \ + assertFileContent $(normalizeStorePaths 'home-files/${configDir}/jj/config.toml') \ ${builtins.toFile "expected.toml" '' + [merge-tools.ediff] + merge-args = ["$left", "$right", "$base", "$output"] + program = "/nix/store/00000000000000000000000000000000-emacs-ediff/bin/emacs-ediff" + [user] email = "jdoe@example.org" name = "John Doe"