{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 = "686a85330f59b2d4373f37d8a009d4763607ca19"; sha256 = "1kxdhf5x97qhm8v1cbi4dnbvj01i1kh66cyhwad60vw60d9lz0az"; }; 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"; }); in { workadventure-hasi = wapkgs.workadventure-hasi; workadventure-tcm = wapkgs.workadventure-tcm; }