Sound Card Control App Won't Run - Probably needs nix pkg?

Hello! First post here and new to NixOS in the past week or so, as well.

In case it matters, my “system.stateVersion” is 24.11, and I’m tracking nix-unstable. I will also mention that I am not a software developer or computer programmer by trade and have very little formal training in that area.

I’m in the middle of trying to get my system set up primarily for gaming and music production, and I’ve hit a small snag.

I use a MOTU Ultralite mk5 as my audio interface/sound card, which works very nicely on Linux in general. It’s not officially supported, but one of the MOTU engineers was kind enough to publish an unofficial build of the control application in this thread over on linuxmusicians.com.

Per the post, the app can be downloaded at this Google Drive link and the MD5 Sum is: 9479774d594ca9f5e80c876fd62eacb3

On most distros, you use this app simply by unzipping the tar.gz, and running a file titled “com.motu.cuemix5”. The GUI opens right up and connects to my interface immediately. As I understand it, it’s just a web app compiled with Electron, and it connects to the IP of the USB-connected interface.

Unfortunately, when I try to run the aforementioned file by double clicking in Nautilus, nothing happens. When I try to run it via nix-shell, this is what I get:

nix-shell -p run com.motu.cuemix5
error:
       … while calling the 'derivationStrict' builtin
         at <nix/derivation-internal.nix>:34:12:
           33|
           34|   strict = derivationStrict drvAttrs;
             |            ^
           35|

       … while evaluating derivation 'shell'
         whose name attribute is located at /nix/store/sznkl4iwqvxprlg05fx24xx8bd8j7y6l-source/pkgs/stdenv/generic/make-derivation.nix:375:7

       … while evaluating attribute 'buildInputs' of derivation 'shell'
         at /nix/store/sznkl4iwqvxprlg05fx24xx8bd8j7y6l-source/pkgs/stdenv/generic/make-derivation.nix:422:7:
          421|       depsHostHost                = elemAt (elemAt dependencies 1) 0;
          422|       buildInputs                 = elemAt (elemAt dependencies 1) 1;
             |       ^
          423|       depsTargetTarget            = elemAt (elemAt dependencies 2) 0;

       (stack trace truncated; use '--show-trace' to show the full, detailed trace)

       error: undefined variable 'com'
       at «string»:1:113:
            1| {...}@args: with import <nixpkgs> args; (pkgs.runCommandCC or pkgs.runCommand) "shell" { buildInputs = [ (run) (com.motu.cuemix5) ]; } ""
             |                                                                                                                 ^

My suspicion at this point is that I need to figure out how to package it in a way that Nix can use it, but being very new to NixOS, I’m not sure. I also don’t really know where to go for resources on that, so anything would be greatly appreciated.

This wiki page explains the problem and offers some solutions: Packaging/Binaries - NixOS Wiki

1 Like

I’m happy to assist with packaging if you have any questions—I don’t have the hardware to be able to test locally, however.

1 Like

Thank you both so much! I’ll see if I can get it working with autoPatchelfHook and report back with results.

1 Like

With some help from a friendly large language model and the above info on autoPatchelfHook, I’ve arrived at a nix expression that builds, but it still doesn’t do anything. Here’s my code currently:

{ pkgs ? import <nixpkgs> {} }:

pkgs.stdenv.mkDerivation {
  pname = "motu-cuemix5";
  version = "1.0.0";  # Unofficial release of initial version

  src = pkgs.fetchurl {
    url = "https://raw.githubusercontent.com/Chandler-ME/MOTU-CueMix5-Linux/main/com.motu.CueMix5-1.0.0.tar.gz";
    sha256 = "69b9f6408006e37295f5d55ebef223d24818c8549404c255b894fd28a45883f1";
  };

  # Specify build inputs (libraries and tools needed for building)
  buildInputs = [
    pkgs.gcc                # GNU Compiler Collection
    pkgs.glibc              # GNU C Library
  ];

  # Specify native build inputs
  nativeBuildInputs = [ pkgs.gzip pkgs.patchelf pkgs.autoPatchelfHook ];

  # Define the unpack phase to handle the tar.gz file
  unpackPhase = ''
    mkdir -p $out
    tar -xzf $src -C $out --strip-components=1
  '';

  # Define the install phase
  installPhase = ''
    mkdir -p $out/bin
    cp $out/com.motu.cuemix5 $out/bin/
    chmod +x $out/bin/com.motu.cuemix5
  '';

  # Use autoPatchelfHook to automatically set the RPATH
  postInstall = ''
    # Call autoPatchelfHook to patch the binary
    autoPatchelfHook
  '';

  # Optionally, you can add a shell hook to set LD_LIBRARY_PATH if needed
  shellHook = ''
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$out/lib
  '';
}

