diff --git a/pkgs/by-name/ve/veloren/package.nix b/pkgs/by-name/ve/veloren/package.nix index b58ab75a7281..43b515447dd7 100644 --- a/pkgs/by-name/ve/veloren/package.nix +++ b/pkgs/by-name/ve/veloren/package.nix @@ -3,10 +3,12 @@ rustPlatform, fetchFromGitLab, pkg-config, + stdenv, + + # Linux-only vulkan-loader, alsa-lib, udev, - shaderc, libxcb, libxkbcommon, autoPatchelfHook, @@ -15,7 +17,12 @@ libxcursor, libxrandr, wayland, - stdenv, + + # Both platforms + shaderc, + + # macOS-only + desktopToDarwinBundle, }: let @@ -25,7 +32,6 @@ let timestamp = "1769191511"; rev = "1d12f35edd6cdbfc1fb921c167cdd7beeeffe248"; in - rustPlatform.buildRustPackage { pname = "veloren"; inherit version; @@ -45,29 +51,38 @@ rustPlatform.buildRustPackage { postPatch = '' # Force vek to build in unstable mode - cat <<'EOF' | tee "$cargoDepsCopy"/*/vek-*/build.rs + tee "$cargoDepsCopy"/*/vek-*/build.rs > /dev/null <<'EOF' fn main() { println!("cargo:rustc-check-cfg=cfg(nightly)"); println!("cargo:rustc-cfg=nightly"); } EOF + # Fix assets path substituteAllInPlace common/assets/src/lib.rs + # Do not use mold, it produces broken binaries substituteInPlace .cargo/config.toml --replace-fail mold gold ''; nativeBuildInputs = [ - autoPatchelfHook pkg-config + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + autoPatchelfHook + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + desktopToDarwinBundle ]; buildInputs = [ + shaderc + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib udev libxcb libxkbcommon - shaderc stdenv.cc.cc # libgcc_s.so.1 ]; @@ -92,7 +107,7 @@ rustPlatform.buildRustPackage { # Some tests require internet access doCheck = false; - appendRunpaths = [ + appendRunpaths = lib.optionals stdenv.hostPlatform.isLinux [ (lib.makeLibraryPath ( [ libx11 @@ -113,6 +128,7 @@ rustPlatform.buildRustPackage { install -Dm644 assets/voxygen/net.veloren.veloren.desktop -t "$out/share/applications" install -Dm644 assets/voxygen/net.veloren.veloren.png -t "$out/share/icons/hicolor/256x256/apps" install -Dm644 assets/voxygen/net.veloren.veloren.metainfo.xml -t "$out/share/metainfo" + # Assets directory mkdir -p "$out/share/veloren"; cp -ar assets "$out/share/veloren/" ''; @@ -122,9 +138,10 @@ rustPlatform.buildRustPackage { homepage = "https://www.veloren.net"; license = lib.licenses.gpl3Only; mainProgram = "veloren-voxygen"; - platforms = lib.platforms.linux; + platforms = lib.platforms.all; maintainers = with lib.maintainers; [ rnhmjoj + philocalyst tomodachi94 ]; };