mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2025-12-12 03:26:17 +00:00
122 lines
3.2 KiB
Nix
122 lines
3.2 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
callPackage,
|
|
makeWrapper,
|
|
libx11,
|
|
libxcursor,
|
|
libGL,
|
|
alsa-lib,
|
|
vulkan-loader,
|
|
vulkan-validation-layers,
|
|
vulkan-tools,
|
|
zig,
|
|
}:
|
|
|
|
let
|
|
# This is kinda atrocious, but it works
|
|
# Override default zig flags
|
|
zig_hook =
|
|
(zig.overrideAttrs {
|
|
version = "0.15.0";
|
|
src = fetchFromGitHub {
|
|
owner = "ziglang";
|
|
repo = "zig";
|
|
rev = "bd97b66186dabb3533df1ea9eb650d7574496a59";
|
|
hash = "sha256-EVIg01kQ3JCZxnnrk6qMJn3Gm3+BZzPs75x9Q+sxqBw=";
|
|
};
|
|
}).hook.overrideAttrs
|
|
{
|
|
zig_default_flags = "";
|
|
};
|
|
in
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
version = "0.0.1";
|
|
pname = "cubyz";
|
|
src = fetchFromGitHub {
|
|
owner = "pixelguys";
|
|
repo = "cubyz";
|
|
tag = finalAttrs.version;
|
|
hash = "sha256-SbMRr4kktwagYUyVBKFZLOwgSmkPngV8NbwkJRk2Zvg=";
|
|
};
|
|
|
|
postPatch = ''
|
|
ln -s ${callPackage ./deps.nix { }} $ZIG_GLOBAL_CACHE_DIR/p
|
|
'';
|
|
|
|
preBuild = "
|
|
mkdir -p ../Cubyz-libs/zig-out
|
|
ln -s ${callPackage ./libs.nix { }}/* ../Cubyz-libs/zig-out/
|
|
";
|
|
|
|
nativeBuildInputs = [
|
|
zig_hook # Needed for building zig stuff
|
|
makeWrapper # Needed for env variables
|
|
];
|
|
|
|
buildInputs = [
|
|
libx11
|
|
libGL
|
|
vulkan-loader
|
|
vulkan-validation-layers
|
|
vulkan-tools
|
|
libxcursor
|
|
alsa-lib
|
|
];
|
|
|
|
zigBuildFlags = [
|
|
#"-j6" # Included in zig default flags
|
|
"-Dcpu=baseline" # Included in zig default flags
|
|
"-Drelease"
|
|
"-Dlocal" # Use local libraries
|
|
"-Doptimize=ReleaseSafe"
|
|
];
|
|
|
|
# Symlink the assets to $out, add a desktop entry
|
|
postBuild = ''
|
|
mkdir -p $out/assets/cubyz
|
|
ln -s ${callPackage ./assets.nix { }}/* $out/assets/cubyz/
|
|
ln -s $src/assets/cubyz/* $out/assets/cubyz/
|
|
|
|
printf "
|
|
[Desktop Entry]
|
|
Name=Cubyz
|
|
Exec=$out/bin/Cubyz
|
|
Icon=$out/assets/cubyz/logo.png
|
|
Type=Application
|
|
Categories=Game;
|
|
" > $out/cubyz.desktop
|
|
'';
|
|
|
|
# Change some env variables, move a bunch of stuff under .config for modding purposes, symlink a desktop entry
|
|
postInstall = ''
|
|
wrapProgram $out/bin/Cubyz \
|
|
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath finalAttrs.buildInputs}" \
|
|
--prefix VK_LAYER_PATH : "${vulkan-validation-layers}/share/vulkan/explicit_layer.d" \
|
|
--run "
|
|
cd \$HOME/.config/cubyz
|
|
mkdir -p \$HOME/.config/cubyz/logs
|
|
mkdir -p \$HOME/.config/cubyz/assets
|
|
[ ! -d \$HOME/.config/cubyz/assets/cubyz ] && cp -pr $out/assets/cubyz \$HOME/.config/cubyz/assets/
|
|
|
|
[ ! -f \$HOME/.config/cubyz/launchConfig.zon ] && printf \".{
|
|
.cubyzDir = \\\"\$HOME/.config/cubyz\\\",
|
|
}\" > \$HOME/.config/cubyz/launchConfig.zon
|
|
|
|
[ ! -l \$HOME/.local/share/applications/cubyz.desktop ] && ln -sf $out/cubyz.desktop \$HOME/.local/share/applications/cubyz.desktop
|
|
"
|
|
'';
|
|
|
|
meta = {
|
|
homepage = "https://github.com/PixelGuys/Cubyz";
|
|
description = "Voxel sandbox game with a large render distance, procedurally generated content and some cool graphical effects";
|
|
changelog = "https://github.com/PixelGuys/Cubyz/releases/tag/${finalAttrs.version}";
|
|
license = lib.licenses.gpl3Only;
|
|
platforms = lib.platforms.linux;
|
|
mainProgram = "cubyz";
|
|
maintainers = with lib.maintainers; [ leha44581 ];
|
|
};
|
|
})
|