As far as I can tell, it’ll pull and unpack the tarball (which I’ve moved to my own GitHub repo), but then it clearly doesn’t know what to do with the files in the tarball because I still get this error when I try to run the program using ./result/bin/com.motu.cuemix5:

Could not start dynamically linked executable: ./result/bin/com.motu.cuemix5
NixOS cannot run dynamically linked executables intended for generic
linux environments out of the box. For more information, see:
https://nix.dev/permalink/stub-ld

That makes it clear enough that it’s not getting everything it needs from the tarball, but it becomes really clear when I check using ldd:

	linux-vdso.so.1 (0x00007f636c888000)
	libffmpeg.so => not found
	libdl.so.2 => /nix/store/cmpyglinc9xl9pr4ymx8akl286ygl64x-glibc-2.40-66/lib/libdl.so.2 (0x00007f636c87d000)
	libpthread.so.0 => /nix/store/cmpyglinc9xl9pr4ymx8akl286ygl64x-glibc-2.40-66/lib/libpthread.so.0 (0x00007f636c878000)
	libgmodule-2.0.so.0 => not found
	libgobject-2.0.so.0 => not found
	libglib-2.0.so.0 => not found
	libxshmfence.so.1 => not found
	libgio-2.0.so.0 => not found
	libnss3.so => not found
	libnssutil3.so => not found
	libsmime3.so => not found
	libnspr4.so => not found
	libatk-1.0.so.0 => not found
	libatk-bridge-2.0.so.0 => not found
	libdbus-1.so.3 => not found
	libdrm.so.2 => not found
	libgtk-3.so.0 => not found
	libpango-1.0.so.0 => not found
	libcairo.so.2 => not found
	libgdk_pixbuf-2.0.so.0 => not found
	libm.so.6 => /nix/store/cmpyglinc9xl9pr4ymx8akl286ygl64x-glibc-2.40-66/lib/libm.so.6 (0x00007f6363f17000)
	libX11.so.6 => not found
	libXcomposite.so.1 => not found
	libXdamage.so.1 => not found
	libXext.so.6 => not found
	libXfixes.so.3 => not found
	libXrandr.so.2 => not found
	libexpat.so.1 => not found
	libxcb.so.1 => not found
	libxkbcommon.so.0 => not found
	libgbm.so.1 => not found
	libasound.so.2 => not found
	libatspi.so.0 => not found
	libcups.so.2 => not found
	libgcc_s.so.1 => /nix/store/4vm6fj41qg4b4m99zlklvcxwfg6jvrja-xgcc-14-20241116-libgcc/lib/libgcc_s.so.1 (0x00007f636c83e000)
	libc.so.6 => /nix/store/cmpyglinc9xl9pr4ymx8akl286ygl64x-glibc-2.40-66/lib/libc.so.6 (0x00007f6363c00000)
	/lib64/ld-linux-x86-64.so.2 => /nix/store/cmpyglinc9xl9pr4ymx8akl286ygl64x-glibc-2.40-66/lib64/ld-linux-x86-64.so.2 (0x00007f636c88a000)

In other iterations of my nix expression, I’ve tried using patchelf to manually set the rpath (with help from GPT-4o mini), and I’ve also tried just plastering everything from that ldd into the buildInputs, but neither of those has helped. There are also a lot of dependencies that clearly don’t actually exist in nixpkgs because like half of them throw errors when I go to build.

