nixos/home/modules/git.nix

80 lines
2 KiB
Nix

{ lib, config, pkgs, ... }:
let
cfg = config.snowhawk.git;
macos = config.snowhawk.macos.enable;
sops = config.snowhawk.sops.enable;
in
{
options.snowhawk.git = {
enable = lib.mkEnableOption "git";
oauth = lib.mkEnableOption "enable git-credential-oauth";
};
config = lib.mkIf cfg.enable {
home.packages = lib.mkIf cfg.oauth [
pkgs.git-credential-oauth
];
programs.git = {
enable = true;
userName = "Zynh Ludwig";
userEmail = "zynh0722@gmail.com";
ignores = [
"Session.vim"
(lib.mkIf macos ".DS_Store")
];
aliases = {
co = "checkout";
ci = "commit";
st = "status";
br = "branch";
hist = "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short";
type = "cat-file -t";
dump = "cat-file -p";
graph = "log --graph --decorate --pretty=oneline --abbrev-commit";
# local patch-wise ignore workflow
unchanged = "update-index --assume-unchanged";
changed = "update-index --no-assume-unchanged";
show-unchanged = ''!"git ls-files -v | sed -e 's/^[a-z] //p; d'\"'';
};
extraConfig = {
init.defaultBranch = "main";
core = {
editor = "nvim";
autocrlf = "input";
safecrlf = true;
};
pull.rebase = true;
credential = {
helper = [
"cache --timeout 7200"
(lib.mkIf cfg.oauth "oauth")
];
"https://git.zynh.me" = {
oauthClientId = "13d5b95d-565d-4264-8961-c45cc38eaa8a";
oauthScopes = "read_repository write_repository";
oauthAuthURL = "/login/oauth/authorize";
oauthTokenURL = "/login/oauth/access_token";
};
};
};
};
sops.secrets =
let home = config.home.homeDirectory;
in lib.mkIf sops {
"private_keys/personal_git" = {
path = "${home}/.ssh/personal_git";
};
};
};
}