{ pkgs ? import { }, }: 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 { }; }; in { lib = import ./lib { inherit pkgs; }; modules = import ./modules; overlays = import ./overlays; } // packages