So I’m not exactly sure where to go from here. I feel like there might be some simple fix to this that I’m not aware of, but again I really don’t know. This nix.dev link has a section all about running non-nix executables, so maybe I need to try one of the other strategies?

For clarity, here are the contents of the tarball that I’m trying to use. And again, on my Pop!_OS system, you just unpack the tarball and run com.motu.cuemix5 and the GUI pops right up.




Right, the LLM dreamt up some stuff without understanding it, as usual. Using patchelf to fix up the binary is probably the most technically involved way of doing it, though it does result in the most clean NixOS integration.

There are, however, simpler alternatives. The easiest is probably steam-run; just install it and run steam-run <your-binary>. This is also mentioned on the wiki page I linked, albeit with little fanfare.

The way that works is that it sets up a sandbox that behaves as if it were something like ubuntu, and it then sets up an environment capable of running steam. Since steam requires a whole bunch of graphics libraries and such, it’s quite generic, and therefore the sandbox is capable of running quite a lot of stuff. Try that before we go further down the path of other more involved techniques.


To actually engage with all the work and learning you put in though; Your debugging is predicated on the fact that ldd tells you correctly what the binary asks for, however ldd executes the dynamic linker itself to get this information. So, crucially, it will always look like the dynamic linker is set up correctly:

This, however, is a LIE - the dynamic linker isn’t remapped, and since it is technically the thing actually executing your binary, you instead get the message about the stub linker. We never even get to the point of missing dependencies; your derivation failed to patch the most important thing.

As for the LLM slop, I have some comments. I can’t guarantee this will fix your issues, since it’s still kinda sorta half-right, but I can at least explain the questionable contents of your derivation so that the human can learn and knows what to ignore in the future:

nits and details around your derivation

I guess… But if you use pkgs.fetchzip (or better yet, fetchFromGitHub) you don’t have to unpack anything.

This… does kinda work, but only because we abused the unpackPhase and already did the install there. If we use the correct fetcher, we can instead:

install -D com.motu.cuemix5 $out/bin/com.motu.cuemix5

… using the install command as a shortcut to the other three commands for style.

That said, this is a prepackaged binary, so it’s likely going to assume all the other stuff in the tarball is in the same place and not work if you move around the binary like this. For packages like this, we probably should just:

cp -r . $out
# It's a tarball, the executable is probably already +x

This’ll be enough for now; you should be able to find the binary in ./result to execute. If we get it working I’ll be happy to show you how to add a wrapper binary and clean this up.

Those are part of the environment that stdenv.mkDerivation creates and completely superfluous here. Not that you even explicitly need gcc in this context, you’re not compiling anything.

You’re not using gzip for anything and patchelf is already in the environment, just like gcc. The only correct thing so far is putting autoPatchelfHook in the nativeBuildInputs

This never gets run because we’ve overridden the default installPhase and don’t execute postInstall there. We should anyway not define this, because that hook is included in the autoPatchelfHook derivation, which we’ve added to nativeBuildInputs. Any hooks included by derivations are executed automatically if they are added there.

Not that this matters, this hook executes during the fixupPhase, so this shouldn’t have broken it.

Shellhooks have nothing to do with what you’re trying here, and this wouldn’t even help since your dynamic linker path is wrong to begin with.

… so yeah, you can remove most of that code. autoPatchelf should tell you at build time if it cannot find certain libraries, so this should not successfully build; I’m not sure why it doesn’t patch anything, I simply hope that between all of the extra stuff in your derivation there is something that accidentally breaks the fixupPhase.

1 Like

Thank you so much for your help! The LLM has been an exercise in giving me a pretty dubious starting point for my expression… but at least it’s given me lots of “fun” errors to figure my way through.

We’re off to an interesting start with this binary because using steam-run returns this error:

steam-run ./com.motu.cuemix5
./com.motu.cuemix5: error while loading shared libraries: libxshmfence.so.1: cannot open shared object file: No such file or directory

In any case, following along with your notes on the LLM garbage, I’ve simplified my expression thusly:

{ pkgs ? import <nixpkgs> {} }:

