93 lines
2.2 KiB
Nix
93 lines
2.2 KiB
Nix
# git is core no matter what but additional settings may could be added made in optional/foo eg: development.nix
|
|
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
inputs,
|
|
...
|
|
}:
|
|
let
|
|
handle = config.hostSpec.handle;
|
|
email = config.hostSpec.email;
|
|
in
|
|
{
|
|
programs.git = {
|
|
enable = true;
|
|
package = pkgs.gitAndTools.gitFull;
|
|
|
|
userName = handle;
|
|
userEmail = email;
|
|
|
|
ignores = [
|
|
".csvignore"
|
|
# nix
|
|
"*.drv"
|
|
"result"
|
|
# python
|
|
"*.py?"
|
|
"__pycache__/"
|
|
".venv/"
|
|
# direnv
|
|
".direnv"
|
|
];
|
|
|
|
# Anytime I use auth, I want to use my yubikey. But I don't want to always be having to touch it
|
|
# for things that don't need it. So I have to hardcode repos that require auth, and default to ssh for
|
|
# actions that require auth.
|
|
extraConfig = {
|
|
core.pager = "delta";
|
|
delta = {
|
|
enable = true;
|
|
features = [
|
|
"side-by-side"
|
|
"line-numbers"
|
|
"hyperlinks"
|
|
"line-numbers"
|
|
"commit-decoration"
|
|
];
|
|
};
|
|
|
|
url = lib.optionalAttrs (!config.hostSpec.isMinimal) {
|
|
# Only force ssh if it's not minimal
|
|
"ssh://git@github.com" = {
|
|
pushInsteadOf = "https://github.com";
|
|
};
|
|
"ssh://git@ryot.foo.com" = {
|
|
pushInsteadOf = "https://git.ryot.foo";
|
|
};
|
|
};
|
|
|
|
# pre-emptively ignore mac crap
|
|
core.excludeFiles = builtins.toFile "global-gitignore" ''
|
|
.DS_Store
|
|
.DS_Store?
|
|
._*
|
|
.Spotlight-V100
|
|
.Trashes
|
|
ehthumbs.db
|
|
Thumbs.db
|
|
node_modules
|
|
'';
|
|
core.attributesfile = builtins.toFile "global-gitattributes" ''
|
|
Cargo.lock -diff
|
|
flake.lock -diff
|
|
*.drawio -diff
|
|
*.svg -diff
|
|
*.json diff=json
|
|
*.bin diff=hex difftool=hex
|
|
*.dat diff=hex difftool=hex
|
|
*aarch64.bin diff=objdump-aarch64 difftool=objdump-aarch64
|
|
*arm.bin diff=objdump-arm difftool=objdump-arm
|
|
*x64.bin diff=objdump-x86_64 difftool=objdump-x64
|
|
*x86.bin diff=objdump-x86 difftool=objdump-x86
|
|
'';
|
|
|
|
extraConfig = {
|
|
init = {
|
|
defaultBranch = "main";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
}
|