diff options
Diffstat (limited to 'modules/programs/git/default.nix')
| -rw-r--r-- | modules/programs/git/default.nix | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/modules/programs/git/default.nix b/modules/programs/git/default.nix index 0fdc4fa..c1aade5 100644 --- a/modules/programs/git/default.nix +++ b/modules/programs/git/default.nix @@ -31,6 +31,46 @@ git-graph ]; + xdg.configFile."git-graph/models/custom.toml".text = '' + persistence = [ + '^(master|main|trunk)$', + '^(develop|dev)$', + '^feature.*$', + '^release.*$', + '^hotfix.*$', + '^bugfix.*$', + ] + + order = [ + '^(master|main|trunk)$', + '^(hotfix|release).*$', + '^(develop|dev)$', + ] + + [terminal_colors] + matches = [ + ['^(master|main|trunk)$', ['bright_blue']], + ['^(develop|dev)$', ['bright_yellow']], + ['^(feature|fork/).*$', ['bright_magenta', 'bright_cyan']], + ['^release.*$', ['bright_green']], + ['^(bugfix|hotfix).*$', ['bright_red']], + ['^tags/.*$', ['bright_green']], + ] + # Everything else (e.g. custom/service branches) cycles through these instead of all being white + unknown = ['bright_white', 'bright_red', 'bright_green', 'bright_yellow', 'bright_blue', 'bright_magenta', 'bright_cyan'] + + [svg_colors] + matches = [ + ['^(master|main|trunk)$', ['blue']], + ['^(develop|dev)$', ['orange']], + ['^(feature|fork/).*$', ['magenta', 'cyan']], + ['^release.*$', ['green']], + ['^(bugfix|hotfix).*$', ['red']], + ['^tags/.*$', ['green']], + ] + unknown = ['gray', 'purple', 'teal', 'brown'] + ''; + programs.git = { settings = lib.recursiveUpdate @@ -45,9 +85,15 @@ # This overrides standard git-graph behavior with your custom format string. log-graph = '' !f() { - fmt=$(printf '\033[1;34mCommit:\033[0m \033[33m%%h\033[0m%%n\033[1;34mParents:\033[0m \033[35m%%p\033[0m%%n\033[1;34mAuthor:\033[0m \033[32m%%an\033[0m <\033[96m%%ae\033[0m>%%n\033[1;34mDate:\033[0m \033[36m%%ad (%%ar)\033[0m%%n%%n%%B%%n\033[90m--------------------------------------------------------\033[0m') - - git-graph --color always --sparse --style round --format="$fmt" + fmt=$(printf '\033[1;34mCommit:\033[0m \033[33m%%h\033[0m \033[91m%%d\033[0m%%n\033[1;34mParents:\033[0m \033[35m%%p\033[0m%%n\033[1;34mAuthor:\033[0m \033[32m%%an\033[0m <\033[96m%%ae\033[0m>%%n\033[1;34mDate:\033[0m \033[36m%%ad (%%ar)\033[0m%%n%%n%%B%%n\033[90m--------------------------------------------------------\033[0m') + git-graph --model custom --color always --sparse --style round --format="$fmt" + }; f | less -R + ''; + # Same formatting, but no pager — meant for embedding (lazygit, etc.) + log-graph-embed = '' + !f() { + fmt=$(printf '\033[1;34mCommit:\033[0m \033[33m%%h\033[0m \033[91m%%d\033[0m%%n\033[1;34mParents:\033[0m \033[35m%%p\033[0m%%n\033[1;34mAuthor:\033[0m \033[32m%%an\033[0m <\033[96m%%ae\033[0m>%%n\033[1;34mDate:\033[0m \033[36m%%ad (%%ar)\033[0m%%n%%n%%B%%n\033[90m--------------------------------------------------------\033[0m') + git-graph --model custom --color always --sparse --style round --no-pager --format="$fmt" }; f ''; }; |
