I’m trying to package GameMaker for Nix using the Ubuntu deb file. Unfortunately, it crashes when I try to run it, because it needs access to libintl.so.8.
Some links I looked at:
https://nixos.wiki/wiki/Packaging/Binaries
#73288: Split gettext into multiple packages
#37056: glibc: Strip bonus libraries
package.nix:
{ stdenv, lib, pkgs, fetchurl, autoPatchelfHook, libz, lttng-ust_2_12, libxml2, brotli, bzip2, libpng, musl }:
stdenv.mkDerivation rec {
name = "GameMaker-Beta-${version}";
version = "2024.1100.0.713";
src = fetchurl {
url = "https://gms.yoyogames.com/GameMaker-Beta-${version}.deb";
hash = "sha256-YzwT7UC4LGkNCUk7OC/en/fMux7/MtRCXBflK1V1/a8=";
};
sourceRoot = ".";
unpackCmd = "${pkgs.dpkg.out}/bin/dpkg-deb -x $curSrc .";
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp -R usr/share opt $out/
# fix the path in the desktop file
substituteInPlace \
$out/share/applications/GameMaker-Beta.desktop \
--replace-warn /opt/ $out/opt/
# symlink the binary to bin/
# todo: select architecture depending on system
ln -s $out/opt/GameMaker-Beta/x86_64/GameMaker $out/bin/GameMaker
runHook postInstall
'';
nativeBuildInputs = [
autoPatchelfHook
];
#autoPatchelfIgnoreMissingDeps = [ "libintl.so.8" ];
buildInputs = [
stdenv.cc.cc.lib
lttng-ust_2_12
libz
libxml2
libpng
musl
brotli
bzip2
];
meta = {
homepage = "https://gamemaker.io/";
description = "";
license = lib.licenses.unfree;
platforms = lib.intersectLists lib.platforms.linux (lib.platforms.x86_64 ++ lib.platforms.aarch64);
maintainers = [ "thymelizabeth" ];
};
}