169 lines
4.2 KiB
Nix
169 lines
4.2 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
let
|
|
cfg = config.programs.git;
|
|
in
|
|
{
|
|
programs.git = {
|
|
enable = true;
|
|
package = pkgs.gitFull;
|
|
|
|
userName = "h7x4";
|
|
userEmail = "h7x4@nani.wtf";
|
|
|
|
signing = {
|
|
key = "46B9228E814A2AAC";
|
|
signByDefault = true;
|
|
};
|
|
|
|
lfs.enable = true;
|
|
|
|
delta = {
|
|
enable = true;
|
|
options = {
|
|
line-numbers = true;
|
|
side-by-side = true;
|
|
theme = "Monokai Extended Origin";
|
|
};
|
|
};
|
|
|
|
aliases = {
|
|
aliases = "!git config --get-regexp alias | sed -re 's/alias\\.(\\S*)\\s(.*)$/\\1 = \\2/g'";
|
|
delete-merged = "!git branch --merged | grep -v '\\*' | xargs -n 1 git branch -d";
|
|
graph = "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all";
|
|
graphv = "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all";
|
|
forcepush = "push --force-with-lease --force-if-includes";
|
|
authors = "shortlog --summary --numbered --email";
|
|
si = "switch-interactive";
|
|
rebase-author = "rebase -i -x \"git commit --amend --reset-author -CHEAD\"";
|
|
};
|
|
|
|
extraConfig = {
|
|
core = {
|
|
whitespace = "space-before-tab,-indent-with-non-tab,trailing-space";
|
|
untrackedCache = true;
|
|
editor = "nvim";
|
|
};
|
|
|
|
safe.directory = "*";
|
|
|
|
rerere.enabled = true;
|
|
|
|
branch.sort = "-committerdate";
|
|
|
|
"color \"branch\"".upstream = "cyan";
|
|
color.ui = "auto";
|
|
|
|
init.defaultBranch = "main";
|
|
|
|
fetch = {
|
|
prune = true;
|
|
fsckObjects = true;
|
|
};
|
|
|
|
transfer.fsckObjects = true;
|
|
|
|
receive.fsckObjects = true;
|
|
|
|
pull.rebase = true;
|
|
|
|
rebase = {
|
|
autoStash = true;
|
|
autoSquash = true;
|
|
abbreviateCommands = true;
|
|
updateRefs = true;
|
|
};
|
|
|
|
push = {
|
|
default = "current";
|
|
autoSetupRemote = true;
|
|
followTags = true;
|
|
};
|
|
|
|
merge = {
|
|
tool = "nvimdiff";
|
|
conflictstyle = "diff3";
|
|
colorMoved = "zebra";
|
|
};
|
|
|
|
mergetool.keepBackup = false;
|
|
"mergetool \"nvimdiff\"".cmd = "nvim -d $BASE $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J'";
|
|
|
|
diff = {
|
|
mnemonicPrefix = true;
|
|
renames = true;
|
|
tool = "nvimdiff";
|
|
submodule = "log";
|
|
};
|
|
|
|
status = {
|
|
showUntrackedFiles = "all";
|
|
relativePaths = true;
|
|
submoduleSummary = true;
|
|
};
|
|
|
|
log.date = "iso";
|
|
|
|
submodule.recurse = true;
|
|
|
|
grep = {
|
|
break = true;
|
|
heading= true;
|
|
lineNumber = true;
|
|
extendedRegexp = true;
|
|
};
|
|
|
|
# Run autocorrected command after 3 seconds
|
|
help.autocorrect = "30";
|
|
|
|
github.user = "h7x4";
|
|
|
|
"url \"github:\"".insteadOf = [
|
|
"https://github.com/"
|
|
"ssh://git@github.com:"
|
|
"git@github.com:"
|
|
"github.com:"
|
|
];
|
|
|
|
"url \"pvv-git:\"".insteadOf = [
|
|
"https://git.pvv.org/"
|
|
"ssh://gitea@git.pvv.ntnu.no:2222/"
|
|
"gitea@git.pvv.ntnu.no:2222/"
|
|
"gitea@git.pvv.ntnu.no:"
|
|
"git.pvv.ntnu.no:"
|
|
];
|
|
|
|
web.browser = "google-chrome-stable";
|
|
|
|
"filter \"lfs\"" = {
|
|
required = true;
|
|
smudge = "git-lfs smudge -- %f";
|
|
process = "git-lfs filter-process";
|
|
clean = "git-lfs clean -- %f";
|
|
};
|
|
};
|
|
|
|
ignores = [
|
|
".vscode"
|
|
".direnv"
|
|
".envrc"
|
|
"shell.nix"
|
|
];
|
|
};
|
|
|
|
home.packages = [
|
|
(pkgs.writeShellApplication {
|
|
name = "git-tcommit";
|
|
runtimeInputs = with pkgs; [ cfg.package coreutils ];
|
|
text = lib.fileContents ./scripts/git-tcommit.sh;
|
|
})
|
|
(pkgs.writeShellApplication {
|
|
name = "git-switch-interactive";
|
|
runtimeInputs = with pkgs; [ cfg.package fzf gnused coreutils ];
|
|
text = lib.fileContents ./scripts/git-switch-interactive.sh;
|
|
excludeShellChecks = [
|
|
"SC2001" # (style): See if you can use ${variable//search/replace} instead. (sed invocation)
|
|
];
|
|
})
|
|
];
|
|
}
|