dotfiles/modules/programs/git.nix

72 lines
1.6 KiB
Nix
Raw Normal View History

2022-07-15 13:11:54 +02:00
{ config
, lib
, ...
}:
with lib;
let
cfg = config.my.programs.git;
in
{
options.my.programs.git = {
2022-10-15 20:00:09 +02:00
enable = mkEnableOption "git";
2022-07-15 13:11:54 +02:00
signing = mkOption {
default = false;
type = types.bool;
example = true;
};
2022-08-31 11:43:30 +02:00
identity = {
name = mkOption {
default = "Moritz Böhme";
type = types.str;
};
email = mkOption {
default = "mail@moritzboeh.me";
type = types.str;
};
};
2022-07-15 13:11:54 +02:00
};
config = mkIf cfg.enable {
my.shell.abbreviations = {
ga = "git add";
2023-02-20 21:44:31 +01:00
gap = "git add --patch";
gr = "git restore";
grp = "git restore --patch";
2022-07-15 13:11:54 +02:00
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;
2022-08-31 11:43:30 +02:00
userName = cfg.identity.name;
userEmail = cfg.identity.email;
2022-08-20 14:20:30 +02:00
extraConfig = {
commit.verbose = true;
diff.algorithm = "histogram";
fetch.fsckobjects = true;
2022-08-20 14:20:30 +02:00
init.defaultBranch = "main";
2023-01-20 10:23:30 +01:00
merge.conflictstyle = "zdiff3";
2023-08-29 08:52:27 +02:00
push.autoSetupRemote = true;
receive.fsckObjects = true;
transfer.fsckobjects = true;
2022-08-20 14:20:30 +02:00
};
2022-07-15 13:11:54 +02:00
signing = mkIf cfg.signing {
key = "0x970C6E89EB0547A9";
signByDefault = true;
};
lfs.enable = true;
delta.enable = true;
2022-07-15 13:11:54 +02:00
};
};
programs.git.enable = true;
2022-07-15 13:11:54 +02:00
};
}