{ pkgs, config, ... }: { programs.lazygit = { settings = { os.editPreset = "lvim"; }; }; programs.git = { enable = true; aliases = { co = "checkout"; br = "branch"; ci = "commit"; st = "status"; last = "cat-file commit HEAD"; }; diff-so-fancy = { enable = true; }; extraConfig = { core = { user = "Don Harper"; email = "duck@duckland.org"; editor = "${pkgs.lunarvim}/bin/lvim"; sshCommand = "${pkgs.openssh}/bin/ssh -i ~/.ssh/git"; }; safe = { directory = "/home/don/src/nixos/duckland/.git"; }; status = { submoduleSummary = "true"; short = "true"; }; user = { name = "Don Harper"; email = "duck@duckland.org"; }; push = { default = "simple"; }; pull = { rebase = "false"; }; git-extras = { github-personal-access-token = "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"; }; fetch = { prune = "true"; }; init = { defaultBranch = "main"; }; credential = { "https://github.com" = { helper = "!${pkgs.gh}/bin/gh auth git-credential"; }; "https://gist.github.com" = { helper = "!${pkgs.gh}/bin/gh auth git-credential"; }; }; }; }; xdg.configFile."tig/config".text = '' set blame-view = date:default author:full file-name:auto id:yes line-number:no,interval=5 text set grep-view = file-name:no line-number:yes,interval=1 text set main-view = line-number:no,interval=5 id:no date:default author:full commit-title:yes,graph,refs,overflow=no set refs-view = line-number:no id:no date:default author:full ref commit-title set stash-view = line-number:no,interval=5 id:no date:default author:full commit-title set status-view = line-number:no,interval=5 status:short file-name set tree-view = line-number:no,interval=5 mode author:full file-size date:default id:no file-name set pager-view = line-number:no,interval=5 text set stage-view = line-number:no,interval=5 text set log-view = line-number:no,interval=5 text set blob-view = line-number:no,interval=5 text set diff-view = line-number:no,interval=5 text:yes,commit-title-overflow=no set show-changes = yes # Show changes commits in the main view? set wrap-lines = no # Wrap long lines in pager views? set tab-size = 8 # Number of spaces to use when expanding tabs set line-graphics = default # Enum: ascii, default, utf-8 set truncation-delimiter = ~ # Character drawn for truncations, or "utf-8" set reference-format = [branch] {remote} ~replace~ set commit-order = auto # Enum: auto, default, topo, date, reverse (main) set status-show-untracked-dirs = yes # Show files in untracked directories? (status) set status-show-untracked-files = yes # Show untracked files? set ignore-space = no # Enum: no, all, some, at-eol (diff) set show-notes = yes # When non-bool passed as `--show-notes=...` (diff) set refresh-mode = auto # Enum: manual, auto, after-command, periodic set refresh-interval = 10 # Interval in seconds between refreshes set ignore-case = no # Enum: no, yes, smart-case set wrap-search = yes # Wrap around to top/bottom of view when searching set focus-child = yes # Move focus to child view when opened? set horizontal-scroll = 50% # Number of columns to scroll as % of width set split-view-height = 67% # Height of the bottom view for horizontal splits set vertical-split = auto # Enum: horizontal, vertical, auto; Use auto to set split-view-width = 50% # Width of right-most view for vertical splits set editor-line-number = yes # Automatically pass line number to editor? Used set history-size = 500 # Size of persistent history, 0 to disable set mouse = no # Enable mouse support? set mouse-scroll = 3 # Number of lines to scroll via the mouse set mouse-wheel-cursor = no # Prefer moving the cursor to scrolling the view? bind main C ?git cherry-pick %(commit) bind status C !git commit bind stash A ?git stash apply %(stash) bind stash P ?git stash pop %(stash) bind stash ! ?git stash drop %(stash) bind refs C ?git checkout %(branch) bind refs ! ?git branch -D %(branch) bind generic m view-main bind generic d view-diff bind generic l view-log bind generic t view-tree bind generic f view-blob bind generic b view-blame bind generic r view-refs bind generic p view-pager bind generic h view-help bind generic s view-status bind generic S view-status # Compat binding to avoid going crazy! bind generic c view-stage bind generic y view-stash bind generic g view-grep bind generic enter # Enter and open selected entry bind generic back # Go back to the previous view state bind generic next # Move to next bind generic next bind generic J next bind generic previous # Move to previous bind generic previous bind generic K previous bind generic , parent # Move to parent bind generic view-next # Move focus to the next view bind generic R refresh # Reload and refresh view bind generic refresh bind generic O maximize # Maximize the current view bind generic q view-close # Close the current view bind generic Q quit # Close all views and quit bind generic quit # Close all views and quit bind status u status-update # Stage/unstage changes in file bind status ! status-revert # Revert changes in file bind status M status-merge # Open git-mergetool(1) bind stage u status-update # Stage/unstage current diff (c)hunk bind stage 1 stage-update-line # Stage/unstage current line bind stage ! status-revert # Revert current diff (c)hunk bind stage \ stage-split-chunk # Split current diff (c)hunk bind stage @ :/^@@ # Jump to next (c)hunk bind stage [ :toggle diff-context -1 # Decrease the diff context bind stage ] :toggle diff-context +1 # Increase the diff context bind diff @ :/^@@ # Jump to next (c)hunk bind diff [ :toggle diff-context -1 bind diff ] :toggle diff-context +1 bind main G :toggle commit-title-graph # Toggle revision graph visualization bind main F :toggle commit-title-refs # Toggle reference display (tags/branches) bind generic j move-down bind generic k move-up bind generic move-half-page-down bind generic move-half-page-up bind generic move-page-down bind generic move-page-down bind generic move-page-up bind generic - move-page-up bind generic move-first-line bind generic move-last-line bind generic | scroll-first-col bind generic scroll-left bind generic scroll-right bind generic scroll-line-up bind generic scroll-line-up bind generic scroll-line-down bind generic scroll-line-down bind generic scroll-page-up bind generic scroll-page-down bind generic / search bind generic ? search-back bind generic n find-next bind generic N find-prev bind search find-next bind search find-next bind search find-next bind search find-prev bind search find-prev bind search find-prev bind search view-close bind generic o options # Open the options menu bind generic I :toggle sort-order # Toggle ascending/descending sort order bind generic i :toggle sort-field # Toggle field to sort by bind generic :toggle line-number # Toggle line numbers bind generic D :toggle date # Toggle date display bind generic A :toggle author # Toggle author display bind generic ~ :toggle line-graphics # Toggle (line) graphics mode bind generic F :toggle file-name # Toggle file name display bind generic W :toggle ignore-space # Toggle ignoring whitespace in diffs bind generic X :toggle id # Toggle commit ID display bind generic $ :toggle commit-title-overflow bind generic % :toggle file-filter bind generic e edit # Open in editor bind generic : prompt # Open the prompt bind generic screen-redraw # Redraw the screen bind generic z stop-loading # Stop all loading views bind generic v show-version # Show Tig version color "---" default default color "diff --" default default color "--- " default default color "+++ " default default color "@@" default default color "+" default default color " +" default default color "-" default default color " -" default default color "index " default default color "old file mode " default default color "new file mode " default default color "deleted file mode " default default color "copy from " default default color "copy to " default default color "rename from " default default color "rename to " default default color "similarity " default default color "dissimilarity " default default color "diff-tree " default default color "Author: " default default color "Commit: " default default color "Tagger: " default default color "Merge: " default default color "Date: " default default color "AuthorDate: " default default color "CommitDate: " default default color "TaggerDate: " default default color "Refs: " default default color "Reflog: " default default color "Reflog message: " default default color "stash@{" default default color "commit " default default color "parent " default default color "tree " default default color "author " default default color "committer " default default color " Signed-off-by" default default color " Acked-by" default default color " Tested-by" default default color " Reviewed-by" default default color default default default normal color cursor yellow default bold color status default default color delimiter default default color date default default color mode default default color id default default color overflow default default color header default default color section default default color directory default default color file default default color grep.file default default color file-size default default color line-number default default color title-blur default default color title-focus default default bold color main-commit default default color main-tag default default bold color main-local-tag default default color main-remote default default color main-replace default default color main-tracked default default bold color main-ref default default color main-head default default bold color stat-none default default color stat-staged default default color stat-unstaged default default color stat-untracked default default color help-group default default color help-action default default color diff-stat default default color diff-add-highlight default default standout color diff-del-highlight default default standout color palette-0 default default color palette-1 default default color palette-2 default default color palette-3 default default color palette-4 default default color palette-5 default default color palette-6 default default color palette-7 default default bold color palette-8 default default bold color palette-9 default default bold color palette-10 default default bold color palette-11 default default bold color palette-12 default default bold color palette-13 default default bold color graph-commit default default color search-result default default set git-colors = \ branch.current=main-head \ branch.local=main-ref \ branch.plain=main-ref \ branch.remote=main-remote \ \ diff.meta=diff-header \ diff.meta=diff-index \ diff.meta=diff-oldmode \ diff.meta=diff-newmode \ diff.frag=diff-chunk \ diff.old=diff-del \ diff.new=diff-add \ \ diff-highlight.oldHighlight=diff-del-highlight \ diff-highlight.newHighlight=diff-add-highlight \ \ grep.filename=grep.file \ grep.linenumber=grep.line-number \ grep.separator=grep.delimiter \ \ status.branch=status.header \ status.added=stat-staged \ status.updated=stat-staged \ status.changed=stat-unstaged \ status.untracked=stat-untracked ''; }