Files
2026-05-09 09:18:23 +02:00

129 lines
3.0 KiB
Nix

# Git configuration with signing, aliases, and global ignore.
# Identity and host-specific SSH keys are set per-host in home/m3tam3re/.
{
lib,
pkgs,
...
}:
with lib; {
programs.git = {
enable = true;
signing.format = null;
settings = {
user = {
name = lib.mkDefault "m3tam3re";
email = lib.mkDefault "p@m3ta.dev";
};
core.excludesfile = "~/.gitignore_global";
init.defaultBranch = "master";
# --- Diff-Config ---
# Use difftastic as default external diff tool
diff.external = "difft";
diff.colorMoved = "default";
# --- Merge-Config ---
merge.conflictStyle = "zdiff3";
# --- Pull-Config ---
# Use merge instead of rebase for clearer history
pull.rebase = false;
# --- Rerere ---
# Reuse recorded resolutions for recurring conflicts
rerere.enabled = true;
# --- Push-Config ---
# Automatically set upstream when pushing to new branch
push.autoSetupRemote = true;
# --- Pager ---
pager.diff = true;
pager.log = false;
# --- Aliases ---
alias = {
# Basic shortcuts
st = "status";
co = "checkout";
br = "branch";
# Enhanced log with graph
lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
# Difftastic aliases for one-off usage
# Use with: git dft, git ds, git dl
dft = "-c diff.external=difft diff";
ds = "-c diff.external=difft show --ext-diff";
dl = "-c diff.external=difft log -p --ext-diff";
};
};
};
# Difftastic configuration
programs.difftastic = {
enable = true;
options = {
# Anzeige: Passt zu den meisten Terminal-Themes
color = "dark";
# Word-level diffs inline statt side-by-side
side-by-side = false;
# Standard-Tab-Breite
tab-width = 8;
# Trailing Commas anzeigen
trailing-commas = true;
# Konsistente Diffs durch alphabetische Pfad-Sortierung
sort-paths = true;
# Nix-spezifisch
language = [
"Nix"
"Nanorc"
];
};
};
# Jujutsu (jj) configuration
programs.jujutsu = {
enable = true;
settings = {
user = {
email = "m@m3tam3re.com";
name = "Sascha Koenig";
};
# --- UI ---
ui = {
# Immer Farben (auch in Pipes)
color = "always";
# Log als Default-Command
default-command = "log";
# Schönerer Graph
graph-style = "curved";
# Pager-Config
pager = "less -FRX";
paginate = "auto";
# --- Diff ---
# Difftastic als Default-Diff-Formatter
diff-formatter = ["difft" "--color=always" "$left" "$right"];
};
# --- Revsets ---
# Zeige @, Parent-Änderungen und immutable Heads
revsets.log = "present(@) | @-:: | immutable_heads()..";
};
};
home.packages = with pkgs; [
lazygit
];
}