{ pkgs ? import { }, wrapper-manager, }: let recursiveMerge = with pkgs.lib; attrList: let f = attrPath: zipAttrsWith ( n: values: if tail values == [ ] then head values else if all isList values then unique (concatLists values) else if all isAttrs values then f (attrPath ++ [ n ]) values else last values ); in f [ ] attrList; callPackage = pkgs.lib.callPackageWith (recursiveMerge [ pkgs packages ]); packages = { python3Packages = { ascii = callPackage ./pkgs/python3Packages/ascii.nix { }; pyease-grpc = callPackage ./pkgs/python3Packages/pyease-grpc.nix { }; pyexecjs = callPackage ./pkgs/python3Packages/pyexecjs.nix { }; }; sorremacs = callPackage ./pkgs/sorremacs { }; lightnovel-crawler = callPackage ./pkgs/lightnovel-crawler.nix { }; }; wm-eval = wrapper-manager.lib { inherit pkgs; modules = [ ./wrappers/gallery-dl ]; }; in { lib = import ./lib { inherit pkgs; }; modules = import ./modules; overlays = import ./overlays; wrappers = wm-eval.config.build.packages; } // packages