151 lines
3.5 KiB
Nix
151 lines
3.5 KiB
Nix
{ stdenv
|
|
, lib
|
|
, fetchFromGitHub
|
|
, fetchpatch
|
|
, cmake
|
|
, libGL
|
|
, libSM
|
|
, SDL
|
|
, SDL_image
|
|
, SDL_ttf
|
|
, glew
|
|
, openalSoft
|
|
, ncurses
|
|
, glib
|
|
, gtk2
|
|
, gtk3
|
|
, libsndfile
|
|
, zlib
|
|
, dfVersion
|
|
, pkg-config
|
|
}:
|
|
|
|
let
|
|
inherit (lib)
|
|
getAttr
|
|
hasAttr
|
|
licenses
|
|
maintainers
|
|
platforms
|
|
versionOlder
|
|
;
|
|
|
|
unfuck-releases = {
|
|
"0.43.05" = {
|
|
unfuckRelease = "0.43.05";
|
|
hash = "sha256-4iLVrKmlVdvBICb8NLe/U7pHtL372CGDkxt/2lf2bZw=";
|
|
};
|
|
"0.44.05" = {
|
|
unfuckRelease = "0.44.05";
|
|
hash = "sha256-iwR9st4VsPJBn7cKH/cy8YS6Tcw8J+lMJK9/9Qgl0gM=";
|
|
};
|
|
"0.44.09" = {
|
|
unfuckRelease = "0.44.09";
|
|
hash = "sha256-9W9qON0QEjfXe2XzRvseixc+YznPzDQdcId08dEGF40=";
|
|
};
|
|
"0.44.10" = {
|
|
unfuckRelease = "0.44.10";
|
|
hash = "sha256-8ldEFcf5zPRdC/yXgMByeCC0pqZprreITIetKDpOYW0=";
|
|
};
|
|
"0.44.11" = {
|
|
unfuckRelease = "0.44.11.1";
|
|
hash = "sha256-f9vDe3Q3Vl2hFLCPSzYtqyv9rLKBKEnARZTu0MKaX88=";
|
|
};
|
|
"0.44.12" = {
|
|
unfuckRelease = "0.44.12";
|
|
hash = "sha256-f9vDe3Q3Vl2hFLCPSzYtqyv9rLKBKEnARZTu0MKaX88=";
|
|
};
|
|
"0.47.01" = {
|
|
unfuckRelease = "0.47.01";
|
|
hash = "sha256-k8yrcJVHlHNlmOL2kEPTftSfx4mXO35TcS0zAvFYu4c=";
|
|
};
|
|
"0.47.02" = {
|
|
unfuckRelease = "0.47.01";
|
|
hash = "sha256-k8yrcJVHlHNlmOL2kEPTftSfx4mXO35TcS0zAvFYu4c=";
|
|
};
|
|
"0.47.04" = {
|
|
unfuckRelease = "0.47.04";
|
|
hash = "sha256-KRr0A/2zANAOSDeP8V9tYe7tVO2jBLzU+TF6vTpISfE=";
|
|
};
|
|
"0.47.05" = {
|
|
unfuckRelease = "0.47.05-final";
|
|
hash = "sha256-kBdzU6KDpODOBP9XHM7lQRIEWUGOj838vXF1FbSr0Xw=";
|
|
};
|
|
};
|
|
|
|
release =
|
|
if hasAttr dfVersion unfuck-releases
|
|
then getAttr dfVersion unfuck-releases
|
|
else throw "[unfuck] Unknown Dwarf Fortress version: ${dfVersion}";
|
|
in
|
|
|
|
stdenv.mkDerivation {
|
|
pname = "dwarf_fortress_unfuck";
|
|
version = release.unfuckRelease;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "svenstaro";
|
|
repo = "dwarf_fortress_unfuck";
|
|
rev = release.unfuckRelease;
|
|
inherit (release) hash;
|
|
};
|
|
|
|
patches = lib.optionals (versionOlder release.unfuckRelease "0.47.05") [(
|
|
fetchpatch {
|
|
name = "fix-noreturn-returning.patch";
|
|
url = "https://github.com/svenstaro/dwarf_fortress_unfuck/commit/6dcfe5ae869fddd51940c6c37a95f7bc639f4389.patch";
|
|
hash = "sha256-b9eI3iR7dmFqCrktPyn6QJ9U2A/7LvfYRS+vE3BOaqk=";
|
|
}
|
|
)];
|
|
|
|
postPatch = ''
|
|
# https://github.com/svenstaro/dwarf_fortress_unfuck/pull/27
|
|
substituteInPlace CMakeLists.txt --replace \''${GLEW_LIBRARIES} GLEW::glew
|
|
'';
|
|
|
|
cmakeFlags = [
|
|
"-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
|
|
"-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
|
|
];
|
|
|
|
nativeBuildInputs = [ cmake pkg-config ];
|
|
buildInputs = [
|
|
libSM
|
|
SDL
|
|
SDL_image
|
|
SDL_ttf
|
|
glew
|
|
openalSoft
|
|
ncurses
|
|
libsndfile
|
|
zlib
|
|
libGL
|
|
]
|
|
# switched to gtk3 in 0.47.05
|
|
++ (if versionOlder release.unfuckRelease "0.47.05" then [
|
|
gtk2
|
|
] else [
|
|
gtk3
|
|
]);
|
|
|
|
# Don't strip unused symbols; dfhack hooks into some of them.
|
|
dontStrip = true;
|
|
|
|
installPhase = ''
|
|
install -D -m755 ../build/libgraphics.so $out/lib/libgraphics.so
|
|
'';
|
|
|
|
# Breaks dfhack because of inlining.
|
|
hardeningDisable = [ "fortify" ];
|
|
|
|
passthru = { inherit dfVersion; };
|
|
|
|
meta = {
|
|
description = "Unfucked multimedia layer for Dwarf Fortress";
|
|
homepage = "https://github.com/svenstaro/dwarf_fortress_unfuck";
|
|
license = licenses.free;
|
|
platforms = platforms.linux;
|
|
maintainers = with maintainers; [ abbradar numinit ];
|
|
};
|
|
}
|