about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2022-05-18 20:21:34 -0700
committerFranck Cuny <franck@fcuny.net>2022-05-18 20:21:34 -0700
commit579c203d12e6e095ec59e655d3d58747f450838b (patch)
tree33f7bb274ffba3e3a0a2dbde2c88d29e7087bed3
parentnix: bump dependencies (diff)
downloadworld-579c203d12e6e095ec59e655d3d58747f450838b.tar.gz
feat(git): add a template for commit messages
In order to write good commit message, having a reminder of how to write
them is useful. This template provides some guidance to categorize the
change and how to phrase the description.
-rw-r--r--home/git/commit.template22
-rw-r--r--home/git/default.nix84
2 files changed, 66 insertions, 40 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
index bcf32ac..3dc2dd0 100644
--- a/home/git/default.nix
+++ b/home/git/default.nix
@@ -6,46 +6,50 @@ in {
     enable = mkEnableOption "git configuration";
   };
 
-  config.programs.git = lib.mkIf cfg.enable {
-    enable = true;
-    aliases = {
-      s = "status --short --branch";
-      amend = "commit --amend --no-edit";
+  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"; };
+      };
+      ignores = [
+        "*.elc"
+        "*.iml"
+        "*.o"
+        "*.pyc"
+        "*.pyo"
+        "*pyc"
+        "*~"
+        ".DS_Store"
+        ".\\#"
+        ".dir-locals.el"
+        ".direnv/*"
+        ".idea"
+        ".projectile"
+        ".pytest_cache/"
+        "/env/*"
+        "Icon"
+        "TAGS"
+        "\\#*\\#"
+        "tags"
+      ];
     };
-    extraConfig = {
-      core.whitespace = "trailing-space,space-before-tab";
-      color.ui = "true";
-      push.default = "simple";
-      init.defaultBranch = "main";
-      branch.autosetuprebase = "remote";
-      branch.sort = "authordate";
-    };
-    userName = "Franck Cuny";
-    userEmail = "franck@fcuny.net";
-    extraConfig = {
-      "credential \"https://github.com\"" = { username = "fcuny"; };
-      "credential \"https://git.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; };
   };
 }