nixos-config/users/simon/modules/git.nix

110 lines
2.9 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{ config, lib, pkgs, ... }:
{
programs.git = {
enable = true;
package = pkgs.gitFull;
userName = "Simon Bruder";
userEmail = "simon@sbruder.de";
signing = {
key = config.programs.gpg.settings.default-key;
signByDefault = true;
};
extraConfig = {
core.quotepath = "off";
pull.ff = "only";
diff = {
age = {
# This uses the de facto default key location with no ability to
# specify another key.
# If decryption fails (e.g. due to a lack of the right private key,
# rages error message will be displayed instead of the files
# contents.
textconv = toString (pkgs.writeShellScript "git-age-textconv" ''
${pkgs.rage}/bin/rage -d -i ${config.xdg.configHome}/age/keys.txt "$@" 2>&1 || true
'');
};
sops.textconv = "${pkgs.sops}/bin/sops -d";
};
sendemail = {
confirm = "auto";
smtpserver = "vueko.sbruder.de";
smtpuser = "simon@sbruder.de";
smtpencryption = "tls";
smtpserverport = 587;
};
credential = {
helper = "!${pkgs.pass-git-helper}/bin/pass-git-helper $@";
};
};
ignores = [
"*.swp"
".direnv"
"Session.vim"
];
lfs.enable = true;
delta = {
enable = true;
options = {
line-numbers = "true";
side-by-side = "true";
features = "decorations";
syntax-theme = "base16";
decorations = {
commit-decoration-style = "bold yellow box ul";
file-style = "bold yellow ul";
file-decoration-style = "none";
};
};
};
aliases = {
ls = "log --stat";
};
};
programs.zsh.shellAliases =
let
defaultBranch = "\${\${\$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null)##refs/remotes/origin/}:-master}";
in
{
ga = "git add";
gap = "git add --patch";
gc = "git commit";
gco = "git checkout";
gcp = "git cherry-pick";
gcv = "git commit --verbose";
gd = "git diff";
gdc = "git diff --cached";
gfom = "git fetch origin ${defaultBranch}";
gl = "git log";
glp = "git log --patch";
gls = "git log --stat";
gp = "git push";
grb = "git rebase";
grbi = "git rebase -i";
grbias = "git rebase -i --autosquash";
grbim = "git rebase -i ${defaultBranch}";
grbm = "git rebase ${defaultBranch}";
grbom = "git rebase origin/${defaultBranch}";
grs = "git restore";
grss = "git restore --staged";
gs = "git switch";
gsc = "git switch -c";
gsm = "git switch ${defaultBranch}";
gst = "git status";
};
xdg.configFile = {
"pass-git-helper/git-pass-mapping.ini".text = lib.generators.toINI { } {
"vueko.sbruder.de:587".target = "sbruder.de/mail";
};
};
home.packages = with pkgs; [
gitAndTools.pre-commit # pre-commit hook helper
];
}