{pkgs, lib, ...}: let codingmachine = pkgs.fetchFromGitHub { owner = "thecodingmachine"; repo = "workadventure"; rev = "6e9c71598004dc9cbab9418efb3c0ac892da7ca2"; sha256 = "0rvra0dy631al4aylacyqldkyd6biawz2shsikgcy30nv5lzc78c"; }; hasi = pkgs.fetchgit { url = "https://gitlab.hasi.it/herzi/project/workadventure"; rev = "c7303a458d8de3d3aa095738987d089e62684a1a"; sha256 = "0gbax61jd6bdhql94mfyqabih20y9an042c5bixqkpk0rzv0c95l"; }; tabascoeye = pkgs.fetchFromGitHub { owner = "tabascoeye"; repo = "workadventure"; rev = "1824ce3ad469693c0d7bd0dbbd0fc84246889fdd"; sha256 = "1h5wx5v09hlx680pq1rpzadzc2cylmyx0szxmpsjvilnnv7vplhd"; }; wapkgs = lib.fix (self: let mkWorkadventureset = waSelf: workadventuresrc: name: let callWaPackage = path: lib.callPackageWith # some parts of workadventure depend on other parts of workadventure (self // { workadventure = waSelf;}) (import path workadventuresrc name); in { back = callWaPackage ./back {}; pusher = callWaPackage ./pusher {}; messages = callWaPackage ./messages {}; front = callWaPackage ./front {}; uploader = callWaPackage ./uploader {}; maps = callWaPackage ./maps {}; }; in pkgs // rec { workadventure-hasi = mkWorkadventureset workadventure-hasi hasi "hasi"; workadventure-tcm = mkWorkadventureset workadventure-tcm codingmachine "tcm"; workadventure-tabascoeye = mkWorkadventureset workadventure-tabascoeye tabascoeye "tabascoeye"; }); in { workadventure-hasi = pkgs.lib.mapAttrs (name: pkg: pkg.overrideAttrs(old: { meta.broken = true; })) wapkgs.workadventure-hasi; workadventure-tcm = wapkgs.workadventure-tcm; workadventure-tabascoeye = wapkgs.workadventure-tabascoeye; }