pkgs.stdenv.mkDerivation {
  pname = "motu-cuemix5";
  version = "1.0.0";  # Unofficial release of initial version

  src = pkgs.fetchzip {
    url = "https://raw.githubusercontent.com/Chandler-ME/MOTU-CueMix5-Linux/main/com.motu.CueMix5-1.0.0.tar.gz";
    sha256 = "MDQxmQGsGUpgpSN8e7EskpXqLILq/7jOJAt4yqPsbOs=";
  };

  # Specify build inputs
  buildInputs = [
  ];

  # Specify native build inputs
  nativeBuildInputs = [ pkgs.autoPatchelfHook ];

  # Define the install phase
  installPhase = ''
    cp -r . $out
  '';
}

I had initially tried to use fetchFromGitHub like a normal person, but it seemed (at least based on the interpretation from the LLM) to be redirecting. Switching to the direct URL has at least fixed that as far as I can tell.

Unfortunately, as you might have guessed based on the results of the steam-run above, we get a ludicrously long error when trying to nix-build the expression:

nix-build
this derivation will be built:
  /nix/store/mb20k1ncqmw5i85m40gq862ad707g8zj-motu-cuemix5-1.0.0.drv
building '/nix/store/mb20k1ncqmw5i85m40gq862ad707g8zj-motu-cuemix5-1.0.0.drv'...
Running phase: unpackPhase
unpacking source archive /nix/store/rvginq804rl8dz1rydrlrzqh894znhk3-source
source root is source
Running phase: patchPhase
Running phase: updateAutotoolsGnuConfigScriptsPhase
Running phase: configurePhase
no configure script, doing nothing
Running phase: buildPhase
no Makefile or custom buildPhase, doing nothing
Running phase: installPhase
Running phase: fixupPhase
shrinking RPATHs of ELF executables and libraries in /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libEGL.so
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libffmpeg.so
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libvulkan.so.1
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libGLESv2.so
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/chrome-sandbox
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libvk_swiftshader.so
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/swiftshader/libEGL.so
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/swiftshader/libGLESv2.so
checking for references to /build/ in /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0...
patching script interpreter paths in /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0
automatically fixing dependencies for ELF files
{'add_existing': True,
 'append_rpaths': [],
 'extra_args': [],
 'ignore_missing': [],
 'keep_libc': False,
 'libs': [PosixPath('/nix/store/zxrk2fdm5yrgy7xmc92psd7xg6abw670-auto-patchelf-hook/lib'),
          PosixPath('/nix/store/a1ilr3vg1pr7nbfpffyr8v2rl4027h6p-auto-patchelf-0-unstable-2024-08-14/lib'),
          PosixPath('/nix/store/lnl88h2ywpzpky963bdb5hlp9la14fiq-binutils-wrapper-2.43.1/lib'),
          PosixPath('/nix/store/qp4a5bxdck7c0w7l2mf47phhfk2nmscs-patchelf-0.15.0/lib'),
          PosixPath('/nix/store/x604hxrmd9ck0irksbd3ilfnygc98x7a-update-autotools-gnu-config-scripts-hook/lib'),
          PosixPath('/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh/lib'),
          PosixPath('/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh/lib'),
          PosixPath('/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh/lib'),
          PosixPath('/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh/lib'),
          PosixPath('/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh/lib'),
          PosixPath('/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh/lib'),
          PosixPath('/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh/lib'),
          PosixPath('/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh/lib'),
          PosixPath('/nix/store/jxknwvfj6kw8awi3lsjx1807q5q1sybz-no-broken-symlinks.sh/lib'),
          PosixPath('/nix/store/hxv896faph0rqxjq2ycxpcrbnngc95sz-patch-shebangs.sh/lib'),
          PosixPath('/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh/lib'),
          PosixPath('/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh/lib'),
          PosixPath('/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh/lib'),
          PosixPath('/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh/lib'),
          PosixPath('/nix/store/gj9lra51hwhxnhz05jqk5lh03wipamv0-gcc-wrapper-14-20241116/lib'),
          PosixPath('/nix/store/kinjsav83qgiiy8mwgypnnc9sn8m8r9y-binutils-wrapper-2.43.1/lib'),
          PosixPath('/nix/store/zxrk2fdm5yrgy7xmc92psd7xg6abw670-auto-patchelf-hook/lib'),
          PosixPath('/nix/store/a1ilr3vg1pr7nbfpffyr8v2rl4027h6p-auto-patchelf-0-unstable-2024-08-14/lib'),
          PosixPath('/nix/store/lnl88h2ywpzpky963bdb5hlp9la14fiq-binutils-wrapper-2.43.1/lib'),
          PosixPath('/nix/store/qp4a5bxdck7c0w7l2mf47phhfk2nmscs-patchelf-0.15.0/lib'),
          PosixPath('/nix/store/x604hxrmd9ck0irksbd3ilfnygc98x7a-update-autotools-gnu-config-scripts-hook/lib'),
          PosixPath('/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh/lib'),
          PosixPath('/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh/lib'),
          PosixPath('/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh/lib'),
          PosixPath('/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh/lib'),
          PosixPath('/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh/lib'),
          PosixPath('/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh/lib'),
          PosixPath('/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh/lib'),
          PosixPath('/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh/lib'),
          PosixPath('/nix/store/jxknwvfj6kw8awi3lsjx1807q5q1sybz-no-broken-symlinks.sh/lib'),
          PosixPath('/nix/store/hxv896faph0rqxjq2ycxpcrbnngc95sz-patch-shebangs.sh/lib'),
          PosixPath('/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh/lib'),
          PosixPath('/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh/lib'),
          PosixPath('/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh/lib'),
          PosixPath('/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh/lib'),
          PosixPath('/nix/store/gj9lra51hwhxnhz05jqk5lh03wipamv0-gcc-wrapper-14-20241116/lib'),
          PosixPath('/nix/store/kinjsav83qgiiy8mwgypnnc9sn8m8r9y-binutils-wrapper-2.43.1/lib')],
 'paths': [PosixPath('/nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0')],
 'recursive': True,
 'runtime_dependencies': []}
