about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-03-31 23:43:36 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-04-01 00:00:06 +0200
commit669d74fe556b06ff4c95df2d9c16b922a69807f2 (patch)
tree87ec271cf23a0c21ca3e1336a827998a25819dc9
parentrefactor({python,markdown}): Also move them to the templates diretory (diff)
downloadflake-templates-669d74fe556b06ff4c95df2d9c16b922a69807f2.tar.gz
flake-templates-669d74fe556b06ff4c95df2d9c16b922a69807f2.zip
refactor(flake): Move some nix code out of flake.nix
-rw-r--r--flake.nix61
-rw-r--r--templates.nix52
2 files changed, 68 insertions, 45 deletions
diff --git a/flake.nix b/flake.nix
index 5a85b1e..ba19638 100644
--- a/flake.nix
+++ b/flake.nix
@@ -14,66 +14,37 @@
     systems = {
       url = "github:nix-systems/x86_64-linux"; # only evaluate for this system
     };
+    treefmt-nix = {
+      url = "github:numtide/treefmt-nix";
+      inputs = {
+        nixpkgs.follows = "nixpkgs";
+      };
+    };
   };
 
   outputs = {
+    self,
     nixpkgs,
     flake-utils,
+    treefmt-nix,
     ...
-  }:
+  }: let
+    templates = import ./templates.nix {inherit (nixpkgs) lib;};
+  in
     flake-utils.lib.eachDefaultSystem (system: let
       pkgs = nixpkgs.legacyPackages."${system}";
+      treefmtEval = import ./treefmt.nix {inherit treefmt-nix pkgs;};
     in {
       devShells.default = pkgs.mkShell {
         packages = with pkgs; [
-          nil
-          alejandra
-          statix
-          ltex-ls
           cocogitto
         ];
       };
+
+      checks.formatting = treefmtEval.config.build.check self;
+      formatter = treefmtEval.config.build.wrapper;
     })
-    // {
-      templates = {
-        # a b c d e f g h i j k l m n o p q r s t u v w x y z
-        awk = {
-          path = ./awk;
-          description = "An Awk project";
-          welcomeText = "Please customize the text in the flake.nix and LICENSE.spdx files; Look at the TODO marks.\n Also run `git init` and `cog install-hook commit-msg`";
-        };
-        c = {
-          path = ./c;
-          description = "A C project";
-          welcomeText = "Please customize the text in the flake.nix, LICENSE.spdx files and the Makefile BIN_NAME variable; Look at the TODO marks.\n Also run `git init` and `cog install-hook commit-msg`";
-        };
-        latex = {
-          path = ./latex;
-          description = "A LaTeX project";
-          welcomeText = "Please customize the text in the flake.nix and LICENSE.spdx files; Look at the TODO marks.\n Also run `git init` and `cog install-hook commit-msg` and look at `lpm`";
-        };
-        markdown = {
-          path = ./markdown;
-          description = "A Markdown project";
-          welcomeText = "Please customize the text in the flake.nix and LICENSE.spdx files; Look at the TODO marks.\n Also run `git init` and `cog install-hook commit-msg`";
-        };
-        python = {
-          path = ./python;
-          description = "A Python project";
-          welcomeText = "Please customize the text in the flake.nix, LICENSE.spdx and setup.cfg files; Look at the TODO marks.\n Also run `git init` and `cog install-hook commit-msg`";
-        };
-        rust = {
-          path = ./rust;
-          description = "A Rust/Crane project";
-          welcomeText = "Please customize the text in the flake.nix and LICENSE.spdx files; Look at the TODO marks.\n Also run `git init`, `cargo init` and `cog install-hook commit-msg`";
-        };
-        shell = {
-          path = ./shell;
-          description = "A Shell project";
-          welcomeText = "Please customize the text in the flake.nix and LICENSE.spdx files; Look at the TODO marks.\n Also run `git init` and `cog install-hook commit-msg`";
-        };
-      };
-    };
+    // {inherit templates;};
 }
 # vim: ts=2
 
diff --git a/templates.nix b/templates.nix
new file mode 100644
index 0000000..be7449d
--- /dev/null
+++ b/templates.nix
@@ -0,0 +1,52 @@
+{lib}: let
+  mkTemplate = name: welcomeText: {
+    inherit welcomeText;
+    path = ./templates/${name};
+    description = let
+      first_char_of_name =
+        builtins.elemAt (lib.strings.stringToCharacters name) 0;
+      a_or_an =
+        if builtins.elem first_char_of_name ["a" "e" "i" "o" "u"]
+        then "An"
+        else "A";
+    in "${a_or_an} ${name} project";
+  };
+in {
+  # a b c d e f g h i j k l m n o p q r s t u v w x y z
+  awk = mkTemplate "awk" ''
+    **Grep** for the TODO marks and change them accordingly!
+    Also run `git init`.
+  '';
+
+  c = mkTemplate "c" ''
+    **Grep** for the TODO marks and change them accordingly!
+    Also run `git init`.
+  '';
+
+  latex = mkTemplate "latex" ''
+    **Grep** for the TODO marks and change them accordingly!
+    Also run `git init`.
+    Please take a look at `lpm`.
+  '';
+
+  # Currently unmaintained
+  # markdown = mkTemplate "markdown" ''
+  #   **Grep** for the TODO marks and change them accordingly!
+  #   Also run `git init`.
+  # '';
+  #
+  # python = mkTemplate "python" ''
+  #   **Grep** for the TODO marks and change them accordingly!
+  #   Also run `git init`.
+  # '';
+
+  rust = mkTemplate "rust" ''
+    **Grep** for the TODO marks and change them accordingly!
+    Also run `git init`.
+  '';
+
+  shell = mkTemplate "shell" ''
+    **Grep** for the TODO marks and change them accordingly!
+    Also run `git init`.
+  '';
+}