WIP: nix/stardust-xr-server: fix build #53
51
flake.lock
generated
51
flake.lock
generated
@@ -26,11 +26,11 @@
|
|||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722555600,
|
"lastModified": 1754487366,
|
||||||
"narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=",
|
"narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "8471fe90ad337a8074e957b69ca4d0089218391d",
|
"rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -47,11 +47,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712014858,
|
"lastModified": 1754487366,
|
||||||
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
|
"narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
|
"rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -65,11 +65,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713050562,
|
"lastModified": 1725868201,
|
||||||
"narHash": "sha256-m7c6XpmpTM1URuqMG2KqtaWbL2Vt8vJFJtmvq123BmY=",
|
"narHash": "sha256-rDBQ9tXQCCA7emikSYH59ADJELE2IpzB7eoLrpHYzU4=",
|
||||||
"owner": "StardustXR",
|
"owner": "StardustXR",
|
||||||
"repo": "flatland",
|
"repo": "flatland",
|
||||||
"rev": "b3b0f29c4ea1b82c96cf9de507837bf15a5e4c0e",
|
"rev": "0914dd3df54a5e6258dfc0a02d65af1c0fc0fc90",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -84,11 +84,11 @@
|
|||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1719226092,
|
"lastModified": 1755233722,
|
||||||
"narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=",
|
"narHash": "sha256-AavrbMltJKcC2Fx0lfJoZfmy7g87ebXU0ddVenhajLA=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "hercules-ci-effects",
|
"repo": "hercules-ci-effects",
|
||||||
"rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5",
|
"rev": "99e03e72e3f7e13506f80ef9ebaedccb929d84d0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -115,23 +115,26 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722555339,
|
"lastModified": 1753579242,
|
||||||
"narHash": "sha256-uFf2QeW7eAHlYXuDktm9c25OxOyCoUOQmh5SZ9amE5Q=",
|
"narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=",
|
||||||
"type": "tarball",
|
"owner": "nix-community",
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/a5d394176e64ab29c852d03346c1fc9b0b7d33eb.tar.gz"
|
"repo": "nixpkgs.lib",
|
||||||
|
"rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e",
|
||||||
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"owner": "nix-community",
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/a5d394176e64ab29c852d03346c1fc9b0b7d33eb.tar.gz"
|
"repo": "nixpkgs.lib",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713714899,
|
"lastModified": 1755027561,
|
||||||
"narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=",
|
"narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6143fc5eeb9c4f00163267708e26191d1e918932",
|
"rev": "005433b926e16227259a1843015b5b2b7f7d1fc3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -143,11 +146,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723991338,
|
"lastModified": 1755186698,
|
||||||
"narHash": "sha256-Grh5PF0+gootJfOJFenTTxDTYPidA3V28dqJ/WV7iis=",
|
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "8a3354191c0d7144db9756a74755672387b702ba",
|
"rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -61,14 +61,11 @@
|
|||||||
};
|
};
|
||||||
overlayAttrs = config.packages;
|
overlayAttrs = config.packages;
|
||||||
packages =
|
packages =
|
||||||
let
|
|
||||||
sk_gpu = pkgs.callPackage ./nix/sk_gpu.nix { };
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
default = self'.packages.${name};
|
default = self'.packages.${name};
|
||||||
gnome-graphical-test = self'.checks.gnome-graphical-test;
|
gnome-graphical-test = self'.checks.gnome-graphical-test;
|
||||||
"${name}" = pkgs.callPackage ./nix/stardust-xr-server.nix {
|
"${name}" = pkgs.callPackage ./nix/stardust-xr-server.nix {
|
||||||
inherit name src sk_gpu;
|
inherit name src;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
apps.default = {
|
apps.default = {
|
||||||
|
|||||||
@@ -20,8 +20,8 @@
|
|||||||
# Set a nice desktop background that is pleasing to the eyes :3
|
# Set a nice desktop background that is pleasing to the eyes :3
|
||||||
extraGSettingsOverrides = ''
|
extraGSettingsOverrides = ''
|
||||||
[org.gnome.desktop.background]
|
[org.gnome.desktop.background]
|
||||||
picture-uri='file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/blobs-l.svg'
|
picture-uri='file://${pkgs.gnome-backgrounds}/share/backgrounds/gnome/blobs-l.svg'
|
||||||
picture-uri-dark='file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/blobs-l.svg'
|
picture-uri-dark='file://${pkgs.gnome-backgrounds}/share/backgrounds/gnome/blobs-l.svg'
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
displayManager = {
|
displayManager = {
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
# Eval API is now internal so Shell needs to run in unsafe mode.
|
# Eval API is now internal so Shell needs to run in unsafe mode.
|
||||||
# TODO: improve test driver so that it supports openqa-like manipulation
|
# TODO: improve test driver so that it supports openqa-like manipulation
|
||||||
# that would allow us to drop this mess.
|
# that would allow us to drop this mess.
|
||||||
"${pkgs.gnome.gnome-shell}/bin/gnome-shell --unsafe-mode"
|
"${pkgs.gnome-shell}/bin/gnome-shell --unsafe-mode"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,25 +1,27 @@
|
|||||||
{ rustPlatform
|
{
|
||||||
, src
|
rustPlatform,
|
||||||
, name
|
src,
|
||||||
, libGL
|
name,
|
||||||
, mesa
|
vulkan-loader,
|
||||||
, xorg
|
vulkan-headers,
|
||||||
, fontconfig
|
mesa,
|
||||||
, libxkbcommon
|
xorg,
|
||||||
, libclang
|
fontconfig,
|
||||||
|
libxkbcommon,
|
||||||
|
libclang,
|
||||||
|
|
||||||
, cmake
|
cmake,
|
||||||
, cpm-cmake
|
pkg-config,
|
||||||
, pkg-config
|
llvmPackages,
|
||||||
, llvmPackages
|
fetchFromGitHub,
|
||||||
, fetchFromGitHub
|
libXau,
|
||||||
, sk_gpu
|
|
||||||
, libXau
|
|
||||||
|
|
||||||
, libXdmcp
|
libXdmcp,
|
||||||
, stdenv
|
stdenv,
|
||||||
, lib
|
lib,
|
||||||
, openxr-loader
|
openxr-loader,
|
||||||
|
wayland,
|
||||||
|
alsa-lib,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
@@ -28,50 +30,27 @@ rustPlatform.buildRustPackage rec {
|
|||||||
lockFile = (src + "/Cargo.lock");
|
lockFile = (src + "/Cargo.lock");
|
||||||
allowBuiltinFetchGit = true;
|
allowBuiltinFetchGit = true;
|
||||||
};
|
};
|
||||||
buildFeatures = [ "local_deps" ];
|
|
||||||
FORCE_LOCAL_DEPS = true;
|
|
||||||
CPM_LOCAL_PACKAGES_ONLY = true;
|
|
||||||
CPM_SOURCE_CACHE = "./build";
|
|
||||||
CPM_USE_LOCAL_PACKAGES = true;
|
|
||||||
CPM_DOWNLOAD_ALL = false;
|
|
||||||
|
|
||||||
meshoptimizer = fetchFromGitHub {
|
preBuild = ''
|
||||||
owner = "zeux";
|
substituteInPlace /build/cargo-vendor-dir/bevy_gltf-0.16.1/Cargo.toml \
|
||||||
repo = "meshoptimizer";
|
--replace-fail '[lints]' "" \
|
||||||
rev = "c21d3be6ddf627f8ca852ba4b6db9903b0557858";
|
--replace-fail 'workspace = true' ""
|
||||||
sha256 = "sha256-QCxpM2g8WtYSZHkBzLTJNQ/oHb5j/n9rjaVmZJcCZIA=";
|
|
||||||
};
|
|
||||||
basis_universal = fetchFromGitHub {
|
|
||||||
owner = "BinomialLLC";
|
|
||||||
repo = "basis_universal";
|
|
||||||
rev = "900e40fb5d2502927360fe2f31762bdbb624455f";
|
|
||||||
sha256 = "sha256-zBRAXgG5Fi6+5uPQCI/RCGatY6O4ELuYBoKrPNn4K+8=";
|
|
||||||
};
|
|
||||||
|
|
||||||
DEP_MESHOPTIMIZER_SOURCE = "${meshoptimizer}";
|
|
||||||
DEP_BASIS_UNIVERSAL_SOURCE = "${basis_universal}";
|
|
||||||
DEP_SK_GPU_SOURCE = "${sk_gpu}";
|
|
||||||
|
|
||||||
postPatch = let libPath = lib.makeLibraryPath [ stdenv.cc.cc.lib ];
|
|
||||||
in ''
|
|
||||||
sk=$(echo $cargoDepsCopy/stereokit-rust-*/StereoKit)
|
|
||||||
mkdir -p $sk/build/cpm
|
|
||||||
|
|
||||||
# This is not ideal, the original approach was to fetch the exact cmake
|
|
||||||
# file version that was wanted from GitHub directly, but at least this way it comes from Nixpkgs.. so meh
|
|
||||||
cp ${cpm-cmake}/share/cpm/CPM.cmake $sk/build/cpm/CPM_0.38.7.cmake
|
|
||||||
mkdir -p $sk/sk_gpu
|
|
||||||
cp -R ${sk_gpu}/* $sk/sk_gpu
|
|
||||||
chmod -R 755 $sk/sk_gpu/tools/linux_x64/*
|
|
||||||
export DEP_SK_GPU_SOURCE=$sk/sk_gpu
|
|
||||||
export LD_LIBRARY_PATH="${stdenv.cc.cc.lib}/lib";
|
|
||||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
|
||||||
--set-rpath "${libPath}" \
|
|
||||||
$sk/sk_gpu/tools/linux_x64/skshaderc
|
|
||||||
'';
|
'';
|
||||||
nativeBuildInputs = [ cmake pkg-config llvmPackages.libcxxClang ];
|
|
||||||
|
postFixup = ''
|
||||||
|
patchelf $out/bin/stardust-xr-server --add-rpath ${vulkan-loader}/lib
|
||||||
|
patchelf $out/bin/stardust-xr-server --add-rpath ${openxr-loader}/lib
|
||||||
|
patchelf $out/bin/stardust-xr-server --add-rpath ${libxkbcommon}/lib
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
pkg-config
|
||||||
|
llvmPackages.libcxxClang
|
||||||
|
];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libGL
|
vulkan-loader
|
||||||
|
vulkan-headers
|
||||||
mesa
|
mesa
|
||||||
xorg.libX11.dev
|
xorg.libX11.dev
|
||||||
xorg.libXft
|
xorg.libXft
|
||||||
@@ -81,6 +60,9 @@ rustPlatform.buildRustPackage rec {
|
|||||||
libXau
|
libXau
|
||||||
libXdmcp
|
libXdmcp
|
||||||
openxr-loader
|
openxr-loader
|
||||||
|
wayland
|
||||||
|
alsa-lib
|
||||||
];
|
];
|
||||||
|
|
||||||
LIBCLANG_PATH = "${libclang.lib}/lib";
|
LIBCLANG_PATH = "${libclang.lib}/lib";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user