From da907856cb22ece07d3e3af33b522e58be13dd74 Mon Sep 17 00:00:00 2001 From: Stefan Frijters Date: Mon, 2 Jun 2025 00:54:27 +0200 Subject: [PATCH 1/4] openttd: remove unused flags --- pkgs/games/openttd/default.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkgs/games/openttd/default.nix b/pkgs/games/openttd/default.nix index 1f797e5fbc7a..6ab87adffd4b 100644 --- a/pkgs/games/openttd/default.nix +++ b/pkgs/games/openttd/default.nix @@ -107,10 +107,6 @@ stdenv.mkDerivation rec { libjack2 ]; - prefixKey = "--prefix-dir="; - - configureFlags = [ "--without-liblzo2" ]; - postPatch = '' substituteInPlace src/music/fluidsynth.cpp \ --replace-fail "/usr/share/soundfonts/default.sf2" \ From 2aa44cba7f11f59746c923d7617e3f875be53c16 Mon Sep 17 00:00:00 2001 From: Stefan Frijters Date: Mon, 2 Jun 2025 01:01:00 +0200 Subject: [PATCH 2/4] openttd: modernize derivation --- pkgs/games/openttd/default.nix | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/pkgs/games/openttd/default.nix b/pkgs/games/openttd/default.nix index 6ab87adffd4b..e3be568c74b9 100644 --- a/pkgs/games/openttd/default.nix +++ b/pkgs/games/openttd/default.nix @@ -40,25 +40,25 @@ let opengfx = fetchzip { url = "https://cdn.openttd.org/opengfx-releases/7.1/opengfx-7.1-all.zip"; - sha256 = "sha256-daJ/Qwg/okpmLQkXcCjruIiP8GEwyyp02YWcGQepxzs="; + hash = "sha256-daJ/Qwg/okpmLQkXcCjruIiP8GEwyyp02YWcGQepxzs="; }; opensfx = fetchzip { url = "https://cdn.openttd.org/opensfx-releases/1.0.3/opensfx-1.0.3-all.zip"; - sha256 = "sha256-QmfXizrRTu/fUcVOY7tCndv4t4BVW+fb0yUi8LgSYzM="; + hash = "sha256-QmfXizrRTu/fUcVOY7tCndv4t4BVW+fb0yUi8LgSYzM="; }; openmsx = fetchzip { url = "https://cdn.openttd.org/openmsx-releases/0.4.2/openmsx-0.4.2-all.zip"; - sha256 = "sha256-Cgrg2m+uTODFg39mKgX+hE8atV7v5bVyZd716vSZB8M="; + hash = "sha256-Cgrg2m+uTODFg39mKgX+hE8atV7v5bVyZd716vSZB8M="; }; in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "openttd"; version = "14.1"; src = fetchzip { - url = "https://cdn.openttd.org/openttd-releases/${version}/${pname}-${version}-source.tar.xz"; + url = "https://cdn.openttd.org/openttd-releases/${finalAttrs.version}/openttd-${finalAttrs.version}-source.tar.xz"; hash = "sha256-YT4IE/rJ9pnpeMWKbOra6AbSUwW19RwOKlXkxwoMeKY="; }; @@ -77,6 +77,7 @@ stdenv.mkDerivation rec { pkg-config makeWrapper ]; + buildInputs = [ SDL2 @@ -107,6 +108,8 @@ stdenv.mkDerivation rec { libjack2 ]; + strictDeps = true; + postPatch = '' substituteInPlace src/music/fluidsynth.cpp \ --replace-fail "/usr/share/soundfonts/default.sf2" \ @@ -124,7 +127,7 @@ stdenv.mkDerivation rec { tar -xf ${openmsx}/*.tar -C $out/share/games/openttd/baseset ''; - meta = with lib; { + meta = { description = ''Open source clone of the Microprose game "Transport Tycoon Deluxe"''; mainProgram = "openttd"; longDescription = '' @@ -138,12 +141,12 @@ stdenv.mkDerivation rec { - observe as spectators ''; homepage = "https://www.openttd.org/"; - changelog = "https://cdn.openttd.org/openttd-releases/${version}/changelog.txt"; - license = licenses.gpl2Only; - platforms = platforms.linux; - maintainers = with maintainers; [ + changelog = "https://cdn.openttd.org/openttd-releases/${finalAttrs.version}/changelog.txt"; + license = lib.licenses.gpl2Only; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ jcumming fpletz ]; }; -} +}) From 045f0b2c797dd012abf760a8eeac6bf6f5195251 Mon Sep 17 00:00:00 2001 From: Stefan Frijters Date: Mon, 2 Jun 2025 01:09:16 +0200 Subject: [PATCH 3/4] openttd: remove dependency on nlohmann_json This was vendored from https://github.com/OpenTTD/OpenTTD/commit/ba67f39db6efa2c251999a94668cd0e10eb8f6ad onwards. --- pkgs/games/openttd/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/games/openttd/default.nix b/pkgs/games/openttd/default.nix index e3be568c74b9..1fcf610f2336 100644 --- a/pkgs/games/openttd/default.nix +++ b/pkgs/games/openttd/default.nix @@ -11,7 +11,6 @@ xz, freetype, fontconfig, - nlohmann_json, curl, icu, harfbuzz, @@ -86,7 +85,6 @@ stdenv.mkDerivation (finalAttrs: { zlib freetype fontconfig - nlohmann_json curl icu harfbuzz From 17effa31a8dd39dbcbc1a4dee0eea2bd20af3807 Mon Sep 17 00:00:00 2001 From: Stefan Frijters Date: Mon, 2 Jun 2025 14:27:18 +0200 Subject: [PATCH 4/4] openttd: fix cross-compilation --- pkgs/games/openttd/default.nix | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/pkgs/games/openttd/default.nix b/pkgs/games/openttd/default.nix index 1fcf610f2336..76b0f49ce2ad 100644 --- a/pkgs/games/openttd/default.nix +++ b/pkgs/games/openttd/default.nix @@ -34,6 +34,7 @@ alsa-lib, libjack2, makeWrapper, + buildPackages, }: let @@ -51,6 +52,18 @@ let url = "https://cdn.openttd.org/openmsx-releases/0.4.2/openmsx-0.4.2-all.zip"; hash = "sha256-Cgrg2m+uTODFg39mKgX+hE8atV7v5bVyZd716vSZB8M="; }; + + # OpenTTD builds and uses some of its own tools during the build and we need those to be available for cross-compilation. + # Build the tools for buildPlatform with minimal dependencies, using the "OPTION_TOOLS_ONLY" flag. + crossTools = buildPackages.openttd.overrideAttrs (oldAttrs: { + pname = "openttd-tools"; + buildInputs = [ ]; + cmakeFlags = oldAttrs.cmakeFlags or [ ] ++ [ (lib.cmakeBool "OPTION_TOOLS_ONLY" true) ]; + installPhase = '' + install -Dm555 src/strgen/strgen -t $out/bin + install -Dm555 src/settingsgen/settingsgen -t $out/bin + ''; + }); in stdenv.mkDerivation (finalAttrs: { pname = "openttd"; @@ -71,11 +84,15 @@ stdenv.mkDerivation (finalAttrs: { }) ]; - nativeBuildInputs = [ - cmake - pkg-config - makeWrapper - ]; + nativeBuildInputs = + [ + cmake + pkg-config + makeWrapper + ] + ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ + crossTools + ]; buildInputs = [