dotfiles/modules/programs/git.nix

70 lines
1.4 KiB
Nix

{ config
, lib
, pkgs
, ...
}:
with lib;
let
cfg = config.my.programs.git;
in
{
options.my.programs.git = {
enable = mkEnableOption "git";
signing = mkOption {
default = false;
type = types.bool;
example = true;
};
identity = {
name = mkOption {
default = "Moritz Böhme";
type = types.str;
};
email = mkOption {
default = "mail@moritzboeh.me";
type = types.str;
};
};
};
config = mkIf cfg.enable {
my.shell.abbreviations = {
ga = "git add";
gap = "git add --patch";
gr = "git restore";
grp = "git restore --patch";
gb = "git branch";
gc = "git commit";
gco = "git checkout";
gd = "git diff";
gds = "git diff --staged";
gp = "git push";
gf = "git fetch";
gF = "git pull";
gs = "git status";
};
home-manager.users.moritz = {
programs.git = {
enable = true;
userName = cfg.identity.name;
userEmail = cfg.identity.email;
extraConfig = {
init.defaultBranch = "main";
merge.conflictstyle = "zdiff3";
diff.external = getExe pkgs.difftastic;
};
signing = mkIf cfg.signing {
key = "0x970C6E89EB0547A9";
signByDefault = true;
};
lfs.enable = true;
};
};
programs.git = {
enable = true;
config.safe.directory = "/home/moritz/.dotfiles";
};
};
}