mirror of
https://github.com/mjallen18/snowfall-lib.git
synced 2026-04-18 09:05:58 -05:00
feat: auto-extract template descriptions from flake.nix
This commit is contained in:
@@ -28,19 +28,31 @@ in {
|
||||
alias ? {},
|
||||
}: let
|
||||
user-templates = snowfall-lib.fs.get-directories src;
|
||||
create-template-metadata = template: {
|
||||
create-template-metadata = template: let
|
||||
flake-file = template + "/flake.nix";
|
||||
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;
|
||||
merge-templates = templates: metadata:
|
||||
templates
|
||||
// {
|
||||
${metadata.name} =
|
||||
(overrides.${metadata.name} or {})
|
||||
// {
|
||||
inherit (metadata) path;
|
||||
};
|
||||
// (builtins.removeAttrs metadata ["name"]);
|
||||
};
|
||||
templates-without-aliases = foldl merge-templates {} templates-metadata;
|
||||
aliased-templates = mapAttrs (name: value: templates-without-aliases.${value}) alias;
|
||||
|
||||
Reference in New Issue
Block a user