about summary refs log tree commit diff
path: root/home/git
diff options
context:
space:
mode:
Diffstat (limited to 'home/git')
-rw-r--r--home/git/commit.template22
-rw-r--r--home/git/default.nix56
2 files changed, 78 insertions, 0 deletions
diff --git a/home/git/commit.template b/home/git/commit.template
new file mode 100644
index 0000000..01ab956
--- /dev/null
+++ b/home/git/commit.template
@@ -0,0 +1,22 @@
+# (If applied, this commit will...) <type>: <subject>
+
+# Explain why this change is being made
+
+# --- COMMIT END ---
+# Remember to
+#    Use the imperative mood, present tense: `change' not `changed' nor `changes'
+#    Do not end the subject line with a period
+#    Use the body to explain what and why vs. how
+#    Can use multiple lines with "-" for bullet points in body
+
+# Suggested types:
+# build: Changes that affect the build system or external dependencies
+# ci:    Changes to CI configuration files and scripts
+# docs:  Documentation only changes
+# feat:  A new feature
+# fix:   A bug fix
+# perf:  A code change that improves performance
+# ref:   A code change that neither fixes a bug nor adds a feature (refactor)
+# style: Changes that do not affect the meaning of the code
+# tests: Adding missing tests or correcting existing tests
+# meta:  Some meta information in the repo changes
diff --git a/home/git/default.nix b/home/git/default.nix
new file mode 100644
index 0000000..7e6cd15
--- /dev/null
+++ b/home/git/default.nix
@@ -0,0 +1,56 @@
+{ lib, config, ... }:
+
+let cfg = config.my.home.git;
+in {
+  options.my.home.git = with lib; {
+    enable = mkEnableOption "git configuration";
+  };
+
+  config = lib.mkIf cfg.enable {
+    programs.git = {
+      enable = true;
+      aliases = {
+        s = "status --short --branch";
+        amend = "commit --amend --no-edit";
+      };
+      extraConfig = {
+        core.whitespace = "trailing-space,space-before-tab";
+        color.ui = "true";
+        push.default = "simple";
+        init.defaultBranch = "main";
+        branch.autosetuprebase = "remote";
+        branch.sort = "authordate";
+        commit.template = "${config.xdg.dataHome}/git/commit.template";
+      };
+      userName = "Franck Cuny";
+      userEmail = "franck@fcuny.net";
+      extraConfig = {
+        "credential \"https://github.com\"" = { username = "fcuny"; };
+        "credential \"https://git.fcuny.net\"" = { username = "fcuny"; };
+        "credential \"https://cl.fcuny.net\"" = { username = "fcuny"; };
+      };
+      ignores = [
+        "*.elc"
+        "*.iml"
+        "*.o"
+        "*.pyc"
+        "*.pyo"
+        "*pyc"
+        "*~"
+        ".DS_Store"
+        ".\\#"
+        ".dir-locals.el"
+        ".direnv/*"
+        ".idea"
+        ".projectile"
+        ".pytest_cache/"
+        "/env/*"
+        "Icon"
+        "TAGS"
+        "\\#*\\#"
+        "tags"
+      ];
+    };
+    xdg.dataFile."git/commit.template" = { source = ./commit.template; };
+  };
+}