96 lines
2.3 KiB
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 = {};
|
|
}
|
|
]);
|
|
}
|