mirror of
https://github.com/moons-14/dotfiles.git
synced 2026-10-06 07:28:12 +09:00
74 lines
1.8 KiB
Nix
74 lines
1.8 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
...
|
|
}:
|
|
let
|
|
cfg = config.my.applications.git;
|
|
hmCfg = config.my.applications.git.homeManager;
|
|
in
|
|
{
|
|
options.my.applications.git.homeManager = {
|
|
enable = lib.mkEnableOption "git home-manager configuration";
|
|
|
|
signingKey = lib.mkOption {
|
|
type = lib.types.nullOr lib.types.str;
|
|
default = "~/.ssh/id_ed25519_sk_rk.pub";
|
|
example = "~/.ssh/id_ed25519.pub";
|
|
description = "SSH public key path used for Git commit and tag signing.";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf hmCfg.enable {
|
|
assertions = [
|
|
{
|
|
assertion = hmCfg.signingKey != null;
|
|
message = "my.applications.git.homeManager.signingKey must be set per host.";
|
|
}
|
|
];
|
|
|
|
home-manager.sharedModules = [
|
|
{
|
|
programs.git = {
|
|
enable = true;
|
|
|
|
ignores = [
|
|
".direnv/"
|
|
".envrc"
|
|
"!.envrc.example"
|
|
];
|
|
|
|
signing = {
|
|
key = hmCfg.signingKey;
|
|
format = "ssh";
|
|
signByDefault = true;
|
|
};
|
|
|
|
settings = {
|
|
user.name = cfg.userName;
|
|
user.email = cfg.userEmail;
|
|
|
|
push.default = "simple";
|
|
credential.helper = "cache --timeout=7200";
|
|
init.defaultBranch = "main";
|
|
log.decorate = "full";
|
|
log.date = "iso";
|
|
merge.conflictStyle = "diff3";
|
|
|
|
alias = {
|
|
br = "branch --sort=-committerdate";
|
|
co = "checkout";
|
|
df = "diff";
|
|
com = "commit -a";
|
|
gs = "stash";
|
|
gp = "pull";
|
|
lg = "log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%d%Creset %s %C(green)(%cr)%C(bold blue) <%an>%Creset' --abbrev-commit";
|
|
st = "status";
|
|
};
|
|
};
|
|
};
|
|
}
|
|
];
|
|
};
|
|
}
|