Hi,
I’d like to patch luxe so that it can run on NixOS. NixOS has special difficulties compared to other linux distros, such as running applications in a read-only filesystem and requiring shared libraries to be explicitly specified for each individual binary.
I’ve so far configured luxe so that it has access to all of the shared libraries it specifies in the binary’s ELF header as needed, and additionally libGL. In this configuration, luxe does not log any errors. However, no window opens, and I don’t know why. It’s likely that I’m still missing a shared library dependency that is not specified in the ELF header and is linked at run-time.
Log File
luxe / Engine / Fri Jun 27 22:33:41 2025
luxe / Engine / path is `/home/mag/luxe/hm`
luxe / runtime / settings / loading `settings.lx`...
luxe / runtime / entry / parcel init took 8.745908737182617ms
luxe / runtime / setting log level `info`
luxe / sdl / 2.32.8
luxe / opengl / initializing
luxe / sdl / init failed SDL_INIT_HAPTIC
luxe / opengl / request / 8x antialiasing (engine.render.antialiasing)
luxe / opengl / request / core context (engine.render.opengl.core)
luxe / opengl / request / 3.3 (engine.render.opengl.major/minor)
luxe / sdl / creating window at `-88,24` with size `1200x720`
luxe / opengl / request / vsync? true (engine.render.vsync)
luxe / opengl / versions / GL `4.6 (Core Profile) Mesa 24.3.4` - GLSL `4.60`
luxe / opengl / request / debug logging (engine.render.opengl.debug_level = 3)
luxe / opengl / debug / enabled debug callback
luxe / render / init ok
luxe / runtime / entry / parcel loaded `425` items, which took 10.792970657348633ms
luxe / assets / dev / loading release parcel, 50 types
luxe / assets / release / - found type luxe: type/block_def.asset
luxe / assets / release / - found 54 artifacts
luxe / assets / dev / loading block_def.asset
luxe / assets / release / - loading block def `luxe: type/anim.asset`
luxe / assets / release / - loading block def `luxe: type/asset.meta.asset`
luxe / assets / release / - loading block def `luxe: type/audio.asset`
luxe / assets / release / - loading block def `luxe: type/audio.bus.asset`
luxe / assets / release / - loading block def `luxe: type/basis.asset`
luxe / assets / release / - loading block def `luxe: type/clip.asset`
luxe / assets / release / - loading block def `luxe: type/compute.asset`
luxe / assets / release / - loading block def `luxe: type/font.asset`
luxe / assets / release / - loading block def `luxe: type/font.face.asset`
luxe / assets / release / - loading block def `luxe: type/mesh.asset`
luxe / assets / release / - loading block def `luxe: type/scene.asset`
luxe / assets / release / - loading block def `luxe: type/skeleton.asset`
luxe / assets / release / - loading block def `luxe: type/stage.asset`
luxe / assets / release / - loading block def `luxe: type/text.style.asset`
luxe / assets / release / - loading block def `luxe: type/tiles.asset`
luxe / assets / release / - loading block def `luxe: type/tiles.brush.asset`
luxe / assets / release / - loading block def `luxe: type/tiles.visual.asset`
luxe / assets / release / - loading block def `luxe: debug/alloc.block`
luxe / assets / release / - loading block def `luxe: system/physics/cast_ray.block`
luxe / assets / release / - loading block def `luxe: system/physics/contact.block`
luxe / assets / release / - loading block def `luxe: system/transform.change.block`
luxe / assets / release / - loading block def `luxe: type/http/server.request.block`
luxe / assets / release / - loading block def `luxe: type/anim/material.anim_track`
luxe / assets / release / - loading block def `luxe: type/anim/modifier.anim_track`
luxe / assets / release / - loading block def `luxe: type/anim/skeleton_clip.anim_track`
luxe / assets / release / - loading block def `luxe: type/anim/sprite.frames.anim_track`
luxe / assets / release / - loading block def `luxe: pose/blend.pose_node`
luxe / assets / release / - loading block def `luxe: pose/ccdik.pose_node`
luxe / assets / release / - loading block def `luxe: pose/clip.pose_node`
luxe / assets / release / - loading block def `luxe: pose/look_at_ik.pose_node`
luxe / assets / release / - loading block def `luxe: pose/two_bone_ik.pose_node`
luxe / assets / release / - loading block def `luxe: type/modifier.asset.meta`
luxe / assets / release / - loading block def `luxe: system/physics/body3D.modifier`
luxe / assets / release / - loading block def `luxe: system/physics/box_collider3D.modifier`
luxe / assets / release / - loading block def `luxe: system/physics/capsule_collider3D.modifier`
luxe / assets / release / - loading block def `luxe: system/physics/character3D.modifier`
luxe / assets / release / - loading block def `luxe: system/physics/mesh_collider3D.modifier`
luxe / assets / release / - loading block def `luxe: system/physics/physics3D.modifier`
luxe / assets / release / - loading block def `luxe: system/physics/sphere_collider3D.modifier`
luxe / assets / release / - loading block def `luxe: system/anim.modifier`
luxe / assets / release / - loading block def `luxe: system/camera.modifier`
luxe / assets / release / - loading block def `luxe: system/mesh.modifier`
luxe / assets / release / - loading block def `luxe: system/nav.modifier`
luxe / assets / release / - loading block def `luxe: system/skeleton.modifier`
luxe / assets / release / - loading block def `luxe: system/skin.modifier`
luxe / assets / release / - loading block def `luxe: system/sound.modifier`
luxe / assets / release / - loading block def `luxe: system/sprite.modifier`
luxe / assets / release / - loading block def `luxe: system/tags.modifier`
luxe / assets / release / - loading block def `luxe: system/text.modifier`
luxe / assets / release / - loading block def `luxe: system/tiles.modifier`
luxe / assets / release / - loading block def `luxe: system/transform.modifier`
luxe / assets / release / - loading block def `luxe: system/values.modifier`
luxe / assets / release / - loading block def `luxe: system/vfx.modifier`
luxe / assets / release / - loading block def `luxe: system/wires.modifier`
luxe / assets / release / - found type luxe: type/asset.meta.asset
luxe / assets / release / - found block 2097153, contains 0 assets
luxe / assets / release / - found 1 artifacts
luxe / assets / release / - found type luxe: type/mesh.asset
luxe / assets / release / - found block 2097155, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/clip.asset
luxe / assets / release / - found block 2097156, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/material.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/skeleton.asset
luxe / assets / release / - found block 2097157, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/mesh.preset.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/mesh.fbx.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/mesh.glb.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/mesh.gltf.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/mesh.obj.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/image.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/basis.asset
luxe / assets / release / - found block 2097158, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/loc.pot.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/audio.asset
luxe / assets / release / - found block 2097174, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/audio.wav.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/image.psd.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/image.png.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/prototype.asset
luxe / assets / release / - found 2 artifacts
luxe / assets / release / - found type luxe: type/scene.asset
luxe / assets / release / - found block 2097219, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/entity.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/script.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/modifier.asset
luxe / assets / release / - found 22 artifacts
luxe / assets / release / - found type luxe: type/audio.bus.asset
luxe / assets / release / - found block 2097286, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/tiles.brush.asset
luxe / assets / release / - found block 2097287, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/font.face.asset
luxe / assets / release / - found block 2097288, contains 5 assets
luxe / assets / release / - found 5 artifacts
luxe / assets / release / - found type luxe: type/font.asset
luxe / assets / release / - found block 2097289, contains 5 assets
luxe / assets / release / - found 5 artifacts
luxe / assets / release / - found type luxe: type/text.style.asset
luxe / assets / release / - found block 2097290, contains 2 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/font.face.ttf.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/loc.po.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/stage.asset
luxe / assets / release / - found block 2097323, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/image.tga.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/image.jpg.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/compute.asset
luxe / assets / release / - found block 2097324, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/atlas.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/pose_node.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/audio.mp3.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/tiles.visual.asset
luxe / assets / release / - found block 2097325, contains 1 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/tiles.asset
luxe / assets / release / - found block 2097330, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/anim.track.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/anim.asset
luxe / assets / release / - found block 2097331, contains 0 assets
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/audio.flac.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/audio.ogg.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/block.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/physics.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/font.face.otf.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/image.hdr.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/sys.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/image.exr.asset
luxe / assets / release / - found 0 artifacts
luxe / assets / release / - found type luxe: type/task.asset
luxe / assets / release / - found 0 artifacts
luxe / runtime / entry / release parcel loaded, which took 7.581949234008789ms
luxe / render / init renderer script `renderer`
[renderer line 8] - game / render / init / ok
[luxe/imports line 1] - luxe / runtime / script / imports...
luxe / assets / input / no entry input specified
[code/modules line 29] - refreshing available editor versions...
[code/modules line 69] - refreshing available engine versions...
luxe / world / camera / set default camera `<unknown>` (2097155) in world `world.N3HGz1` (2097153)
[states: states line 78] - augment / states / logging / enabled `false`
[code/modules line 234] - HTTPResponse = status:200 done:true body:12324 `12324/12324` `{ETag: W/"3024-shFgOJzrIVMvku8IxY1h2SgOO9U", Server: nginx, Content-Type: application/json; charset=utf-8, X-Powered-By: Express, Connection: close, Date: Fri, 27 Jun 2025 21:33:41 GMT, Content-Length: 12324}`
[code/page/landing line 297] - got latest version for `luxe-agent` as `2025.6.5`
[code/modules line 234] - HTTPResponse = status:200 done:true body:29985 `29985/29985` `{ETag: W/"7521-DziC8eQArzM/lqXb1EmtJC4k1CM", Server: nginx, Content-Type: application/json; charset=utf-8, X-Powered-By: Express, Connection: close, Date: Fri, 27 Jun 2025 21:33:41 GMT, Content-Length: 29985}`
[code/page/landing line 297] - got latest version for `luxe-editor` as `2025.6.5`
[code/modules line 234] - HTTPResponse = status:200 done:true body:107278 `107278/107278` `{ETag: W/"1a30e-rWssIPk+vQp23q6A/P4/fidTyuI", Server: nginx, Content-Type: application/json; charset=utf-8, X-Powered-By: Express, Connection: close, Date: Fri, 27 Jun 2025 21:33:41 GMT, Content-Length: 107278}`
[code/page/landing line 297] - got latest version for `luxe` as `2025.6.5`
[code/page/landing line 307] - - checking if has local `luxe` @ `2025.6.5` - `false`
[code/page/landing line 307] - - checking if has local `luxe-editor` @ `2025.6.5` - `false`
[code/page/landing line 307] - - checking if has local `luxe-agent` @ `2025.6.5` - `false`
My nix configuration for luxe is available here: mag/luxe-nix-flake
If there are shared libraries that are linked at runtime, those are the likely culprits. Alternatively, if the source of luxe is available somewhere and I missed it, then I’d appreciate it if you could point me toward it. Building applications from source is preferred in the nix ecosystem, over patching existing binaries.
Thanks in advance for any insight you can offer (: