{lib}: let mkTemplate = name: welcomeText: { inherit welcomeText; path = ./build/${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"; }; mkDefaultTemplate = name: mkTemplate name defaultText; mkAddedTemplate = name: text: mkTemplate name (defaultText + text); defaultText = '' Just run `chmod +x ./init && ./init` and follow the directions. Otherwise, you could also change the `%INIT_*` variables yourself. ''; in { # Please sort the templates alphabetically: # 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 = mkDefaultTemplate "awk"; c = mkDefaultTemplate "c"; latex = mkAddedTemplate "latex" '' Also **grep** for TODO marks after the `init` run and change them accordingly! Furthermore, please take a look at `lpm`. ''; # Currently unmaintained # markdown = mkDefaultTemplate "markdown"; # python = mkDefaultTemplate "python"; rust = mkDefaultTemplate "rust"; shell = mkDefaultTemplate "shell"; }