112 lines
2.8 KiB
Nix
112 lines
2.8 KiB
Nix
{ config, lib, pkgs, user, ... }:
|
|
let
|
|
inherit (lib.options) mkEnableOption;
|
|
inherit (lib.modules) mkIf;
|
|
in
|
|
{
|
|
options.modules.${user}.shell.toolset.git = {
|
|
enable = mkEnableOption "version-control system";
|
|
};
|
|
|
|
config = mkIf config.modules.${user}.shell.toolset.git.enable {
|
|
environment.sessionVariables.GITHUB_TOKEN = "$(cat /run/agenix/tokenGH)";
|
|
|
|
home-manager.users.${user} = {
|
|
home.packages = with pkgs; [ lazygit lazyjj jujutsu ];
|
|
|
|
programs = {
|
|
zsh.initContent = ''
|
|
# -------===[ Helpful Git Fn's ]===------- #
|
|
gitignore() {
|
|
curl -s -o .gitignore https://gitignore.io/api/$1
|
|
}
|
|
'';
|
|
|
|
fish.functions = {
|
|
gitignore = "curl -sL https://www.gitignore.io/api/$argv";
|
|
};
|
|
|
|
git = {
|
|
enable = true;
|
|
package = pkgs.gitFull;
|
|
difftastic = {
|
|
enable = true;
|
|
background = "dark";
|
|
color = "always";
|
|
display = "inline";
|
|
};
|
|
|
|
ignores = [
|
|
# General:
|
|
"*.bloop"
|
|
"*.bsp"
|
|
"*.metals"
|
|
"*.metals.sbt"
|
|
"*metals.sbt"
|
|
"*.direnv"
|
|
"*.envrc"
|
|
"*hie.yaml"
|
|
"*.mill-version"
|
|
"*.jvmopts"
|
|
|
|
# OS-related:
|
|
".DS_Store?"
|
|
".DS_Store"
|
|
".CFUserTextEncoding"
|
|
".Trash"
|
|
".Xauthority"
|
|
"thumbs.db"
|
|
"Thumbs.db"
|
|
"Icon?"
|
|
|
|
# Compiled residues:
|
|
"*.class"
|
|
"*.exe"
|
|
"*.o"
|
|
"*.pyc"
|
|
"*.elc"
|
|
];
|
|
|
|
extraConfig = {
|
|
init.defaultBranch = "main";
|
|
core = {
|
|
editor = "nvim";
|
|
whitespace = "trailing-space,space-before-tab";
|
|
};
|
|
credential.helper = "${pkgs.gitFull}/bin/git-credential-libsecret";
|
|
|
|
user = {
|
|
name = config.modules.${user}.user.full_name;
|
|
email = config.modules.${user}.user.email;
|
|
signingKey = "~/.ssh/id_rsa.pub";
|
|
};
|
|
|
|
gpg.format = "ssh";
|
|
commit.gpgSign = true;
|
|
tag.gpgSign = true;
|
|
|
|
push = {
|
|
autoSetupRemote = true;
|
|
default = "current";
|
|
gpgSign = "if-asked";
|
|
autoSquash = true;
|
|
};
|
|
pull.rebase = true;
|
|
|
|
filter = {
|
|
required = true;
|
|
smudge = "git-lfs smudge -- %f";
|
|
process = "git-lfs filter-process";
|
|
clean = "git-lfs clean -- %f";
|
|
};
|
|
|
|
url = {
|
|
"https://github.com/".insteadOf = "gh:";
|
|
"git@github.com:".insteadOf = "ssh+gh:";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|