aboutsummaryrefslogtreecommitdiffstats
path: root/modules/programs
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar+git@gmail.com>2026-07-15 02:02:38 +0530
committerArpit Chakladar <arpitchakladar+git@gmail.com>2026-07-15 02:02:38 +0530
commit2c573bb0c437b83fe629a9a5b818c976d2dfd796 (patch)
treed9a3a1ee4cd0049a8cc15b18b9a8b7f37ecbc09b /modules/programs
parentcee12adb75196823bc79f37435d89fd2f4ce8208 (diff)
downloadhome-manager-config-2c573bb0c437b83fe629a9a5b818c976d2dfd796.tar.gz
home-manager-config-2c573bb0c437b83fe629a9a5b818c976d2dfd796.zip
feat: fixed git-graph and integrating it with lazygit
Using a custom format and model for rendering the graph for git-graph and then using it in lazygit for the Log section
Diffstat (limited to 'modules/programs')
-rw-r--r--modules/programs/git/default.nix52
-rw-r--r--modules/programs/lazygit/default.nix3
2 files changed, 51 insertions, 4 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
'';
};
diff --git a/modules/programs/lazygit/default.nix b/modules/programs/lazygit/default.nix
index e852f57..cf46e9a 100644
--- a/modules/programs/lazygit/default.nix
+++ b/modules/programs/lazygit/default.nix
@@ -23,7 +23,8 @@
};
git = {
log.showWholeGraph = true;
- branchLogCmd = "git log-graph";
+ branchLogCmd = "git log-graph-embed";
+ overrideGpg = true;
};
update.method = "never";
};