dotfiles/home-modules/applications/git.nix

104 lines
2.6 KiB
Nix

{ pkgs, ... }:
{
home.packages = with pkgs; [
git-absorb
git-trim
];
programs.git = {
enable = true;
package = pkgs.gitAndTools.gitFull;
aliases = {
s = "status --short --branch";
a = "add --patch";
c = "commit --message";
l = "log --color --graph --pretty=format:'%Cred%h%Creset - %C(bold)%s%Creset%C(yellow)%d%Creset %C(green)%an%Creset %C(cyan)%cr%Creset (S: %G?)' --abbrev-commit";
d = "diff";
fup = "commit --fixup";
fuprebase = "rebase --interactive --autosquash";
ignore = "update-index --skip-worktree";
unignore = "update-index --no-skip-worktree";
ignored = ''!git ls-files -v | grep "^S"'';
};
#delta = {
# enable = true;
# catppuccin.enable = true;
# options = {
# side-by-side = "true";
# line-numbers = "true";
# line-numbers-minus-style = "#444444";
# line-numbers-zero-style = "#444444";
# line-numbers-plus-style = "#444444";
# line-numbers-left-format = "{nm:>4}┊";
# line-numbers-right-format = "{np:>4}│";
# line-numbers-left-style = "blue";
# line-numbers-right-style = "blue";
# };
#};
extraConfig = {
init.defaultBranch = "main";
core = {
packedGitWindowSize = "16m";
packedGitLimit = "64m";
};
pack = {
windowMemory = "64m";
packSizeLimit = "64m";
thread = "1";
deltaCacheSize = "1m";
};
color = {
branch = "auto";
diff = "auto";
status = "auto";
};
push = {
default = "current";
autoSetupRemote = true;
};
pull.rebase = "true";
branch.autosetuprebase = "always";
log.follow = true;
rerere.enabled = true;
fetch.recurseSubmodules = "on-demand";
credential.helper = [
"libsecret"
"cache --timeout 21600"
];
};
ignores = [
"*~"
"*.swp"
".direnv/"
];
lfs.enable = true;
includes =
let
mkConfig = (
dir: {
condition = "gitdir:${dir}";
contents = {
user = {
signingkey = "0x8A52A140BEBF7D2C";
email = "fabian@fh2.ch";
name = "Fabian Hauser";
};
};
}
);
in
map mkConfig [
"~/private/"
"~/projects/"
"/etc/nixos/"
"~/.password-store/"
"~/.stateful/"
"~/shares/cloud.qo.is/"
"~/shares/drive.switch.ch/"
];
};
programs.git-credential-oauth.enable = true;
}