.files/nix/homeModules/common/git.nix

90 lines
1.9 KiB
Nix

{
lib,
config,
...
}: {
# git plugins
programs.git = {
lfs.enable = true;
patdiff.enable = true;
};
# 懶惰鬼賴皮
programs.lazygit = let
patdiffCfg = config.programs.git.patdiff;
in
lib.mkIf patdiffCfg.enable {
settings = {
git.paging.externalDiffCommand = "${lib.getExe' patdiffCfg.package "patdiff-git-wrapper"}";
};
};
# git itself
programs.git = {
extraConfig = {
init.defaultBranch = "trunk"; # I like trees
push.autoSetupRemote = true;
pull.ff = "only";
rerere.enabled = true;
};
ignores = [
# sanity
".env"
# vim
"*~"
"*.swp"
# darwin
".DS_Store"
# nix
".direnv/"
"**/result*" # building an attr of derivation will make multiple links
# pre-commit
".pre-commit-config.yaml"
# dotfiles
".config/nvim/spell/"
];
};
# identity
programs.git = {
userEmail = "leana.jiang+git@icloud.com";
userName = "Léana ";
signing = {
key = "0x4E887A4CA9714ADA";
signByDefault = lib.mkDefault false;
};
};
programs.git.includes = let
mkIdentity = condition: contents: {inherit condition contents;};
hostCondition = url: "hasconfig:remote.*.url:git@${url}:*/**";
universityIdentity = {
init.defaultBranch = "main";
user = {
name = "Léana CHIANG";
email = "leana.chiang@etudiant.univ-rennes1.fr";
signingKey = "0x32035DB97E777EEB";
};
};
haskellIdentity = {
init.defaultBranch = "main";
user.name = "Léana Jiang";
};
in [
(mkIdentity
(hostCondition "gitlab.istic.univ-rennes1.fr")
universityIdentity)
(mkIdentity
(hostCondition "gitlab2.istic.univ-rennes1.fr")
universityIdentity)
(mkIdentity
(hostCondition "gitlab.haskell.org")
haskellIdentity)
];
}