searching for dependencies of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libEGL.so
    libgcc_s.so.1 -> not found!
searching for dependencies of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libffmpeg.so
    libgcc_s.so.1 -> not found!
searching for dependencies of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libvulkan.so.1
    libgcc_s.so.1 -> not found!
searching for dependencies of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libGLESv2.so
    libX11.so.6 -> not found!
    libXext.so.6 -> not found!
    libxcb.so.1 -> not found!
    libgcc_s.so.1 -> not found!
setting interpreter of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
searching for dependencies of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
    libffmpeg.so -> found: /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0
    libgmodule-2.0.so.0 -> not found!
    libgobject-2.0.so.0 -> not found!
    libglib-2.0.so.0 -> not found!
    libxshmfence.so.1 -> not found!
    libgio-2.0.so.0 -> not found!
    libnss3.so -> not found!
    libnssutil3.so -> not found!
    libsmime3.so -> not found!
    libnspr4.so -> not found!
    libatk-1.0.so.0 -> not found!
    libatk-bridge-2.0.so.0 -> not found!
    libdbus-1.so.3 -> not found!
    libdrm.so.2 -> not found!
    libgtk-3.so.0 -> not found!
    libpango-1.0.so.0 -> not found!
    libcairo.so.2 -> not found!
    libgdk_pixbuf-2.0.so.0 -> not found!
    libX11.so.6 -> not found!
    libXcomposite.so.1 -> not found!
    libXdamage.so.1 -> not found!
    libXext.so.6 -> not found!
    libXfixes.so.3 -> not found!
    libXrandr.so.2 -> not found!
    libexpat.so.1 -> not found!
    libxcb.so.1 -> not found!
    libxkbcommon.so.0 -> not found!
    libgbm.so.1 -> not found!
    libasound.so.2 -> not found!
    libatspi.so.0 -> not found!
    libcups.so.2 -> not found!
    libgcc_s.so.1 -> not found!
setting RPATH to: /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0
setting interpreter of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/chrome-sandbox
searching for dependencies of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/chrome-sandbox
searching for dependencies of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libvk_swiftshader.so
    libgcc_s.so.1 -> not found!
searching for dependencies of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/swiftshader/libEGL.so
    libgcc_s.so.1 -> not found!
