111 lines
2.8 KiB
Nix
111 lines
2.8 KiB
Nix
{
|
|
osConfig,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
inherit (osConfig) modules;
|
|
cfg = modules.system.programs.git;
|
|
in {
|
|
imports = [
|
|
./aliases.nix
|
|
./ignore.nix
|
|
];
|
|
|
|
config = {
|
|
home.packages = with pkgs; [
|
|
gist # manage github gists
|
|
act # local github actions
|
|
zsh-forgit # zsh plugin to load forgit via `git forgit`
|
|
gitflow
|
|
];
|
|
|
|
programs.git = {
|
|
enable = true;
|
|
package = pkgs.gitAndTools.gitFull;
|
|
|
|
# my credientals
|
|
userName = "NotAShelf";
|
|
userEmail = "raf@notashelf.dev";
|
|
|
|
# lets sign using our own key
|
|
# this must be provided by the host
|
|
signing = {
|
|
key = cfg.signingKey;
|
|
signByDefault = true;
|
|
};
|
|
|
|
lfs = {
|
|
enable = true;
|
|
skipSmudge = true;
|
|
};
|
|
|
|
extraConfig = {
|
|
# I don't care about the usage of the term "master"
|
|
# but main is easier to type, so that's that
|
|
init.defaultBranch = "main";
|
|
|
|
# disable the horrendous GUI password prompt for Git when auth fails
|
|
core.askPass = "";
|
|
|
|
# prefer using libsecret for storing and retrieving credientals
|
|
credential.helper = "${pkgs.gitAndTools.gitFull}/bin/git-credential-libsecret";
|
|
|
|
# delta is some kind of a syntax highlighting pager for git
|
|
# it looks nice but I'd like to consider difftastic at some point
|
|
delta = {
|
|
enable = true;
|
|
line-numbers = true;
|
|
features = "decorations side-by-side navigate";
|
|
options = {
|
|
navigate = true;
|
|
line-numbers = true;
|
|
side-by-side = true;
|
|
dark = true;
|
|
};
|
|
};
|
|
|
|
branch.autosetupmerge = "true";
|
|
pull.ff = "only";
|
|
|
|
push = {
|
|
default = "current";
|
|
followTags = true;
|
|
autoSetupRemote = true;
|
|
};
|
|
|
|
merge = {
|
|
stat = "true";
|
|
conflictstyle = "diff3";
|
|
};
|
|
|
|
core.whitespace = "fix,-indent-with-non-tab,trailing-space,cr-at-eol";
|
|
color.ui = "auto";
|
|
|
|
repack.usedeltabaseoffset = "true";
|
|
|
|
rebase = {
|
|
autoSquash = true;
|
|
autoStash = true;
|
|
};
|
|
|
|
rerere = {
|
|
autoupdate = true;
|
|
enabled = true;
|
|
};
|
|
|
|
url = {
|
|
"https://github.com/".insteadOf = "github:";
|
|
"ssh://git@github.com/".pushInsteadOf = "github:";
|
|
"https://gitlab.com/".insteadOf = "gitlab:";
|
|
"ssh://git@gitlab.com/".pushInsteadOf = "gitlab:";
|
|
"https://aur.archlinux.org/".insteadOf = "aur:";
|
|
"ssh://aur@aur.archlinux.org/".pushInsteadOf = "aur:";
|
|
"https://git.sr.ht/".insteadOf = "srht:";
|
|
"ssh://git@git.sr.ht/".pushInsteadOf = "srht:";
|
|
"https://codeberg.org/".insteadOf = "codeberg:";
|
|
"ssh://git@codeberg.org/".pushInsteadOf = "codeberg:";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|