69 lines
1.4 KiB
Nix
69 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";
|
|
};
|
|
};
|
|
}
|