searching for dependencies of /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/swiftshader/libGLESv2.so
    libgcc_s.so.1 -> not found!
auto-patchelf: 41 dependencies could not be satisfied
error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libEGL.so
error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libffmpeg.so
error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libvulkan.so.1
error: auto-patchelf could not satisfy dependency libX11.so.6 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libGLESv2.so
error: auto-patchelf could not satisfy dependency libXext.so.6 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libGLESv2.so
error: auto-patchelf could not satisfy dependency libxcb.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libGLESv2.so
error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libGLESv2.so
error: auto-patchelf could not satisfy dependency libgmodule-2.0.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libgobject-2.0.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libglib-2.0.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libxshmfence.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libgio-2.0.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libnss3.so wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libnssutil3.so wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libsmime3.so wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libnspr4.so wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libatk-1.0.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libatk-bridge-2.0.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libdbus-1.so.3 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libdrm.so.2 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libgtk-3.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libpango-1.0.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libcairo.so.2 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libgdk_pixbuf-2.0.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libX11.so.6 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libXcomposite.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libXdamage.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libXext.so.6 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libXfixes.so.3 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libXrandr.so.2 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libexpat.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libxcb.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libxkbcommon.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libgbm.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libasound.so.2 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libatspi.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libcups.so.2 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libvk_swiftshader.so
error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/swiftshader/libEGL.so
error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/swiftshader/libGLESv2.so
auto-patchelf failed to find all the required dependencies.
Add the missing dependencies to --libs or use `--ignore-missing="foo.so.1 bar.so etc.so"`.
error: builder for '/nix/store/mb20k1ncqmw5i85m40gq862ad707g8zj-motu-cuemix5-1.0.0.drv' failed with exit code 1;
       last 25 log lines:
       > error: auto-patchelf could not satisfy dependency libdbus-1.so.3 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libdrm.so.2 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libgtk-3.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libpango-1.0.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libcairo.so.2 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libgdk_pixbuf-2.0.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libX11.so.6 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libXcomposite.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libXdamage.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libXext.so.6 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libXfixes.so.3 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libXrandr.so.2 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libexpat.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libxcb.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libxkbcommon.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libgbm.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libasound.so.2 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libatspi.so.0 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libcups.so.2 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
       > error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libvk_swiftshader.so
       > error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/swiftshader/libEGL.so
       > error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/swiftshader/libGLESv2.so
       > auto-patchelf failed to find all the required dependencies.
       > Add the missing dependencies to --libs or use `--ignore-missing="foo.so.1 bar.so etc.so"`.
       For full logs, run 'nix log /nix/store/mb20k1ncqmw5i85m40gq862ad707g8zj-motu-cuemix5-1.0.0.drv'.

