Install git with some basic configuration
- Enable git
- Add some aliases for useful commands
- Set a default name and email
- Enable signing with our gpg key
- Add some other basic configuration (i.e. credential helper, colors, default
branch, etc.)
diff --git a/modules/git.nix b/modules/git.nix
new file mode 100644
index 0000000..80a2c2c
--- /dev/null
+++ b/modules/git.nix
@@ -0,0 +1,54 @@
+{pkgs, ...}: {
+ home = {
+ programs.git = {
+ enable = true;
+
+ userName = "Skyler Grey";
+ userEmail = "skyler3665@gmail.com";
+
+ signing = {
+ key = "A773 0F0B 1D2C 7E65 DFCB C536 8BE7 C115 369E 52A1";
+ signByDefault = true;
+ gpgPath = "gpg2";
+ };
+
+ lfs.enable = true;
+ delta.enable = true;
+
+ aliases = {
+ recommit = "!git commit -eF $(git rev-parse --git-dir)/COMMIT_EDITMSG";
+ stash-working = ''
+ !f() {
+ git commit --quiet --no-verify -m \"temp for stash-working\" && \
+ git stash push \"$@\" && \
+ git reset --quiet --soft HEAD~1;
+ }; f''; # https://stackoverflow.com/a/60875082/12293760
+ gui = ''
+ !f() {
+ export LAZYGIT_NEW_DIR_FILE=~/.lazygit/newdir
+ lazygit "$@"
+ if [ -f $LAZYGIT_NEW_DIR_FILE ]; then
+ cd "$(cat $LAZYGIT_NEW_DIR_FILE)"
+ rm -f $LAZYGIT_NEW_DIR_FILE > /dev/null
+ fi
+ }; f'';
+ };
+
+ extraConfig = {
+ init.defaultBranch = "development";
+ color.ui = "auto";
+ core.autocrlf = "input";
+ pull.rebase = "merges";
+ credential.helper = "store";
+ commit.signOff = true;
+ core.splitIndex = true;
+ core.untrackedCache = true;
+ core.fsmonitor = true;
+ };
+ };
+ home.packages = [
+ pkgs.git-review
+ pkgs.lazygit
+ ];
+ };
+}