From f2d014e203549fda585ac55dd8cefad7e91c7802 Mon Sep 17 00:00:00 2001 From: TakodaS Date: Tue, 4 Mar 2025 16:55:55 +0000 Subject: [PATCH 1/2] add automatic template description --- snowfall-lib/template/default.nix | 58 +++++++++++++++++-------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/snowfall-lib/template/default.nix b/snowfall-lib/template/default.nix index ab73f5e..ca7c439 100644 --- a/snowfall-lib/template/default.nix +++ b/snowfall-lib/template/default.nix @@ -3,12 +3,14 @@ user-inputs, snowfall-lib, snowfall-config, -}: let +}: +let inherit (builtins) baseNameOf; inherit (core-inputs.nixpkgs.lib) assertMsg foldl mapAttrs; user-templates-root = snowfall-lib.fs.get-snowfall-file "templates"; -in { +in +{ template = { ## Create flake templates. ## @@ -22,31 +24,35 @@ in { ## { another-template = ...; my-template = ...; default = ...; } ## ``` #@ Attrs -> Attrs - create-templates = { - src ? user-templates-root, - overrides ? {}, - alias ? {}, - }: let - user-templates = snowfall-lib.fs.get-directories src; - create-template-metadata = template: { - name = builtins.unsafeDiscardStringContext (baseNameOf template); - path = template; - }; - templates-metadata = builtins.map create-template-metadata user-templates; - merge-templates = templates: metadata: - templates - // { - ${metadata.name} = - (overrides.${metadata.name} or {}) - // { - inherit (metadata) path; - }; + create-templates = + { + src ? user-templates-root, + overrides ? { }, + alias ? { }, + }: + let + user-templates = snowfall-lib.fs.get-directories src; + create-template-metadata = template: { + name = builtins.unsafeDiscardStringContext (baseNameOf template); + path = template; + inherit (import (template + "/flake.nix")) description; }; - templates-without-aliases = foldl merge-templates {} templates-metadata; - aliased-templates = mapAttrs (name: value: templates-without-aliases.${value}) alias; - unused-overrides = builtins.removeAttrs overrides (builtins.map (metadata: metadata.name) templates-metadata); - templates = templates-without-aliases // aliased-templates // unused-overrides; - in + templates-metadata = builtins.map create-template-metadata user-templates; + merge-templates = + templates: metadata: + templates + // { + ${metadata.name} = (overrides.${metadata.name} or { }) // { + inherit (metadata) path description; + }; + }; + templates-without-aliases = foldl merge-templates { } templates-metadata; + aliased-templates = mapAttrs (name: value: templates-without-aliases.${value}) alias; + unused-overrides = builtins.removeAttrs overrides ( + builtins.map (metadata: metadata.name) templates-metadata + ); + templates = templates-without-aliases // aliased-templates // unused-overrides; + in templates; }; } From 28059063dbda2176b1097aa02e7bf379df0cb0e7 Mon Sep 17 00:00:00 2001 From: TakodaS Date: Tue, 4 Mar 2025 17:18:40 +0000 Subject: [PATCH 2/2] format --- snowfall-lib/template/default.nix | 59 +++++++++++++++---------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/snowfall-lib/template/default.nix b/snowfall-lib/template/default.nix index ca7c439..945fd8d 100644 --- a/snowfall-lib/template/default.nix +++ b/snowfall-lib/template/default.nix @@ -3,14 +3,12 @@ user-inputs, snowfall-lib, snowfall-config, -}: -let +}: let inherit (builtins) baseNameOf; inherit (core-inputs.nixpkgs.lib) assertMsg foldl mapAttrs; user-templates-root = snowfall-lib.fs.get-snowfall-file "templates"; -in -{ +in { template = { ## Create flake templates. ## @@ -24,35 +22,34 @@ in ## { another-template = ...; my-template = ...; default = ...; } ## ``` #@ Attrs -> Attrs - create-templates = - { - src ? user-templates-root, - overrides ? { }, - alias ? { }, - }: - let - user-templates = snowfall-lib.fs.get-directories src; - create-template-metadata = template: { - name = builtins.unsafeDiscardStringContext (baseNameOf template); - path = template; - inherit (import (template + "/flake.nix")) description; - }; - templates-metadata = builtins.map create-template-metadata user-templates; - merge-templates = - templates: metadata: - templates - // { - ${metadata.name} = (overrides.${metadata.name} or { }) // { + create-templates = { + src ? user-templates-root, + overrides ? {}, + alias ? {}, + }: let + user-templates = snowfall-lib.fs.get-directories src; + create-template-metadata = template: { + name = builtins.unsafeDiscardStringContext (baseNameOf template); + path = template; + inherit (import (template + "/flake.nix")) description; + }; + templates-metadata = builtins.map create-template-metadata user-templates; + merge-templates = templates: metadata: + templates + // { + ${metadata.name} = + (overrides.${metadata.name} or {}) + // { inherit (metadata) path description; }; - }; - templates-without-aliases = foldl merge-templates { } templates-metadata; - aliased-templates = mapAttrs (name: value: templates-without-aliases.${value}) alias; - unused-overrides = builtins.removeAttrs overrides ( - builtins.map (metadata: metadata.name) templates-metadata - ); - templates = templates-without-aliases // aliased-templates // unused-overrides; - in + }; + templates-without-aliases = foldl merge-templates {} templates-metadata; + aliased-templates = mapAttrs (name: value: templates-without-aliases.${value}) alias; + unused-overrides = builtins.removeAttrs overrides ( + builtins.map (metadata: metadata.name) templates-metadata + ); + templates = templates-without-aliases // aliased-templates // unused-overrides; + in templates; }; }