_inputs: { config, pkgs, ... }: { environment = { systemPackages = with pkgs; [ unstable.git-branchless unstable.gitoxide watchman ]; shellAliases.git = "git-branchless wrap --"; }; programs.zsh.interactiveShellInit = '' source ${../../dotfiles/git-branchless.zsh} ''; home-manager.sharedModules = [ { programs.git = { enable = true; package = pkgs.gitAndTools.gitFull; userEmail = "minijackson@riseup.net"; userName = "Minijackson"; attributes = [ "*.cc diff=cpp" "*.cpp diff=cpp" "*.css diff=css" "*.ex diff=elixir" "*.exs diff=elixir" "*.go diff=golang" "*.html diff=html" "*.java diff=java" "*.md diff=markdown" "*.php diff=php" "*.pl diff=perl" "*.py diff=python" "*.rs diff=rust" "*.tex diff=latex" ]; iniContent = let deltaCommand = "${pkgs.gitAndTools.delta}/bin/delta"; in { init.defaultBranch = "master"; core = { whitespace = "trailing-space,space-before-tab"; pager = deltaCommand; interactive.diffFilter = "${deltaCommand} --color-only"; untrackedCache = true; }; diff = { algorithm = "histogram"; colormoved = "default"; colorMovedWS = "allow-indentation-change"; }; pull.ff = "only"; rerere.enable = true; merge = { conflictStyle = "zdiff3"; tool = "nvimdiff"; }; "mergetool \"nvimdiff\"" = { cmd = "nvim -d \"$LOCAL\" \"$MERGED\" \"$REMOTE\""; }; delta = with config.theme.colors; { line-numbers = true; navigate = true; whitespace-error-style = "reverse green"; minus-style = "normal red"; minus-non-emph-style = "normal red"; minus-emph-style = "normal brightred"; minus-empty-line-marker-style = "normal red"; plus-style = "reverse green"; plus-non-emph-style = "reverse green"; plus-emph-style = "reverse brightgreen"; plus-empty-line-marker-style = "reverse green"; line-numbers-minus-style = "brightred"; line-numbers-zero-style = "brightblack"; line-numbers-plus-style = "brightgreen"; file-style = "bright${dominantName}"; line-numbers-left-style = dominantName; line-numbers-right-style = dominantName; }; }; }; } ]; # TODO: move common to NixOS' programs.git.config home-manager.users.minijackson.programs.git.signing = { signByDefault = true; key = "minijackson@riseup.net"; }; }