nix-config/home/git.nix

73 lines
1.8 KiB
Nix

{ pkgs, ... }:
{
# git-lfs на PATH (home-manager пакеты лежат в /etc/profiles/per-user/mikl/bin,
# он уже в home.sessionPath). lfs.package = null заставляет модуль генерить
# каноничную строку "git-lfs clean -- %f" вместо абсолютного nix-store пути —
# иначе git-lfs 3.7+ сыплет warning'ом при каждом вызове.
home.packages = [ pkgs.git-lfs ];
programs.git = {
enable = true;
# Git LFS support
lfs.enable = true;
lfs.package = null;
settings = {
user = {
name = "mikl";
email = "mikl@iscg.dev";
};
init.defaultBranch = "main";
# Always rebase on pull
pull.rebase = true;
# GPG signing (used by pass)
gpg = {
format = "openpgp";
program = "${pkgs.gnupg}/bin/gpg";
};
# Better diff algorithm (longer but faster on large files)
diff.algorithm = "histogram";
# Color output
color.ui = "auto";
color.diff = "auto";
color.status = "auto";
color.branch = "auto";
# Useful aliases (in addition to shell aliases)
alias.st = "status";
alias.co = "checkout";
alias.br = "branch";
alias.ci = "commit";
alias.unstage = "reset HEAD --";
alias.last = "log -1 HEAD";
alias.visual = "!gitk";
};
ignores = [
".DS_Store"
"*.swp"
"*~"
".idea/"
".vscode/"
];
};
# Use git-delta for pretty diffs
programs.delta = {
enable = true;
enableGitIntegration = true;
options = {
navigate = true; # n/N to move between files
light = false; # dark mode
line-numbers = true;
side-by-side = false;
syntax-theme = "Catppuccin Macchiato";
};
};
}