Looking at the full log, we have this, and of course I have no clue what any of it means:

Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/rvginq804rl8dz1rydrlrzqh894znhk3-source
source root is source
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
no configure script, doing nothing
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
no Makefile or custom buildPhase, doing nothing
Running phase: installPhase
@nix { "action": "setPhase", "phase": "installPhase" }
Running phase: fixupPhase
@nix { "action": "setPhase", "phase": "fixupPhase" }
shrinking RPATHs of ELF executables and libraries in /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libEGL.so
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libffmpeg.so
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libvulkan.so.1
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libGLESv2.so
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/com.motu.cuemix5
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/chrome-sandbox
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/libvk_swiftshader.so
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/swiftshader/libEGL.so
shrinking /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0/swiftshader/libGLESv2.so
checking for references to /build/ in /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0...
patching script interpreter paths in /nix/store/31fh5wf4wfsgdyh7rgzs6h3nng6k3fmj-motu-cuemix5-1.0.0
automatically fixing dependencies for ELF files
{'add_existing': True,
 'append_rpaths': [],
 'extra_args': [],
 'ignore_missing': [],
 'keep_libc': False,
 'libs': [PosixPath('/nix/store/zxrk2fdm5yrgy7xmc92psd7xg6abw670-auto-patchelf-hook/lib'),
          PosixPath('/nix/store/a1ilr3vg1pr7nbfpffyr8v2rl4027h6p-auto-patchelf-0-unstable-2024-08-14/lib'),
          PosixPath('/nix/store/lnl88h2ywpzpky963bdb5hlp9la14fiq-binutils-wrapper-2.43.1/lib'),
          PosixPath('/nix/store/qp4a5bxdck7c0w7l2mf47phhfk2nmscs-patchelf-0.15.0/lib'),
          PosixPath('/nix/store/x604hxrmd9ck0irksbd3ilfnygc98x7a-update-autotools-gnu-config-scripts-hook/lib'),
          PosixPath('/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh/lib'),
          PosixPath('/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh/lib'),
          PosixPath('/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh/lib'),
          PosixPath('/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh/lib'),
          PosixPath('/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh/lib'),
          PosixPath('/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh/lib'),
          PosixPath('/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh/lib'),
          PosixPath('/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh/lib'),
          PosixPath('/nix/store/jxknwvfj6kw8awi3lsjx1807q5q1sybz-no-broken-symlinks.sh/lib'),
          PosixPath('/nix/store/hxv896faph0rqxjq2ycxpcrbnngc95sz-patch-shebangs.sh/lib'),

Well, in a step I perhaps should have taken first, I installed the Windows version via Wine because I read some people on other distros were able to use the .html file in it successfully.

And lo and behold, the whole thing “just works” via Wine. So… mission accomplished, I guess?

Sure, yeah, that works too. In windows land all (well, most) dependencies are bundled into the .exe, so you don’t need to figure out dependencies. There’s ups and downs to this.

If you still want to try getting the Linux version to run:

That’s a good start :slight_smile: It means the binary is working, the steam env just doesn’t have all dependencies needed to run this.

The same thing is true for your autoPatchelf build - this is just the list of missing dependencies:

Each of these simply need to be put in the buildInputs of your derivation. If it looks like a lot, yeah, this is a graphical application, those tend to have a lot of dependencies.

We could simply override steam-run to add more packages to its environment, or we continue trying out autoPatchelf. autoPatchelf gives a nice and complete list of missing dependencies, so I’d start with just trying that until we get it to build, and then fall back to manually creating a buildFhsUserEnv if the resulting package still doesn’t work.

Now, searching search.nixos.org for e.g. libgio won’t give you any results - these are not package names, but the names of shared object files. These may or may not actually be provided by packages in nixpkgs.

The easiest way to figure out which package provides each of these files is nix-index (use the nixpkgs package). If we want to for example figure out which package contains libgio-2.0.so.0, we can run:

nix-locate --top-level 'libgio-2.0.so.0'

This gives me these results:

remarkable2-toolchain.out                             0 s /nix/store/1njr8mkzcc8za6an97mjmrpp6qlxx94j-remarkable2-toolchain-3.1.2/sysroots/cortexa7hf-neon-remarkable-linux-gnueabi/usr/lib/libgio-2.0.so.0
remarkable2-toolchain.out                     1,509,564 x /nix/store/1njr8mkzcc8za6an97mjmrpp6qlxx94j-remarkable2-toolchain-3.1.2/sysroots/cortexa7hf-neon-remarkable-linux-gnueabi/usr/lib/libgio-2.0.so.0.6200.6
remarkable2-toolchain.out                             0 s /nix/store/1njr8mkzcc8za6an97mjmrpp6qlxx94j-remarkable2-toolchain-3.1.2/sysroots/x86_64-codexsdk-linux/usr/lib/libgio-2.0.so.0
remarkable2-toolchain.out                     1,882,368 x /nix/store/1njr8mkzcc8za6an97mjmrpp6qlxx94j-remarkable2-toolchain-3.1.2/sysroots/x86_64-codexsdk-linux/usr/lib/libgio-2.0.so.0.6200.6
remarkable-toolchain.out                              0 s /nix/store/1zwq8xyrgl156qm5khhwc8s6dbyfpq9q-remarkable-toolchain-3.1.2/sysroots/cortexa9hf-neon-remarkable-linux-gnueabi/usr/lib/libgio-2.0.so.0
remarkable-toolchain.out                      1,509,560 x /nix/store/1zwq8xyrgl156qm5khhwc8s6dbyfpq9q-remarkable-toolchain-3.1.2/sysroots/cortexa9hf-neon-remarkable-linux-gnueabi/usr/lib/libgio-2.0.so.0.6200.6
remarkable-toolchain.out                              0 s /nix/store/1zwq8xyrgl156qm5khhwc8s6dbyfpq9q-remarkable-toolchain-3.1.2/sysroots/x86_64-codexsdk-linux/usr/lib/libgio-2.0.so.0
remarkable-toolchain.out                      1,882,368 x /nix/store/1zwq8xyrgl156qm5khhwc8s6dbyfpq9q-remarkable-toolchain-3.1.2/sysroots/x86_64-codexsdk-linux/usr/lib/libgio-2.0.so.0.6200.6
glib.out                                              0 s /nix/store/104iv01qhsg3q9ik4w42d5dllkcy2s9i-glib-2.72.1/lib/libgio-2.0.so.0
glib.out                                      2,408,344 x /nix/store/104iv01qhsg3q9ik4w42d5dllkcy2s9i-glib-2.72.1/lib/libgio-2.0.so.0.7200.1
glib.debug                                            0 s /nix/store/8jyifa6idxz5liihws7yk9qz3ygjfpz4-glib-2.72.1-debug/lib/debug/libgio-2.0.so.0.7200.1

So, three packages provide this library, remarkable-toolchain, remarkable-toolchain2 and glib. Note that the first two contain it in some kind of sdk path - only libraries in the top-level /lib/ path will be properly included by the nix build, so in this case, the missing dependency is glib.

If you add that to your buildInputs and rebuild, the libgio-2.0.so.0 dependency should no longer be missing. In fact, a bunch of dependencies will suddenly be found, because many of the missing shared libraries come from the glib package.

Rinse and repeat until you’ve found all your dependencies.

1 Like

Wonderful, thank you for your help! Sorry for the delayed response, my NixOS store blew up on me in ways I didn’t understand, so I’m just now getting back into this.

I’ve found all the missing dependencies and added them just as you said:

{ pkgs ? import <nixpkgs> {} }:

pkgs.stdenv.mkDerivation {
  pname = "motu-cuemix5";
  version = "1.0.0";  # Unofficial release of initial version

  src = pkgs.fetchzip {
    url = "https://raw.githubusercontent.com/Chandler-ME/MOTU-CueMix5-Linux/main/com.motu.CueMix5-1.0.0.tar.gz";
    sha256 = "MDQxmQGsGUpgpSN8e7EskpXqLILq/7jOJAt4yqPsbOs=";
  };

  # Specify build inputs
  buildInputs = [
    pkgs.glib
    pkgs.cups.lib
    pkgs.xorg.libxshmfence
    pkgs.nss
    pkgs.at-spi2-atk
    pkgs.libdrm
    pkgs.gtk3
    pkgs.libgbm
    pkgs.alsa-lib
  ];

  # Specify native build inputs
  nativeBuildInputs = [ pkgs.autoPatchelfHook ];

  # Define the install phase
  installPhase = ''
    cp -r . $out
  '';
}

The expression now builds without issue, but unfortunately when I go to run it using ./result/com.motu.cuemix5, I get this error:

Trace/breakpoint trap (core dumped)

From what I can tell online, this might be related to it being an Electron app, but I’m not sure if that’s right or what to do about it, if so.

I really appreciate all your help so far! I feel like I might be getting close on this.

That error is rather unfortunate. You won’t get much further here without pulling out gdb and/or strace, and it’ll likely be quite hard to debug without the source code :expressionless:

It could be a bug in the original project, an incompatibility with a specific library version (which may or may not involve Electron), or something caused by the rather unusual nix env.

1 Like

Well damn, that is unfortunate. In either case, I can just keep using the Wine version. The Linux-native version worked a little better in terms of GUI responsiveness, but I suppose that could improve over time with Wine improvements, as well.

I still really appreciate your help! I feel like I’ve learned a lot that I otherwise wouldn’t have, and I’m that much more comfortable with Nix/NixOS now.