Skip to content

Fails to install on Nvidia DGX Spark (and other ARM devices) #215

@Firestar99

Description

@Firestar99

Also see #185

Executing nix-env -iA nixgl.auto.nixGLDefault as written in the readme errors with:

copying path '/nix/store/yzhl36k6yxfafrvddhqjbwzvmwlyx4iq-stdenv-linux' from 'https://cache.nixos.org'...
building '/nix/store/k9rrb1s1jpgph6a4xz4fcrwijszaq68h-impure-nvidia-version-file.drv'...
installing 'nixGL'
error:
       … while calling the 'derivationStrict' builtin
         at «nix-internal»/derivation-internal.nix:37:12:
           36|
           37|   strict = derivationStrict drvAttrs;
             |            ^
           38|

       … while evaluating derivation 'nixGL'
         whose name attribute is located at /nix/store/wdn8m2y4z957ivxb4vx7i2wrrdvbmsvw-nixpkgs/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:541:13

       … while evaluating attribute 'buildCommand' of derivation 'nixGL'
         at /nix/store/wdn8m2y4z957ivxb4vx7i2wrrdvbmsvw-nixpkgs/nixpkgs/pkgs/build-support/trivial-builders/default.nix:80:17:
           79|         enableParallelBuilding = true;
           80|         inherit buildCommand name;
             |                 ^
           81|         passAsFile = [ "buildCommand" ] ++ (derivationArgs.passAsFile or [ ]);

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

       error: i686 Linux package set can only be used with the x86 family.

Following the article linked in #150 mentioned by the issue above, I tried nix-env -i -E '(_: with import <nixgl> { enable32bits = false; }; nixVulkanMesa)', which installs, but doesn't seem to work with proprietary nvidia drivers nor lavapipe. I've been testing with the wgpu test suite, which seems to detect lavapipe and read it's limits and features (thus disabling some tests) but actually initializing a device seems to fail.

Combining the two, I tried nix-env -i -E '(_: with import <nixgl> { enable32bits = false; }; auto.nixGLDefault)':

error:
       … while calling the 'derivationStrict' builtin
         at «nix-internal»/derivation-internal.nix:37:12:
           36|
           37|   strict = derivationStrict drvAttrs;
             |            ^
           38|

       … while evaluating derivation 'nixGL'
         whose name attribute is located at /nix/store/wdn8m2y4z957ivxb4vx7i2wrrdvbmsvw-nixpkgs/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:541:13

       … while evaluating attribute 'buildCommand' of derivation 'nixGL'
         at /nix/store/wdn8m2y4z957ivxb4vx7i2wrrdvbmsvw-nixpkgs/nixpkgs/pkgs/build-support/trivial-builders/default.nix:80:17:
           79|         enableParallelBuilding = true;
           80|         inherit buildCommand name;
             |                 ^
           81|         passAsFile = [ "buildCommand" ] ++ (derivationArgs.passAsFile or [ ]);

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

       error: Package ‘intel-gmmlib-22.8.2’ in /nix/store/wdn8m2y4z957ivxb4vx7i2wrrdvbmsvw-nixpkgs/nixpkgs/pkgs/by-name/in/intel-gmmlib/package.nix:31 is not available on the requested hostPlatform:
         hostPlatform.system = "aarch64-linux"
         package.meta.platforms = [
           "x86_64-linux"
           "i686-linux"
         ]
         package.meta.badPlatforms = [ ]
       , refusing to evaluate.
[... omitting help]

Then I tried nix-env -i -E '(_: with import <nixgl> { enable32bits = false; }; auto.nixGLNvidia)' and nix-env -i -E '(_: with import <nixgl> { enable32bits = false; }; auto.nixVulkanNvidia)', which seem to exist but both error:

error:
       … while evaluating the attribute 'nixGLNvidia'
         at /nix/store/cj0f6mkz8nd315k0jgj7sw3bwl4vjz8m-nixgl/nixgl/nixGL.nix:152:7:
          151|       # TODO: 32bit version? Not tested.
          152|       nixGLNvidia = nixNvidiaWrapper "GL";
             |       ^
          153|

       … in the condition of the assert statement
         at /nix/store/wdn8m2y4z957ivxb4vx7i2wrrdvbmsvw-nixpkgs/nixpkgs/pkgs/build-support/trivial-builders/default.nix:115:5:
          114|     }:
          115|     assert lib.assertMsg (destination != "" -> (lib.hasPrefix "/" destination && destination != "/")) ''
             |     ^
          116|       destination must be an absolute path, relative to the derivation's out path,

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

       error: cannot coerce null to a string: null

Any ideas where to proceed?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions