diff --git a/README.md b/README.md index c2a3e12..a74ecfd 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ this is just the name of the programming language you want to use; the repository will pick a recommended default template for that language. If you want more control over the generated repository, you may select a -specific template instead. Template names are made of underscore (`_`) separated +specific template instead. Templates names are organized by underscore-separated *fields*; the number of fields may very depending on the language, but typically there are three or four: diff --git a/flake.nix b/flake.nix index d645373..ac9ebb7 100644 --- a/flake.nix +++ b/flake.nix @@ -6,15 +6,6 @@ concatMapAttrs = func: attr: foldl' (x: y: x // y) {} (map func attr); - # Display names of languages for template descriptions - display-names = { - bash = "Bash"; - fish = "Fish"; - c = "C"; - python = "Python"; - rust = "Rust"; - }; - # Template Aliases # Used to pick default template for each language aliases = { @@ -42,18 +33,19 @@ map (l: [ subd ] ++ l) (flakeSubdirs /${dir}/${subd})) (subdirs dir); - generateDesc = fields: - let - lang = head fields; - in "${display-names.${lang} or lang} template (${concatStringsSep ", " (tail fields)})"; + generateDesc = subds: + "${head subds} template - ${concatStringsSep ", " (tail subds)}"; in { - templates = concatMapAttrs (fields: { - ${concatStringsSep "_" fields} = { - description = generateDesc fields; + templates = concatMapAttrs (subds: { + ${concatStringsSep "_" subds} = { + description = generateDesc subds; path = filterSource (p: _: !(elem (baseNameOf p) template-ignore)) - (foldl' (dir: subd: /${dir}/${subd}) ./. fields); + (foldl' (dir: subd: /${dir}/${subd}) ./. subds); }; - }) (flakeSubdirs ./.) // mapAttrs (from: to: self.templates.${to}) aliases; + }) (flakeSubdirs ./.) // mapAttrs (from: to: + self.templates.${to} // { + description = generateDesc (filter (p: p != []) (split "_" to)); + }) aliases; }; }