1
Fork 0
mirror of https://github.com/RGBCube/ncc synced 2026-01-13 08:41:00 +00:00
ncc/modules/git.mod.nix
2025-10-16 22:43:02 +03:00

168 lines
4.2 KiB
Nix

{ self, ... }:
{
homeModules.gh =
{ lib, pkgs, ... }:
let
inherit (lib.generators) toYAML;
inherit (lib.meta) getExe;
package = getExe pkgs.gh;
in
{
programs.nushell.aliases = {
"??" = "${package} copilot suggest --target shell --";
"gh?" = "${package} copilot suggest --target gh --";
"git?" = "${package} copilot suggest --target git --";
};
packages = [
pkgs.gh
];
xdg.config.file."gh/config.yml".generator = toYAML { };
xdg.config.file."gh/config.yml".value = {
git_protocol = "ssh";
};
};
homeModules.git =
{ lib, pkgs, ... }:
let
inherit (lib.meta) getExe;
inherit (lib.generators) toINI;
package = getExe pkgs.git;
in
{
programs.nushell.aliases = {
g = package;
ga = "${package} add";
gaa = "${package} add ./";
gab = "${package} absorb";
gabr = "${package} absorb --and-rebase";
gb = "${package} branch";
gbv = "${package} branch --verbose";
gc = "${package} commit";
gca = "${package} commit --amend --no-edit";
gcm = "${package} commit --message";
gcam = "${package} commit --amend --message";
gcl = "${package} clone";
gd = "${package} diff";
gds = "${package} diff --staged";
gp = "${package} push";
gpf = "${package} push --force-with-lease";
gl = "${package} log";
glo = "${package} log --oneline --graph";
glp = "${package} log --patch --ext-diff";
gpl = "${package} pull";
gplr = "${package} pull --rebase";
gplff = "${package} pull --ff-only";
gr = "${package} recent";
grb = "${package} rebase";
grba = "${package} rebase --abort";
grbc = "${package} rebase --continue";
grbi = "${package} rebase --interactive";
grbm = "${package} rebase master";
grl = "${package} reflog";
grm = "${package} remote";
grma = "${package} remote add";
grmv = "${package} remote --verbose";
grmsu = "${package} remote set-url";
grs = "${package} reset";
grsh = "${package} reset --hard";
gs = "${package} stash";
gsp = "${package} stash pop";
gsw = "${package} switch";
gswm = "${package} switch master";
gsh = "${package} show --ext-diff";
gst = "${package} status";
};
packages = [
package
pkgs.difftastic
];
xdg.config.file."git/config".generator = toINI { };
xdg.config.file."git/config".value = {
user.name = "RGBCube";
user.email = "git@rgbcu.be";
init.defaultBranch = "master";
commit.verbose = true;
log.date = "iso";
column.ui = "auto";
branch.sort = "-committerdate";
tag.sort = "version:refname";
diff.algorithm = "histogram";
diff.colorMoved = "default";
diff.external = getExe pkgs.difftastic;
diff.tool = "difftastic";
difftool.difftastic.cmd = # sh
''${getExe pkgs.difftastic} "$LOCAL" "$REMOTE"'';
pull.rebase = true;
push.autoSetupRemote = true;
merge.conflictStyle = "zdiff3";
rebase.autoSquash = true;
rebase.autoStash = true;
rebase.updateRefs = true;
rerere.enabled = true;
fetch.fsckObjects = true;
receive.fsckObjects = true;
transfer.fsckobjects = true;
alias.recent = # sh
''! ${package} branch --sort=-committerdate --format="%(committerdate:relative)%09%(refname:short)" | head -10'';
};
};
homeModules.git-sign =
{ config, lib, ... }:
let
inherit (lib.generators) toINI;
in
{
imports = [ self.homeModules.git ];
xdg.config.file."git/config".generator = toINI { };
xdg.config.file."git/config".value = {
core.sshCommand = "ssh -i ${config.directory}/.ssh/id";
url."ssh://git@github.com/".insteadOf = "https://github.com/";
commit.gpgSign = true;
tag.gpgSign = true;
gpg.format = "ssh";
user.signingKey = "~/.ssh/id";
};
};
}