From 6b482e433f7ffaa2a3cd8418921c57456b6360ba Mon Sep 17 00:00:00 2001 From: Ross Smyth <18294397+RossSmyth@users.noreply.github.com> Date: Wed, 19 Nov 2025 15:42:44 -0500 Subject: [PATCH] typstPackages: Make a dedicated Universe package builder --- .../ty/typst/build-universe-package.nix | 67 ++++++++++++------- pkgs/by-name/ty/typst/typst-packages.nix | 7 +- 2 files changed, 49 insertions(+), 25 deletions(-) diff --git a/pkgs/by-name/ty/typst/build-universe-package.nix b/pkgs/by-name/ty/typst/build-universe-package.nix index 0a399e044d35..a7628f6412dd 100644 --- a/pkgs/by-name/ty/typst/build-universe-package.nix +++ b/pkgs/by-name/ty/typst/build-universe-package.nix @@ -2,31 +2,50 @@ lib, buildTypstPackage, fetchzip, - # typstPackages from within the scope - packages, - hash, - description, - license, - typstDeps, - homepage ? null, + typstPackages, }: -buildTypstPackage (finalAttrs: { - inherit pname version; +lib.extendMkDerivation { + inheritFunctionArgs = false; + constructDrv = buildTypstPackage; - src = fetchzip { - inherit hash; - url = "https://packages.typst.org/preview/${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; - stripRoot = false; - }; + excludeDrvArgNames = [ + "description" + "hash" + "license" + "homepage" + "typstDeps" + ]; - typstDeps = builtins.filter (x: x != null) ( - lib.map (d: (lib.attrsets.attrByPath [ d ] null packages)) typstDeps - ); + extendDrvArgs = + finalAttrs: + { + pname, + version, + description, + hash, + license, + homepage ? null, + typstDeps ? [ ], + }: + { + src = fetchzip { + inherit hash; + url = "https://packages.typst.org/preview/${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; + stripRoot = false; + }; - meta = { - inherit description; - maintainers = with lib.maintainers; [ cherrypiejam ]; - license = lib.map (lib.flip lib.getAttr lib.licensesSpdx) license; - } - // (if homepage != null then { inherit homepage; } else { }); -}) + typstDeps = builtins.filter (x: x != null) ( + lib.map (d: (lib.attrsets.attrByPath [ d ] null typstPackages)) typstDeps + ); + + meta = { + inherit description; + maintainers = with lib.maintainers; [ + cherrypiejam + RossSmyth + ]; + license = lib.map (lib.flip lib.getAttr lib.licensesSpdx) license; + } + // lib.optionalAttrs (homepage != null) { inherit homepage; }; + }; +} diff --git a/pkgs/by-name/ty/typst/typst-packages.nix b/pkgs/by-name/ty/typst/typst-packages.nix index 841c44143de3..d8424763c1b5 100644 --- a/pkgs/by-name/ty/typst/typst-packages.nix +++ b/pkgs/by-name/ty/typst/typst-packages.nix @@ -9,6 +9,10 @@ let in lib.makeScope newScope ( self: + let + # Not public, so do not expose to the package set + buildUniversePackage = self.callPackage ./build-universe-package.nix { typstPackages = self; }; + in lib.foldlAttrs ( packageSet: pname: versionSet: packageSet @@ -16,7 +20,8 @@ lib.makeScope newScope ( subPackageSet: version: packageSpec: subPackageSet // { - ${toPackageName pname version} = self.callPackage ./build-universe-package.nix { + ${toPackageName pname version} = buildUniversePackage { + inherit pname version; inherit (packageSpec) hash description