Files
sydnix/modules/home/users/crumb/git.nix

96 lines
2.3 KiB
Nix

{ config, lib, pkgs, ... }:
let
cfg = config.sydnix.users.crumb.git;
options.sydnix.users.crumb.git.enable =
lib.mkEnableOption "Git, à la crumb";
# TODO: Move somewhere else.
my-email = "msyds@deertopia.net";
my-name = "Madeleine Sydney Ślaga";
in {
options.sydnix.users.crumb.git.enable =
lib.mkEnableOption "Git, à la crumb";
config = lib.mkIf cfg.enable (
lib.mkMerge [
{
### Git
programs.git = {
enable = true;
settings = {
user = {
name = my-name;
email = my-email;
};
diff = {
tool = "ediff";
guitool = "ediff";
};
difftool.ediff.cmd =
"${../../../../scripts/ediff/ediff} $LOCAL $REMOTE $MERGED";
merge.tool = "ediff";
mergetool.ediff = {
cmd = "${../../../../scripts/ediff/ediff} $LOCAL $REMOTE $MERGED";
trustExitCode = true;
};
safe.directory = ["/persist/dots"];
};
};
home.shellAliases = {
ga = "git add";
gb = "git branch";
gc = "git commit";
gcl = "git clone";
gco = "git checkout";
gd = "git diff";
gl = "git log";
glo = "git log --pretty=oneline";
glol = "git log --graph --oneline --decorate";
gp = "git push";
gr = "git remote";
grs = "git remote show";
gs = "git status";
gtd = "git tag --delete";
};
}
{
### Jujutsu
programs.jujutsu = {
enable = true;
settings.user = {
email = my-email;
name = my-name;
};
};
home.shellAliases = {
jb = "jj bookmark";
jdi = "jj diff";
jd = "jj describe";
je = "jj edit";
jgcl = "jj git clone";
jgp = "jj git push";
jgr = "jj git remote";
jl = "jj log";
jn = "jj new";
js = "jj status";
jsp = "jj split";
};
}
{
### Github CLI
programs.gh = {
enable = true;
settings = {
git_protocol = "ssh";
};
};
sydnix.sops.secrets.github-oauth = {};
}
]);
}