+
<% if @locked_files > 0 %>
<%= t(".preview", count: @locked_files) %>
<% end %>
diff --git a/manyfold/usr/src/app/config/initializers/xrforge.rb b/manyfold/usr/src/app/config/initializers/xrforge.rb
index bd21b36..bc616df 100644
--- a/manyfold/usr/src/app/config/initializers/xrforge.rb
+++ b/manyfold/usr/src/app/config/initializers/xrforge.rb
@@ -31,7 +31,7 @@ Rails.application.config.to_prepare do
# Use `write` to set the new time. Caching a string representation is often safer/easier.
Rails.cache.write(cache_key, now.to_s, expires_in: ttl + 3.second)
- puts "[app/config/initializers/xrforge.rb] running hook\n"
+ puts "[app/config/initializers/xrforge.rb] running hook #{file}\n"
Bundler.with_unbundled_env do
#`TS_SLOTS=5 ts /manyfold/cli/manyfold.sh hook experience_updated #{file} &`
`/manyfold/cli/manyfold.sh hook experience_updated #{file}`
diff --git a/manyfold/usr/src/app/public/assets/lobby.png b/manyfold/usr/src/app/public/assets/lobby.png
new file mode 100644
index 0000000..fbee904
Binary files /dev/null and b/manyfold/usr/src/app/public/assets/lobby.png differ
diff --git a/nix/docker.nix b/nix/docker.nix
index 487ec9c..c1f842d 100644
--- a/nix/docker.nix
+++ b/nix/docker.nix
@@ -38,6 +38,68 @@ let
finalImageTag = "latest";
};
+ #### JANUSXR Stack
+
+ janusweb = builtins.fetchTarball {
+ url = "https://github.com/coderofsalvation/janusweb/releases/download/1.5.56-xrf/janusweb-1.5.56.tar.gz";
+ # Get the SHA256 hash by running: nix-prefetch-url --unpack
+ sha256 = "0zkmfv07zxdf1nkhgr4g959fj86p2yp9f7n1ll1zyhlm186sfh31";
+ };
+
+ # Fetch the source from the GitHub tag
+ corsanywhere = pkgs.fetchzip {
+ url = "https://github.com/Rob--W/cors-anywhere/archive/0.4.4.tar.gz";
+ # You need to calculate the correct SHA256 hash for version 0.4.4
+ # You can get this by running 'nix-prefetch-url --unpack https://github.com/Rob--W/cors-anywhere/archive/0.4.4.tar.gz'
+ sha256 = "0zb3xzlpbc400rvibm66qb27y0lla8sml1ns41ksxcc0l0kp0bwz";
+ };
+
+ janusServer = pkgs.fetchurl {
+ url = "https://github.com/janusvr/janus-server/releases/download/v0.2.1/janus_server-linux";
+ # You can calculate the hash using: nix-prefetch-url https://...
+ sha256 = "1rrmabvqn4lm7c2k1q2crqwyk7lvpmfihc3hx3qx2hzsjyp5v3ja";
+ name = "janus_server-linux";
+ };
+
+ ## 2. Create a minimal derivation to make the file executable
+ #janusServerBin = pkgs.stdenv.mkDerivation {
+ # pname = "janus-server";
+ # version = "1.0";
+ # src = janusServer;
+ # dontUnpack = true;
+ # dontBuild = true;
+ # installPhase = ''
+ # mkdir -p $out/bin
+ # cp $src $out/bin/janus_server-linux
+ # chmod +x $out/bin/janus_server-linux
+ # '';
+ #};
+
+ janus = pkgs.runCommand "janusweb-content" {} ''
+ mkdir -p $out/mnt/janusweb $out/root/corsanywhere $out/root
+ cp -rT ${janusweb} $out/mnt/janusweb
+ cp -rT ${corsanywhere} $out/root/corsanywhere/.
+ cp -rT ${janusServer} $out/root/janus_server-linux
+ '';
+
+ #### XR FRAGMENTS
+
+ ## $ nix-shell -p nix-prefetch-git --command 'nix-prefetch-git https://codeberg.org/coderofsalvation/xrfragment.git '
+ xrfragmentsRepo = pkgs.fetchFromGitea {
+ "domain" = "codeberg.org";
+ "owner" = "coderofsalvation";
+ "repo" = "xrfragment";
+ "rev" = "823736a74dbdabd46924ebbc3dc58a076c3c900b";
+ "hash" = "sha256-P/RVwoDu0EYfwc0n2h1f4j0JZshtE4AtQsTU9iEkAcA=";
+ };
+
+ xrfragments = pkgs.runCommand "xrfragments-content" {} ''
+ mkdir -p $out/mnt/asset/xrfragments $out/mnt/templates/xrfragments
+ cp -r ${xrfragmentsRepo}/assets/library $out/mnt/asset/xrfragments/\#1
+ find ${xrfragmentsRepo}//assets/template -maxdepth 1 -mindepth 1 -type d | awk '{ system("cp -r "$0" '$out'/mnt/templates/xrfragments/#"(NR+1)) }'
+ '';
+
+
## generate the reproducable blob below via:
## $ nix-shell -p nix-prefetch-github --command 'nix-prefetch-github assimp assimp --rev e778c84cd62bc8b38d8e491ad3d2c27cb8ed37d5'
#assimpSrc = pkgs.fetchFromGitHub {
@@ -66,19 +128,23 @@ rec
# add nix pkgs + local files
copyToRoot = pkgs.buildEnv {
name = "image-root";
- pathsToLink = ["/manyfold" "/bin" ];
+ pathsToLink = ["/manyfold" "/bin" "/mnt" "/root"];
paths = [
#pkgs.pkgsStatic.rsync
pkgs.rsync
pkgs.sqlite
pkgs.rclone
pkgs.fuse3
+ pkgs.janus-gateway # webrtc voip for JanusXR
+ pkgs.nodejs_20 # for corsanywhere
#pkgs.acl # getfacl e.g.
#pkgs.inotify-tools # inotifywait e.g.
pkgs.zip # inotifywait e.g.
pkgs.assimp
##pkgs.ts # job management
#myAssimp # updated build of assimp
+ janus
+ xrfragments
../.
];
};