feat: auto-extract template descriptions from flake.nix

This commit is contained in:
anntnzrb
2025-10-08 21:21:52 -05:00
parent 3f738f00e0
commit f00967f8a9

View File

@@ -28,19 +28,31 @@ in {
alias ? {}, alias ? {},
}: let }: let
user-templates = snowfall-lib.fs.get-directories src; user-templates = snowfall-lib.fs.get-directories src;
create-template-metadata = template: { create-template-metadata = template: let
name = builtins.unsafeDiscardStringContext (baseNameOf template); flake-file = template + "/flake.nix";
path = template; has-flake = builtins.pathExists flake-file;
}; flake-attrs =
if has-flake
then import flake-file
else {};
description = flake-attrs.description or null;
in
{
name = builtins.unsafeDiscardStringContext (baseNameOf template);
path = template;
}
// (
if description != null
then {inherit description;}
else {}
);
templates-metadata = builtins.map create-template-metadata user-templates; templates-metadata = builtins.map create-template-metadata user-templates;
merge-templates = templates: metadata: merge-templates = templates: metadata:
templates templates
// { // {
${metadata.name} = ${metadata.name} =
(overrides.${metadata.name} or {}) (overrides.${metadata.name} or {})
// { // (builtins.removeAttrs metadata ["name"]);
inherit (metadata) path;
};
}; };
templates-without-aliases = foldl merge-templates {} templates-metadata; templates-without-aliases = foldl merge-templates {} templates-metadata;
aliased-templates = mapAttrs (name: value: templates-without-aliases.${value}) alias; aliased-templates = mapAttrs (name: value: templates-without-aliases.${value}) alias;