{ config, pkgs, ... }: let configFile = "git/config"; ignoreFile = "git/ignore"; toINI = (pkgs.formats.ini {}).generate; in { users.users.someone.packages = with pkgs; [ git delta gnupg git-lfs peco ]; xdg.configFile."${configFile}".source = toINI "config" { alias = { af = "!git add $(git ls-files -m -o --exclude-standard | fzf -m)"; br = "branch"; ca = "commit -am"; co = "checkout"; d = "diff"; df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}"; "edit-unmerged" = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`"; fuck = "commit --amend -m"; hist = "log --pretty=format:\"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)\" --graph --date=relative --decorate --all"; llog = "log --graph --name-status --pretty=format:\"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset\" --date=relative"; pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)"; ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)"; st = "status"; }; commit = { gpgSign = "true"; }; core = { editor = "nvim"; pager = "${pkgs.delta}/bin/delta"; whitespace = "fix,-indent-with-non-tab,trailing-space,cr-at-eol"; excludesFile = "${config.xdg.configHome}/${ignoreFile}"; }; delta = { features = "unobtrusive-line-numbers decorations"; navigate = "true"; "side-by-side" = "true"; "true-color" = "never"; }; "delta-decorations" = { "commit-decoration-style" = "bold grey box ul"; "file-decoration-style" = "ul"; "file-style" = "bold blue"; "hunk-header-decoration-style" = "box"; }; "delta-unobtrusive-line-numbers" = { "line-numbers" = "true"; "line-numbers-left-format" = "{nm:>4}│"; "line-numbers-left-style" = "grey"; "line-numbers-right-format" = "{np:>4}│"; "line-numbers-right-style" = "grey"; }; diff = { colorMoved = "default"; }; "filter-lfs" = { clean = "git-lfs clean -- %f"; process = "git-lfs filter-process"; required = "true"; smudge = "git-lfs smudge -- %f"; }; gpg = { format = "openpgp"; }; "gpg-openpgp" = { program = "${pkgs.gnupg}/bin/gpg"; }; init = { defaultBranch = "main"; }; interactive = { diffFilter = "${pkgs.delta}/bin/delta --color-only"; }; merge = { conflictstyle = "diff3"; stat = "true"; }; pull = { ff = "only"; }; push = { autoSetupRemote = "true"; default = "current"; }; rebase = { autoSquash = "true"; autoStash = "true"; }; repack = { usedeltabaseoffset = "true"; }; rerere = { autoupdate = "true"; enabled = "true"; }; tag = { gpgSign = "true"; }; user = { email = "jory@severijnse.eu"; name = "Jory Severijnse"; signingKey = "0F8835ED078FDBF2"; }; }; xdg.configFile."${ignoreFile}".text = '' *~ *.swp *result* .direnv node_modules .opencode/ .gemini/ GEMINI.md AGENTS.md .sisyphus ''; }