70 lines
1.5 KiB
Nix
70 lines
1.5 KiB
Nix
{ lib
|
|
, self ? null
|
|
, buildType ? "release"
|
|
, platform ? "linux"
|
|
, enableWayland ? true
|
|
, enableXorg ? true
|
|
, enableOpenGL ? true
|
|
, enableVulkan ? true
|
|
, rustPlatform
|
|
, makeDesktopItem
|
|
, pkg-config
|
|
, libxkbcommon
|
|
, alsa-lib
|
|
, libGL
|
|
, vulkan-loader
|
|
, wayland
|
|
, libXrandr
|
|
, libXcursor
|
|
, libX11
|
|
, libXi
|
|
, ...
|
|
}:
|
|
|
|
assert (platform == "linux" ) -> (enableWayland || enableXorg);
|
|
assert (platform == "linux" ) -> (enableVulkan || enableOpenGL);
|
|
|
|
rustPlatform.buildRustPackage rec {
|
|
name = "outfly";
|
|
inherit buildType;
|
|
src = ./../..;
|
|
version = if (self ? rev) then self.rev else "dirty";
|
|
|
|
buildNoDefaultFeatures = true;
|
|
buildFeatures = [ "embed_assets" ] ++ lib.optionals enableXorg [ "x11" ]
|
|
++ lib.optionals enableWayland [ "wayland" ];
|
|
|
|
runtimeInputs = [ libxkbcommon ]
|
|
++ lib.optionals enableOpenGL [ libGL ]
|
|
++ lib.optionals enableXorg [ libXrandr libX11 ]
|
|
++ lib.optionals enableVulkan [ vulkan-loader ];
|
|
|
|
buildInputs = [ alsa-lib.dev libXcursor libXi ]
|
|
++ lib.optionals enableWayland [ wayland ];
|
|
|
|
nativeBuildInputs = [ pkg-config ];
|
|
doCheck = false;
|
|
|
|
postFixup = ''
|
|
patchelf $out/bin/outfly \
|
|
--add-rpath ${lib.makeLibraryPath runtimeInputs}
|
|
'';
|
|
|
|
postPatch = ''
|
|
find ../cargo-vendor-dir -name Cargo.toml -exec sed -i 's/^workspace = true//' {} +
|
|
'';
|
|
|
|
cargoLock = { lockFile = ./../../Cargo.lock; };
|
|
|
|
desktopItems = [
|
|
(makeDesktopItem {
|
|
name = "outfly";
|
|
exec = "outfly";
|
|
|
|
desktopName = "OutFly";
|
|
categories = [ "Game" ];
|
|
})
|
|
];
|
|
}
|
|
|