diff --git a/modules/programs/git.nix b/modules/programs/git.nix index ec2402f1..a174fa0c 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -225,11 +225,23 @@ in { }; options = mkOption { - type = types.listOf types.str; - default = [ ]; - example = [ "--dark" ]; + type = with types; + let + primitiveType = either str (either bool int); + sectionType = attrsOf primitiveType; + in attrsOf (either primitiveType sectionType); + default = { }; + example = { + features = "decorations"; + whitespace-error-style = "22 reverse"; + decorations = { + commit-decoration-style = "bold yellow box ul"; + file-style = "bold yellow ul"; + file-decoration-style = "none"; + }; + }; description = '' - Extra command line options given to delta. + Options to configure delta. ''; }; }; @@ -329,14 +341,13 @@ in { }) (mkIf cfg.delta.enable { - programs.git.iniContent = let - deltaArgs = [ "${pkgs.gitAndTools.delta}/bin/delta" ] - ++ cfg.delta.options; - in { - core.pager = concatStringsSep " " deltaArgs; - interactive.diffFilter = - concatStringsSep " " (deltaArgs ++ [ "--color-only" ]); - }; + programs.git.iniContent = + let deltaCommand = "${pkgs.gitAndTools.delta}/bin/delta"; + in { + core.pager = deltaCommand; + interactive.diffFilter = "${deltaCommand} --color-only"; + delta = cfg.delta.options; + }; }) ]); } diff --git a/tests/modules/programs/git/git-expected.conf b/tests/modules/programs/git/git-expected.conf index a4457adf..c3e534af 100644 --- a/tests/modules/programs/git/git-expected.conf +++ b/tests/modules/programs/git/git-expected.conf @@ -7,7 +7,16 @@ gpgSign = true [core] - pager = "@deltaCommand@ --dark" + pager = "@deltaCommand@" + +[delta] + features = "decorations" + whitespace-error-style = "22 reverse" + +[delta "decorations"] + commit-decoration-style = "bold yellow box ul" + file-decoration-style = "none" + file-style = "bold yellow ul" [extra] boolean = true @@ -32,7 +41,7 @@ program = "path-to-gpg" [interactive] - diffFilter = "@deltaCommand@ --dark --color-only" + diffFilter = "@deltaCommand@ --color-only" [user] email = "user@example.org" diff --git a/tests/modules/programs/git/git.nix b/tests/modules/programs/git/git.nix index 54e3c79b..feefff54 100644 --- a/tests/modules/programs/git/git.nix +++ b/tests/modules/programs/git/git.nix @@ -60,7 +60,15 @@ in { lfs.enable = true; delta = { enable = true; - options = [ "--dark" ]; + options = { + features = "decorations"; + whitespace-error-style = "22 reverse"; + decorations = { + commit-decoration-style = "bold yellow box ul"; + file-style = "bold yellow ul"; + file-decoration-style = "none"; + }; + }; }; }