inputs: { config, pkgs, lib, ... }: { environment = { systemPackages = with pkgs; [unstable.git-branchless gitoxide watchman]; shellAliases.git = "git-branchless wrap --"; }; programs.zsh.interactiveShellInit = '' source ${../../dotfiles/git-branchless.zsh} ''; home-manager.users.minijackson = { ... }: { programs.git = { enable = true; package = pkgs.gitAndTools.gitFull; userEmail = "minijackson@riseup.net"; userName = "Minijackson"; signing = { signByDefault = true; key = "minijackson@riseup.net"; }; extraConfig = 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 = { colormoved = "default"; colorMovedWS = "allow-indentation-change"; }; pull.ff = "only"; merge = { 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.root = { ... }: { programs.git = with lib; # TODO: use `home-manager.sharedModules`? mkMerge [ (mkDefault config.home-manager.users.minijackson.programs.git) { signing = { signByDefault = false; key = null; }; } ]; }; }