From 8a88d2ab7afecf82821a0221a0cddd04ed7f0b93 Mon Sep 17 00:00:00 2001 From: azahi Date: Thu, 25 Dec 2025 07:14:17 +0300 Subject: [PATCH] vcmi: rework derivation --- pkgs/by-name/vc/vcmi/package.nix | 77 ++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 34 deletions(-) diff --git a/pkgs/by-name/vc/vcmi/package.nix b/pkgs/by-name/vc/vcmi/package.nix index 6cbbeaf2cfe4..9a509c0673bb 100644 --- a/pkgs/by-name/vc/vcmi/package.nix +++ b/pkgs/by-name/vc/vcmi/package.nix @@ -1,30 +1,29 @@ { - lib, - stdenv, - fetchFromGitHub, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, boost, cmake, + fetchFromGitHub, ffmpeg, fuzzylite, innoextract, + lib, + libsquish, luajit, minizip, ninja, + onetbb, + onnxruntime, pkg-config, python3, - onetbb, + qt6, + stdenv, unshield, + versionCheckHook, xz, zlib, - testers, - vcmi, - libsForQt5, - libsquish, - onnxruntime, }: stdenv.mkDerivation (finalAttrs: { pname = "vcmi"; @@ -43,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: { ninja pkg-config python3 - libsForQt5.wrapQtAppsHook + qt6.wrapQtAppsHook ]; buildInputs = [ @@ -54,29 +53,26 @@ stdenv.mkDerivation (finalAttrs: { boost ffmpeg fuzzylite + libsquish luajit minizip - libsForQt5.qtbase - libsForQt5.qttools onetbb + onnxruntime + qt6.qtbase + qt6.qttools xz zlib - libsquish - onnxruntime ]; cmakeFlags = [ - "-DENABLE_LUA:BOOL=ON" - "-DENABLE_ERM:BOOL=ON" - "-DENABLE_GOLDMASTER:BOOL=ON" - "-DENABLE_PCH:BOOL=OFF" - "-DENABLE_TEST:BOOL=OFF" # Tests require HOMM3 data files. - "-DFORCE_BUNDLED_MINIZIP:BOOL=OFF" - "-DFORCE_BUNDLED_FL:BOOL=OFF" - "-DCMAKE_INSTALL_RPATH:STRING=$out/lib/vcmi" - "-DCMAKE_INSTALL_BINDIR:STRING=bin" - "-DCMAKE_INSTALL_LIBDIR:STRING=lib" - "-DCMAKE_INSTALL_DATAROOTDIR:STRING=share" + (lib.cmakeBool "ENABLE_CLIENT" true) + (lib.cmakeBool "ENABLE_GOLDMASTER" true) + (lib.cmakeBool "ENABLE_TEST" false) # Requires nonfree data files. + (lib.cmakeBool "ENABLE_PCH" false) + (lib.cmakeFeature "CMAKE_INSTALL_RPATH" "$out/lib/vcmi") + (lib.cmakeFeature "CMAKE_INSTALL_BINDIR" "bin") + (lib.cmakeFeature "CMAKE_INSTALL_LIBDIR" "lib") + (lib.cmakeFeature "CMAKE_INSTALL_DATAROOTDIR" "share") ]; postFixup = '' @@ -90,23 +86,36 @@ stdenv.mkDerivation (finalAttrs: { }" ''; - passthru.tests.version = testers.testVersion { - package = vcmi; - command = '' - XDG_DATA_HOME="$TMPDIR" XDG_CACHE_HOME="$TMPDIR" XDG_CONFIG_HOME="$TMPDIR" \ - vcmiclient --version - ''; - }; + doInstallCheck = true; + nativeInstallCheckInputs = [ versionCheckHook ]; + versionCheckProgram = "${placeholder "out"}/bin/vcmiclient"; + versionCheckProgramArg = "--version"; + versionCheckKeepEnvironment = [ + "XDG_CACHE_HOME" + "XDG_CONFIG_HOME" + "XDG_DATA_HOME" + ]; + preVersionCheck = '' + export \ + XDG_CACHE_HOME="$TMPDIR" \ + XDG_CONFIG_HOME="$TMPDIR" \ + XDG_DATA_HOME="$TMPDIR" + ''; meta = { description = "Open-source engine for Heroes of Might and Magic III"; + longDescription = '' + VCMI is an open-source engine for Heroes of Might and Magic III, offering + new and extended possibilities. To use VCMI, you need to own the original + data files. + ''; homepage = "https://vcmi.eu"; - changelog = "https://github.com/vcmi/vcmi/blob/${finalAttrs.src.rev}/ChangeLog.md"; + changelog = "https://vcmi.eu/ChangeLog"; license = with lib.licenses; [ gpl2Plus cc-by-sa-40 ]; - maintainers = with lib.maintainers; [ azahi ]; + maintainers = [ lib.maintainers.azahi ]; platforms = lib.platforms.linux; mainProgram = "vcmilauncher"; };