1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
{ lib, stdenv, fetchFromGitHub
, cmake, ninja, git, pandoc
, libGL, libGLU, libXxf86vm, freeimage
, qtbase, wrapQtAppsHook
, copyDesktopItems, makeDesktopItem
}:
stdenv.mkDerivation rec {
pname = "TrenchBroom";
version = "2021.1";
src = fetchFromGitHub {
owner = "TrenchBroom";
repo = "TrenchBroom";
rev = "v${version}";
sha256 = "06j68kp7g57hclyp8ilh2wd4vr5w8r718cicdp1cap48fcxlqfxv";
fetchSubmodules = true;
};
postPatch = ''
substituteInPlace common/src/Version.h.in \
--subst-var-by APP_VERSION_YEAR ${lib.versions.major version} \
--subst-var-by APP_VERSION_NUMBER ${lib.versions.minor version} \
--subst-var-by GIT_DESCRIBE v${version}
# Tests don't compile because of vendored `catch2` being incompatible with glibc-2.34.
# Also, no need to since we don't even run them.
substituteInPlace lib/CMakeLists.txt \
--replace "add_subdirectory(Catch2)" ""
substituteInPlace lib/vecmath/CMakeLists.txt \
--replace "add_subdirectory(test)" "" \
--replace "add_subdirectory(lib)" ""
substituteInPlace lib/kdl/CMakeLists.txt \
--replace "add_subdirectory(test)" ""
substituteInPlace common/CMakeLists.txt \
--replace "add_subdirectory(test)" "" \
--replace "add_subdirectory(benchmark)" ""
'';
nativeBuildInputs = [ cmake git pandoc wrapQtAppsHook copyDesktopItems ];
buildInputs = [ libGL libGLU libXxf86vm freeimage qtbase ];
QT_PLUGIN_PATH = "${qtbase}/${qtbase.qtPluginPrefix}";
QT_QPA_PLATFORM = "offscreen";
ninjaFlags = [
"TrenchBroom"
];
preBuild = "export HOME=$(mktemp -d)";
postInstall = ''
pushd $out/share/TrenchBroom/icons
for F in icon_*.png; do
SIZE=$(echo $F|sed -e s/icon_// -e s/.png//)
DIR=$out/share/icons/hicolor/$SIZE"x"$SIZE/apps
mkdir -p $DIR
ln -s ../../../../TrenchBroom/icons/$F $DIR/trenchbroom.png
done
popd
'';
desktopItems = [
(makeDesktopItem {
name = "TrenchBroom";
desktopName = "TrenchBroom level editor";
icon = "trenchbroom";
comment = meta.description;
categories = [ "Development" ];
exec = "trenchbroom";
})
];
meta = with lib; {
homepage = "https://trenchbroom.github.io/";
description = "Level editor for Quake-engine based games";
license = licenses.gpl3Only;
maintainers = with maintainers; [ astro ];
};
}
|