modularize git
This commit is contained in:
59
modules/home/programs/git/default.nix
Normal file
59
modules/home/programs/git/default.nix
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
cfg = config.home.programs.git;
|
||||
in {
|
||||
options = {
|
||||
home.programs.git.enable = mkEnableOption "Enables git";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = [pkgs.gh];
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = config.accounts.username;
|
||||
userEmail = config.accounts.mail;
|
||||
delta = {
|
||||
enable = true;
|
||||
options.dark = true;
|
||||
};
|
||||
extraConfig = {
|
||||
# user.signingkey = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
|
||||
user.signingkey = "${config.home.homeDirectory}/.config/git/allowed_signers";
|
||||
signing = {
|
||||
format = lib.mkDefault "ssh";
|
||||
key = "${config.home.homeDirectory}/.ssh/id_ed25519";
|
||||
signByDefault = true;
|
||||
};
|
||||
gpg = {
|
||||
# format = lib.mkDefault "ssh";
|
||||
ssh.allowedSignersFile = config.home.homeDirectory + "/" + config.xdg.configFile."git/allowed_signers".target;
|
||||
};
|
||||
commit = {
|
||||
verbose = true;
|
||||
gpgSign = false;
|
||||
};
|
||||
init.defaultBranch = "main";
|
||||
merge.conflictStyle = "diff3";
|
||||
diff.algorithm = "histogram";
|
||||
log.date = "iso";
|
||||
column.ui = "auto";
|
||||
branch.sort = "committerdate";
|
||||
push.autoSetupRemote = true;
|
||||
rerere.enabled = true;
|
||||
};
|
||||
lfs.enable = true;
|
||||
ignores = [
|
||||
".direnv"
|
||||
"result"
|
||||
".jj"
|
||||
];
|
||||
};
|
||||
xdg.configFile."git/allowed_signers".text = ''
|
||||
${config.accounts.mail} namespaces="git" ${config.accounts.sshKey}
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user