78 lines
1.7 KiB
Nix
78 lines
1.7 KiB
Nix
{ config
|
|
, lib
|
|
, ...
|
|
}:
|
|
|
|
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 = {
|
|
g = "git";
|
|
gC = "git clone";
|
|
gF = "git pull";
|
|
gS = "git switch";
|
|
ga = "git add";
|
|
gap = "git add --patch";
|
|
gb = "git branch";
|
|
gc = "git commit";
|
|
gco = "git checkout";
|
|
gd = "git diff";
|
|
gds = "git diff --staged";
|
|
gf = "git fetch";
|
|
gp = "git push";
|
|
gr = "git restore";
|
|
grm = "git rm --cached";
|
|
grp = "git restore --patch";
|
|
grps = "git restore --patch --staged";
|
|
grs = "git restore --staged";
|
|
gs = "git status";
|
|
};
|
|
home-manager.users.moritz = {
|
|
programs.git = {
|
|
enable = true;
|
|
userName = cfg.identity.name;
|
|
userEmail = cfg.identity.email;
|
|
extraConfig = {
|
|
commit.verbose = true;
|
|
diff.algorithm = "histogram";
|
|
fetch.fsckobjects = true;
|
|
init.defaultBranch = "main";
|
|
merge.conflictstyle = "zdiff3";
|
|
push.autoSetupRemote = true;
|
|
receive.fsckObjects = true;
|
|
transfer.fsckobjects = true;
|
|
};
|
|
signing = mkIf cfg.signing {
|
|
key = "0x970C6E89EB0547A9";
|
|
signByDefault = true;
|
|
};
|
|
lfs.enable = true;
|
|
delta.enable = true;
|
|
};
|
|
};
|
|
programs.git.enable = true;
|
|
};
|
|
}
|