From adbd6680dc1cff6b7cb804c5a0fa60ea36bad75a Mon Sep 17 00:00:00 2001 From: anntnzrb Date: Wed, 8 Oct 2025 23:28:02 -0500 Subject: [PATCH] refactor(internal): add create-simple-derivations helper --- snowfall-lib/internal/default.nix | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/snowfall-lib/internal/default.nix b/snowfall-lib/internal/default.nix index 6542dbd..16c475c 100644 --- a/snowfall-lib/internal/default.nix +++ b/snowfall-lib/internal/default.nix @@ -12,6 +12,8 @@ let isFunction ; + inherit (core-inputs.flake-utils-plus.lib) filterPackages; + core-inputs-libs = snowfall-lib.flake.get-libs (snowfall-lib.flake.without-self core-inputs); user-inputs-libs = snowfall-lib.flake.get-libs (snowfall-lib.flake.without-self user-inputs); @@ -63,5 +65,37 @@ in { internal = { inherit system-lib user-lib; + + create-simple-derivations = { + type, + channels, + src ? snowfall-lib.fs.get-snowfall-file type, + pkgs ? channels.nixpkgs, + overrides ? {}, + alias ? {}, + }: + let + user-items = snowfall-lib.fs.get-default-nix-files-recursive src; + + create-metadata = item: { + name = snowfall-lib.path.get-output-name item; + drv = callPackageWith ( + pkgs // { + inherit channels; + lib = system-lib; + inputs = snowfall-lib.flake.without-src user-inputs; + namespace = snowfall-config.namespace; + } + ) item {}; + }; + + items-metadata = builtins.map create-metadata user-items; + + merge-items = items: metadata: + items // { ${metadata.name} = metadata.drv; }; + + items = snowfall-lib.attrs.merge-with-aliases merge-items items-metadata alias // overrides; + in + filterPackages pkgs.stdenv.hostPlatform.system items; }; }