Something went wrong. Try again.
lol
Something went wrong. Try again.
2.6 kB · 94 lines
Nix
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495{ lib, fetchgit, fetchFromGitHub, fetchFromGitLab, fetchFromGitea, python3, poetry, buildMaubotPlugin,}:
let json = builtins.fromJSON (builtins.readFile ./generated.json);in
lib.flip builtins.mapAttrs json ( name: entry: let inherit (entry) manifest;
resolveDeps = deps: map ( name: let packageName = builtins.head (builtins.match "([^~=<>@]*).*" name); lower = lib.toLower packageName; dash = builtins.replaceStrings [ "_" ] [ "-" ] packageName; lowerDash = builtins.replaceStrings [ "_" ] [ "-" ] lower; in python3.pkgs.${packageName} or python3.pkgs.${lower} or python3.pkgs.${dash} or python3.pkgs.${lowerDash} or null ) (builtins.filter (x: x != "maubot" && x != null) deps);
reqDeps = resolveDeps (lib.toList (manifest.dependencies or null)); optDeps = resolveDeps (lib.toList (manifest.soft_dependencies or null)); in
lib.makeOverridable buildMaubotPlugin ( entry.attrs // { pname = manifest.id; inherit (manifest) version;
src = if entry ? github then fetchFromGitHub entry.github else if entry ? git then fetchgit entry.git else if entry ? gitlab then fetchFromGitLab entry.gitlab else if entry ? gitea then fetchFromGitea entry.gitea else throw "Invalid generated entry for ${manifest.id}: missing source";
propagatedBuildInputs = builtins.filter (x: x != null) (reqDeps ++ optDeps);
passthru.isOfficial = entry.isOfficial or false;
meta = entry.attrs.meta // { license = let spdx = entry.attrs.meta.license or manifest.license or "unfree"; spdxLicenses = builtins.listToAttrs ( map (x: lib.nameValuePair x.spdxId x) ( builtins.filter (x: x ? spdxId) (builtins.attrValues lib.licenses) ) ); in spdxLicenses.${spdx}; broken = builtins.elem null reqDeps; }; } // lib.optionalAttrs (entry.isPoetry or false) { nativeBuildInputs = [ poetry (python3.withPackages ( p: with p; [ toml ruamel-yaml isort ] )) ];
preBuild = lib.optionalString (entry ? attrs.preBuild) (entry.attrs.preBuild + "\n") + '' export HOME=$(mktemp -d) [[ ! -d scripts ]] || patchShebangs --build scripts make maubot.yaml ''; } ))