| 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 | (define-module (gnu packages game-development)
|
| 60 | #:use-module ((srfi srfi-1) #:hide (zip))
|
| 61 | #:use-module (ice-9 match)
|
| 62 | #:use-module ((guix licenses) #:prefix license:)
|
| 63 | #:use-module (guix packages)
|
| 64 | #:use-module (guix gexp)
|
| 65 | #:use-module (guix download)
|
| 66 | #:use-module (guix git-download)
|
| 67 | #:use-module (guix svn-download)
|
| 68 | #:use-module (guix utils)
|
| 69 | #:use-module (guix build-system cmake)
|
| 70 | #:use-module (guix build-system copy)
|
| 71 | #:use-module (guix build-system gnu)
|
| 72 | #:use-module (guix build-system go)
|
| 73 | #:use-module (guix build-system pyproject)
|
| 74 | #:use-module (guix build-system qt)
|
| 75 | #:use-module (guix build-system renpy)
|
| 76 | #:use-module (guix build-system scons)
|
| 77 | #:use-module (gnu packages)
|
| 78 | #:use-module (gnu packages algebra)
|
| 79 | #:use-module (gnu packages assembly)
|
| 80 | #:use-module (gnu packages audio)
|
| 81 | #:use-module (gnu packages autotools)
|
| 82 | #:use-module (gnu packages backup)
|
| 83 | #:use-module (gnu packages base)
|
| 84 | #:use-module (gnu packages bash)
|
| 85 | #:use-module (gnu packages bison)
|
| 86 | #:use-module (gnu packages boost)
|
| 87 | #:use-module (gnu packages build-tools)
|
| 88 | #:use-module (gnu packages c)
|
| 89 | #:use-module (gnu packages cmake)
|
| 90 | #:use-module (gnu packages compression)
|
| 91 | #:use-module (gnu packages cpp)
|
| 92 | #:use-module (gnu packages check)
|
| 93 | #:use-module (gnu packages curl)
|
| 94 | #:use-module (gnu packages documentation)
|
| 95 | #:use-module (gnu packages games)
|
| 96 | #:use-module (gnu packages golang-build)
|
| 97 | #:use-module (gnu packages golang-xyz)
|
| 98 | #:use-module (gnu packages toolkits)
|
| 99 | #:use-module (gnu packages fonts)
|
| 100 | #:use-module (gnu packages fontutils)
|
| 101 | #:use-module (gnu packages freedesktop)
|
| 102 | #:use-module (gnu packages fribidi)
|
| 103 | #:use-module (gnu packages dbm)
|
| 104 | #:use-module (gnu packages gawk)
|
| 105 | #:use-module (gnu packages gettext)
|
| 106 | #:use-module (gnu packages gl)
|
| 107 | #:use-module (gnu packages glib)
|
| 108 | #:use-module (gnu packages gnome)
|
| 109 | #:use-module (gnu packages gnunet)
|
| 110 | #:use-module (gnu packages graphics)
|
| 111 | #:use-module (gnu packages graphviz)
|
| 112 | #:use-module (gnu packages gtk)
|
| 113 | #:use-module (gnu packages guile)
|
| 114 | #:use-module (gnu packages haskell-xyz)
|
| 115 | #:use-module (gnu packages icu4c)
|
| 116 | #:use-module (gnu packages image)
|
| 117 | #:use-module (gnu packages javascript)
|
| 118 | #:use-module (gnu packages kde-frameworks)
|
| 119 | #:use-module (gnu packages linux)
|
| 120 | #:use-module (gnu packages lisp)
|
| 121 | #:use-module (gnu packages llvm)
|
| 122 | #:use-module (gnu packages lua)
|
| 123 | #:use-module (gnu packages m4)
|
| 124 | #:use-module (gnu packages maths)
|
| 125 | #:use-module (gnu packages mp3)
|
| 126 | #:use-module (gnu packages multiprecision)
|
| 127 | #:use-module (gnu packages music)
|
| 128 | #:use-module (gnu packages ncurses)
|
| 129 | #:use-module (gnu packages networking)
|
| 130 | #:use-module (gnu packages pcre)
|
| 131 | #:use-module (gnu packages perl)
|
| 132 | #:use-module (gnu packages pkg-config)
|
| 133 | #:use-module (gnu packages pretty-print)
|
| 134 | #:use-module (gnu packages pulseaudio)
|
| 135 | #:use-module (gnu packages python)
|
| 136 | #:use-module (gnu packages python-build)
|
| 137 | #:use-module (gnu packages python-crypto)
|
| 138 | #:use-module (gnu packages python-graphics)
|
| 139 | #:use-module (gnu packages python-web)
|
| 140 | #:use-module (gnu packages python-xyz)
|
| 141 | #:use-module (gnu packages readline)
|
| 142 | #:use-module (gnu packages ruby)
|
| 143 | #:use-module (gnu packages ruby-xyz)
|
| 144 | #:use-module (gnu packages qt)
|
| 145 | #:use-module (gnu packages sdl)
|
| 146 | #:use-module (gnu packages serialization)
|
| 147 | #:use-module (gnu packages speech)
|
| 148 | #:use-module (gnu packages sphinx)
|
| 149 | #:use-module (gnu packages sqlite)
|
| 150 | #:use-module (gnu packages squirrel)
|
| 151 | #:use-module (gnu packages stb)
|
| 152 | #:use-module (gnu packages swig)
|
| 153 | #:use-module (gnu packages texinfo)
|
| 154 | #:use-module (gnu packages textutils)
|
| 155 | #:use-module (gnu packages tls)
|
| 156 | #:use-module (gnu packages version-control)
|
| 157 | #:use-module (gnu packages video)
|
| 158 | #:use-module (gnu packages vim)
|
| 159 | #:use-module (gnu packages vulkan)
|
| 160 | #:use-module (gnu packages web)
|
| 161 | #:use-module (gnu packages wxwidgets)
|
| 162 | #:use-module (gnu packages xdisorg)
|
| 163 | #:use-module (gnu packages xiph)
|
| 164 | #:use-module (gnu packages xml)
|
| 165 | #:use-module (gnu packages xorg))
|
| 166 |
|
| 167 | (define-public bullet
|
| 168 | (package
|
| 169 | (name "bullet")
|
| 170 | (version "3.25")
|
| 171 | (source (origin
|
| 172 | (method git-fetch)
|
| 173 | (uri (git-reference
|
| 174 | (url "https://github.com/bulletphysics/bullet3/")
|
| 175 | (commit version)))
|
| 176 | (file-name (git-file-name name version))
|
| 177 | (sha256
|
| 178 | (base32
|
| 179 | "08xq225zw6z4ic0whaf8xn697vv5lkrdzfkmjvm32biidbjg8qq0"))
|
| 180 | (modules '((guix build utils)))
|
| 181 | (snippet
|
| 182 | '(begin
|
| 183 | (for-each delete-file (find-files "build3" "premake*"))
|
| 184 | (with-directory-excursion "examples/ThirdPartyLibs"
|
| 185 | (for-each delete-file-recursively
|
| 186 | '("Gwen" "clsocket" "enet" "glad" "imgui"
|
| 187 | "lua-5.2.3" "midi" "minizip" "openvr"
|
| 188 | "optionalX11" "serial" "zlib")))
|
| 189 |
|
| 190 | |
| 191 | (substitute* "test/CMakeLists.txt"
|
| 192 | ((" InverseDynamics")
|
| 193 | "../examples/ThirdPartyLibs/BussIK InverseDynamics"))))))
|
| 194 | (build-system cmake-build-system)
|
| 195 | (arguments
|
| 196 | (list #:configure-flags
|
| 197 | #~(list "-DBUILD_SHARED_LIBS=ON"
|
| 198 | "-DBUILD_CPU_DEMOS=OFF"
|
| 199 | "-DBUILD_OPENGL3_DEMOS=OFF"
|
| 200 | "-DBUILD_BULLET2_DEMOS=OFF"
|
| 201 | "-DBULLET2_MULTITHREADING=ON"
|
| 202 | |
| 203 | |
| 204 | |
| 205 | |
| 206 | "-DUSE_DOUBLE_PRECISION=ON"
|
| 207 | |
| 208 | |
| 209 | "-DBUILD_BULLET_ROBOTICS_GUI_EXTRA=OFF"
|
| 210 | |
| 211 | |
| 212 | "-DBUILD_BULLET_ROBOTICS_EXTRA=OFF"
|
| 213 | (string-append "-DCMAKE_CXX_FLAGS=-fPIC "
|
| 214 | (or (getenv "CXXFLAGS") "")))
|
| 215 | #:phases
|
| 216 | #~(modify-phases %standard-phases
|
| 217 | (add-after 'unpack 'remove-failing-tests
|
| 218 | |
| 219 | (lambda _
|
| 220 | (substitute* "test/SharedMemory/CMakeLists.txt"
|
| 221 | (("ADD_TEST") "# ADD_TEST"))
|
| 222 | (substitute* "test/InverseDynamics/CMakeLists.txt"
|
| 223 | (("ADD_TEST\\(Test_BulletInverseForward")
|
| 224 | "# ADD_TEST(Test_BulletInverseForward")))))))
|
| 225 | (inputs (list glu libx11 mesa))
|
| 226 | (home-page "https://pybullet.org/wordpress/")
|
| 227 | (synopsis "3D physics engine library")
|
| 228 | (description
|
| 229 | "Bullet is a physics engine library usable for collision detection. It
|
| 230 | is used in some video games and movies.")
|
| 231 | (license license:zlib)))
|
| 232 |
|
| 233 | (define-public darkradiant
|
| 234 | (package
|
| 235 | (name "darkradiant")
|
| 236 | (version "3.9.0")
|
| 237 | (source
|
| 238 | (origin
|
| 239 | (method git-fetch)
|
| 240 | (uri (git-reference (url "https://github.com/codereader/DarkRadiant")
|
| 241 | (commit version)))
|
| 242 | (sha256 (base32 "0xp2swxi9kdi8rvqwrwmzjcxmpr6x14phyrxp7ldia4mr67pnpxg"))
|
| 243 | (file-name (git-file-name name version))
|
| 244 | (modules '((guix build utils)))
|
| 245 | (snippet
|
| 246 | '(begin
|
| 247 | (map (lambda (lib)
|
| 248 | (delete-file-recursively (string-append "libs/" lib)))
|
| 249 | (list "libfmt"
|
| 250 | "pugixml"
|
| 251 | "pybind"))
|
| 252 | (delete-file-recursively "tools")
|
| 253 | (substitute* "CMakeLists.txt"
|
| 254 | (("libs/libfmt ") "")
|
| 255 | (("\\# Locate wxWidgets" locate-wxwidgets)
|
| 256 | (string-append "find_package(fmt REQUIRED)\n"
|
| 257 | "\n"
|
| 258 | locate-wxwidgets))
|
| 259 | (("find_package\\(Python REQUIRED COMPONENTS Development\\)"
|
| 260 | find-python)
|
| 261 | (string-append find-python "\n"
|
| 262 | "find_package(pybind11 REQUIRED)\n")))
|
| 263 | (substitute* "plugins/script/CMakeLists.txt"
|
| 264 | (("\\$\\{CMAKE_SOURCE_DIR\\}/libs/pybind") ""))))
|
| 265 | (patches
|
| 266 | (search-patches "darkradiant-use-packaged-pugixml.patch"))))
|
| 267 | (build-system cmake-build-system)
|
| 268 | (arguments
|
| 269 | (list #:configure-flags
|
| 270 | |
| 271 | |
| 272 | #~(list "-DENABLE_RELOCATION=NO")
|
| 273 | |
| 274 | #:parallel-tests? #f
|
| 275 | #:phases
|
| 276 | #~(modify-phases %standard-phases
|
| 277 | (add-after 'unpack 'fix-broken-header-path
|
| 278 | |
| 279 | |
| 280 | (lambda _
|
| 281 | (substitute* "libs/scene/merge/MergeAction.h"
|
| 282 | (("../scenelib.h") "../../scenelib.h"))))
|
| 283 | (add-before 'check 'pre-check
|
| 284 | (lambda* (#:key inputs native-inputs #:allow-other-keys)
|
| 285 | |
| 286 | (mkdir-p (string-append (getenv "TMPDIR") "/home"))
|
| 287 | (setenv "HOME" (string-append (getenv "TMPDIR") "/home"))
|
| 288 | |
| 289 | (setenv "DISPLAY" ":1")
|
| 290 | (system "Xvfb :1 &")))
|
| 291 | (replace 'check
|
| 292 | (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
|
| 293 | (when tests?
|
| 294 | |
| 295 | |
| 296 | (invoke "ctest"
|
| 297 | "-j" (if parallel-tests?
|
| 298 | (number->string (parallel-job-count))
|
| 299 | "1")
|
| 300 | "-E"
|
| 301 | (string-join (list "EntityTest.*Speaker*"
|
| 302 | "SoundManagerTest.*")
|
| 303 | "|"))))))))
|
| 304 | (inputs
|
| 305 | (list boost
|
| 306 | eigen
|
| 307 | fmt
|
| 308 | ftgl
|
| 309 | glew
|
| 310 | glib
|
| 311 | libjpeg-turbo
|
| 312 | libogg
|
| 313 | libpng
|
| 314 | libsigc++-2
|
| 315 | libvorbis
|
| 316 | openal
|
| 317 | pugixml
|
| 318 | pybind11
|
| 319 | python
|
| 320 | wxwidgets))
|
| 321 | (native-inputs
|
| 322 | (list googletest
|
| 323 | pkg-config
|
| 324 | ruby-asciidoctor
|
| 325 | xorg-server-for-tests))
|
| 326 | (home-page "https://www.darkradiant.net")
|
| 327 | (synopsis "Map editor for games on idTech4 engine")
|
| 328 | (description "Map editor designed for use with The Dark Mod, a
|
| 329 | Thief-inspired game utilizing the idTech4 game engine.")
|
| 330 | (license license:gpl2)))
|
| 331 |
|
| 332 | (define-public dds
|
| 333 | (let ((commit "d2bc4c2c703941664fc1d73e69caa5233cdeac18")
|
| 334 | (revision "1"))
|
| 335 | (package
|
| 336 | (name "dds")
|
| 337 | (version (git-version "2.9.0" revision commit))
|
| 338 | (source
|
| 339 | (origin
|
| 340 | (method git-fetch)
|
| 341 | (uri (git-reference
|
| 342 | (url "https://github.com/dds-bridge/dds")
|
| 343 | (commit commit)))
|
| 344 | (file-name (git-file-name name version))
|
| 345 | (sha256
|
| 346 | (base32
|
| 347 | "1ishbb69cvyv96xdxshnly0m5ydwljgdf8fwa1cr9rj2qj40q4rm"))))
|
| 348 | (build-system gnu-build-system)
|
| 349 | (arguments
|
| 350 | (list #:phases
|
| 351 | #~(modify-phases %standard-phases
|
| 352 | (add-after 'unpack 'chdir
|
| 353 | (lambda _
|
| 354 | (chdir "src")))
|
| 355 | (replace 'configure
|
| 356 | |
| 357 | |
| 358 | |
| 359 | (lambda _
|
| 360 | (copy-file "Makefiles/Makefile_linux_shared"
|
| 361 | "Makefile")))
|
| 362 | (replace 'check
|
| 363 | |
| 364 | |
| 365 | (lambda* (#:key tests? #:allow-other-keys)
|
| 366 | (when tests?
|
| 367 | (install-file "libdds.so" "../test")
|
| 368 | (with-directory-excursion "../test"
|
| 369 | (copy-file "Makefiles/Makefile_linux"
|
| 370 | "Makefile")
|
| 371 | (substitute* "Makefile"
|
| 372 | (("-Werror") ""))
|
| 373 | (invoke "make")
|
| 374 | (invoke "./dtest" "-f" "../hands/list100.txt")))))
|
| 375 | (replace 'install
|
| 376 | |
| 377 | |
| 378 | |
| 379 | |
| 380 | (lambda _
|
| 381 | (install-file "libdds.so"
|
| 382 | (string-append #$output "/lib"))
|
| 383 | (let ((inc (string-append #$output "/include")))
|
| 384 | (copy-recursively "../include" inc))
|
| 385 | (let ((doc (string-append #$output
|
| 386 | "/share/doc/"
|
| 387 | #$name "-" #$version)))
|
| 388 | (install-file "../LICENSE" doc)
|
| 389 | (copy-recursively "../doc" doc)))))))
|
| 390 | (native-inputs
|
| 391 | (list gawk procps))
|
| 392 | (inputs
|
| 393 | (list boost-1.83))
|
| 394 | (home-page "https://privat.bahnhof.se/wb758135/")
|
| 395 | (synopsis "Double dummy solver for the bridge card game")
|
| 396 | (description "DDS is a double-dummy solver of bridge hands. It supports
|
| 397 | single-threading and multi-threading for improved performance. DDS
|
| 398 | offers a wide range of functions, including par-score calculations.")
|
| 399 | (license license:asl2.0))))
|
| 400 |
|
| 401 | (define-public deutex
|
| 402 | (package
|
| 403 | (name "deutex")
|
| 404 | (version "5.2.2")
|
| 405 | (source
|
| 406 | (origin
|
| 407 | (method url-fetch)
|
| 408 | (uri (string-append "https://github.com/Doom-Utils/deutex"
|
| 409 | "/releases/download/v" version "/"
|
| 410 | "deutex-" version ".tar.zst"))
|
| 411 | (sha256
|
| 412 | (base32 "0psb2za6ldrlak7s8pjvli98ij5yiwjx8j1ms2v7rj9yadx0xv8h"))))
|
| 413 | (build-system gnu-build-system)
|
| 414 | (inputs
|
| 415 | (list libpng))
|
| 416 | (native-inputs
|
| 417 | (list asciidoc pkg-config zstd))
|
| 418 | (home-page "https://github.com/Doom-Utils/deutex")
|
| 419 | (synopsis "WAD file composer for Doom and related games")
|
| 420 | (description
|
| 421 | "DeuTex is a wad composer for Doom, Heretic, Hexen and Strife. It can be
|
| 422 | used to extract the lumps of a wad and save them as individual files.
|
| 423 | Conversely, it can also build a wad from separate files. When extracting a
|
| 424 | lump to a file, it does not just copy the raw data, it converts it to an
|
| 425 | appropriate format (such as PPM for graphics, Sun audio for samples, etc.).
|
| 426 | Conversely, when it reads files for inclusion in pwads, it does the necessary
|
| 427 | conversions (for example, from PPM to Doom picture format). In addition,
|
| 428 | DeuTex has functions such as merging wads, etc.")
|
| 429 | (license license:gpl2+)))
|
| 430 |
|
| 431 | (define-public dialogc
|
| 432 | (package
|
| 433 | (name "dialogc")
|
| 434 | (version "1a01-1.1.0")
|
| 435 | (source
|
| 436 | (origin
|
| 437 | (method git-fetch)
|
| 438 | (uri (git-reference
|
| 439 | (url "https://github.com/Dialog-IF/dialog")
|
| 440 | (commit (string-append "release-" version))))
|
| 441 | (file-name (git-file-name name version))
|
| 442 | (sha256
|
| 443 | (base32 "1hqngza1vhb9796xxyyhswishnl5k0v2phrym3kh8skimaz5a3l8"))))
|
| 444 | (build-system gnu-build-system)
|
| 445 | (native-inputs (list frotz-dumb-terminal perl python))
|
| 446 | (arguments
|
| 447 | (list
|
| 448 | #:test-target "test"
|
| 449 | #:parallel-tests? #f
|
| 450 | #:phases
|
| 451 | #~(modify-phases %standard-phases
|
| 452 | (delete 'configure)
|
| 453 | (add-before 'build 'set-install-prefix
|
| 454 | (lambda _
|
| 455 | (setenv "PREFIX" #$output)))
|
| 456 | (replace 'build
|
| 457 | (lambda _
|
| 458 | (with-directory-excursion "src"
|
| 459 | (substitute* "Makefile"
|
| 460 | (("cp dialogc" all)
|
| 461 | (string-append "install -d ${PREFIX}/bin\n\t" all))
|
| 462 | (("/usr/local") "${PREFIX}"))
|
| 463 | (invoke "make"))))
|
| 464 | (replace 'install
|
| 465 | (lambda _
|
| 466 | (let ((bin (string-append #$output "/bin")))
|
| 467 | (install-file "src/dialogc" bin)
|
| 468 | (install-file "src/dgdebug" bin)))))))
|
| 469 | (synopsis "Dialog interactive fiction compiler")
|
| 470 | (description
|
| 471 | "Dialog is a domain-specific language for creating works
|
| 472 | of interactive fiction. It is heavily inspired by Inform 7 and Prolog.")
|
| 473 | (home-page "https://github.com/Dialog-IF/dialog")
|
| 474 | (license license:bsd-2)))
|
| 475 |
|
| 476 | (define-public go-codeberg-org-anaseto-gruid-sdl
|
| 477 | (package
|
| 478 | (name "go-codeberg-org-anaseto-gruid-sdl")
|
| 479 | (version "0.10.1")
|
| 480 | (source
|
| 481 | (origin
|
| 482 | (method git-fetch)
|
| 483 | (uri (git-reference
|
| 484 | (url "https://codeberg.org/anaseto/gruid-sdl")
|
| 485 | (commit (string-append "v" version))))
|
| 486 | (file-name (git-file-name name version))
|
| 487 | (sha256
|
| 488 | (base32 "1mm0wcxch5gyd021rfiparf0i7i9a1jwkn3pbhxh50w8x91hyn9k"))))
|
| 489 | (build-system go-build-system)
|
| 490 | (arguments
|
| 491 | (list
|
| 492 | #:skip-build? #t |
| 493 | #:tests? #f |
| 494 | #:import-path "codeberg.org/anaseto/gruid-sdl"))
|
| 495 | (native-inputs
|
| 496 | (list pkg-config)) |
| 497 | (propagated-inputs
|
| 498 | (list go-codeberg-org-anaseto-gruid
|
| 499 | go-github-com-veandco-go-sdl2
|
| 500 | go-golang-org-x-image))
|
| 501 | (home-page "https://codeberg.org/anaseto/gruid-sdl")
|
| 502 | (synopsis "Gruid Driver using the go-sdl2 SDL2 bindings")
|
| 503 | (description
|
| 504 | "Package sdl provides a Driver for making native graphical apps.")
|
| 505 | (license license:isc)))
|
| 506 |
|
| 507 | (define-public go-github-com-veandco-go-sdl2
|
| 508 | (package
|
| 509 | (name "go-github-com-veandco-go-sdl2")
|
| 510 | (version "0.4.40")
|
| 511 | (source
|
| 512 | (origin
|
| 513 | (method git-fetch)
|
| 514 | (uri (git-reference
|
| 515 | (url "https://github.com/veandco/go-sdl2")
|
| 516 | (commit (string-append "v" version))))
|
| 517 | (file-name (git-file-name name version))
|
| 518 | (sha256
|
| 519 | (base32 "0wi74j32dj5bzlp85v2qlhxn03p9p3500vxmm3d2wj656nwjw3cg"))))
|
| 520 | (build-system go-build-system)
|
| 521 | (arguments
|
| 522 | (list
|
| 523 | #:skip-build? #t
|
| 524 | #:import-path "github.com/veandco/go-sdl2"
|
| 525 | #:test-flags
|
| 526 | #~(list "-skip" (string-join
|
| 527 | (list
|
| 528 | |
| 529 | "TestInitQuit"
|
| 530 | |
| 531 | "TestStructABI"
|
| 532 | |
| 533 | "TestSurface"
|
| 534 | |
| 535 | |
| 536 | "TestTTF")
|
| 537 | "|"))
|
| 538 | #:phases
|
| 539 | #~(modify-phases %standard-phases
|
| 540 | (add-after 'unpack 'patch-sdl-wrapper-headers
|
| 541 | (lambda* (#:key import-path #:allow-other-keys)
|
| 542 | (with-directory-excursion (string-append "src/" import-path)
|
| 543 | (substitute* (find-files "." "\\.h")
|
| 544 | (("<SDL_image.h>") "<SDL2/SDL_image.h>")
|
| 545 | (("<SDL_mixer.h>") "<SDL2/SDL_mixer.h>")
|
| 546 | (("<SDL_ttf.h>") "<SDL2/SDL_ttf.h>")))))
|
| 547 | (add-before 'check 'pre-check
|
| 548 | (lambda _
|
| 549 | (setenv "HOME" "/tmp")
|
| 550 | (setenv "XDG_RUNTIME_DIR" (getcwd)))))))
|
| 551 | (native-inputs
|
| 552 | (list pkg-config))
|
| 553 | (propagated-inputs
|
| 554 | (list go-github-com-golang-freetype
|
| 555 | sdl2
|
| 556 | sdl2-gfx
|
| 557 | sdl2-image
|
| 558 | sdl2-mixer
|
| 559 | sdl2-ttf))
|
| 560 | (home-page "https://github.com/veandco/go-sdl2")
|
| 561 | (synopsis "SDL2 binding for Go")
|
| 562 | (description
|
| 563 | "@code{go-sdl2} is SDL2 wrapped for Go users. It enables
|
| 564 | interoperability between Go and the SDL2 library which is written in C. That
|
| 565 | means the original SDL2 installation is required for this to work.")
|
| 566 | (license license:bsd-3)))
|
| 567 |
|
| 568 | (define-public grfcodec
|
| 569 | |
| 570 | |
| 571 | (let ((commit "7ded8ebd1447bd2e7c0f4b587be0c0510397bdd0")
|
| 572 | (revision "0"))
|
| 573 | (package
|
| 574 | (name "grfcodec")
|
| 575 | (version (git-version "6.0.6" revision commit))
|
| 576 | (source
|
| 577 | (origin
|
| 578 | (method git-fetch)
|
| 579 | (uri (git-reference
|
| 580 | (url "https://github.com/OpenTTD/grfcodec")
|
| 581 | (commit commit)))
|
| 582 | (file-name (git-file-name name version))
|
| 583 | (sha256
|
| 584 | (base32 "12bf5y7d83plrlssdlcj83w4yxmg5jp1w2p8570l92hy9mkcfmb9"))
|
| 585 | (modules '((guix build utils)))
|
| 586 | (snippet
|
| 587 | `(begin
|
| 588 | |
| 589 | (substitute* "generate_version.cmake"
|
| 590 | (("\\$\\{GIT.*describe.*") (string-append "echo \"" ,version "\"\n"))
|
| 591 | (("\\$\\{GIT.*show.*") "echo \"Not shown for reproducibility.\"\n"))
|
| 592 | (substitute* "CMakeLists.txt"
|
| 593 | (("find_package\\(Git REQUIRED\\)") ""))))))
|
| 594 | (build-system cmake-build-system)
|
| 595 | (arguments
|
| 596 | '(#:tests? #f |
| 597 | #:phases
|
| 598 | (modify-phases %standard-phases
|
| 599 | (replace 'install |
| 600 | (lambda* (#:key outputs #:allow-other-keys)
|
| 601 | (let* ((out (assoc-ref outputs "out"))
|
| 602 | (bin (string-append out "/bin"))
|
| 603 | (doc (string-append out "/share/doc"))
|
| 604 | (man (string-append out "/share/man/man1")))
|
| 605 | (for-each (lambda (file)
|
| 606 | (install-file file bin))
|
| 607 | '("grfcodec" "grfid" "grfstrip" "nforenum"))
|
| 608 | (with-directory-excursion "../source"
|
| 609 | (install-file "COPYING" doc)
|
| 610 | (with-directory-excursion "docs"
|
| 611 | (for-each (lambda (file)
|
| 612 | (install-file (string-append file ".txt") doc))
|
| 613 | '("auto_correct" "commands" "grf" "grfcodec" "grftut"
|
| 614 | "readme" "readme.rpn"))
|
| 615 | (for-each (lambda (file)
|
| 616 | (install-file file man))
|
| 617 | (find-files "." "\\.1"))))))))))
|
| 618 | (inputs
|
| 619 | (list boost libpng zlib))
|
| 620 | (synopsis "GRF development tools")
|
| 621 | (description
|
| 622 | "The @dfn{Graphics Resource File} (GRF) development tools are a set of
|
| 623 | tools for developing (New)GRFs. It includes a number of smaller programs, each
|
| 624 | with a specific task:
|
| 625 | @enumerate
|
| 626 | @item @code{grfcodec} decodes and encodes GRF files for OpenTTD.
|
| 627 | @item @code{grfid} extracts the so-called \"GRF ID\" from a GRF.
|
| 628 | @item @code{grfstrip} strips all sprites from a GRF.
|
| 629 | @item @code{nforenum} checks NFO code for errors, making corrections when
|
| 630 | necessary.
|
| 631 | @end enumerate")
|
| 632 | (home-page "https://dev.openttdcoop.org/projects/grfcodec")
|
| 633 | |
| 634 | |
| 635 | |
| 636 | (license (list license:gpl2 license:gpl2+ license:zlib)))))
|
| 637 |
|
| 638 | (define-public catcodec
|
| 639 | (package
|
| 640 | (name "catcodec")
|
| 641 | (version "1.0.5")
|
| 642 | (source
|
| 643 | (origin
|
| 644 | (method url-fetch)
|
| 645 | (uri (string-append "https://binaries.openttd.org/extra/catcodec/"
|
| 646 | version "/catcodec-" version "-source.tar.xz"))
|
| 647 | (sha256
|
| 648 | (base32 "1qg0c2i4p29sxj0q6qp2jynlrzm5pphz2xhcjqlxa69ycrnlxzs7"))))
|
| 649 | (build-system gnu-build-system)
|
| 650 | (arguments
|
| 651 | `(#:tests? #f |
| 652 | #:make-flags (list (string-append "prefix=" %output))
|
| 653 | #:phases (modify-phases %standard-phases
|
| 654 | (delete 'configure))))
|
| 655 | (home-page "https://dev.openttdcoop.org/projects/catcodec")
|
| 656 | (synopsis "Encode/decode OpenTTD sounds")
|
| 657 | (description "catcodec encodes and decodes sounds for OpenTTD. These
|
| 658 | sounds are not much more than some metadata (description and filename) and raw
|
| 659 | PCM data.")
|
| 660 | (license license:gpl2)))
|
| 661 |
|
| 662 | (define-public nml
|
| 663 | (package
|
| 664 | (name "nml")
|
| 665 | (version "0.9.0")
|
| 666 | (source
|
| 667 | (origin
|
| 668 | (method git-fetch)
|
| 669 | (uri (git-reference
|
| 670 | (url "https://github.com/OpenTTD/nml")
|
| 671 | (commit version)))
|
| 672 | (file-name (git-file-name name version))
|
| 673 | (sha256
|
| 674 | (base32 "1kn70sskwpl2wcjlkdvxqja04khjb0vwwkgnyr67df1q3mga6l8m"))))
|
| 675 | (arguments
|
| 676 | (list
|
| 677 | #:phases
|
| 678 | #~(modify-phases %standard-phases
|
| 679 | (replace 'check
|
| 680 | (lambda* (#:key tests? #:allow-other-keys)
|
| 681 | (when tests?
|
| 682 | (invoke "make" "-C" "regression")))))))
|
| 683 | (build-system pyproject-build-system)
|
| 684 | (native-inputs (list python-setuptools))
|
| 685 | (propagated-inputs (list python-pillow python-ply))
|
| 686 | (home-page "https://github.com/OpenTTD/nml")
|
| 687 | (synopsis "NML compiler")
|
| 688 | (description
|
| 689 | "@dfn{NewGRF Meta Language} (NML) is a python-based compiler, capable of
|
| 690 | compiling NML files (along with their associated language, sound and graphic
|
| 691 | files) into @file{.grf} and/or @file{.nfo} files.")
|
| 692 | (license license:gpl2+)))
|
| 693 |
|
| 694 | (define-public python-pybox2d
|
| 695 | (package
|
| 696 | (name "python-pybox2d")
|
| 697 | (version "2.3.10")
|
| 698 | (source
|
| 699 | (origin
|
| 700 | (method git-fetch)
|
| 701 | (uri (git-reference
|
| 702 | (url "https://github.com/pybox2d/pybox2d")
|
| 703 | (commit version)))
|
| 704 | (file-name (git-file-name name version))
|
| 705 | (sha256
|
| 706 | (base32
|
| 707 | "0dha28yscr1lpyzy9ygqc01a8pyf7n9vavyxikqh469wr2zcacna"))))
|
| 708 | (build-system pyproject-build-system)
|
| 709 | (arguments
|
| 710 | (list
|
| 711 | |
| 712 | #:tests? #false
|
| 713 | #:phases
|
| 714 | '(modify-phases %standard-phases
|
| 715 | (add-before 'build 'build-ext
|
| 716 | (lambda _
|
| 717 | (invoke "python" "setup.py" "build_ext" "--inplace"))))))
|
| 718 | (native-inputs (list swig-4.4 python-setuptools python-wheel))
|
| 719 | (home-page "https://github.com/pybox2d/pybox2d")
|
| 720 | (synopsis "2D game physics for Python")
|
| 721 | (description
|
| 722 | "Pybox2d is a 2D physics library for your games and simple simulations.
|
| 723 | It's based on the Box2D library, written in C++. It supports several shape
|
| 724 | types (circle, polygon, thin line segments), and quite a few joint
|
| 725 | types (revolute, prismatic, wheel, etc.).")
|
| 726 | (license license:zlib)))
|
| 727 |
|
| 728 | (define-public python-anvil-parser
|
| 729 | |
| 730 | (let ((commit "91a7eda55f0fb55a948d1072896430c29d906809")
|
| 731 | (revision "0"))
|
| 732 | (package
|
| 733 | (name "python-anvil-parser")
|
| 734 | (version (git-version "0.10.6" revision commit))
|
| 735 | (source
|
| 736 | (origin
|
| 737 | (method git-fetch)
|
| 738 | (uri (git-reference
|
| 739 | (url "https://github.com/0xTiger/anvil-parser2")
|
| 740 | (commit commit)))
|
| 741 | (file-name (git-file-name name version))
|
| 742 | (sha256
|
| 743 | (base32 "16j7kv6v782nz1fafkxkb7v2vpwfhpi1a66ak04xawg9h1fz7vkc"))))
|
| 744 | (build-system pyproject-build-system)
|
| 745 | (native-inputs
|
| 746 | (list python-pytest python-setuptools))
|
| 747 | (propagated-inputs (list python-frozendict python-nbt))
|
| 748 | (home-page "https://github.com/0xTiger/anvil-parser2")
|
| 749 | (synopsis "Anvil file format parser")
|
| 750 | (description "This package provides an Anvil file format parser.")
|
| 751 | (license license:expat))))
|
| 752 |
|
| 753 | |
| 754 | (define python-nbt-testdata
|
| 755 | (file-union
|
| 756 | "python-nbt-testdata"
|
| 757 | (list
|
| 758 | (let ((file "Sample_World.tar.gz"))
|
| 759 | `(,file
|
| 760 | ,(origin
|
| 761 | (method url-fetch)
|
| 762 | (uri (string-append
|
| 763 | "https://github.com/twoolie/NBT/files/13199373/"
|
| 764 | file))
|
| 765 | (sha256
|
| 766 | (base32
|
| 767 | "1s58g5zicx8ghdai2qix2aqq0fc675vfajica4h78c397crwjrl9"))))))))
|
| 768 |
|
| 769 | (define-public python-nbt
|
| 770 | (package
|
| 771 | (name "python-nbt")
|
| 772 | (version "1.5.1")
|
| 773 | (source
|
| 774 | (origin
|
| 775 | (method git-fetch)
|
| 776 | (uri (git-reference
|
| 777 | (url "https://github.com/twoolie/NBT")
|
| 778 | (commit (string-append "version-" version))))
|
| 779 | (file-name (git-file-name name version))
|
| 780 | (sha256
|
| 781 | (base32 "1a3mj7c18m1n5iqzwwvvlk7n65kxp3xbmccsqyap36apwpbbxyd9"))))
|
| 782 | (build-system pyproject-build-system)
|
| 783 | (arguments
|
| 784 | (list
|
| 785 | #:test-flags
|
| 786 | #~(list "tests/regiontests.py" "tests/nbttests.py")
|
| 787 | #:phases
|
| 788 | #~(modify-phases %standard-phases
|
| 789 | (add-before 'check 'fake-download
|
| 790 | |
| 791 | (lambda _
|
| 792 | (substitute*
|
| 793 | "tests/downloadsample.py"
|
| 794 | (("tar_file = .*")
|
| 795 | (string-append
|
| 796 | "tar_file = '"
|
| 797 | #+python-nbt-testdata
|
| 798 | "/Sample_World.tar.gz'"))))))))
|
| 799 | (native-inputs
|
| 800 | (list python-pytest python-setuptools))
|
| 801 | (home-page "https://github.com/twoolie/NBT")
|
| 802 | (synopsis "Named Binary Tag reader and writer")
|
| 803 | (description
|
| 804 | "This library is a parser and writer for the NBT file format. It is suited
|
| 805 | to inspect and edit the Minecraft data files.")
|
| 806 | (license license:expat)))
|
| 807 |
|
| 808 | (define-public python-sge
|
| 809 | (package
|
| 810 | (name "python-sge")
|
| 811 | (version "2.0.2")
|
| 812 | (source
|
| 813 | (origin
|
| 814 | (method url-fetch)
|
| 815 | (uri (pypi-uri "sge" version))
|
| 816 | (sha256
|
| 817 | (base32
|
| 818 | "1bp4spcjsmy6xv2j0ciaripfgd3pj5413hhhrj8v8mxcwhraw68p"))))
|
| 819 | (build-system pyproject-build-system)
|
| 820 | (arguments
|
| 821 | (list #:tests? #f)) |
| 822 | (native-inputs
|
| 823 | (list python-setuptools python-wheel))
|
| 824 | (propagated-inputs
|
| 825 | (list python-pygame python-uniseg))
|
| 826 | (home-page "https://python-sge.github.io/")
|
| 827 | (synopsis "2D game engine for Python")
|
| 828 | (description
|
| 829 | "The SGE Game Engine (\"SGE\", pronounced like \"Sage\") is a
|
| 830 | general-purpose 2D game engine. It takes care of several details for you so
|
| 831 | you can focus on the game itself. This makes more rapid game development
|
| 832 | possible, and it also makes the SGE easy to learn.")
|
| 833 | (license license:lgpl3+)))
|
| 834 |
|
| 835 | (define-public python-pyscroll
|
| 836 | |
| 837 | |
| 838 | (let ((commit "31e1c282d09542ec89c6c1ac3ee6a1ff991ff5c2")
|
| 839 | (revision "1"))
|
| 840 | (package
|
| 841 | (name "python-pyscroll")
|
| 842 | (version (git-version "2.31" revision commit))
|
| 843 | (source
|
| 844 | (origin
|
| 845 | (method git-fetch)
|
| 846 | (uri (git-reference
|
| 847 | (url "https://github.com/bitcraft/pyscroll")
|
| 848 | (commit commit)))
|
| 849 | (file-name (git-file-name name version))
|
| 850 | (sha256
|
| 851 | (base32
|
| 852 | "1mqi8ccxi7vk63hw7klxjzd8jp6lnnw5q70nvrzmgq0jxpp61h7y"))))
|
| 853 | (build-system pyproject-build-system)
|
| 854 | (native-inputs (list python-pytest python-setuptools))
|
| 855 | (propagated-inputs (list python-pygame))
|
| 856 | (home-page "https://github.com/bitcraft/pyscroll")
|
| 857 | (synopsis "Fast scrolling maps library for pygame")
|
| 858 | (description "@code{pyscroll} is a simple and fast module
|
| 859 | for animated scrolling maps for your new or existing game.")
|
| 860 | (license license:lgpl3+))))
|
| 861 |
|
| 862 | (define-public python-pytmx
|
| 863 | (package
|
| 864 | (name "python-pytmx")
|
| 865 | (version "3.32")
|
| 866 | (source
|
| 867 | (origin
|
| 868 | (method url-fetch)
|
| 869 | (uri (pypi-uri "PyTMX" version))
|
| 870 | (sha256
|
| 871 | (base32 "1jh9b0pjqbjdv72v5047p5d769ic084g013njvky0zcfiwrxi3w5"))))
|
| 872 | (build-system pyproject-build-system)
|
| 873 | (arguments
|
| 874 | (list
|
| 875 | #:tests? #f)) |
| 876 | (native-inputs
|
| 877 | (list python-setuptools
|
| 878 | python-wheel))
|
| 879 | (propagated-inputs
|
| 880 | (list python-pygame
|
| 881 | python-pysdl2
|
| 882 | python-pyglet))
|
| 883 | (home-page "https://github.com/bitcraft/PyTMX")
|
| 884 | (synopsis "Python library to read Tiled Map Editor's TMX maps")
|
| 885 | (description
|
| 886 | "@code{pytmx} is a map loader for python/pygame designed for games.
|
| 887 | It provides smart tile loading with a fast and efficient storage base.")
|
| 888 | (license license:lgpl3+)))
|
| 889 |
|
| 890 | |
| 891 | |
| 892 | |
| 893 | (define-public python-xsge
|
| 894 | (package
|
| 895 | (name "python-xsge")
|
| 896 | (version "2021.10.11")
|
| 897 | (source (origin
|
| 898 | (method url-fetch)
|
| 899 | (uri (string-append "https://github.com/python-sge/xsge"
|
| 900 | "/releases/download/v" version
|
| 901 | "/xsge-" version ".tar.gz"))
|
| 902 | (sha256
|
| 903 | (base32
|
| 904 | "0g86p5i9lflvblzy7977lmxbsma5hdlz63sk0k8c59vnhg8sij4i"))))
|
| 905 | (build-system pyproject-build-system)
|
| 906 | (arguments
|
| 907 | (list
|
| 908 | #:tests? #f |
| 909 | #:configure-flags
|
| 910 | |
| 911 | #~(map (lambda (pair)
|
| 912 | (string-join (list (car pair) (cdr pair)) "="))
|
| 913 | |
| 914 | `(("--prefix" . ,#$output)))
|
| 915 | #:phases
|
| 916 | #~(modify-phases %standard-phases
|
| 917 | |
| 918 | |
| 919 | (replace 'build
|
| 920 | (lambda* (#:key configure-flags #:allow-other-keys)
|
| 921 | (apply invoke "python" "setup.py" "build"
|
| 922 | configure-flags)))
|
| 923 | (replace 'install
|
| 924 | (lambda* (#:key configure-flags #:allow-other-keys)
|
| 925 | (apply invoke "python" "setup.py" "install"
|
| 926 | configure-flags))))))
|
| 927 | (native-inputs (list python-setuptools))
|
| 928 | (propagated-inputs (list python-sge))
|
| 929 | (home-page "https://python-sge.github.io/")
|
| 930 | (synopsis "Extensions for the SGE Game Engine")
|
| 931 | (description
|
| 932 | "xSGE is a collection of modules that make doing certain tasks with the SGE
|
| 933 | Game Engine easier. In addition to SGE's conveniences, the user has access to a
|
| 934 | GUI toolkit, lighting and physics frameworks and @code{Tiled} TMX format
|
| 935 | support.")
|
| 936 | (license license:lgpl3+)))
|
| 937 |
|
| 938 | (define-public python-neteria
|
| 939 | (package
|
| 940 | (name "python-neteria")
|
| 941 | (version "1.0.2")
|
| 942 | (source
|
| 943 | (origin
|
| 944 | (method url-fetch)
|
| 945 | (uri (pypi-uri "neteria" version))
|
| 946 | (sha256
|
| 947 | (base32 "1azlix80a6vns2i3z0bdbqk32kx8s2gjh2nvshab235fd9h85yv7"))))
|
| 948 | (build-system pyproject-build-system)
|
| 949 | (arguments
|
| 950 | (list #:tests? #f)) |
| 951 | (native-inputs
|
| 952 | (list python-setuptools))
|
| 953 | (propagated-inputs
|
| 954 | (list python-rsa))
|
| 955 | (home-page "https://pypi.org/project/neteria/")
|
| 956 | (synopsis "Simple game networking library")
|
| 957 | (description
|
| 958 | "This package provides a game networking framework for Python.")
|
| 959 | (license license:gpl3+)))
|
| 960 |
|
| 961 | (define-public slade
|
| 962 | (package
|
| 963 | (name "slade")
|
| 964 | (version "3.2.7")
|
| 965 | (source
|
| 966 | (origin
|
| 967 | (method git-fetch)
|
| 968 | (uri (git-reference
|
| 969 | (url "https://github.com/sirjuddington/SLADE")
|
| 970 | (commit version)))
|
| 971 | (sha256
|
| 972 | (base32 "0yxy9dpgb5bgq6cc7b1k7f1bvs72mhifi9xpjgysznnfxkm78bps"))
|
| 973 | (file-name (git-file-name name version))))
|
| 974 | (build-system cmake-build-system)
|
| 975 | (arguments
|
| 976 | (list #:configure-flags
|
| 977 | #~(list "-DWX_GTK3=ON" "-DNO_WEBVIEW=ON"
|
| 978 | "-DBUILD_PK3=ON"
|
| 979 | (string-append "-DWITH_WXPATH="
|
| 980 | #$(this-package-input "wxwidgets") "/bin")
|
| 981 | (string-append "-DwxWidgets_LIBRARIES="
|
| 982 | #$(this-package-input "wxwidgets") "/lib"))
|
| 983 | #:phases
|
| 984 | #~(modify-phases %standard-phases
|
| 985 | (add-after 'install 'wrap-with-x11-gdk-backend
|
| 986 | |
| 987 | |
| 988 | |
| 989 | (lambda _
|
| 990 | (wrap-program (string-append #$output "/bin/slade")
|
| 991 | '("GDK_BACKEND" = ("x11"))))))
|
| 992 | #:tests? #f)) |
| 993 | (inputs
|
| 994 | (list bash-minimal
|
| 995 | curl
|
| 996 | fluidsynth
|
| 997 | freeimage
|
| 998 | ftgl
|
| 999 | glew
|
| 1000 | gtk+
|
| 1001 | libmpg123
|
| 1002 | lua
|
| 1003 | sfml
|
| 1004 | wxwidgets))
|
| 1005 | (native-inputs
|
| 1006 | (list pkg-config which zip))
|
| 1007 | (home-page "https://slade.mancubus.net")
|
| 1008 | (synopsis "Doom game data editor")
|
| 1009 | (description "SLADE3 is a modern editor for Doom-engine based games and
|
| 1010 | source ports. It has the ability to view, modify, and write many different game-
|
| 1011 | specific formats, and even convert between some of them, or from/to other generic
|
| 1012 | formats such as PNG.")
|
| 1013 | (license license:gpl2+)))
|
| 1014 |
|
| 1015 | (define-public tiled
|
| 1016 | (package
|
| 1017 | (name "tiled")
|
| 1018 | (version "1.8.6")
|
| 1019 | (source (origin
|
| 1020 | (method git-fetch)
|
| 1021 | (uri (git-reference
|
| 1022 | (url "https://github.com/mapeditor/tiled")
|
| 1023 | (commit (string-append "v" version))))
|
| 1024 | (file-name (git-file-name name version))
|
| 1025 | (sha256
|
| 1026 | (base32
|
| 1027 | "0iimfj4kbhmjk94586fqz11bk4i7v0zsxby8agx7450cqlh2y3zi"))))
|
| 1028 | (build-system gnu-build-system)
|
| 1029 | (inputs
|
| 1030 | (list qtbase-5 qtdeclarative-5 qtsvg-5 zlib))
|
| 1031 | (native-inputs
|
| 1032 | (list qttools-5))
|
| 1033 | (arguments
|
| 1034 | '(#:phases
|
| 1035 | (modify-phases %standard-phases
|
| 1036 | (replace 'configure
|
| 1037 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 1038 | (substitute* "translations/translations.pro"
|
| 1039 | (("LRELEASE =.*")
|
| 1040 | (string-append "LRELEASE = "
|
| 1041 | (search-input-file inputs "/bin/lrelease")
|
| 1042 | "\n")))
|
| 1043 | (let ((out (assoc-ref outputs "out")))
|
| 1044 | (invoke "qmake"
|
| 1045 | (string-append "PREFIX=" out))))))))
|
| 1046 | (home-page "https://www.mapeditor.org/")
|
| 1047 | (synopsis "Tile map editor")
|
| 1048 | (description
|
| 1049 | "Tiled is a general purpose tile map editor. It is meant to be used for
|
| 1050 | editing maps of any tile-based game, be it an RPG, a platformer or a Breakout
|
| 1051 | clone.")
|
| 1052 |
|
| 1053 | |
| 1054 | |
| 1055 | (license license:gpl2+)))
|
| 1056 |
|
| 1057 | (define-public trizbort-qt
|
| 1058 | (package
|
| 1059 | (name "trizbort-qt")
|
| 1060 | (version "1.0")
|
| 1061 | (source
|
| 1062 | (origin
|
| 1063 | (method git-fetch)
|
| 1064 | (uri (git-reference
|
| 1065 | (url "https://jxself.org/git/trizbort-qt.git")
|
| 1066 | (commit (string-append "v" version))))
|
| 1067 | (sha256
|
| 1068 | (base32 "1nb0361snbj73kkh82y239vdja2w0rpcc2mnnndyykq26q212pm6"))
|
| 1069 | (file-name (git-file-name name version))))
|
| 1070 | (build-system qt-build-system)
|
| 1071 | (inputs (list qtsvg))
|
| 1072 | (arguments
|
| 1073 | (list #:qtbase qtbase
|
| 1074 | #:tests? #f)) |
| 1075 | (home-page "https://jxself.org/trizbort-qt.shtml")
|
| 1076 | (synopsis "Visual mapping tool for interactive fiction")
|
| 1077 | (description "Trizbort-qt is a Qt port of Trizbort, a mapper for interactive fiction.
|
| 1078 | It draws rooms and the connections between them, annotates them with descriptions
|
| 1079 | and objects, and exports the map as source code for many interactive fiction systems
|
| 1080 | or as a PDF or image.")
|
| 1081 | (license (list license:gpl3+
|
| 1082 | license:expat)))) |
| 1083 |
|
| 1084 | (define-public trenchbroom
|
| 1085 | (package
|
| 1086 | (name "trenchbroom")
|
| 1087 | |
| 1088 | (properties '((commit . "ef7c7a473100116acabd6ed51f11dd40496cfae6")
|
| 1089 | (revision . "0")))
|
| 1090 | (version (git-version "2026.1"
|
| 1091 | (assoc-ref properties 'revision)
|
| 1092 | (assoc-ref properties 'commit)))
|
| 1093 | (source
|
| 1094 | (origin
|
| 1095 | (method git-fetch)
|
| 1096 | (uri (git-reference
|
| 1097 | (url "https://github.com/TrenchBroom/TrenchBroom")
|
| 1098 | (commit (assoc-ref properties 'commit))))
|
| 1099 | (file-name (git-file-name name version))
|
| 1100 | (sha256
|
| 1101 | (base32 "0djr5mh6421k5xmlvp1fwnl9x0zz8z4flivr7clc0rkz9fmhcf30"))))
|
| 1102 | (build-system cmake-build-system)
|
| 1103 | (arguments
|
| 1104 | (list #:configure-flags
|
| 1105 | #~(list "-DCMAKE_BUILD_TYPE=Release" "-G" "Unix Makefiles"
|
| 1106 | "-DCMAKE_PREFIX_PATH=cmake/packages"
|
| 1107 | (string-append "-Dfreetype_INCLUDE_DIR="
|
| 1108 | #$freetype "/include/freetype2")
|
| 1109 | (string-append "-Dfreetype_LIBRARY="
|
| 1110 | #$freetype "/lib/libfreetype.so"))
|
| 1111 | #:phases
|
| 1112 | #~(modify-phases %standard-phases
|
| 1113 | (add-after 'unpack 'fix-build-system
|
| 1114 | (lambda _
|
| 1115 | (substitute* "lib/TbBaseLib/src/Uuid.cpp"
|
| 1116 | (("include \"stduuid\\/uuid.h\"")
|
| 1117 | "include <uuid.h>"))
|
| 1118 | (substitute* "CMakeLists.txt"
|
| 1119 | (("set\\(CMAKE_TOOLCHAIN_FILE")
|
| 1120 | "#set(CMAKE_TOOLCHAIN_FILE"))))
|
| 1121 | (add-before 'build 'set-environment-variables
|
| 1122 | (lambda _
|
| 1123 | |
| 1124 | (setenv "HOME" (getenv "TEMP"))
|
| 1125 | |
| 1126 | (setenv "QT_QPA_PLATFORM" "offscreen")
|
| 1127 | (setenv "XDG_RUNTIME_DIR" (getenv "TEMP"))))
|
| 1128 | (add-after 'install 'wrap-trenchbroom
|
| 1129 | (lambda _
|
| 1130 | (wrap-program (string-append #$output "/bin/trenchbroom")
|
| 1131 | |
| 1132 | |
| 1133 | `("XDG_DATA_DIRS" ":" prefix
|
| 1134 | (,(string-append #$output "/share")))
|
| 1135 | |
| 1136 | '("QT_QPA_PLATFORM" = ("xcb")))))
|
| 1137 | (add-after 'install 'install-desktop-file
|
| 1138 | (lambda _
|
| 1139 | (make-desktop-entry-file
|
| 1140 | (string-append #$output "/share/applications/"
|
| 1141 | #$(package-name this-package) ".desktop")
|
| 1142 | #:name "TrenchBroom"
|
| 1143 | #:comment #$(package-synopsis this-package)
|
| 1144 | #:exec #$name
|
| 1145 | #:icon #$name
|
| 1146 | #:categories '("Development")
|
| 1147 | #:keywords '("quake" "level" "editor")))))
|
| 1148 | #:tests? #f)) |
| 1149 | (inputs
|
| 1150 | (list assimp
|
| 1151 | bash-minimal
|
| 1152 | catch2
|
| 1153 | cpptrace
|
| 1154 | fmt
|
| 1155 | freeglut
|
| 1156 | freeimage
|
| 1157 | freetype
|
| 1158 | glew
|
| 1159 | glm
|
| 1160 | glu
|
| 1161 | libxxf86vm
|
| 1162 | mesa
|
| 1163 | miniz
|
| 1164 | qtbase
|
| 1165 | qtsvg
|
| 1166 | stduuid
|
| 1167 | tinyxml2
|
| 1168 | `(,zstd "lib")))
|
| 1169 | (native-inputs (list git pandoc python p7zip))
|
| 1170 | (home-page "https://kristianduske.com/trenchbroom/")
|
| 1171 | (synopsis "Cross-platform level editor for Quake-engine based games")
|
| 1172 | (description "TrenchBroom is a cross-platform level editor for
|
| 1173 | Quake-engine based games. It supports Quake, Quake 2, Hexen 2, as well as
|
| 1174 | other games. TrenchBroom provides many simple and advanced tools to create
|
| 1175 | complex and interesting levels.")
|
| 1176 | (license (list license:gpl3+ |
| 1177 | license:expat)))) |
| 1178 |
|
| 1179 | (define-public tsukundere
|
| 1180 | (package
|
| 1181 | (name "tsukundere")
|
| 1182 | (version "0.4.3")
|
| 1183 | (source (origin
|
| 1184 | (method git-fetch)
|
| 1185 | (uri (git-reference
|
| 1186 | (url "https://gitlab.com/lilyp/tsukundere")
|
| 1187 | (commit version)))
|
| 1188 | (file-name (git-file-name name version))
|
| 1189 | (sha256
|
| 1190 | (base32
|
| 1191 | "1lq2rs33s6l6y0hwwkv8pppgq2ki0q5kzj11s90yivi8g8g201af"))))
|
| 1192 | (build-system gnu-build-system)
|
| 1193 | (arguments
|
| 1194 | `(#:modules ((ice-9 match)
|
| 1195 | (srfi srfi-1)
|
| 1196 | ((guix build guile-build-system)
|
| 1197 | #:select (target-guile-effective-version))
|
| 1198 | ,@%default-gnu-modules)
|
| 1199 | #:imported-modules ((guix build guile-build-system)
|
| 1200 | ,@%default-gnu-imported-modules)
|
| 1201 | #:phases
|
| 1202 | (modify-phases %standard-phases
|
| 1203 | (add-after 'unpack 'patch-command
|
| 1204 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 1205 | (let* ((scm (lambda (in)
|
| 1206 | (string-append in "/share/guile/site/"
|
| 1207 | (target-guile-effective-version))))
|
| 1208 | (ccache (lambda (in)
|
| 1209 | (string-append in "/lib/guile/"
|
| 1210 | (target-guile-effective-version)
|
| 1211 | "/site-ccache")))
|
| 1212 | (pkgs
|
| 1213 | (cons
|
| 1214 | (assoc-ref outputs "out")
|
| 1215 | (filter-map
|
| 1216 | (match-lambda
|
| 1217 | (("guile" . pkg) pkg)
|
| 1218 | ((label . pkg)
|
| 1219 | (and (string-prefix? "guile-" label) pkg)))
|
| 1220 | inputs))))
|
| 1221 | (substitute* "tsukundere.scm"
|
| 1222 | (("exec guile (.*)" _ args)
|
| 1223 | (string-append
|
| 1224 | |
| 1225 | |
| 1226 | "unset LD_LIBRARY_PATH\n"
|
| 1227 | (format #f "export GUILE_LOAD_PATH=\"~@?\"~%"
|
| 1228 | "~{~a~^:~}" (map scm pkgs))
|
| 1229 | (format #f "export GUILE_LOAD_COMPILED_PATH=\"~@?\"~%"
|
| 1230 | "~{~a~^:~}" (map ccache pkgs))
|
| 1231 | "exec "
|
| 1232 | (assoc-ref inputs "guile")
|
| 1233 | "/bin/guile " args)))
|
| 1234 | #t))))))
|
| 1235 | (native-inputs
|
| 1236 | `(("autoconf" ,autoconf)
|
| 1237 | ("automake" ,automake)
|
| 1238 | ("gettext" ,gettext-minimal)
|
| 1239 | ("guile" ,guile-3.0)
|
| 1240 | ("libtool" ,libtool)
|
| 1241 | ("pkg-config" ,pkg-config)
|
| 1242 | ("texinfo" ,texinfo)))
|
| 1243 | (inputs
|
| 1244 | `(("guile-sdl2" ,guile-sdl2)
|
| 1245 | ("guile" ,guile-3.0)
|
| 1246 | ("pango" ,pango)
|
| 1247 | ("sdl2" ,sdl2)))
|
| 1248 | (home-page "https://gitlab.com/lilyp/tsukundere")
|
| 1249 | (synopsis "Visual novel engine")
|
| 1250 | (description "Tsukundere is a game engine geared heavily towards the
|
| 1251 | development of visual novels, written on top of Guile-SDL2. It is still
|
| 1252 | experimental.")
|
| 1253 | (license license:lgpl3+)))
|
| 1254 |
|
| 1255 | (define-public scummc
|
| 1256 | (package
|
| 1257 | (name "scummc")
|
| 1258 | (version "0.2.1")
|
| 1259 | (source (origin
|
| 1260 | (method git-fetch)
|
| 1261 | (uri (git-reference
|
| 1262 | (url "https://github.com/AlbanBedel/scummc")
|
| 1263 | (commit (string-append "v" version))))
|
| 1264 | (file-name (git-file-name name version))
|
| 1265 | (sha256
|
| 1266 | (base32
|
| 1267 | "1yyq05kfmvgx5aa68kg1l5a4lpsky7hzxxcdvv2xbgf0jljdcl3k"))
|
| 1268 | (modules '((guix build utils)))
|
| 1269 | (snippet
|
| 1270 | #~(begin
|
| 1271 | (substitute* "configure"
|
| 1272 | (("\\|alpha" all)
|
| 1273 | (string-append all "|arm|aarch64|powerpc64le")))
|
| 1274 | (substitute* "examples/example.mak"
|
| 1275 | (("scost.*\n$") "scost\n")
|
| 1276 | (("bmp \\$\\(.*\n$") "bmp\n")
|
| 1277 | (("/%.scc.*\n$") "/%.scc\n")
|
| 1278 | (("voc \\$\\(.*\n$") "voc\n"))
|
| 1279 | (substitute* "Makefile.target"
|
| 1280 | (("distrib-data:.*\n") "distrib-data:\n")
|
| 1281 | (("cp.*/bin" all)
|
| 1282 | (string-append all " || true")))))))
|
| 1283 | (build-system gnu-build-system)
|
| 1284 | (arguments
|
| 1285 | (list #:test-target "test"
|
| 1286 | #:tests? #f |
| 1287 | #:make-flags
|
| 1288 | #~(list "SHOW_WARNINGS=no")
|
| 1289 | #:phases
|
| 1290 | #~(modify-phases %standard-phases
|
| 1291 | (replace 'configure |
| 1292 | (lambda* (#:key configure-flags #:allow-other-keys)
|
| 1293 | (apply invoke "./configure" configure-flags)))
|
| 1294 | (replace 'install |
| 1295 | (lambda _
|
| 1296 | (invoke "make" "distrib"
|
| 1297 | (string-append "DISTRIB=" #$output)))))))
|
| 1298 | (inputs
|
| 1299 | (list freetype gtk+-2 sdl))
|
| 1300 | (native-inputs
|
| 1301 | (list bison doxygen libxslt pkg-config))
|
| 1302 | (synopsis "SCUMM Compiler")
|
| 1303 | (description
|
| 1304 | "ScummC is a set of tools allowing to create SCUMM games from scratch.
|
| 1305 | It is capable of creating games for SCUMM version 6 and partially version 7.")
|
| 1306 | (home-page "https://github.com/AlbanBedel/scummc")
|
| 1307 | (license license:gpl2+)))
|
| 1308 |
|
| 1309 | (define-public sfml
|
| 1310 | (package
|
| 1311 | (name "sfml")
|
| 1312 | (version "3.0.1")
|
| 1313 | (source
|
| 1314 | (origin
|
| 1315 | (method git-fetch)
|
| 1316 | |
| 1317 | |
| 1318 | |
| 1319 | (uri (git-reference
|
| 1320 | (url "https://github.com/SFML/SFML")
|
| 1321 | (commit version)))
|
| 1322 | (file-name (git-file-name name version))
|
| 1323 | (sha256
|
| 1324 | (base32
|
| 1325 | "12f1d45995qf5sazjmmfdydllcd6alhqs1s4xwv3jiq1fw66hcy9"))
|
| 1326 | (modules '((guix build utils)))
|
| 1327 | (snippet
|
| 1328 | '(begin
|
| 1329 | (delete-all-but "extlibs/headers"
|
| 1330 | "glad"))))) |
| 1331 | (build-system cmake-build-system)
|
| 1332 | (arguments
|
| 1333 | (list #:tests? #f |
| 1334 | #:configure-flags
|
| 1335 | #~(list "-DBUILD_SHARED_LIBS=ON"
|
| 1336 | (string-append "-DCMAKE_CXX_FLAGS=-I"
|
| 1337 | (search-input-directory %build-inputs
|
| 1338 | "include/vulkan")))))
|
| 1339 | (native-inputs
|
| 1340 | (list miniaudio |
| 1341 | minimp3 |
| 1342 | pkg-config))
|
| 1343 | (inputs
|
| 1344 | (list eudev
|
| 1345 | glew
|
| 1346 | libjpeg-turbo
|
| 1347 | libsndfile
|
| 1348 | libx11
|
| 1349 | libxcursor
|
| 1350 | libxi
|
| 1351 | libxrandr
|
| 1352 | mesa
|
| 1353 | stb-image
|
| 1354 | stb-image-write
|
| 1355 | vulkan-headers
|
| 1356 | xcb-util-image))
|
| 1357 | (propagated-inputs
|
| 1358 | |
| 1359 | (list flac freetype libvorbis openal))
|
| 1360 | (home-page "https://www.sfml-dev.org")
|
| 1361 | (synopsis "Simple and Fast Multimedia Library")
|
| 1362 | (description
|
| 1363 | "SFML provides a simple interface to the various computer components,
|
| 1364 | to ease the development of games and multimedia applications. It is composed
|
| 1365 | of five modules: system, window, graphics, audio and network.")
|
| 1366 | (license license:zlib)))
|
| 1367 |
|
| 1368 | (define-public sfml-2
|
| 1369 | (package
|
| 1370 | (inherit sfml)
|
| 1371 | (name "sfml")
|
| 1372 | (version "2.6.2")
|
| 1373 | (source (origin
|
| 1374 | (inherit (package-source sfml))
|
| 1375 | (method git-fetch)
|
| 1376 | |
| 1377 | |
| 1378 | |
| 1379 | (uri (git-reference
|
| 1380 | (url "https://github.com/SFML/SFML")
|
| 1381 | (commit version)))
|
| 1382 | (file-name (git-file-name name version))
|
| 1383 | (sha256
|
| 1384 | (base32
|
| 1385 | "04qjfp23db0ga4lckil9jqigmjr3253p190r568kpaksrrf5bhcv"))))))
|
| 1386 |
|
| 1387 | (define-public csfml
|
| 1388 | (package
|
| 1389 | (name "csfml")
|
| 1390 | (version "2.6.1")
|
| 1391 | (source (origin
|
| 1392 | (method git-fetch)
|
| 1393 | (uri (git-reference
|
| 1394 | (url "https://github.com/SFML/CSFML")
|
| 1395 | (commit version)))
|
| 1396 | (file-name (git-file-name name version))
|
| 1397 | (sha256
|
| 1398 | (base32
|
| 1399 | "19xxlan0yy9f92bmzkzqg3hjc18g6ds4mhg0rrs62qg9434p8aqh"))))
|
| 1400 | (build-system cmake-build-system)
|
| 1401 | (arguments
|
| 1402 | (list #:configure-flags #~(list "-DCSFML_BUILD_DOC=TRUE")
|
| 1403 | #:tests? #f)) |
| 1404 | (native-inputs (list doxygen))
|
| 1405 | (inputs (list sfml-2))
|
| 1406 | (synopsis "C bindings for the SFML multimedia library")
|
| 1407 | (description
|
| 1408 | "CSFML is the official C binding to the SFML libraries. SFML provides a
|
| 1409 | simple interface to the various computer components, to ease the development of
|
| 1410 | games and multimedia applications. It is composed of five modules: system,
|
| 1411 | window, graphics, audio and network.")
|
| 1412 | (home-page "https://www.sfml-dev.org/download/csfml/")
|
| 1413 | (license license:zlib)))
|
| 1414 |
|
| 1415 | (define-public sfxr
|
| 1416 | (package
|
| 1417 | (name "sfxr")
|
| 1418 | (version "1.2.1")
|
| 1419 | (source (origin
|
| 1420 | (method url-fetch)
|
| 1421 | (uri (string-append "http://www.drpetter.se/files/sfxr-sdl-1.2.1.tar.gz"))
|
| 1422 | (sha256
|
| 1423 | (base32
|
| 1424 | "0dfqgid6wzzyyhc0ha94prxax59wx79hqr25r6if6by9cj4vx4ya"))))
|
| 1425 | (build-system gnu-build-system)
|
| 1426 | (arguments
|
| 1427 | `(#:phases (modify-phases %standard-phases
|
| 1428 | (delete 'configure) |
| 1429 | (add-before 'build 'fix-undefined-no-return
|
| 1430 | |
| 1431 | |
| 1432 | |
| 1433 | (lambda _
|
| 1434 | (substitute* "sdlkit.h"
|
| 1435 | (("static bool ddkLock")
|
| 1436 | "static void ddkLock"))))
|
| 1437 | (add-before 'build 'patch-makefile
|
| 1438 | (lambda* (#:key outputs #:allow-other-keys)
|
| 1439 | (let ((out (assoc-ref outputs "out")))
|
| 1440 | (substitute* "Makefile"
|
| 1441 | (("\\$\\(DESTDIR\\)/usr") out))
|
| 1442 | (substitute* "main.cpp"
|
| 1443 | (("/usr/share")
|
| 1444 | (string-append out "/share")))
|
| 1445 | #t))))
|
| 1446 | #:tests? #f)) |
| 1447 | (native-inputs
|
| 1448 | (list pkg-config desktop-file-utils))
|
| 1449 | (inputs
|
| 1450 | (list sdl gtk+))
|
| 1451 | (synopsis "Simple sound effect generator")
|
| 1452 | (description "Sfxr is a tool for quickly generating simple sound effects.
|
| 1453 | Originally created for use in video game prototypes, it can generate random
|
| 1454 | sounds from presets such as \"explosion\" or \"powerup\".")
|
| 1455 | (home-page "https://www.drpetter.se/project_sfxr.html")
|
| 1456 | (license license:expat)))
|
| 1457 |
|
| 1458 | (define-public sfxr-qt
|
| 1459 | (package
|
| 1460 | (name "sfxr-qt")
|
| 1461 | (version "1.5.1")
|
| 1462 | (source
|
| 1463 | (origin
|
| 1464 | (method git-fetch)
|
| 1465 | (uri (git-reference
|
| 1466 | (url "https://github.com/agateau/sfxr-qt")
|
| 1467 | (commit version)))
|
| 1468 | (file-name (git-file-name name version))
|
| 1469 | (sha256
|
| 1470 | (base32 "0ghmw8kvc5rd10kqaslbdmj7nrp8g9sslzhp18v32x4njwapavdc"))
|
| 1471 | (modules '((guix build utils)))
|
| 1472 | (snippet
|
| 1473 | #~(begin
|
| 1474 | |
| 1475 | (delete-file-recursively "3rdparty")
|
| 1476 | (substitute* "CMakeLists.txt"
|
| 1477 | (("include\\(3rdparty[^\n]+")
|
| 1478 | "include(qpropgen)"))))))
|
| 1479 | (build-system qt-build-system)
|
| 1480 | (arguments
|
| 1481 | (list
|
| 1482 | #:configure-flags
|
| 1483 | #~(list "-DUSE_SYSTEM_CATCH2=ON"
|
| 1484 | (string-append "-DCMAKE_MODULE_PATH="
|
| 1485 | #+qpropgen "/share/qpropgen/cmake"))))
|
| 1486 | (inputs
|
| 1487 | (list qtdeclarative-5
|
| 1488 | qtquickcontrols-5 |
| 1489 | qtquickcontrols2-5 |
| 1490 | sdl))
|
| 1491 | (native-inputs (list catch2 extra-cmake-modules qpropgen))
|
| 1492 | (home-page "https://github.com/agateau/sfxr-qt")
|
| 1493 | (synopsis "Retro sound effect generator")
|
| 1494 | (description "This package provides a QtQuick Controls 2 port of SFXR.
|
| 1495 | It has the same features as the original SFXR with a more modern user
|
| 1496 | interface.")
|
| 1497 | (license license:expat)))
|
| 1498 |
|
| 1499 | (define-public surgescript
|
| 1500 | (package
|
| 1501 | (name "surgescript")
|
| 1502 | (version "0.6.0")
|
| 1503 | (source
|
| 1504 | (origin
|
| 1505 | (method git-fetch)
|
| 1506 | (uri (git-reference
|
| 1507 | (url "https://github.com/alemart/surgescript")
|
| 1508 | (commit (string-append "v" version))))
|
| 1509 | (file-name (git-file-name name version))
|
| 1510 | (sha256
|
| 1511 | (base32 "17k14108hvz329cqnr3g799ksmiv8d710slnghi2wmwswir8s0jd"))))
|
| 1512 | (build-system cmake-build-system)
|
| 1513 | (arguments
|
| 1514 | (list #:tests? #f)) |
| 1515 | (home-page "https://docs.opensurge2d.org")
|
| 1516 | (synopsis "Scripting language for games")
|
| 1517 | (description "@code{SurgeScript} is a dynamically typed object-oriented
|
| 1518 | scripting language designed for games. Each object is a state machine that
|
| 1519 | can be customized by attaching other objects. The language supports automatic
|
| 1520 | garbage collection and can be extended with plugins.")
|
| 1521 | (license license:asl2.0)))
|
| 1522 |
|
| 1523 | (define-public physfs
|
| 1524 | (package
|
| 1525 | (name "physfs")
|
| 1526 | (version "3.0.2")
|
| 1527 | (source (origin
|
| 1528 | (method url-fetch)
|
| 1529 | (uri (string-append
|
| 1530 | "https://icculus.org/physfs/downloads/physfs-"
|
| 1531 | version ".tar.bz2"))
|
| 1532 | (file-name (string-append name "-" version ".tar.gz"))
|
| 1533 | (sha256
|
| 1534 | (base32
|
| 1535 | "0qzqz4r88gvd8m7sh2z5hvqcr0jfr4wb2f77c19xycyn0rigfk9h"))))
|
| 1536 | (build-system cmake-build-system)
|
| 1537 | (arguments
|
| 1538 | '(#:tests? #f |
| 1539 | #:configure-flags '("-DPHYSFS_BUILD_STATIC=OFF")
|
| 1540 | #:phases (modify-phases %standard-phases
|
| 1541 | (add-after 'unpack 'patch-CMakeLists.txt
|
| 1542 | (lambda _
|
| 1543 | (substitute* "CMakeLists.txt"
|
| 1544 | |
| 1545 | |
| 1546 | (("CMAKE_COMPILER_IS_GNUCC") "FALSE"))
|
| 1547 | #t)))))
|
| 1548 | (inputs
|
| 1549 | (list zlib))
|
| 1550 | (native-inputs
|
| 1551 | (list doxygen))
|
| 1552 | (home-page "https://icculus.org/physfs")
|
| 1553 | (synopsis "File system abstraction library")
|
| 1554 | (description
|
| 1555 | "PhysicsFS is a library to provide abstract access to various archives.
|
| 1556 | It is intended for use in video games. For security, no file writing done
|
| 1557 | through the PhysicsFS API can leave a defined @emph{write directory}. For
|
| 1558 | file reading, a @emph{search path} with archives and directories is defined,
|
| 1559 | and it becomes a single, transparent hierarchical file system. So archive
|
| 1560 | files can be accessed in the same way as you access files directly on a disk,
|
| 1561 | and it makes it easy to ship a new archive that will override a previous
|
| 1562 | archive on a per-file basis.")
|
| 1563 | (license license:zlib)))
|
| 1564 |
|
| 1565 | (define-public physfs-sdl3
|
| 1566 | |
| 1567 | (let ((commit "49cfd5fdd46f38b4c2611556b44ee9b0d308e162")
|
| 1568 | (revision "0"))
|
| 1569 | (package
|
| 1570 | (name "physfs-sdl3")
|
| 1571 | (version (git-version "3.2.0" revision commit))
|
| 1572 | (source
|
| 1573 | (origin
|
| 1574 | (method git-fetch)
|
| 1575 | (uri (git-reference
|
| 1576 | (url "https://github.com/icculus/physfs")
|
| 1577 | (commit commit)))
|
| 1578 | (file-name (git-file-name name version))
|
| 1579 | (sha256
|
| 1580 | (base32 "18i0dalg5w5c6y6fnalb87bxf2qgx4cbniq9a08rhsjwy8lwz8xz"))))
|
| 1581 | (build-system gnu-build-system)
|
| 1582 | (arguments
|
| 1583 | (list
|
| 1584 | #:tests? #f |
| 1585 | #:phases
|
| 1586 | #~(modify-phases %standard-phases
|
| 1587 | (delete 'configure)
|
| 1588 | (add-before 'build 'chdir-source
|
| 1589 | (lambda _
|
| 1590 | (chdir "extras")))
|
| 1591 | (replace 'build
|
| 1592 | (lambda -
|
| 1593 | (invoke "gcc" "-shared" "-fPIC" "-O2"
|
| 1594 | "-o" "libphysfssdl3.so" "physfssdl3.c")))
|
| 1595 | (replace 'install
|
| 1596 | (lambda _
|
| 1597 | (let ((out #$output))
|
| 1598 | (install-file "libphysfssdl3.so"
|
| 1599 | (string-append #$output "/lib"))
|
| 1600 | (install-file "physfssdl3.h"
|
| 1601 | (string-append #$output "/include"))
|
| 1602 | (with-output-to-file "physfs-sdl3.pc"
|
| 1603 | (lambda ()
|
| 1604 | (format #t "\
|
| 1605 | prefix=~a
|
| 1606 | libdir=${prefix}/lib
|
| 1607 | includedir=${prefix}/include
|
| 1608 |
|
| 1609 | Name: physfs-sdl3
|
| 1610 | Version: 3.2.0
|
| 1611 | Description: PhysicsFS SDL3 integration
|
| 1612 | Libs: -L${libdir} -lphysfssdl3
|
| 1613 | Cflags: -I${includedir}
|
| 1614 | " out)))
|
| 1615 | (install-file "physfs-sdl3.pc"
|
| 1616 | (string-append out "/lib/pkgconfig"))))))))
|
| 1617 | (inputs (list physfs sdl3))
|
| 1618 | (synopsis "PhysicsFS SDL3 I/O backend")
|
| 1619 | (home-page "https://github.com/icculus/physfs")
|
| 1620 | (description "This package provides @file{physfssdl3.c} and its header,
|
| 1621 | which implement SDL3's @code{SDL_IOStream} and @code{SDL_Storage}
|
| 1622 | interfaces using PhysicsFS as the backend. It enables SDL3 applications
|
| 1623 | to load assets from compressed archives and other PhysicsFS-supported
|
| 1624 | storage through the standard SDL3 API.")
|
| 1625 | (license license:public-domain))))
|
| 1626 |
|
| 1627 | (define-public love
|
| 1628 | (package
|
| 1629 | (name "love")
|
| 1630 | (version "11.5")
|
| 1631 | (source
|
| 1632 | (origin
|
| 1633 | (method url-fetch)
|
| 1634 | (uri (string-append "https://github.com/love2d/love/releases/download/"
|
| 1635 | version "/love-" version "-linux-src.tar.gz"))
|
| 1636 | (sha256
|
| 1637 | (base32 "0fachzyfl26gwg13l5anfppzljxpmd0pvwpap0lgva8syx1hhvh6"))))
|
| 1638 | (build-system gnu-build-system)
|
| 1639 | (native-inputs
|
| 1640 | (list pkg-config))
|
| 1641 | (inputs
|
| 1642 | (list freetype
|
| 1643 | libmodplug
|
| 1644 | libmpg123
|
| 1645 | libtheora
|
| 1646 | libvorbis
|
| 1647 | luajit
|
| 1648 | mesa
|
| 1649 | openal
|
| 1650 | sdl2
|
| 1651 | zlib))
|
| 1652 | (synopsis "2D game framework for Lua")
|
| 1653 | (description "LÖVE is a framework for making 2D games in the Lua
|
| 1654 | programming language.")
|
| 1655 | (home-page "https://love2d.org/")
|
| 1656 | (license license:zlib)))
|
| 1657 |
|
| 1658 | (define-public love-nuklear
|
| 1659 | (package
|
| 1660 | (name "love-nuklear")
|
| 1661 | (version "2.6.1")
|
| 1662 | (source (origin
|
| 1663 | (method git-fetch)
|
| 1664 | (uri (git-reference
|
| 1665 | (url "https://github.com/keharriso/love-nuklear/")
|
| 1666 | (commit (string-append "v" version))
|
| 1667 | (recursive? #t)))
|
| 1668 | |
| 1669 | |
| 1670 | (file-name (git-file-name name version))
|
| 1671 | (sha256
|
| 1672 | (base32
|
| 1673 | "090xp5c975155hd1pa7bdssdlawvygs5s6icdkwbyc8il5kg5kgv"))))
|
| 1674 | (build-system cmake-build-system)
|
| 1675 | (arguments
|
| 1676 | `(#:build-type "Release"
|
| 1677 | #:tests? #f
|
| 1678 | #:phases
|
| 1679 | (modify-phases %standard-phases
|
| 1680 | (add-after 'unpack 'patch-cmake
|
| 1681 | (lambda _
|
| 1682 | (substitute* "CMakeLists.txt"
|
| 1683 | (("DESTINATION .") "DESTINATION lib/love")))))))
|
| 1684 | (inputs
|
| 1685 | (list luajit))
|
| 1686 | (synopsis "Lightweight immediate mode GUI for LÖVE games")
|
| 1687 | (description "LÖVE is a Lua framework for making 2D games. Nuklear
|
| 1688 | is a minimal state immediate mode graphical user interface toolkit. This
|
| 1689 | package is the Nuklear bindings for LÖVE created by Kevin Harrison.")
|
| 1690 | (home-page "https://github.com/keharriso/love-nuklear/")
|
| 1691 | (license license:expat)))
|
| 1692 |
|
| 1693 | (define-public allegro
|
| 1694 | (package
|
| 1695 | (name "allegro")
|
| 1696 | (version "5.2.7.0")
|
| 1697 | (source (origin
|
| 1698 | (method url-fetch)
|
| 1699 | (uri (string-append "https://github.com/liballeg/allegro5/releases"
|
| 1700 | "/download/" version "/allegro-"
|
| 1701 | version ".tar.gz"))
|
| 1702 | (sha256
|
| 1703 | (base32
|
| 1704 | "034pmbmbq6jagpp4lhnyjqmf8gcz5fx74d9rknrm7d4wv4cv7qy1"))))
|
| 1705 | (build-system cmake-build-system)
|
| 1706 | (arguments `(#:tests? #f)) |
| 1707 | (inputs
|
| 1708 | |
| 1709 | `(("flac" ,flac)
|
| 1710 | ("freetype" ,freetype)
|
| 1711 | ("glu" ,glu)
|
| 1712 | ("gtk" ,gtk+)
|
| 1713 | ("libjpeg" ,libjpeg-turbo)
|
| 1714 | ("libpng" ,libpng)
|
| 1715 | ("libtheora" ,libtheora)
|
| 1716 | ("libvorbis" ,libvorbis)
|
| 1717 | ("libxcursor" ,libxcursor)
|
| 1718 | ("libxinerama" ,libxinerama)
|
| 1719 | ("libxrandr" ,libxrandr)
|
| 1720 | ("mesa" ,mesa)
|
| 1721 | ("openal" ,openal)
|
| 1722 | ("physfs" ,physfs)
|
| 1723 | ("zlib" ,zlib)))
|
| 1724 | (native-inputs
|
| 1725 | (list pkg-config))
|
| 1726 | (synopsis "Game programming library")
|
| 1727 | (description "Allegro is a library mainly aimed at video game and
|
| 1728 | multimedia programming. It handles common, low-level tasks such as creating
|
| 1729 | windows, accepting user input, loading data, drawing images, playing sounds,
|
| 1730 | etc.")
|
| 1731 | (home-page "https://liballeg.org")
|
| 1732 | (license license:bsd-3)))
|
| 1733 |
|
| 1734 | (define-public libresprite
|
| 1735 | (package
|
| 1736 | (name "libresprite")
|
| 1737 | (version "1.3")
|
| 1738 | |
| 1739 | (source (origin
|
| 1740 | (method git-fetch)
|
| 1741 | (uri (git-reference
|
| 1742 | (url "https://github.com/LibreSprite/LibreSprite")
|
| 1743 | (commit (string-append "v" version))
|
| 1744 | (recursive? #t)))
|
| 1745 | (file-name (git-file-name name version))
|
| 1746 | (sha256
|
| 1747 | (base32
|
| 1748 | "0vq3bh5yj5g80q6f5k26d531dsqf19mcr9b5a3cgnfyv8n6w7l9d"))))
|
| 1749 | (build-system cmake-build-system)
|
| 1750 | (arguments
|
| 1751 | (list #:configure-flags
|
| 1752 | #~(list "-DWITH_WEBP_SUPPORT=1"
|
| 1753 | "-DWITH_DESKTOP_INTEGRATION=1"
|
| 1754 | "-DRELEASE_TAG=ON"
|
| 1755 | (string-append "-DRELEASE_VERSION=" #$version))
|
| 1756 | #:cmake cmake-minimal-4 |
| 1757 | |
| 1758 | #:tests? #f
|
| 1759 | #:modules `((ice-9 match)
|
| 1760 | (guix build cmake-build-system)
|
| 1761 | (guix build utils))
|
| 1762 | #:phases
|
| 1763 | #~(modify-phases %standard-phases
|
| 1764 | (add-after 'install 'replace-bundled-fonts
|
| 1765 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 1766 | (with-directory-excursion
|
| 1767 | (string-append (assoc-ref outputs "out")
|
| 1768 | "/share/libresprite/data/fonts")
|
| 1769 | (for-each
|
| 1770 | (match-lambda
|
| 1771 | ((font replacement)
|
| 1772 | (delete-file font)
|
| 1773 | (symlink
|
| 1774 | (search-input-file
|
| 1775 | inputs
|
| 1776 | (string-append
|
| 1777 | "share/fonts/opentype/" replacement))
|
| 1778 | font)))
|
| 1779 | |
| 1780 | '(("font.ttf" "NotoSans-Regular.otf")
|
| 1781 | ("font-ar.ttf" "NotoKufiArabic-Regular.otf")
|
| 1782 | ("font-zh.ttf" "SourceHanSansCN-Regular.otf")
|
| 1783 | ("font-jp.ttf" "SourceHanSansJP-Regular.otf")
|
| 1784 | ("font-kr.ttf" "SourceHanSansKR-Regular.otf")))))))))
|
| 1785 | (native-inputs (list pkg-config))
|
| 1786 | (inputs
|
| 1787 | (list curl
|
| 1788 | font-google-noto
|
| 1789 | (list font-adobe-source-han-sans "cn")
|
| 1790 | (list font-adobe-source-han-sans "jp")
|
| 1791 | (list font-adobe-source-han-sans "kr")
|
| 1792 | freetype
|
| 1793 | giflib
|
| 1794 | googletest
|
| 1795 | libarchive
|
| 1796 | libjpeg-turbo
|
| 1797 | libpng
|
| 1798 | libwebp
|
| 1799 | libx11
|
| 1800 | libxext
|
| 1801 | libxi
|
| 1802 | libxxf86dga
|
| 1803 | libxxf86vm
|
| 1804 | lua |
| 1805 | pixman
|
| 1806 | sdl2
|
| 1807 | sdl2-image
|
| 1808 | tinyxml2
|
| 1809 | zlib))
|
| 1810 | (synopsis "Animated sprite editor and pixel art tool")
|
| 1811 | (description "LibreSprite is a tool for creating 2D pixel art for video
|
| 1812 | games. In addition to basic pixel editing features, it can assist in the
|
| 1813 | creation of animations, tiled graphics, texture atlases, and more.
|
| 1814 | LibreSprite is a fork of the latest GPLv2 commit of Aseprite.")
|
| 1815 | (home-page "https://libresprite.github.io/")
|
| 1816 | (license license:gpl2+)))
|
| 1817 |
|
| 1818 | (define-public qqwing
|
| 1819 | (package
|
| 1820 | (name "qqwing")
|
| 1821 | (version "1.3.4")
|
| 1822 | (source (origin
|
| 1823 | (method url-fetch)
|
| 1824 | (uri (string-append
|
| 1825 | "https://qqwing.com/"
|
| 1826 | name "-" version ".tar.gz"))
|
| 1827 | (sha256
|
| 1828 | (base32
|
| 1829 | "0bw0papyqjg22z6irf36gs54y8236wa37b6gyn2h1spy65n76lqp"))))
|
| 1830 | (build-system gnu-build-system)
|
| 1831 | (native-inputs
|
| 1832 | (list pkg-config))
|
| 1833 | (home-page "https://qqwing.com/")
|
| 1834 | (synopsis "Sudoku puzzle solver and generator")
|
| 1835 | (description
|
| 1836 | "QQWing is a Sudoku puzzle generator and solver.
|
| 1837 | It offers the following features:
|
| 1838 | @enumerate
|
| 1839 | @item Can solve 1000 puzzles in 1 second and generate 1000 puzzles in 25 seconds.
|
| 1840 | @item Uses logic. Uses as many solve techniques as possible when solving
|
| 1841 | puzzles rather than guessing.
|
| 1842 | @item Rates puzzles. Most generators don't give an indication of the difficulty
|
| 1843 | of a Sudoku puzzle. QQwing does.
|
| 1844 | @item Can print solve instructions for any puzzle.
|
| 1845 | @item Customizable output style, including a CSV style that is easy to
|
| 1846 | import into a database.
|
| 1847 | @end enumerate")
|
| 1848 | (license license:gpl2+)))
|
| 1849 |
|
| 1850 | (define-public quesoglc
|
| 1851 | (package
|
| 1852 | (name "quesoglc")
|
| 1853 | (version "0.7.2")
|
| 1854 | (source (origin
|
| 1855 | (method url-fetch)
|
| 1856 | (uri (string-append "mirror://sourceforge/" name "/" version "/"
|
| 1857 | name "-" version "-free.tar.bz2"))
|
| 1858 | (sha256
|
| 1859 | (base32
|
| 1860 | "08ddhywdy2qg17m592ng3yr0p1ih96irg8wg729g75hsxxq9ipks"))))
|
| 1861 | (build-system gnu-build-system)
|
| 1862 | (arguments
|
| 1863 | `(#:configure-flags
|
| 1864 | |
| 1865 | '("CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")))
|
| 1866 | (native-inputs (list pkg-config))
|
| 1867 | (inputs (list fontconfig freeglut fribidi glew))
|
| 1868 | (home-page "https://quesoglc.sourceforge.net")
|
| 1869 | (synopsis "Implementation of the OpenGL Character Renderer (GLC)")
|
| 1870 | (description
|
| 1871 | "The OpenGL Character Renderer (GLC) is a state machine that provides
|
| 1872 | OpenGL programs with character rendering services via an application programming
|
| 1873 | interface (API).")
|
| 1874 | (license (list license:expat license:lgpl2.1+))))
|
| 1875 |
|
| 1876 | (define-public python-pygame
|
| 1877 | (package
|
| 1878 | (name "python-pygame")
|
| 1879 | (version "2.6.1")
|
| 1880 | (source (origin
|
| 1881 | (method url-fetch)
|
| 1882 | (uri (pypi-uri "pygame" version))
|
| 1883 | (sha256
|
| 1884 | (base32
|
| 1885 | "07zbkyff0vk1pzlaiah9b5jhqy70fmzh0gjw846y1ki9spm05ysn"))))
|
| 1886 | (build-system pyproject-build-system)
|
| 1887 | (arguments
|
| 1888 | (list
|
| 1889 | #:test-flags
|
| 1890 | #~(list
|
| 1891 | |
| 1892 | "--ignore=test/run_tests__tests/run_tests__test.py"
|
| 1893 | |
| 1894 | "--ignore=test/display_test.py"
|
| 1895 | "--ignore=test/mouse_test.py"
|
| 1896 | |
| 1897 | "--ignore=test/mixer_test.py"
|
| 1898 | "--ignore=test/mixer_music_test.py"
|
| 1899 | "--deselect=test/base_test.py::BaseModuleTest::test_init"
|
| 1900 | "--deselect=test/base_test.py::BaseModuleTest::test_quit__and_init"
|
| 1901 | |
| 1902 | "--ignore=test/surface_test.py"
|
| 1903 | |
| 1904 | "--ignore=test/scrap_test.py"
|
| 1905 | |
| 1906 | "--ignore=test/font_test.py"
|
| 1907 | "--ignore=test/ftfont_test.py"
|
| 1908 | "--ignore=test/run_tests__tests/infinite_loop"
|
| 1909 | |
| 1910 | "--deselect=test/controller_test.py::ControllerInteractiveTest::\
|
| 1911 | test__get_count_interactive"
|
| 1912 | "--deselect=test/joystick_test.py::JoystickInteractiveTest::\
|
| 1913 | test_get_count_interactive"
|
| 1914 | "--ignore-glob=test/run_tests__tests/print_std*/"
|
| 1915 | "--ignore=test/run_tests__tests/failures1/fake_4_test.py"
|
| 1916 | |
| 1917 | "--deselect=test/sysfont_test.py::SysfontModuleTest"
|
| 1918 | "--deselect=test/freetype_test.py::FreeTypeFontTest::\
|
| 1919 | test_freetype_SysFont_name"
|
| 1920 | "--deselect=test/image_test.py::test_magic")
|
| 1921 | #:phases
|
| 1922 | #~(modify-phases %standard-phases
|
| 1923 | (add-after 'unpack 'fix-build-config
|
| 1924 | (lambda _
|
| 1925 | (substitute* "buildconfig/config_unix.py"
|
| 1926 | (("origincdirs = \\[.*\\]")
|
| 1927 | "origincdirs = os.environ['C_INCLUDE_PATH'].split(\":\")")
|
| 1928 | (("ORIGLIBDIRS") "LIBRARY_PATH")
|
| 1929 | (("incdirs = \\[\\]") "incdirs = origincdirs")
|
| 1930 | (("libdirs = \\[\\]") "libdirs = origlibdirs"))))
|
| 1931 | (add-after 'unpack 'fix-sdl2-headers
|
| 1932 | (lambda _
|
| 1933 | (substitute* "buildconfig/config_unix.py"
|
| 1934 | (("SDL_ttf.h") "SDL2/SDL_ttf.h")
|
| 1935 | (("SDL_image.h") "SDL2/SDL_image.h")
|
| 1936 | (("SDL_mixer.h") "SDL2/SDL_mixer.h"))
|
| 1937 | (substitute* "src_c/imageext.c"
|
| 1938 | (("SDL_image.h") "SDL2/SDL_image.h"))
|
| 1939 | (substitute* "src_c/font.h"
|
| 1940 | (("SDL_ttf.h") "SDL2/SDL_ttf.h"))
|
| 1941 | (substitute* "src_c/mixer.h"
|
| 1942 | (("SDL_mixer.h") "SDL2/SDL_mixer.h"))
|
| 1943 | (substitute* "src_c/_sdl2/mixer.c"
|
| 1944 | (("SDL_mixer.h") "SDL2/SDL_mixer.h"))))
|
| 1945 | (add-before 'check 'pre-check
|
| 1946 | (lambda _
|
| 1947 | (setenv "XDG_RUNTIME_DIR" (getcwd)))))))
|
| 1948 | (native-inputs
|
| 1949 | (list pkg-config python-numpy python-pytest python-setuptools))
|
| 1950 | (inputs
|
| 1951 | (list freetype
|
| 1952 | sdl2
|
| 1953 | sdl2-image
|
| 1954 | sdl2-mixer
|
| 1955 | sdl2-ttf
|
| 1956 | sdl2-gfx
|
| 1957 | libjpeg-turbo
|
| 1958 | libpng
|
| 1959 | libx11
|
| 1960 | libsmpeg
|
| 1961 | portmidi
|
| 1962 | v4l-utils))
|
| 1963 | (home-page "https://www.pygame.org")
|
| 1964 | (synopsis "SDL wrapper for Python")
|
| 1965 | (description "Pygame is a set of Python modules designed for writing games.
|
| 1966 | It adds functionality on top of the SDL library, allowing you to create games
|
| 1967 | and multimedia programs in the Python language.")
|
| 1968 | (license (list license:bsd-2
|
| 1969 | |
| 1970 | |
| 1971 | |
| 1972 | license:expat
|
| 1973 | license:lgpl2.0+
|
| 1974 | license:lgpl2.1+
|
| 1975 | license:gpl3+
|
| 1976 | license:psfl
|
| 1977 | license:public-domain
|
| 1978 | license:lgpl2.1+))))
|
| 1979 |
|
| 1980 | (define-public python-pygame-menu
|
| 1981 | (package
|
| 1982 | (name "python-pygame-menu")
|
| 1983 | (version "4.5.4")
|
| 1984 | (source
|
| 1985 | |
| 1986 | (origin
|
| 1987 | (method git-fetch)
|
| 1988 | (uri
|
| 1989 | (git-reference
|
| 1990 | (url "https://github.com/ppizarror/pygame-menu")
|
| 1991 | (commit version)))
|
| 1992 | (file-name (git-file-name name version))
|
| 1993 | (sha256
|
| 1994 | (base32 "1a474rvjkm9d45h0bhgaf9h21r3lcgqd27686fav8601395jgwrg"))))
|
| 1995 | (build-system pyproject-build-system)
|
| 1996 | (arguments
|
| 1997 | (list
|
| 1998 | #:test-flags
|
| 1999 | |
| 2000 | #~(list "--deselect=test/test_baseimage.py::BaseImageTest::test_invalid_image"
|
| 2001 | |
| 2002 | "--deselect=test/test_font.py::FontTest::test_font_argument"
|
| 2003 | |
| 2004 | "--deselect=test/test_font.py::FontTest::test_system_load")
|
| 2005 | #:phases
|
| 2006 | #~(modify-phases %standard-phases
|
| 2007 | (add-before 'check 'pre-check
|
| 2008 | (lambda _
|
| 2009 | (setenv "HOME" "/tmp"))))))
|
| 2010 | (native-inputs
|
| 2011 | (list python-pytest
|
| 2012 | python-setuptools))
|
| 2013 | (propagated-inputs
|
| 2014 | (list python-pygame
|
| 2015 | python-pyperclip
|
| 2016 | python-typing-extensions))
|
| 2017 | (home-page "https://pygame-menu.readthedocs.io")
|
| 2018 | (synopsis "Menu for pygame")
|
| 2019 | (description
|
| 2020 | "Pygame-menu is a python-pygame library for creating menus and GUIs.
|
| 2021 | It supports several widgets, such as buttons, color inputs, clock objects,
|
| 2022 | drop selectors, frames, images, labels, selectors, tables, text inputs,
|
| 2023 | color switches, and many more, with multiple options to customize.")
|
| 2024 | (license license:expat)))
|
| 2025 |
|
| 2026 | (define-public python-pygame-ce
|
| 2027 | (package
|
| 2028 | (name "python-pygame-ce")
|
| 2029 | (version "2.5.7")
|
| 2030 | (source
|
| 2031 | (origin
|
| 2032 | (method git-fetch)
|
| 2033 | (uri (git-reference
|
| 2034 | (url "https://github.com/pygame-community/pygame-ce")
|
| 2035 | (commit version)))
|
| 2036 | (file-name (git-file-name name version))
|
| 2037 | (sha256
|
| 2038 | (base32 "1awvs4wa9fgm8xldsxzdx1knijjpzz560lzj3rjvks3gcw8szhzx"))))
|
| 2039 | (build-system pyproject-build-system)
|
| 2040 | (arguments
|
| 2041 | (list
|
| 2042 | #:test-flags
|
| 2043 | #~(list "-k" (string-join
|
| 2044 | |
| 2045 | (list "not DisplayUpdateInteractiveTest"
|
| 2046 | "DisplayInteractiveTest"
|
| 2047 | "FullScreenToggleTestsInteractive"
|
| 2048 | "MessageBoxInteractiveTest"
|
| 2049 | "VisualTestsInteractive"
|
| 2050 | "TouchInteractiveTest"
|
| 2051 | |
| 2052 | "test__get_count_interactive"
|
| 2053 | "test_get_count_interactive"
|
| 2054 | "test_set_source_location"
|
| 2055 | |
| 2056 | "testSavePNG24"
|
| 2057 | "testSavePNG8"
|
| 2058 | "testSavePaletteAsPNG8"
|
| 2059 | |
| 2060 | "test_get__owned_empty_type"
|
| 2061 | "test_init__reinit"
|
| 2062 | "test_put"
|
| 2063 | "test_put__bmp_image"
|
| 2064 | "test_put__text"
|
| 2065 | "test_issue_223"
|
| 2066 | |
| 2067 | "test_palette_colorkey"
|
| 2068 | "test_palette_colorkey_fill"
|
| 2069 | "test_palette_colorkey_set_px"
|
| 2070 | "test_create_aliases"
|
| 2071 | |
| 2072 | "test_multiple_timers"
|
| 2073 | "test_timer_common_reference")
|
| 2074 | " and not "))
|
| 2075 | #:phases #~(modify-phases %standard-phases
|
| 2076 | (add-before 'check 'pre-check
|
| 2077 | (lambda _
|
| 2078 | (setenv "HOME" "/tmp")
|
| 2079 | (setenv "SDL_VIDEODRIVER" "dummy")
|
| 2080 | (setenv "SDL_AUDIODRIVER" "disk"))))))
|
| 2081 | (native-inputs (list pkg-config
|
| 2082 | python-meson
|
| 2083 | python-numpy
|
| 2084 | python-pytest
|
| 2085 | python-setuptools))
|
| 2086 | (inputs (list freetype portmidi sdl2 sdl2-image sdl2-mixer sdl2-ttf))
|
| 2087 | (home-page "https://pyga.me/")
|
| 2088 | (synopsis "Python Game Development")
|
| 2089 | (description "Pygame-CE is a fork of the upstream pygame project by its
|
| 2090 | former core developers. It aims to offer more frequent releases, continuous
|
| 2091 | bugfixes and enhancements, and a new governance model.")
|
| 2092 | (license license:lgpl2.1+)))
|
| 2093 |
|
| 2094 | (define-public python-renpy
|
| 2095 | (package
|
| 2096 | (name "python-renpy")
|
| 2097 | (version "8.5.0")
|
| 2098 | (source
|
| 2099 | (origin
|
| 2100 | (method url-fetch)
|
| 2101 | (uri (string-append "https://www.renpy.org/dl/" version
|
| 2102 | "/renpy-" version "-source.tar.bz2"))
|
| 2103 | (sha256
|
| 2104 | (base32
|
| 2105 | "1dv856sb8mak21kkj0ys0k6zc6ly2k8102ahnfdrc04cwdrryw6b"))
|
| 2106 | (modules '((guix build utils)))
|
| 2107 | |
| 2108 | (patches (search-patches "renpy-python-3.11-compat.patch"
|
| 2109 | "renpy-fix-integer-slots.patch"))
|
| 2110 | (snippet
|
| 2111 | #~(begin
|
| 2112 | |
| 2113 | |
| 2114 | |
| 2115 | |
| 2116 | (for-each delete-file
|
| 2117 | '("renpy/encryption.pyx"
|
| 2118 | "renpy/common/00sync.rpy"))
|
| 2119 | (delete-file-recursively "src/libhydrogen")
|
| 2120 | (substitute* "setup.py"
|
| 2121 | (("cython\\(\"renpy\\.encryption\"\\)") "")
|
| 2122 | (("version = .*") (string-append "version = \"" #$version "\"")))
|
| 2123 | (substitute* "renpy/__init__.py"
|
| 2124 | (("import renpy\\.encryption") ""))
|
| 2125 | |
| 2126 | |
| 2127 | (substitute* "renpy/__init__.py"
|
| 2128 | (("official = official and .*") ""))
|
| 2129 |
|
| 2130 | |
| 2131 | |
| 2132 | (substitute* (find-files "renpy" "\\.py$")
|
| 2133 | (("type ([A-Za-z0-9]+) =" all id)
|
| 2134 | (string-append id " =")))
|
| 2135 | (substitute* "renpy/minstore.py"
|
| 2136 | ((", override") ""))
|
| 2137 |
|
| 2138 | |
| 2139 | (substitute* "src/pygame/sdl_image_compat.h"
|
| 2140 | (("\"SDL_image.h\"") "<SDL2/SDL_image.h>"))))))
|
| 2141 | (build-system pyproject-build-system)
|
| 2142 | (arguments
|
| 2143 | (list
|
| 2144 | #:tests? #f |
| 2145 | #:phases
|
| 2146 | #~(modify-phases %standard-phases
|
| 2147 | (add-after 'unpack 'fix-commands
|
| 2148 | (lambda* (#:key inputs #:allow-other-keys)
|
| 2149 | (substitute* "renpy/editor.py"
|
| 2150 | (("xdg-open")
|
| 2151 | (string-append (assoc-ref inputs "xdg-utils")
|
| 2152 | "/bin/xdg-open")))))
|
| 2153 | (add-after 'set-paths 'set-build-vars
|
| 2154 | (lambda* (#:key inputs native-inputs #:allow-other-keys)
|
| 2155 | (setenv "RENPY_CYTHON"
|
| 2156 | (search-input-file (or native-inputs inputs)
|
| 2157 | "/bin/cython"))
|
| 2158 | (setenv "RENPY_DEPS_INSTALL" (string-join (map cdr inputs) ":"))))
|
| 2159 | (add-after 'build 'build-renpy
|
| 2160 | (lambda _
|
| 2161 | (invoke "python" "-m" "compileall" "renpy")))
|
| 2162 | (add-after 'install 'install-renpy
|
| 2163 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 2164 | (let ((site (string-append (assoc-ref outputs "out")
|
| 2165 | "/lib/python"
|
| 2166 | (python-version
|
| 2167 | (assoc-ref inputs "python"))
|
| 2168 | "/site-packages")))
|
| 2169 | (copy-recursively "renpy"
|
| 2170 | (string-append site "/renpy"))
|
| 2171 | (delete-file-recursively
|
| 2172 | (string-append site "/renpy/common"))
|
| 2173 | (for-each delete-file
|
| 2174 | (find-files site "\\.py[ix]"))))))))
|
| 2175 | (native-inputs (list pkg-config
|
| 2176 | python-cython
|
| 2177 | python-setuptools
|
| 2178 | python-wheel))
|
| 2179 | (inputs
|
| 2180 | (list assimp
|
| 2181 | ffmpeg
|
| 2182 | freetype
|
| 2183 | fribidi
|
| 2184 | glew
|
| 2185 | libpng
|
| 2186 | (sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))
|
| 2187 | xdg-utils))
|
| 2188 | (propagated-inputs (list python-ecdsa python-future))
|
| 2189 | (home-page "https://www.renpy.org/")
|
| 2190 | (synopsis "Ren'py python module")
|
| 2191 | (description "This package contains the shared libraries and Python modules
|
| 2192 | of Ren'py. While functional, they are not meaningful on their own without
|
| 2193 | the launcher and common Ren'py code provided by the @code{renpy} package and
|
| 2194 | are only used to bootstrap it.")
|
| 2195 | (license license:expat)))
|
| 2196 |
|
| 2197 | (define-public renpy
|
| 2198 | (package
|
| 2199 | (inherit python-renpy)
|
| 2200 | (name "renpy")
|
| 2201 | (build-system pyproject-build-system)
|
| 2202 | (arguments
|
| 2203 | (list
|
| 2204 | #:tests? #f
|
| 2205 | #:phases
|
| 2206 | #~(modify-phases %standard-phases
|
| 2207 | (add-after 'unpack 'fix-launcher
|
| 2208 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 2209 | (substitute* "launcher/game/gui7.rpy"
|
| 2210 | (("([ ]*)import gui7" all indent)
|
| 2211 | (string-append indent "import sys\n"
|
| 2212 | indent "import os\n"
|
| 2213 | indent "from store import config\n"
|
| 2214 | indent "sys.path.insert(0, os.path.join"
|
| 2215 | "(config.renpy_base, \"launcher\"))\n"
|
| 2216 | all)))
|
| 2217 | (substitute* "launcher/game/project.rpy"
|
| 2218 | (("cmd = \\[ executable, sys.argv\\[0\\] \\]")
|
| 2219 | (string-append "cmd = [ \"" (assoc-ref outputs "out")
|
| 2220 | "/bin/renpy\" ]"))
|
| 2221 | |
| 2222 | |
| 2223 | (("cmd.append\\(self.path\\)")
|
| 2224 | "cmd.append(self.path + \"/game\")"))
|
| 2225 | (substitute* "renpy/common/00action_other.rpy"
|
| 2226 | (("xdg-open") (search-input-file inputs "bin/xdg-open")))))
|
| 2227 | (add-after 'unpack 'drop-game-from-paths
|
| 2228 | (lambda _
|
| 2229 | (substitute* (list "launcher/game/gui7.rpy"
|
| 2230 | "launcher/game/gui7/images.py")
|
| 2231 | ((", \"gui\", \"game\",") ", \"gui\",")
|
| 2232 | ((", \"game\", \"gui7\",") ", \"gui7\","))
|
| 2233 | (substitute* "gui/game/guisupport.rpy"
|
| 2234 | ((", \"launcher\", \"game\"") ", \"launcher\""))))
|
| 2235 | (delete 'build)
|
| 2236 | (replace 'install
|
| 2237 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 2238 | |
| 2239 | |
| 2240 | |
| 2241 | |
| 2242 | |
| 2243 | |
| 2244 | |
| 2245 | |
| 2246 | |
| 2247 | |
| 2248 | |
| 2249 | |
| 2250 | |
| 2251 | |
| 2252 | |
| 2253 | |
| 2254 | |
| 2255 | |
| 2256 | |
| 2257 | |
| 2258 | |
| 2259 | |
| 2260 | |
| 2261 | |
| 2262 | |
| 2263 | |
| 2264 | |
| 2265 | |
| 2266 | |
| 2267 | |
| 2268 | |
| 2269 | |
| 2270 | |
| 2271 | (let* ((out (assoc-ref outputs "out"))
|
| 2272 | (bin/renpy (string-append out "/bin/renpy"))
|
| 2273 | (bin/renpy-launcher (string-append out "/bin/renpy-launcher")))
|
| 2274 | (copy-recursively "renpy/common"
|
| 2275 | (string-append out "/share/renpy/common"))
|
| 2276 | (copy-recursively "launcher/game"
|
| 2277 | (string-append out "/share/renpy/launcher"))
|
| 2278 | (copy-recursively "gui/game"
|
| 2279 | (string-append out "/share/renpy/gui"))
|
| 2280 | (copy-recursively "sdk-fonts"
|
| 2281 | (string-append out "/share/renpy/sdk-fonts"))
|
| 2282 | (mkdir-p (string-append out "/bin"))
|
| 2283 | (copy-file #$(local-file (search-auxiliary-file "renpy/renpy.in"))
|
| 2284 | bin/renpy)
|
| 2285 | (substitute* bin/renpy
|
| 2286 | (("@PYTHON@") (search-input-file inputs "bin/python3"))
|
| 2287 | (("@RENPY_BASE@") (string-append out "/share/renpy")))
|
| 2288 | (chmod bin/renpy #o755)
|
| 2289 | (with-output-to-file bin/renpy-launcher
|
| 2290 | (lambda _
|
| 2291 | (format #t "#!~a~%exec ~a ~a \"$@\""
|
| 2292 | (search-input-file inputs "/bin/bash")
|
| 2293 | bin/renpy
|
| 2294 | (string-append out "/share/renpy/launcher"))))
|
| 2295 | (chmod bin/renpy-launcher #o755))))
|
| 2296 | (add-after 'install 'build
|
| 2297 | (lambda _
|
| 2298 | (let* ((bin/renpy (string-append #$output "/bin/renpy"))
|
| 2299 | (renpy-base (string-append #$output "/share/renpy")))
|
| 2300 | (for-each
|
| 2301 | (lambda (dir)
|
| 2302 | (invoke bin/renpy (string-append renpy-base "/" dir) "quit"))
|
| 2303 | (list "common" "gui" "launcher"))))))))
|
| 2304 | (inputs (list bash-minimal
|
| 2305 | python
|
| 2306 | python-pefile
|
| 2307 | python-requests
|
| 2308 | python-renpy
|
| 2309 | python-six
|
| 2310 | `(,python "tk")
|
| 2311 | xdg-utils))
|
| 2312 | (propagated-inputs '())
|
| 2313 | (native-inputs (list xorg-server-for-tests))
|
| 2314 | (home-page "https://www.renpy.org/")
|
| 2315 | (synopsis "Visual Novel Engine")
|
| 2316 | (description "Ren'Py is a visual novel engine that helps you use words,
|
| 2317 | images, and sounds to tell interactive stories that run on computers and
|
| 2318 | mobile devices. These can be both visual novels and life simulation games.
|
| 2319 | The easy to learn script language allows anyone to efficiently write large
|
| 2320 | visual novels, while its Python scripting is enough for complex simulation
|
| 2321 | games.")
|
| 2322 | (license license:expat)))
|
| 2323 |
|
| 2324 | (define-public renpy-the-question
|
| 2325 | (package
|
| 2326 | (inherit renpy)
|
| 2327 | (name "renpy-the-question")
|
| 2328 | (build-system renpy-build-system)
|
| 2329 | (arguments (list #:game "the_question/game"))
|
| 2330 | (native-inputs (list xorg-server-for-tests))
|
| 2331 | (synopsis "Example visual novel")
|
| 2332 | (description "The Question is a short example visual novel showing that
|
| 2333 | your Ren'py installation works, similar to a \"Hello World\" program in other
|
| 2334 | programming languages.")
|
| 2335 | (license license:expat)))
|
| 2336 |
|
| 2337 | (define-public renpy-tutorial
|
| 2338 | (package
|
| 2339 | (inherit renpy)
|
| 2340 | (name "renpy-tutorial")
|
| 2341 | (build-system renpy-build-system)
|
| 2342 | (arguments (list #:game "the_question/game"))
|
| 2343 | (native-inputs (list xorg-server-for-tests))
|
| 2344 | (synopsis "Tutorial for Ren'py")
|
| 2345 | (description "This package provides an interactive tutorial for the Ren'py
|
| 2346 | visual novel engine, explaining all of its features.")
|
| 2347 | (license license:expat)))
|
| 2348 |
|
| 2349 | (define-public rpatool
|
| 2350 | |
| 2351 | |
| 2352 | (let ((revision "0")
|
| 2353 | (commit "74f26d5dfdd645483e02552aa766ca447ad6b191"))
|
| 2354 | (package
|
| 2355 | (name "rpatool")
|
| 2356 | (version (git-version "0.8" revision commit))
|
| 2357 | (source
|
| 2358 | (origin
|
| 2359 | (method git-fetch)
|
| 2360 | (uri (git-reference
|
| 2361 | (url "https://codeberg.org/shiz/rpatool")
|
| 2362 | (commit commit)))
|
| 2363 | (file-name (git-file-name name version))
|
| 2364 | (sha256
|
| 2365 | (base32 "10dm8bak0dm84d1ciwzw6jd5y64invddlmcdnawnpp7jn3wrg1jb"))))
|
| 2366 | (build-system pyproject-build-system)
|
| 2367 | (arguments
|
| 2368 | (list
|
| 2369 | #:tests? #f |
| 2370 | #:phases
|
| 2371 | #~(modify-phases %standard-phases
|
| 2372 | (delete 'build)
|
| 2373 | (replace 'install
|
| 2374 | (lambda _
|
| 2375 | (install-file "rpatool"
|
| 2376 | (string-append #$output "/bin")))))))
|
| 2377 | (home-page "https://codeberg.org/shiz/rpatool")
|
| 2378 | (synopsis "Tool to work with Ren'Py archives")
|
| 2379 | (description
|
| 2380 | "@samp{rpatool} is a simple tool allowing you to create, modify and
|
| 2381 | extract @url{https://www.renpy.org/,Ren'Py} Archive files
|
| 2382 | (@code{.rpa}/@code{.rpi}). Currently, only writing RPAv2/RPAv3 archives is
|
| 2383 | supported.")
|
| 2384 | (license license:wtfpl2))))
|
| 2385 |
|
| 2386 | (define-public python-pyxel
|
| 2387 | |
| 2388 | |
| 2389 | |
| 2390 | (let ((commit "be75b724cae9e10e56a82a5421f9dd65390f1a06")
|
| 2391 | (revision "2"))
|
| 2392 | (package
|
| 2393 | (name "python-pyxel")
|
| 2394 | |
| 2395 | (version (git-version "1.4.3" revision commit))
|
| 2396 | (source
|
| 2397 | (origin
|
| 2398 | (method git-fetch)
|
| 2399 | (uri
|
| 2400 | (git-reference
|
| 2401 | (url "https://github.com/kitao/pyxel")
|
| 2402 | (commit commit)))
|
| 2403 | (file-name (git-file-name name version))
|
| 2404 | (sha256
|
| 2405 | (base32
|
| 2406 | "03ch79cmh9fxvq6c2f3zc2snzczhqi2n01f254lsigckc7d5wz08"))
|
| 2407 | (modules '((guix build utils)))
|
| 2408 | (snippet
|
| 2409 | #~(begin
|
| 2410 | (substitute* "pyxel/__init__.py"
|
| 2411 | (("from collections import MutableSequence")
|
| 2412 | "from collections.abc import MutableSequence"))))))
|
| 2413 | (build-system pyproject-build-system)
|
| 2414 | (arguments
|
| 2415 | (list
|
| 2416 | #:tests? #f |
| 2417 | #:phases
|
| 2418 | #~(modify-phases %standard-phases
|
| 2419 | (add-after 'unpack 'patch-build-files
|
| 2420 | (lambda* (#:key inputs #:allow-other-keys)
|
| 2421 | (substitute* "setup.py"
|
| 2422 | (("\"pyxel\\.core\\.bin\\.(.*)\"," all arch)
|
| 2423 | (if (string=? arch "linux") all "")))
|
| 2424 | (substitute* "pyxel/core/Makefile"
|
| 2425 | (("`sdl2-config")
|
| 2426 | (string-append "`sdl2-config --prefix="
|
| 2427 | (assoc-ref inputs "sdl2"))))))
|
| 2428 | (add-before 'build 'prebuild
|
| 2429 | (lambda _
|
| 2430 | (invoke "make" "-C" "pyxel/core"))))))
|
| 2431 | (native-inputs (list python-setuptools))
|
| 2432 | (inputs
|
| 2433 | `(("gifsicle" ,gifsicle)
|
| 2434 | ("sdl2" ,(sdl-union (list sdl2 sdl2-image)))))
|
| 2435 | (home-page "https://github.com/kitao/pyxel")
|
| 2436 | (synopsis "Retro game engine for Python")
|
| 2437 | (description "Pyxel is a game engine inspired by retro gaming consoles.
|
| 2438 | It has a fixed 16-color palette, can hold up to 3 image banks and 8 tilemaps
|
| 2439 | (256x256 pixels each) and 4 sound channels with 64 definable sounds. It
|
| 2440 | also comes with a built-in image and sound editor.")
|
| 2441 | (license license:expat))))
|
| 2442 |
|
| 2443 | (define-public grafx2
|
| 2444 | (let ((3rd/6502 |
| 2445 | (origin
|
| 2446 | (method url-fetch)
|
| 2447 | (uri "https://github.com/redcode/6502/releases/download/v0.1/6502-v0.1.tar.xz")
|
| 2448 | (sha256
|
| 2449 | (base32 "03wlndlmfsz51x7hmrfs02r3fzqk8a0grbzm2h80pm33f4r0z9dv"))))
|
| 2450 | (3rd/recoil |
| 2451 | (origin
|
| 2452 | (method url-fetch)
|
| 2453 | (uri "https://downloads.sourceforge.net/project/recoil/recoil/6.4.2/recoil-6.4.2.tar.gz")
|
| 2454 | (sha256
|
| 2455 | (base32 "1p73cgfacia2gxvswhdixk6grpp9rs2n5258axh5vdb6ly8w3pi3")))))
|
| 2456 | (package
|
| 2457 | (name "grafx2")
|
| 2458 | (version "2.9")
|
| 2459 | (source
|
| 2460 | (origin
|
| 2461 | (method git-fetch)
|
| 2462 | (uri (git-reference
|
| 2463 | (url "https://gitlab.com/GrafX2/grafX2")
|
| 2464 | (commit (string-append "v" version))))
|
| 2465 | (file-name (git-file-name name version))
|
| 2466 | (sha256
|
| 2467 | (base32 "0rf85pm40nmp9f95adbzzfx2ypvqjl51wqvk461c4bk8z7anlniz"))
|
| 2468 | (modules '((guix build utils)))
|
| 2469 | (snippet
|
| 2470 | #~(begin
|
| 2471 | (mkdir "3rdparty/archives")
|
| 2472 | (copy-file #$3rd/6502
|
| 2473 | "3rdparty/archives/6502-v0.1.tar.xz")
|
| 2474 | (copy-file #$3rd/recoil
|
| 2475 | "3rdparty/archives/recoil-6.4.2.tar.gz")))))
|
| 2476 | (build-system gnu-build-system)
|
| 2477 | (arguments
|
| 2478 | (list
|
| 2479 | #:phases
|
| 2480 | #~(modify-phases %standard-phases
|
| 2481 | (delete 'configure) |
| 2482 | (add-before 'build 'change-to-src-directory
|
| 2483 | (lambda _
|
| 2484 | (chdir "src"))))
|
| 2485 | #:make-flags
|
| 2486 | #~(list "API=sdl2"
|
| 2487 | (string-append "PREFIX="
|
| 2488 | (assoc-ref %outputs "out")))
|
| 2489 | #:tests? #f)) |
| 2490 | (native-inputs
|
| 2491 | (list pkg-config which))
|
| 2492 | (inputs
|
| 2493 | (list fontconfig lua (sdl-union (list sdl2 sdl2-image sdl2-ttf))))
|
| 2494 | (synopsis "Bitmap paint program")
|
| 2495 | (description "GrafX2 is a bitmap paint program inspired by the Amiga
|
| 2496 | programs Deluxe Paint and Brilliance. Specializing in 256-color drawing, it
|
| 2497 | includes a very large number of tools and effects that make it particularly
|
| 2498 | suitable for pixel art, game graphics, and generally any detailed graphics
|
| 2499 | painted with a mouse.")
|
| 2500 | (home-page "http://pulkomandy.tk/projects/GrafX2")
|
| 2501 | (license license:gpl2)))) |
| 2502 |
|
| 2503 | (define-public ois
|
| 2504 | (package
|
| 2505 | (name "ois")
|
| 2506 | (version "1.5.1")
|
| 2507 | (source
|
| 2508 | (origin
|
| 2509 | (method git-fetch)
|
| 2510 | (uri (git-reference
|
| 2511 | (url "https://github.com/wgois/OIS")
|
| 2512 | (commit (string-append "v" version))))
|
| 2513 | (file-name (git-file-name name version))
|
| 2514 | (sha256
|
| 2515 | (base32 "0nkh0zrsbyv47c0i0vhdna3jsnvs69pb1svg75avxw6z7kwskgla"))))
|
| 2516 | (build-system cmake-build-system)
|
| 2517 | (arguments
|
| 2518 | `(#:tests? #f)) |
| 2519 | (inputs
|
| 2520 | (list libx11))
|
| 2521 | (synopsis "Object Oriented Input System")
|
| 2522 | (description
|
| 2523 | "Cross Platform Object Oriented Input Lib System is a cross platform,
|
| 2524 | simple solution for using all kinds of Input Devices (Keyboards, Mice,
|
| 2525 | Joysticks, etc) and feedback devices (e.g. force feedback). Meant to be very
|
| 2526 | robust and compatible with many systems and operating systems.")
|
| 2527 | (home-page "https://github.com/wgois/OIS")
|
| 2528 | (license license:zlib)))
|
| 2529 |
|
| 2530 | (define-public mc2mt
|
| 2531 | |
| 2532 | (let ((commit "039dbc26466a430e03c646dc5a9bd0822637a87a")
|
| 2533 | (revision "0"))
|
| 2534 | (package
|
| 2535 | (name "mc2mt")
|
| 2536 | (version (git-version "0.1" revision commit))
|
| 2537 | (source
|
| 2538 | (origin
|
| 2539 | (method git-fetch)
|
| 2540 | (uri (git-reference
|
| 2541 | (url "https://github.com/listia/mc2mt")
|
| 2542 | (commit commit)))
|
| 2543 | (file-name (git-file-name name version))
|
| 2544 | (sha256
|
| 2545 | (base32 "1vnaznwgm87x0n5dp14363p2h54lpzalynrrd6lbs6wgrqq7fq9i"))
|
| 2546 | (patches (search-patches "mc2mt-add-packaging-support.patch"))
|
| 2547 | (modules '((guix build utils)))))
|
| 2548 | (build-system pyproject-build-system)
|
| 2549 | (arguments
|
| 2550 | (list
|
| 2551 | #:tests? #f |
| 2552 | #:phases
|
| 2553 | #~(modify-phases %standard-phases
|
| 2554 | (add-after 'unpack 'patch-code
|
| 2555 | (lambda* _
|
| 2556 | (substitute* "mc2mtlib/argument_parser.py"
|
| 2557 | (("mineclone2") "mineclone")))))))
|
| 2558 | (native-inputs (list python-pytest python-setuptools))
|
| 2559 | (propagated-inputs (list python-anvil-parser))
|
| 2560 | (synopsis "Minecraft to Minetest world converter")
|
| 2561 | (description "@code{mc2mt} is a Minecraft to Minetest world converter.
|
| 2562 | It can convert worlds from Minecraft 1.9 and later.")
|
| 2563 | (home-page "https://github.com/listia/mc2mt")
|
| 2564 | (license license:expat))))
|
| 2565 |
|
| 2566 | (define-public mygui-gl
|
| 2567 | (package
|
| 2568 | (name "mygui-gl")
|
| 2569 | (version "3.4.3")
|
| 2570 | (source
|
| 2571 | (origin
|
| 2572 | (method git-fetch)
|
| 2573 | (uri (git-reference
|
| 2574 | (url "https://github.com/MyGUI/mygui")
|
| 2575 | (commit (string-append "MyGUI" version))))
|
| 2576 | (file-name (git-file-name name version))
|
| 2577 | (sha256
|
| 2578 | (base32 "0nayw5shm5nly9bjp0g372kg5ia64dvn6mrmi1c6mdg0n6vgs9xa"))))
|
| 2579 | (build-system cmake-build-system)
|
| 2580 | (arguments
|
| 2581 | (list
|
| 2582 | #:tests? #f |
| 2583 | #:configure-flags
|
| 2584 | #~(list "-DMYGUI_RENDERSYSTEM=4" |
| 2585 | "-DMYGUI_INSTALL_DOCS=TRUE"
|
| 2586 | |
| 2587 | |
| 2588 | "-DMYGUI_BUILD_DEMOS=FALSE"
|
| 2589 | "-DMYGUI_BUILD_TOOLS=FALSE"
|
| 2590 | "-DMYGUI_DONT_USE_OBSOLETE=TRUE")))
|
| 2591 | (native-inputs
|
| 2592 | (list boost
|
| 2593 | doxygen
|
| 2594 | pkg-config))
|
| 2595 | (inputs
|
| 2596 | (list font-dejavu
|
| 2597 | freetype
|
| 2598 | glu
|
| 2599 | graphviz
|
| 2600 | libglvnd
|
| 2601 | libx11
|
| 2602 | mesa
|
| 2603 | ois
|
| 2604 | (sdl-union (list sdl2 sdl2-image))))
|
| 2605 | (synopsis "Fast, flexible and simple GUI (OpenGL backend)")
|
| 2606 | (description
|
| 2607 | "MyGUI is a library for creating Graphical User Interfaces (GUIs) for games
|
| 2608 | and 3D applications. The main goals of MyGUI are: speed, flexibility and ease
|
| 2609 | of use.")
|
| 2610 | (home-page "http://mygui.info/")
|
| 2611 | (license license:expat)))
|
| 2612 |
|
| 2613 | (define-public openmw
|
| 2614 | (package
|
| 2615 | (name "openmw")
|
| 2616 | (version "0.51.0")
|
| 2617 | (source
|
| 2618 | (origin
|
| 2619 | (method git-fetch)
|
| 2620 | (uri (git-reference
|
| 2621 | (url "https://github.com/OpenMW/openmw")
|
| 2622 | (commit (string-append "openmw-" version))))
|
| 2623 | (file-name (git-file-name name version))
|
| 2624 | (sha256
|
| 2625 | (base32 "0jhk4zmdryx9wcpw1p0k0s0p4rryv3bb66hspn1kj0k40h8sgv8g"))))
|
| 2626 | (build-system cmake-build-system)
|
| 2627 | (arguments
|
| 2628 | (list
|
| 2629 | #:tests? #f |
| 2630 | #:configure-flags #~(list "-DOPENMW_USE_SYSTEM_RECASTNAVIGATION=ON")
|
| 2631 | #:phases #~(modify-phases %standard-phases
|
| 2632 | (add-after 'unpack 'add-qtsvg
|
| 2633 | (lambda _
|
| 2634 | (substitute* "components/CMakeLists.txt"
|
| 2635 | (("Qt::Core")
|
| 2636 | "Qt::Core Qt::Svg"))))
|
| 2637 | (add-after 'install 'remove-clip-control-extension
|
| 2638 | |
| 2639 | |
| 2640 | |
| 2641 | |
| 2642 | (lambda _
|
| 2643 | (wrap-program (string-append #$output "/bin/openmw")
|
| 2644 | '("MESA_EXTENSION_OVERRIDE" = ("-GL_ARB_clip_control"))))))))
|
| 2645 | (native-inputs (list boost doxygen pkg-config))
|
| 2646 | (inputs (list bullet
|
| 2647 | collada-dom
|
| 2648 | ffmpeg
|
| 2649 | libxt
|
| 2650 | lz4
|
| 2651 | mygui-gl |
| 2652 | openal
|
| 2653 | openmw-openscenegraph
|
| 2654 | qtbase
|
| 2655 | qttools
|
| 2656 | qtsvg
|
| 2657 | recastnavigation
|
| 2658 | sdl2
|
| 2659 | unshield
|
| 2660 | icu4c
|
| 2661 | yaml-cpp
|
| 2662 | luajit
|
| 2663 | sqlite))
|
| 2664 | (synopsis "Re-implementation of the RPG Morrowind engine")
|
| 2665 | (description
|
| 2666 | "OpenMW is a game engine which reimplements and extends the one that runs
|
| 2667 | the 2002 open-world RPG Morrowind. The engine comes with its own editor,
|
| 2668 | called OpenMW-CS which allows the user to edit or create their own original
|
| 2669 | games.")
|
| 2670 | (home-page "https://openmw.org")
|
| 2671 | (license license:gpl3)))
|
| 2672 |
|
| 2673 | (define-public jolt-physics
|
| 2674 | (package
|
| 2675 | (name "jolt-physics")
|
| 2676 | (version "5.5.0")
|
| 2677 | (source
|
| 2678 | (origin
|
| 2679 | (method git-fetch)
|
| 2680 | (uri (git-reference
|
| 2681 | (url "https://github.com/jrouwe/JoltPhysics")
|
| 2682 | (commit (string-append "v" version))))
|
| 2683 | (file-name (git-file-name name version))
|
| 2684 | (sha256
|
| 2685 | (base32 "0dzqi4mxrzg5cyf5k8rdlb078939ib849n7gs6014d3ljymf839r"))
|
| 2686 | (modules '((guix build utils)))
|
| 2687 | |
| 2688 | (snippet
|
| 2689 | '(begin
|
| 2690 | (delete-file-recursively "Assets/Fonts")
|
| 2691 | (substitute* "TestFramework/TestFramework.cmake"
|
| 2692 | ((".*Roboto-Regular\\.ttf.*") ""))))))
|
| 2693 | (build-system cmake-build-system)
|
| 2694 | (arguments
|
| 2695 | (list
|
| 2696 | #:configure-flags
|
| 2697 | #~(list "-DBUILD_SHARED_LIBS=ON")
|
| 2698 | #:phases
|
| 2699 | #~(modify-phases %standard-phases
|
| 2700 | (add-before 'configure 'change-directory
|
| 2701 | (lambda _
|
| 2702 | (chdir "Build")))
|
| 2703 | (add-after 'install 'change-directory
|
| 2704 | (lambda _
|
| 2705 | (chdir ".."))))))
|
| 2706 | (home-page "https://github.com/jrouwe/JoltPhysics")
|
| 2707 | (synopsis "Rigid body physics and collision detection library")
|
| 2708 | (description
|
| 2709 | "Jolt Physics is a multi core friendly rigid body physics and collision
|
| 2710 | detection library, written in C++. It is suitable for games and VR
|
| 2711 | applications.")
|
| 2712 | (license license:expat)))
|
| 2713 |
|
| 2714 | (define-public godot-lts
|
| 2715 | (package
|
| 2716 | (name "godot")
|
| 2717 | (version "3.6")
|
| 2718 | (source (origin
|
| 2719 | (method git-fetch)
|
| 2720 | (uri (git-reference
|
| 2721 | (url "https://github.com/godotengine/godot")
|
| 2722 | (commit (string-append version "-stable"))))
|
| 2723 | (file-name (git-file-name name version))
|
| 2724 | (sha256
|
| 2725 | (base32
|
| 2726 | "1vdpd05i901p69ciagdaiwdw21j65a7s9r96gdzay321a0xihr71"))
|
| 2727 | (modules '((guix build utils)
|
| 2728 | (ice-9 ftw)
|
| 2729 | (srfi srfi-1)))
|
| 2730 | (snippet
|
| 2731 | '(begin
|
| 2732 | |
| 2733 | |
| 2734 | |
| 2735 | (with-directory-excursion "thirdparty"
|
| 2736 | (let* ((preserved-files
|
| 2737 | '("README.md"
|
| 2738 | "certs"
|
| 2739 | "cvtt"
|
| 2740 | "embree"
|
| 2741 | "enet"
|
| 2742 | "etc2comp"
|
| 2743 | "fonts"
|
| 2744 | "glad"
|
| 2745 | "jpeg-compressor"
|
| 2746 | "libsimplewebm"
|
| 2747 | "minimp3"
|
| 2748 | "miniupnpc"
|
| 2749 | "minizip"
|
| 2750 | "misc"
|
| 2751 | "nanosvg"
|
| 2752 | "oidn"
|
| 2753 | "pvrtccompressor"
|
| 2754 | "recastnavigation"
|
| 2755 | "rvo2"
|
| 2756 | "squish"
|
| 2757 | "stb_rect_pack"
|
| 2758 | "tinyexr"
|
| 2759 | "vhacd"
|
| 2760 | "xatlas")))
|
| 2761 | (for-each delete-file-recursively
|
| 2762 | (lset-difference
|
| 2763 | string=?
|
| 2764 | (scandir ".")
|
| 2765 | (cons* "." ".." preserved-files)))))))))
|
| 2766 | (build-system scons-build-system)
|
| 2767 | (arguments
|
| 2768 | (list
|
| 2769 | |
| 2770 | |
| 2771 | #:scons-flags #~(list "platform=x11" "target=release_debug"
|
| 2772 | "builtin_bullet=no"
|
| 2773 | "builtin_freetype=no"
|
| 2774 | "builtin_glew=no"
|
| 2775 | "builtin_libmpdec=no"
|
| 2776 | "builtin_libogg=no"
|
| 2777 | "builtin_libpng=no"
|
| 2778 | "builtin_libtheora=no"
|
| 2779 | "builtin_libvorbis=no"
|
| 2780 | "builtin_libvpx=no"
|
| 2781 | "builtin_libwebp=no"
|
| 2782 | "builtin_mbedtls=no"
|
| 2783 | "builtin_opus=no"
|
| 2784 | "builtin_pcre2=no"
|
| 2785 | "builtin_wslay=no"
|
| 2786 | "builtin_zlib=no"
|
| 2787 | "builtin_zstd=no")
|
| 2788 | #:tests? #f |
| 2789 | #:phases
|
| 2790 | #~(modify-phases %standard-phases
|
| 2791 | (add-after 'unpack 'scons-use-env
|
| 2792 | (lambda _
|
| 2793 | |
| 2794 | |
| 2795 | (substitute* "SConstruct"
|
| 2796 | (("env_base = Environment\\(tools=custom_tools\\)")
|
| 2797 | (string-append
|
| 2798 | "env_base = Environment(tools=custom_tools)\n"
|
| 2799 | "env_base = Environment(ENV=os.environ)")))))
|
| 2800 | |
| 2801 | (add-after 'build 'build-headless
|
| 2802 | (lambda* (#:key scons-flags #:allow-other-keys)
|
| 2803 | (apply invoke "scons"
|
| 2804 | `(,(string-append
|
| 2805 | "-j" (number->string (parallel-job-count)))
|
| 2806 | "platform=server"
|
| 2807 | ,@(delete "platform=x11" scons-flags)))))
|
| 2808 | (replace 'install
|
| 2809 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 2810 | (let* ((out (assoc-ref outputs "out"))
|
| 2811 | (headless (assoc-ref outputs "headless"))
|
| 2812 | (zenity (assoc-ref inputs "zenity")))
|
| 2813 | |
| 2814 | (with-directory-excursion "bin"
|
| 2815 | (for-each
|
| 2816 | (lambda (file)
|
| 2817 | (let ((dest (car (string-split (basename file) #\.))))
|
| 2818 | (rename-file file dest)))
|
| 2819 | (find-files "." "godot.*\\.x11\\.opt\\.tools.*"))
|
| 2820 | (install-file "godot" (string-append out "/bin"))
|
| 2821 | (install-file "godot_server"
|
| 2822 | (string-append headless "/bin")))
|
| 2823 | |
| 2824 | (wrap-program (string-append out "/bin/godot")
|
| 2825 | `("PATH" ":" prefix (,(string-append zenity "/bin")))))))
|
| 2826 | (add-after 'install 'wrap-ld-path
|
| 2827 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 2828 | (let* ((out (assoc-ref outputs "out"))
|
| 2829 | (pulseaudio_path (string-append
|
| 2830 | (assoc-ref inputs "pulseaudio") "/lib"))
|
| 2831 | (alas_lib_path (string-append
|
| 2832 | (assoc-ref inputs "alsa-lib") "/lib")))
|
| 2833 | (wrap-program (string-append out "/bin/godot")
|
| 2834 | `("LD_LIBRARY_PATH" ":" prefix
|
| 2835 | (,pulseaudio_path ,alas_lib_path))))))
|
| 2836 | (add-after 'install 'install-godot-desktop
|
| 2837 | (lambda* (#:key outputs #:allow-other-keys)
|
| 2838 | (let* ((out (assoc-ref outputs "out"))
|
| 2839 | (applications (string-append out "/share/applications"))
|
| 2840 | (icons (string-append out "/share/icons/hicolor")))
|
| 2841 | (mkdir-p applications)
|
| 2842 | (copy-file "misc/dist/linux/org.godotengine.Godot.desktop"
|
| 2843 | (string-append applications "/godot.desktop"))
|
| 2844 | (for-each (lambda (icon dest)
|
| 2845 | (mkdir-p (dirname dest))
|
| 2846 | (copy-file icon dest))
|
| 2847 | '("icon.png" "icon.svg")
|
| 2848 | `(,(string-append icons "/256x256/apps/godot.png")
|
| 2849 | ,(string-append icons
|
| 2850 | "/scalable/apps/godot.svg")))))))))
|
| 2851 | (outputs '("out" "headless"))
|
| 2852 | (native-inputs
|
| 2853 | (list pkg-config))
|
| 2854 | (inputs
|
| 2855 | (list alsa-lib
|
| 2856 | bash-minimal
|
| 2857 | bullet
|
| 2858 | freetype-with-brotli
|
| 2859 | glew
|
| 2860 | glu
|
| 2861 | libtheora
|
| 2862 | libvorbis
|
| 2863 | libvpx
|
| 2864 | libwebp
|
| 2865 | libx11
|
| 2866 | libxcursor
|
| 2867 | libxi
|
| 2868 | libxinerama
|
| 2869 | libxrandr
|
| 2870 | mbedtls-lts
|
| 2871 | mesa
|
| 2872 | opusfile
|
| 2873 | pcre2
|
| 2874 | pulseaudio
|
| 2875 | eudev
|
| 2876 | wslay
|
| 2877 | zenity
|
| 2878 | `(,zstd "lib")))
|
| 2879 | (home-page "https://godotengine.org/")
|
| 2880 | (synopsis "Advanced 2D and 3D game engine")
|
| 2881 | (description
|
| 2882 | "Godot is an advanced multi-platform game engine written in C++. If
|
| 2883 | features design tools such as a visual editor, can import 3D models and
|
| 2884 | provide high-quality 3D rendering, it contains an animation editor, and can be
|
| 2885 | scripted in a Python-like language.")
|
| 2886 | (license license:expat)))
|
| 2887 |
|
| 2888 | (define-public godot
|
| 2889 | (package
|
| 2890 | (name "godot")
|
| 2891 | (version "4.6")
|
| 2892 | (source (origin
|
| 2893 | (method git-fetch)
|
| 2894 | (uri (git-reference
|
| 2895 | (url "https://github.com/godotengine/godot")
|
| 2896 | (commit (string-append version "-stable"))))
|
| 2897 | (file-name (git-file-name name version))
|
| 2898 | (sha256
|
| 2899 | (base32
|
| 2900 | "1lwjydaa4cvnfrllxlryppcfmba3qq1518zi4qr5580n731xfg10"))
|
| 2901 | |
| 2902 | |
| 2903 | (patches (search-patches "godot-glslang.patch"))
|
| 2904 | (modules '((guix build utils)
|
| 2905 | (ice-9 ftw)
|
| 2906 | (srfi srfi-1)))
|
| 2907 | (snippet
|
| 2908 | '(begin
|
| 2909 | |
| 2910 | |
| 2911 | |
| 2912 | (with-directory-excursion "thirdparty"
|
| 2913 | (let* ((preserved-files
|
| 2914 | '("README.md"
|
| 2915 | "accesskit"
|
| 2916 | "amd-fsr"
|
| 2917 | "amd-fsr2"
|
| 2918 | "assimp"
|
| 2919 | "astcenc"
|
| 2920 | "basis_universal"
|
| 2921 | |
| 2922 | |
| 2923 | "certs"
|
| 2924 | "clipper2"
|
| 2925 | "cvtt"
|
| 2926 | "dr_libs"
|
| 2927 | "linuxbsd_headers"
|
| 2928 | "etc2comp"
|
| 2929 | "etcpak"
|
| 2930 | "fonts"
|
| 2931 | "glad"
|
| 2932 | |
| 2933 | |
| 2934 | "grisu2"
|
| 2935 | "jolt_physics"
|
| 2936 | "jpeg-compressor"
|
| 2937 | "libktx"
|
| 2938 | "libsimplewebm"
|
| 2939 | "manifold"
|
| 2940 | "meshoptimizer"
|
| 2941 | "minimp3"
|
| 2942 | "miniupnpc"
|
| 2943 | "minizip"
|
| 2944 | "misc"
|
| 2945 | "msdfgen"
|
| 2946 | "nanosvg"
|
| 2947 | "noise"
|
| 2948 | "oidn"
|
| 2949 | "openxr"
|
| 2950 | "pvrtccompressor"
|
| 2951 | "re-spirv"
|
| 2952 | "recastnavigation"
|
| 2953 | "rvo2"
|
| 2954 | "smaa"
|
| 2955 | "spirv-reflect"
|
| 2956 | "squish"
|
| 2957 | "stb_rect_pack"
|
| 2958 | "thorvg"
|
| 2959 | "tinyexr"
|
| 2960 | "ufbx"
|
| 2961 | "vhacd"
|
| 2962 | |
| 2963 | "vulkan"
|
| 2964 | "xatlas")))
|
| 2965 | (for-each delete-file-recursively
|
| 2966 | (lset-difference string=?
|
| 2967 | (scandir ".")
|
| 2968 | (cons* "." ".." preserved-files)))))))))
|
| 2969 | (build-system scons-build-system)
|
| 2970 | (arguments
|
| 2971 | (list
|
| 2972 | #:scons-flags #~`("platform=linuxbsd" "target=editor" "production=yes"
|
| 2973 | |
| 2974 | |
| 2975 | "builtin_brotli=no"
|
| 2976 | "builtin_embree=no"
|
| 2977 | "builtin_enet=no"
|
| 2978 | "builtin_freetype=no"
|
| 2979 | "builtin_glslang=no"
|
| 2980 | "builtin_graphite=no"
|
| 2981 | "builtin_harfbuzz=no"
|
| 2982 | "builtin_icu4c=no"
|
| 2983 | "builtin_libjpeg_turbo=no"
|
| 2984 | "builtin_libogg=no"
|
| 2985 | "builtin_libpng=no"
|
| 2986 | "builtin_libtheora=no"
|
| 2987 | "builtin_libvorbis=no"
|
| 2988 | "builtin_libwebp=no"
|
| 2989 | "builtin_mbedtls=no"
|
| 2990 | "builtin_pcre2=no"
|
| 2991 | "builtin_pcre2_with_jit=no"
|
| 2992 | "builtin_sdl=no"
|
| 2993 | "builtin_wslay=no"
|
| 2994 | "builtin_zlib=no"
|
| 2995 | "builtin_zstd=no")
|
| 2996 | #:tests? #f |
| 2997 | #:phases
|
| 2998 | #~(modify-phases %standard-phases
|
| 2999 | (add-after 'unpack 'scons-use-env
|
| 3000 | (lambda _
|
| 3001 | |
| 3002 | |
| 3003 | (substitute* "SConstruct"
|
| 3004 | (("env = Environment\\(tools=\\[\\]\\)")
|
| 3005 | (string-append
|
| 3006 | "env = Environment(tools=[])\n"
|
| 3007 | "env = Environment(ENV=os.environ)")))))
|
| 3008 | (add-after 'scons-use-env 'fix-dlopen-paths
|
| 3009 | (lambda* (#:key inputs #:allow-other-keys)
|
| 3010 | (let ((files '("drivers/alsa/asound-so_wrap.c"
|
| 3011 | "drivers/pulseaudio/pulse-so_wrap.c"
|
| 3012 | "platform/linuxbsd/dbus-so_wrap.c"
|
| 3013 | "platform/linuxbsd/fontconfig-so_wrap.c"
|
| 3014 | "platform/linuxbsd/speechd-so_wrap.c"
|
| 3015 | "platform/linuxbsd/wayland/dynwrappers/libdecor-so_wrap.c"
|
| 3016 | "platform/linuxbsd/wayland/dynwrappers/wayland-client-core-so_wrap.c"
|
| 3017 | "platform/linuxbsd/wayland/dynwrappers/wayland-cursor-so_wrap.c"
|
| 3018 | "platform/linuxbsd/wayland/dynwrappers/wayland-egl-core-so_wrap.c"
|
| 3019 | "platform/linuxbsd/x11/display_server_x11.cpp"
|
| 3020 | "platform/linuxbsd/x11/dynwrappers/xcursor-so_wrap.c"
|
| 3021 | "platform/linuxbsd/x11/dynwrappers/xext-so_wrap.c"
|
| 3022 | "platform/linuxbsd/x11/dynwrappers/xinerama-so_wrap.c"
|
| 3023 | "platform/linuxbsd/x11/dynwrappers/xinput2-so_wrap.c"
|
| 3024 | "platform/linuxbsd/x11/dynwrappers/xlib-so_wrap.c"
|
| 3025 | "platform/linuxbsd/x11/dynwrappers/xrandr-so_wrap.c"
|
| 3026 | "platform/linuxbsd/x11/dynwrappers/xrender-so_wrap.c"
|
| 3027 | "platform/linuxbsd/xkbcommon-so_wrap.c"))
|
| 3028 | (libs '("libasound.so.2"
|
| 3029 | "libpulse.so.0"
|
| 3030 | "libdbus-1.so.3"
|
| 3031 | "libfontconfig.so.1"
|
| 3032 | "libspeechd.so.2"
|
| 3033 | "libdecor-0.so.0"
|
| 3034 | "libwayland-client.so.0"
|
| 3035 | "libwayland-cursor.so.0"
|
| 3036 | "libwayland-egl.so.1"
|
| 3037 | "libXrandr.so.2"
|
| 3038 | "libXcursor.so.1"
|
| 3039 | "libXext.so.6"
|
| 3040 | "libXinerama.so.1"
|
| 3041 | "libXi.so.6"
|
| 3042 | "libX11.so.6"
|
| 3043 | "libXrandr.so.2"
|
| 3044 | "libXrender.so.1"
|
| 3045 | "libxkbcommon.so.0")))
|
| 3046 | (for-each (lambda (file lib)
|
| 3047 | (substitute* file
|
| 3048 | (((string-append "dlopen\\(\"" lib "\""))
|
| 3049 | (string-append "dlopen(\""
|
| 3050 | (search-input-file
|
| 3051 | inputs (string-append "lib/" lib))
|
| 3052 | "\""))))
|
| 3053 | files libs))
|
| 3054 | (substitute* "thirdparty/glad/gl.c"
|
| 3055 | (("libGL.so") |
| 3056 | (string-append (search-input-file inputs "lib/libGL.so"))))
|
| 3057 | (substitute* "thirdparty/glad/glx.c"
|
| 3058 | (("libGL.so") |
| 3059 | (string-append (search-input-file inputs "lib/libGL.so"))))))
|
| 3060 | (add-after 'fix-dlopen-paths 'unbundle-xkbcommon
|
| 3061 | (lambda* (#:key inputs #:allow-other-keys)
|
| 3062 | (substitute* "platform/linuxbsd/xkbcommon-so_wrap.c"
|
| 3063 | (("./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h")
|
| 3064 | (string-append
|
| 3065 | (search-input-file inputs "include/xkbcommon/xkbcommon.h")))
|
| 3066 | (("./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-compose.h")
|
| 3067 | (string-append
|
| 3068 | (search-input-file inputs "include/xkbcommon/xkbcommon-compose.h")))
|
| 3069 | (("./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-keysyms.h")
|
| 3070 | (string-append
|
| 3071 | (search-input-file inputs "include/xkbcommon/xkbcommon-keysyms.h"))))))
|
| 3072 | (add-after 'unbundle-xkbcommon 'unpack-mesa
|
| 3073 | (lambda _
|
| 3074 | (mkdir "mesa-src")
|
| 3075 | (invoke "tar" "--strip-components=1" "-C"
|
| 3076 | "mesa-src" "-xf" #$(package-source mesa))))
|
| 3077 | (add-after 'unpack-mesa 'unbundle-wayland
|
| 3078 | (lambda* (#:key inputs #:allow-other-keys)
|
| 3079 | (substitute* "platform/linuxbsd/wayland/SCsub"
|
| 3080 | |
| 3081 | |
| 3082 | |
| 3083 | (("#thirdparty/wayland/protocol/wayland.xml")
|
| 3084 | (search-input-file inputs "share/wayland/wayland.xml"))
|
| 3085 | |
| 3086 | (("#thirdparty/wayland-protocols/mesa/wayland-drm.xml")
|
| 3087 | "../../../mesa-src/src/egl/wayland/wayland-drm/wayland-drm.xml")
|
| 3088 | (("#thirdparty/wayland-protocols")
|
| 3089 | (string-append
|
| 3090 | #$(this-package-input "wayland-protocols") "/share/wayland-protocols"))
|
| 3091 | (("#thirdparty/wayland")
|
| 3092 | (string-append
|
| 3093 | #$(this-package-input "wayland") "/share/wayland")))))
|
| 3094 | (add-after 'unbundle-wayland 'unbundle-volk
|
| 3095 | (lambda _
|
| 3096 | (let ((volk-dir "thirdparty/volk"))
|
| 3097 | (mkdir-p volk-dir)
|
| 3098 | (copy-recursively (string-append #$(this-package-input "vulkan-volk")
|
| 3099 | "/include")
|
| 3100 | volk-dir))))
|
| 3101 | (add-after 'unbundle-volk 'use-system-spirv
|
| 3102 | (lambda _
|
| 3103 | (substitute* "thirdparty/spirv-reflect/spirv_reflect.h"
|
| 3104 | (("#if defined\\(SPIRV_REFLECT_USE_SYSTEM_SPIRV_H\\)")
|
| 3105 | "#if 1"))))
|
| 3106 | (replace 'install
|
| 3107 | (lambda* (#:key inputs #:allow-other-keys)
|
| 3108 | (let ((zenity (search-input-file inputs "bin/zenity")))
|
| 3109 | |
| 3110 | (with-directory-excursion "bin"
|
| 3111 | (for-each
|
| 3112 | (lambda (file)
|
| 3113 | (let ((dest (car (string-split (basename file) #\.))))
|
| 3114 | (rename-file file dest)))
|
| 3115 | (find-files "." "godot.*\\.linuxbsd\\.editor.*"))
|
| 3116 | (install-file "godot" (string-append #$output "/bin")))
|
| 3117 | |
| 3118 | |
| 3119 | |
| 3120 | |
| 3121 | (wrap-program (string-append #$output "/bin/godot")
|
| 3122 | `("PATH" ":" prefix (,(string-append zenity "/bin")))))))
|
| 3123 | (add-after 'install 'install-godot-desktop
|
| 3124 | (lambda _
|
| 3125 | (let ((applications (string-append #$output "/share/applications"))
|
| 3126 | (icons (string-append #$output "/share/icons/hicolor")))
|
| 3127 | (mkdir-p applications)
|
| 3128 | (copy-file "misc/dist/linux/org.godotengine.Godot.desktop"
|
| 3129 | (string-append applications "/godot.desktop"))
|
| 3130 | (for-each (lambda (icon dest)
|
| 3131 | (mkdir-p (dirname dest))
|
| 3132 | (copy-file icon dest))
|
| 3133 | '("icon.png" "icon.svg")
|
| 3134 | `(,(string-append icons "/256x256/apps/godot.png")
|
| 3135 | ,(string-append icons "/scalable/apps/godot.svg")))))))))
|
| 3136 | (native-inputs
|
| 3137 | (list pkg-config))
|
| 3138 | (inputs
|
| 3139 | (list alsa-lib
|
| 3140 | bash-minimal
|
| 3141 | brotli
|
| 3142 | dbus
|
| 3143 | embree
|
| 3144 | enet
|
| 3145 | eudev
|
| 3146 | fontconfig
|
| 3147 | freetype-with-brotli
|
| 3148 | glew
|
| 3149 | glslang
|
| 3150 | glu
|
| 3151 | libpng
|
| 3152 | harfbuzz
|
| 3153 | icu4c
|
| 3154 | libdecor
|
| 3155 | libjpeg-turbo-3
|
| 3156 | libtheora
|
| 3157 | libvorbis
|
| 3158 | libvpx
|
| 3159 | libwebp
|
| 3160 | libx11
|
| 3161 | libxcursor
|
| 3162 | libxi
|
| 3163 | libxinerama
|
| 3164 | libxkbcommon
|
| 3165 | libxrandr
|
| 3166 | mbedtls-lts
|
| 3167 | mesa
|
| 3168 | openxr
|
| 3169 | opusfile
|
| 3170 | pcre2
|
| 3171 | pulseaudio
|
| 3172 | sdl3
|
| 3173 | speech-dispatcher
|
| 3174 | spirv-headers
|
| 3175 | vulkan-volk
|
| 3176 | wayland
|
| 3177 | wayland-protocols
|
| 3178 | wslay
|
| 3179 | zenity
|
| 3180 | zlib
|
| 3181 | `(,zstd-1.5.7 "lib")))
|
| 3182 | (home-page "https://godotengine.org/")
|
| 3183 | (synopsis "Advanced 2D and 3D game engine")
|
| 3184 | (description
|
| 3185 | "Godot is an advanced multi-platform game engine written in C++. If
|
| 3186 | features design tools such as a visual editor, can import 3D models and
|
| 3187 | provide high-quality 3D rendering, it contains an animation editor, and can be
|
| 3188 | scripted in a Python-like language.")
|
| 3189 | (license license:expat)))
|
| 3190 |
|
| 3191 | (define-public entt
|
| 3192 | (package
|
| 3193 | (name "entt")
|
| 3194 | (version "3.7.1")
|
| 3195 | (source (origin
|
| 3196 | (method git-fetch)
|
| 3197 | (uri (git-reference
|
| 3198 | (url "https://github.com/skypjack/entt")
|
| 3199 | (commit (string-append "v" version))))
|
| 3200 | (file-name (git-file-name name version))
|
| 3201 | (sha256
|
| 3202 | (base32
|
| 3203 | "151jg3m262xwaywl2rqnc90yr6p48rhmgi5mxyv6bwqvmfli2m5p"))))
|
| 3204 | (build-system cmake-build-system)
|
| 3205 | (arguments
|
| 3206 | `(#:configure-flags (list "-DENTT_BUILD_TESTING=ON"
|
| 3207 | "-DENTT_FIND_GTEST_PACKAGE=ON"
|
| 3208 | "-DENTT_BUILD_DOCS=ON")
|
| 3209 | |
| 3210 | #:build-type "Debug"))
|
| 3211 | (native-inputs
|
| 3212 | (list |
| 3213 | googletest
|
| 3214 | |
| 3215 | doxygen graphviz))
|
| 3216 | (synopsis "Entity component system")
|
| 3217 | (description "EnTT is a header-only library, containing (among other things)
|
| 3218 | @itemize
|
| 3219 | @item an entity component system based on sparse sets,
|
| 3220 | @item a configuration system using the monostate pattern,
|
| 3221 | @item a static reflection system,
|
| 3222 | @item and a cooperative scheduler.
|
| 3223 | @end itemize")
|
| 3224 | (home-page "https://github.com/skypjack/entt")
|
| 3225 | (license (list license:expat |
| 3226 | license:cc-by4.0)))) |
| 3227 |
|
| 3228 | (define-public ericw-tools
|
| 3229 | (package
|
| 3230 | (name "ericw-tools")
|
| 3231 | (version "0.18.2-rc1")
|
| 3232 | (source
|
| 3233 | (origin
|
| 3234 | (method git-fetch)
|
| 3235 | (uri (git-reference (url "https://github.com/ericwa/ericw-tools")
|
| 3236 | (commit (string-append "v" version))))
|
| 3237 | (file-name (git-file-name name version))
|
| 3238 | (sha256
|
| 3239 | (base32 "0903fn4a5mc4sdx8q36j57fp15f7z246h8jm78x9jfz7sx9xrc3m"))
|
| 3240 | (patches
|
| 3241 | (search-patches "ericw-tools-add-check-for-sse2-in-light.cc.patch"
|
| 3242 | "ericw-tools-gcc-11-pass-const-to-offsetof.patch"))))
|
| 3243 | (build-system cmake-build-system)
|
| 3244 | (arguments
|
| 3245 | (list #:configure-flags #~(list "-DENABLE_LIGHTPREVIEW=OFF")
|
| 3246 | #:phases
|
| 3247 | #~(modify-phases %standard-phases
|
| 3248 | (add-after 'unpack 'disable-copying-embree-files
|
| 3249 | (lambda _
|
| 3250 | |
| 3251 | (substitute* "light/CMakeLists.txt"
|
| 3252 | (("install\\\(FILES \\$\\{EMBREE")
|
| 3253 | "#install(FILES ${EMBREE"))))
|
| 3254 | (add-after 'install 'rename-binaries
|
| 3255 | (lambda _
|
| 3256 | |
| 3257 | |
| 3258 | (rename-file (string-append #$output "/bin/bspinfo")
|
| 3259 | (string-append #$output "/bin/qbspinfo"))
|
| 3260 | (rename-file (string-append #$output "/bin/bsputil")
|
| 3261 | (string-append #$output "/bin/qbsputil"))
|
| 3262 | (rename-file (string-append #$output "/bin/light")
|
| 3263 | (string-append #$output "/bin/qlight"))
|
| 3264 | (rename-file (string-append #$output "/bin/vis")
|
| 3265 | (string-append #$output "/bin/qvis"))))
|
| 3266 | (add-after 'install-license-files 'clean-up-bin-directory
|
| 3267 | (lambda _
|
| 3268 | |
| 3269 | |
| 3270 | (delete-file (string-append #$output "/bin/gpl_v3.txt"))
|
| 3271 | (rename-file
|
| 3272 | (string-append #$output "/bin/changelog.txt")
|
| 3273 | (string-append #$output "/share/doc/"
|
| 3274 | #$(package-name this-package) "-"
|
| 3275 | #$(package-version this-package)
|
| 3276 | "/changelog.txt"))
|
| 3277 | (rename-file
|
| 3278 | (string-append #$output "/bin/README.md")
|
| 3279 | (string-append #$output "/share/doc/"
|
| 3280 | #$(package-name this-package) "-"
|
| 3281 | #$(package-version this-package)
|
| 3282 | "/README.md")))))
|
| 3283 | #:tests? #f)) |
| 3284 | (inputs (list embree))
|
| 3285 | (home-page "https://ericwa.github.io/ericw-tools/")
|
| 3286 | (synopsis "Map compiling tools for Quake/Hexen 2")
|
| 3287 | (description
|
| 3288 | "This package provides a collection of command line utilities used for
|
| 3289 | building Quake maps as well as working with various Quake file formats. The
|
| 3290 | utilities include @command{qbsp} for building the geometry, @command{qvis} for
|
| 3291 | calculating visibility, @command{qlight} for lighting, @command{bspinfo} for
|
| 3292 | getting information, and @command{bsputil} for basic editing of data in a map
|
| 3293 | file.")
|
| 3294 | (license license:gpl2+)))
|
| 3295 |
|
| 3296 | (define-public eureka
|
| 3297 | (package
|
| 3298 | (name "eureka")
|
| 3299 | (version "1.24")
|
| 3300 | (source (origin
|
| 3301 | (method url-fetch)
|
| 3302 | (uri (string-append "mirror://sourceforge/eureka-editor/Eureka/"
|
| 3303 | version "/eureka-"
|
| 3304 | |
| 3305 | (string-join (string-split version #\.) "")
|
| 3306 | "-source.tar.gz"))
|
| 3307 | (sha256
|
| 3308 | (base32
|
| 3309 | "1x4idjniz9sma3j9ss6ni7fafmz22zs2jnpsqw4my9rsnmra5d9v"))))
|
| 3310 | (build-system gnu-build-system)
|
| 3311 | (arguments
|
| 3312 | '(#:tests? #f
|
| 3313 | #:make-flags
|
| 3314 | (let ((out (assoc-ref %outputs "out")))
|
| 3315 | (list (string-append "PREFIX=" out)))
|
| 3316 | #:phases
|
| 3317 | (modify-phases %standard-phases
|
| 3318 | (delete 'configure)
|
| 3319 | (add-before 'build 'prepare-install-directories
|
| 3320 | (lambda* (#:key outputs #:allow-other-keys)
|
| 3321 | (let ((out (assoc-ref outputs "out")))
|
| 3322 | (mkdir-p (string-append out "/bin"))
|
| 3323 | (mkdir-p (string-append out "/share"))
|
| 3324 |
|
| 3325 | (with-fluids ((%default-port-encoding #f))
|
| 3326 | (substitute* "./src/main.cc"
|
| 3327 | (("/usr/local") out)))
|
| 3328 |
|
| 3329 | (substitute* "Makefile"
|
| 3330 | (("-o root") ""))))))))
|
| 3331 | (inputs `(("mesa" ,mesa)
|
| 3332 | ("libxft" ,libxft)
|
| 3333 | ("libxinerama" ,libxinerama)
|
| 3334 | ("libfontconfig" ,fontconfig)
|
| 3335 | ("libjpeg" ,libjpeg-turbo)
|
| 3336 | ("libpng" ,libpng)
|
| 3337 | ("fltk" ,fltk-1.3)
|
| 3338 | ("zlib" ,zlib)))
|
| 3339 | (native-inputs (list pkg-config xdg-utils))
|
| 3340 | (synopsis "Doom map editor")
|
| 3341 | (description "Eureka is a map editor for the classic DOOM games, and a few
|
| 3342 | related games such as Heretic and Hexen. It comes with a 3d preview mode and
|
| 3343 | a 2D editor view.")
|
| 3344 | (home-page "https://eureka-editor.sourceforge.net/")
|
| 3345 | (license license:gpl2+)))
|
| 3346 |
|
| 3347 | (define-public guile-chickadee
|
| 3348 | (package
|
| 3349 | (name "guile-chickadee")
|
| 3350 | (version "0.10.0")
|
| 3351 | (source (origin
|
| 3352 | (method url-fetch)
|
| 3353 | (uri (string-append "https://files.dthompson.us/chickadee/"
|
| 3354 | "chickadee-" version ".tar.gz"))
|
| 3355 | (sha256
|
| 3356 | (base32
|
| 3357 | "0x8g0bsvir2z3876ynslfgnmfr5p92ic4666v73526lswnv56bqk"))))
|
| 3358 | (build-system gnu-build-system)
|
| 3359 | (arguments
|
| 3360 | '(#:make-flags '("GUILE_AUTO_COMPILE=0")))
|
| 3361 | (propagated-inputs
|
| 3362 | `(("guile-opengl" ,guile3.0-opengl)
|
| 3363 | ("guile-sdl2" ,guile-sdl2)))
|
| 3364 | (inputs
|
| 3365 | (list freetype
|
| 3366 | guile-3.0-latest
|
| 3367 | libjpeg-turbo
|
| 3368 | libmpg123
|
| 3369 | libpng
|
| 3370 | libvorbis
|
| 3371 | openal
|
| 3372 | readline))
|
| 3373 | (native-inputs
|
| 3374 | (list guile-3.0-latest pkg-config texinfo))
|
| 3375 | (home-page "https://dthompson.us/projects/chickadee.html")
|
| 3376 | (synopsis "Game development toolkit for Guile Scheme with SDL2 and OpenGL")
|
| 3377 | (description "Chickadee is a game development toolkit for Guile Scheme
|
| 3378 | built on top of SDL2 and OpenGL. Chickadee aims to provide all the features
|
| 3379 | that parenthetically inclined game developers need to make 2D (and eventually
|
| 3380 | 3D) games in Scheme, such as:
|
| 3381 |
|
| 3382 | @enumerate
|
| 3383 | @item extensible, fixed-timestep game loop
|
| 3384 | @item OpenGL-based rendering engine
|
| 3385 | @item keyboard, mouse, controller input
|
| 3386 | @item REPL-driven development model
|
| 3387 | @end enumerate\n")
|
| 3388 | (license license:asl2.0)))
|
| 3389 |
|
| 3390 | (define-public bennu-game-development
|
| 3391 | (package
|
| 3392 | (name "bennu-game-development")
|
| 3393 | (version "353")
|
| 3394 | (source (origin
|
| 3395 | (method svn-fetch)
|
| 3396 | (uri (svn-reference
|
| 3397 | (url "http://svn.code.sf.net/p/bennugd/code")
|
| 3398 | (revision (string->number version))))
|
| 3399 | (file-name (string-append name "-" version))
|
| 3400 | (sha256
|
| 3401 | (base32
|
| 3402 | "1iri58ryk9lbqn585cbccnvrfkj8qxlbcsk8rpih40jhvs1j101l"))
|
| 3403 | (modules '((guix build utils)))
|
| 3404 | (snippet
|
| 3405 | '(begin
|
| 3406 | (delete-file-recursively "3rdparty") #t))))
|
| 3407 | (build-system gnu-build-system)
|
| 3408 | (arguments
|
| 3409 | '(#:phases
|
| 3410 | (modify-phases %standard-phases
|
| 3411 | (add-after 'unpack 'patch-configure-to-use-openssl
|
| 3412 | (lambda* (#:key outputs #:allow-other-keys)
|
| 3413 | (chdir "core")
|
| 3414 | (delete-file "configure")
|
| 3415 | (substitute* "configure.in"
|
| 3416 | (("i\\*86\\)")
|
| 3417 | "*)
|
| 3418 | COMMON_CFLAGS=\"$COMMON_CFLAGS -DUSE_OPENSSL\"
|
| 3419 | COMMON_LDFLAGS=\"$COMMON_LDFLAGS\"
|
| 3420 | LIBSSL=\"crypto\"
|
| 3421 | USE_OPENSSL=yes
|
| 3422 | ;;
|
| 3423 |
|
| 3424 | i*86)"))
|
| 3425 | #t)))))
|
| 3426 | (inputs (list openssl zlib))
|
| 3427 | (native-inputs (list pkg-config autoconf automake libtool))
|
| 3428 | (synopsis "Programming language to create games")
|
| 3429 | (description "Bennu Game Development, also known as bennudg, is a
|
| 3430 | programming language tailored at game development. It is the successor of
|
| 3431 | Fenix.")
|
| 3432 | (home-page "https://sourceforge.net/projects/bennugd/")
|
| 3433 | (license license:zlib)))
|
| 3434 |
|
| 3435 | (define-public bennu-game-development-modules
|
| 3436 | (package
|
| 3437 | (inherit bennu-game-development)
|
| 3438 | (name "bennu-game-development-modules")
|
| 3439 | (arguments
|
| 3440 | '(#:phases
|
| 3441 | (modify-phases %standard-phases
|
| 3442 | (add-after 'unpack 'patch-conflicting-definitions
|
| 3443 | (lambda _
|
| 3444 | (with-fluids ((%default-port-encoding #f))
|
| 3445 | (substitute* "core/include/fmath.h"
|
| 3446 | (("extern fixed fmul\\( int x, int y \\);") "")
|
| 3447 | (("extern fixed fdiv\\( int x, int y \\);") "")))
|
| 3448 | (chdir "modules"))))))
|
| 3449 | (inputs (list zlib libpng openssl sdl-mixer bennu-game-development))
|
| 3450 | (synopsis "Modules for the Bennu Game Development programming language")
|
| 3451 | (description "This package contains a collection of modules for the Bennu
|
| 3452 | Game Development programming language, from CD handling through SDL to
|
| 3453 | joystick support.")))
|
| 3454 |
|
| 3455 | (define-public plib
|
| 3456 | (package
|
| 3457 | (name "plib")
|
| 3458 | (version "1.8.5")
|
| 3459 | (source (origin
|
| 3460 | (method url-fetch)
|
| 3461 | (uri (string-append "http://plib.sourceforge.net/dist/"
|
| 3462 | "plib-" version ".tar.gz"))
|
| 3463 | (sha256
|
| 3464 | (base32
|
| 3465 | "0cha71mflpa10vh2l7ipyqk67dq2y0k5xbafwdks03fwdyzj4ns8"))
|
| 3466 | (patches (search-patches "plib-CVE-2011-4620.patch"
|
| 3467 | "plib-CVE-2012-4552.patch"))))
|
| 3468 | (build-system gnu-build-system)
|
| 3469 | |
| 3470 | |
| 3471 | |
| 3472 | (arguments (list #:configure-flags #~(list "CXXFLAGS=-fPIC")))
|
| 3473 | (native-inputs (list autoconf automake pkg-config))
|
| 3474 | (inputs (list mesa libxi libxmu))
|
| 3475 | (home-page "https://plib.sourceforge.net/")
|
| 3476 | (synopsis "Suite of portable game libraries")
|
| 3477 | (description "PLIB is a set of libraries that will permit programmers to
|
| 3478 | write games and other realtime interactive applications that are 100% portable
|
| 3479 | across a wide range of hardware and operating systems. PLIB includes sound
|
| 3480 | effects, music, a complete 3D engine, font rendering, a simple Windowing
|
| 3481 | library, a game scripting language, a GUI, networking, 3D math library and a
|
| 3482 | collection of handy utility functions. All are 100% portable across nearly
|
| 3483 | all modern computing platforms. Each library component is fairly independent
|
| 3484 | of the others")
|
| 3485 | (license license:lgpl2.0+)))
|
| 3486 |
|
| 3487 | (define-public ioquake3
|
| 3488 | |
| 3489 | (let ((revision "3")
|
| 3490 | (commit "ab18167a09415e9e9f4859c197bad72ec39807d5"))
|
| 3491 | (package
|
| 3492 | (name "ioquake3")
|
| 3493 | (version (git-version "1.3.6" revision commit))
|
| 3494 | (source
|
| 3495 | (origin
|
| 3496 | (method git-fetch)
|
| 3497 | (uri (git-reference
|
| 3498 | (url "https://github.com/ioquake/ioq3")
|
| 3499 | (commit commit)))
|
| 3500 | (file-name (git-file-name name version))
|
| 3501 | (sha256
|
| 3502 | (base32 "01s15lfxsd6nd4jvan1gabbidd2v1y29zgwymszwlhrzkm367n08"))))
|
| 3503 | (build-system gnu-build-system)
|
| 3504 | (inputs
|
| 3505 | (list curl
|
| 3506 | freetype
|
| 3507 | libjpeg-turbo
|
| 3508 | libogg
|
| 3509 | libvorbis
|
| 3510 | openal
|
| 3511 | opus
|
| 3512 | opusfile
|
| 3513 | sdl2))
|
| 3514 | (native-inputs
|
| 3515 | (list which |
| 3516 | pkg-config))
|
| 3517 | (arguments
|
| 3518 | (list
|
| 3519 | #:tests? #f |
| 3520 | #:make-flags
|
| 3521 | #~(list (string-append "CC=" #$(cc-for-target))
|
| 3522 | "USE_INTERNAL_LIBS=0"
|
| 3523 | "USE_FREETYPE=1"
|
| 3524 | "USE_RENDERER_DLOPEN=0"
|
| 3525 | "USE_OPENAL_DLOPEN=0"
|
| 3526 | "USE_CURL_DLOPEN=0")
|
| 3527 | #:phases
|
| 3528 | #~(modify-phases %standard-phases
|
| 3529 | (delete 'configure) |
| 3530 | (replace 'install
|
| 3531 | (lambda* (#:key make-flags outputs #:allow-other-keys)
|
| 3532 | (apply invoke "make" "copyfiles"
|
| 3533 | (string-append "COPYDIR="
|
| 3534 | (assoc-ref outputs "out")
|
| 3535 | "/bin")
|
| 3536 | make-flags))))))
|
| 3537 | (home-page "https://ioquake3.org/")
|
| 3538 | (synopsis "FPS game engine based on Quake 3")
|
| 3539 | (description "ioquake3 is a free software first person shooter engine
|
| 3540 | based on the Quake 3: Arena and Quake 3: Team Arena source code. Compared to
|
| 3541 | the original, ioquake3 has been cleaned up, bugs have been fixed and features
|
| 3542 | added. The permanent goal is to create a Quake 3 distribution upon which
|
| 3543 | people base their games, ports to new platforms, and other projects.")
|
| 3544 | (license license:gpl2))))
|
| 3545 |
|
| 3546 | (define-public img2tim
|
| 3547 | |
| 3548 | (let ((commit "ca244c3de142e6a07cb973299f780c4586d9fef9")
|
| 3549 | (revision "0"))
|
| 3550 | (package
|
| 3551 | (name "img2tim")
|
| 3552 | (version (git-version "0.75" revision commit))
|
| 3553 | (source
|
| 3554 | (origin
|
| 3555 | (method git-fetch)
|
| 3556 | (uri (git-reference
|
| 3557 | (url "https://github.com/Lameguy64/img2tim")
|
| 3558 | (commit commit)))
|
| 3559 | (file-name (git-file-name name version))
|
| 3560 | (sha256
|
| 3561 | (base32 "1i0vhk5kipk0mdd24jd05k1a8z9x6iqx0gx81khdgh2blbzngclb"))))
|
| 3562 | (build-system gnu-build-system)
|
| 3563 | (arguments
|
| 3564 | (list
|
| 3565 | #:tests? #f |
| 3566 | #:phases
|
| 3567 | #~(modify-phases %standard-phases
|
| 3568 | (delete 'configure)
|
| 3569 | (replace 'build
|
| 3570 | (lambda _
|
| 3571 | (invoke "g++" "-O2"
|
| 3572 | "main.cpp" "tim.cpp"
|
| 3573 | "-o" "img2tim" "-lfreeimage")))
|
| 3574 | (replace 'install
|
| 3575 | (lambda _
|
| 3576 | (install-file "img2tim" (string-append #$output "/bin"))
|
| 3577 | (install-file "img2tim.txt"
|
| 3578 | (string-append #$output "/share/doc/img2tim")))))))
|
| 3579 | (inputs (list freeimage))
|
| 3580 | (home-page "https://github.com/Lameguy64/img2tim")
|
| 3581 | (synopsis "Convert images to PlayStation TIM textures")
|
| 3582 | (description
|
| 3583 | "@command{img2tim} converts image files into PlayStation TIM textures.
|
| 3584 | It uses FreeImage to read common formats such as PNG, BMP and JPEG, and can
|
| 3585 | output 4-bit, 8-bit or 16-bit textures, with optional colour-key or alpha
|
| 3586 | transparency. The image and its @acronym{CLUT, Colour Lookup Table} can be
|
| 3587 | placed at a chosen VRAM position.")
|
| 3588 | (license license:gpl3))))
|
| 3589 |
|
| 3590 | (define-public inform
|
| 3591 | (package
|
| 3592 | (name "inform")
|
| 3593 | (version "6.42")
|
| 3594 | (source
|
| 3595 | (origin
|
| 3596 | (method git-fetch)
|
| 3597 | (uri (git-reference
|
| 3598 | (url "https://jxself.org/git/inform.git")
|
| 3599 | (commit (string-append "v" version))))
|
| 3600 | (file-name (git-file-name name version))
|
| 3601 | (sha256
|
| 3602 | (base32 "1gb7b8y4qq9n3r4giqr4shzn3xli6aiaax7k4lzlgic7w1x3zjfl"))))
|
| 3603 | (build-system gnu-build-system)
|
| 3604 | (native-inputs (list autoconf automake))
|
| 3605 | (synopsis "The Inform 6 compiler")
|
| 3606 | (description
|
| 3607 | "Inform 6 is a programming language designed for interactive fiction.
|
| 3608 | This version of the compiler has been modified slightly to work better when the
|
| 3609 | Inform standard library is in a non-standard location.")
|
| 3610 | (home-page "https://jxself.org/git/inform.git")
|
| 3611 | (license license:gpl3+)))
|
| 3612 |
|
| 3613 | (define-public informlib
|
| 3614 | (package
|
| 3615 | (name "informlib")
|
| 3616 | (version "6.12.6")
|
| 3617 | (source
|
| 3618 | (origin
|
| 3619 | (method git-fetch)
|
| 3620 | (uri (git-reference
|
| 3621 | (url "https://jxself.org/git/informlib.git")
|
| 3622 | (commit (string-append "v" version))))
|
| 3623 | (file-name (git-file-name name version))
|
| 3624 | (sha256
|
| 3625 | (base32 "0fcnw4jjzln402qk097n2s8y24vw1p3mmlmh6k1mbr2zfajjcn5r"))))
|
| 3626 | (build-system copy-build-system)
|
| 3627 | (arguments
|
| 3628 | (list
|
| 3629 | #:install-plan
|
| 3630 | #~'(("." "lib"))))
|
| 3631 | (synopsis "Inform 6 standard library")
|
| 3632 | (description
|
| 3633 | "This package provides the standard library for Inform 6.")
|
| 3634 | (home-page "https://jxself.org/git/informlib.git")
|
| 3635 | (license license:agpl3+)))
|
| 3636 |
|
| 3637 | (define-public instead
|
| 3638 | (package
|
| 3639 | (name "instead")
|
| 3640 | (version "3.3.5")
|
| 3641 | (build-system cmake-build-system)
|
| 3642 | (source
|
| 3643 | (origin
|
| 3644 | (method git-fetch)
|
| 3645 | (uri (git-reference
|
| 3646 | (url "https://github.com/instead-hub/instead")
|
| 3647 | (commit version)))
|
| 3648 | (file-name (git-file-name name version))
|
| 3649 | (sha256
|
| 3650 | (base32 "02j8cw623j51qmr4991i5hsbrzmnp0qfzds8m6nwwr15sjv3hv1g"))
|
| 3651 | (patches
|
| 3652 | (search-patches
|
| 3653 | "instead-use-games-path.patch"))
|
| 3654 | (modules '((guix build utils)))
|
| 3655 | (snippet
|
| 3656 | '(begin
|
| 3657 | (delete-file-recursively "src/zlib")))))
|
| 3658 | (arguments
|
| 3659 | '(#:configure-flags
|
| 3660 | (list (string-append
|
| 3661 | "-DLUA_INCLUDE_DIR="
|
| 3662 | (assoc-ref %build-inputs "luajit") "/include/luajit-2.1/")
|
| 3663 | "-DWITH_LUAJIT=1"
|
| 3664 | "-DWITH_GTK3=1")
|
| 3665 | #:tests? #f))
|
| 3666 | (inputs
|
| 3667 | `(("gtk+",gtk+)
|
| 3668 | ("lua" ,lua)
|
| 3669 | ("luajit" ,luajit)
|
| 3670 | ("pkg-config" ,pkg-config)
|
| 3671 | ("sdl2-images" ,sdl2-image)
|
| 3672 | ("sdl2-ttf" ,sdl2-ttf)
|
| 3673 | ("sdl2-mixer" ,sdl2-mixer)
|
| 3674 | ("zlib" ,zlib)))
|
| 3675 | (home-page "https://instead3.syscall.ru/")
|
| 3676 | (synopsis "Text adventure interpreter")
|
| 3677 | (description "The STEAD (Simple TExt ADventures) interpreter provides
|
| 3678 | functionality to play games that mix elements of visual novels, interactive
|
| 3679 | fiction and classic point-and-click adventures.")
|
| 3680 | (native-search-paths
|
| 3681 | (list (search-path-specification
|
| 3682 | (variable "INSTEAD_GAMES_PATH")
|
| 3683 | (separator #f) |
| 3684 | (files '("share/instead/games")))))
|
| 3685 | (license license:expat)))
|
| 3686 |
|
| 3687 | (define-public openvr
|
| 3688 | (package
|
| 3689 | (name "openvr")
|
| 3690 | (version "2.12.14")
|
| 3691 | (home-page "https://github.com/ValveSoftware/openvr/")
|
| 3692 | (source
|
| 3693 | (origin
|
| 3694 | (method git-fetch)
|
| 3695 | (uri (git-reference
|
| 3696 | (url home-page)
|
| 3697 | (commit (string-append "v" version))))
|
| 3698 | (file-name (git-file-name name version))
|
| 3699 | (sha256
|
| 3700 | (base32 "0i85awq7w669j0x091chma8rcx1zqwn1j4v0d42bcjcvhqa6iv0v"))))
|
| 3701 | (build-system cmake-build-system)
|
| 3702 | (arguments
|
| 3703 | |
| 3704 | '(#:tests? #f
|
| 3705 | #:configure-flags (list "-DBUILD_SHARED=1")))
|
| 3706 | (synopsis "Virtual reality software development kit")
|
| 3707 | (description "OpenVR is an API and runtime that allows access to VR
|
| 3708 | hardware from multiple vendors without requiring that applications have
|
| 3709 | specific knowledge of the hardware they are targeting.")
|
| 3710 | (license license:bsd-3)))
|
| 3711 |
|
| 3712 | (define-public flatzebra
|
| 3713 | (package
|
| 3714 | (name "flatzebra")
|
| 3715 | (version "0.2.0")
|
| 3716 | (source
|
| 3717 | (origin
|
| 3718 | (method url-fetch)
|
| 3719 | (uri (string-append "http://perso.b2b2c.ca/~sarrazip/dev/"
|
| 3720 | "flatzebra-" version ".tar.gz"))
|
| 3721 | (sha256
|
| 3722 | (base32 "1p1igi757m9a46v29mm7r40x61kdj7j66b9dbn53l5yfhnwa4w93"))))
|
| 3723 | (build-system gnu-build-system)
|
| 3724 | (native-inputs
|
| 3725 | (list pkg-config))
|
| 3726 | (inputs
|
| 3727 | (list sdl2 sdl2-gfx sdl2-image sdl2-mixer sdl2-ttf))
|
| 3728 | (home-page "http://perso.b2b2c.ca/~sarrazip/dev/burgerspace.html")
|
| 3729 | (synopsis "Generic game engine for 2D double-buffering animation")
|
| 3730 | (description
|
| 3731 | "Flatzebra is a simple, generic C++ game engine library supporting 2D
|
| 3732 | double-buffering.")
|
| 3733 | (license license:gpl2+)))
|
| 3734 |
|
| 3735 | (define-public freesolid
|
| 3736 | (package
|
| 3737 | (name "freesolid")
|
| 3738 | (version "2.1.2")
|
| 3739 | (source (origin
|
| 3740 | (method url-fetch)
|
| 3741 | (uri (string-append "mirror://sourceforge/" name "/FreeSOLID-"
|
| 3742 | version ".zip"))
|
| 3743 | (sha256
|
| 3744 | (base32
|
| 3745 | "0wxqiv1ba227kwxpgwf6in9ai1lcamhmp1ib1c1chq4xvnpwdvc9"))
|
| 3746 | (patches (search-patches "freesolid-autotools.patch"
|
| 3747 | "freesolid-pkgconfig.patch"
|
| 3748 | "freesolid-configure.patch"
|
| 3749 | "freesolid-automake.patch"))))
|
| 3750 | (build-system gnu-build-system)
|
| 3751 | (arguments (list #:phases #~(modify-phases %standard-phases
|
| 3752 | (add-after 'unpack 'force-reboostrap
|
| 3753 | (lambda _
|
| 3754 | (delete-file "bootstrap.sh")
|
| 3755 | (delete-file "configure"))))))
|
| 3756 | (native-inputs (list autoconf automake libtool unzip))
|
| 3757 | (home-page "https://sourceforge.net/projects/freesolid/")
|
| 3758 | (synopsis "3D collision detection C++ library")
|
| 3759 | (description "FreeSOLID is a library for collision detection of
|
| 3760 | three-dimensional objects undergoing rigid motion and deformation. FreeSOLID
|
| 3761 | is designed to be used in interactive 3D graphics applications.")
|
| 3762 | (license license:lgpl2.0+)))
|
| 3763 |
|
| 3764 | (define-public libccd
|
| 3765 | (package
|
| 3766 | (name "libccd")
|
| 3767 | (version "2.1")
|
| 3768 | (source
|
| 3769 | (origin
|
| 3770 | (method git-fetch)
|
| 3771 | (uri (git-reference
|
| 3772 | (url "https://github.com/danfis/libccd")
|
| 3773 | (commit (string-append "v" version))))
|
| 3774 | (file-name (git-file-name name version))
|
| 3775 | (sha256
|
| 3776 | (base32 "0sfmn5pd7k5kyhbxnd689xmsa5v843r7sska96dlysqpljd691jc"))))
|
| 3777 | (build-system cmake-build-system)
|
| 3778 | (arguments
|
| 3779 | `(#:configure-flags '("-DBUILD_DOCUMENTATION=ON"
|
| 3780 | "-DENABLE_DOUBLE_PRECISION=ON")))
|
| 3781 | (native-inputs
|
| 3782 | (list python-sphinx))
|
| 3783 | (home-page "https://github.com/danfis/libccd")
|
| 3784 | (synopsis "Library for collision detection between two convex shapes")
|
| 3785 | (description "@code{libccd} is library for a collision detection
|
| 3786 | between two convex shapes. @code{libccd} implements variation on
|
| 3787 | Gilbert–Johnson–Keerthi algorithm plus Expand Polytope Algorithm (EPA)
|
| 3788 | and also implements algorithm Minkowski Portal Refinement (MPR,
|
| 3789 | a.k.a. XenoCollide) as described in Game Programming Gems 7.")
|
| 3790 | (license license:expat)))
|
| 3791 |
|
| 3792 | (define-public ode
|
| 3793 | (package
|
| 3794 | (name "ode")
|
| 3795 | (version "0.16.6")
|
| 3796 | (source
|
| 3797 | (origin
|
| 3798 | (method url-fetch)
|
| 3799 | (uri (string-append "https://bitbucket.org/odedevs/ode/downloads/"
|
| 3800 | "ode-" version ".tar.gz"))
|
| 3801 | (sha256
|
| 3802 | (base32 "1s0k8nvwbq3b5b1kaynggv4gwshd71m75757hi3jhl16zz32h6n9"))
|
| 3803 | (modules '((guix build utils)))
|
| 3804 | (snippet
|
| 3805 | '(begin
|
| 3806 | (delete-file-recursively "libccd")))))
|
| 3807 | (build-system cmake-build-system)
|
| 3808 | (arguments
|
| 3809 | (list
|
| 3810 | |
| 3811 | #:tests? (not (or (target-x86-32?)
|
| 3812 | (%current-target-system)))
|
| 3813 | #:configure-flags #~(list "-DODE_WITH_LIBCCD_SYSTEM=ON")
|
| 3814 | #:phases
|
| 3815 | #~(modify-phases %standard-phases
|
| 3816 | (add-after 'unpack 'unbundle-libccd
|
| 3817 | (lambda _
|
| 3818 | (substitute* "CMakeLists.txt"
|
| 3819 | (("configure_file\\(libccd/.*") "")))))))
|
| 3820 | (inputs
|
| 3821 | (list glu libccd mesa))
|
| 3822 | (home-page "https://www.ode.org/")
|
| 3823 | (synopsis "High performance library for simulating rigid body dynamics")
|
| 3824 | (description "ODE is a high performance library for simulating
|
| 3825 | rigid body dynamics. It is fully featured, stable, mature and
|
| 3826 | platform independent with an easy to use C/C++ API. It has advanced
|
| 3827 | joint types and integrated collision detection with friction. ODE is
|
| 3828 | useful for simulating vehicles, objects in virtual reality
|
| 3829 | environments and virtual creatures. It is currently used in many
|
| 3830 | computer games, 3D authoring tools and simulation tools.")
|
| 3831 | |
| 3832 | (license (list license:lgpl2.1+ license:expat))))
|
| 3833 |
|
| 3834 | (define-public chipmunk
|
| 3835 | (let ((commit "d0239ef4599b3688a5a336373f7d0a68426414ba")
|
| 3836 | (revision "1"))
|
| 3837 | (package
|
| 3838 | (name "chipmunk")
|
| 3839 | (version (git-version "7.0.3" revision commit))
|
| 3840 | (source
|
| 3841 | (origin
|
| 3842 | (method git-fetch)
|
| 3843 | (uri (git-reference
|
| 3844 | (url "https://github.com/slembcke/Chipmunk2D")
|
| 3845 | (commit commit)))
|
| 3846 | (file-name (git-file-name name version))
|
| 3847 | (sha256
|
| 3848 | (base32 "1910rfnanhna99bhfiyny3ki7aip2i9p4jzmwsfcg16m9gip5fd6"))
|
| 3849 | (modules '((guix build utils)))))
|
| 3850 | (build-system cmake-build-system)
|
| 3851 | (arguments
|
| 3852 | (list #:tests? #f |
| 3853 | #:configure-flags
|
| 3854 | #~(list "-DBUILD_STATIC=OFF"
|
| 3855 | "-DBUILD_DEMOS=OFF")))
|
| 3856 | (inputs
|
| 3857 | (list freeglut libxmu libxrandr))
|
| 3858 | (home-page "https://chipmunk-physics.net/")
|
| 3859 | (synopsis "Fast and lightweight 2D game physics library")
|
| 3860 | (description "Chipmunk is a simple, lightweight, fast and portable 2D
|
| 3861 | rigid body physics library written in C.")
|
| 3862 | (license license:expat))))
|
| 3863 |
|
| 3864 | (define-public box2d
|
| 3865 | (package
|
| 3866 | (name "box2d")
|
| 3867 | (version "2.4.1")
|
| 3868 | (source
|
| 3869 | (origin
|
| 3870 | (method git-fetch)
|
| 3871 | (uri (git-reference
|
| 3872 | (url "https://github.com/erincatto/box2d")
|
| 3873 | (commit (string-append "v" version))))
|
| 3874 | (file-name (git-file-name name version))
|
| 3875 | (sha256
|
| 3876 | (base32 "1ja9cahf3z9zzrdaqcw44lpjmqf2ir2g4chwz0iwqwlkckwhpgvh"))
|
| 3877 | (modules '((guix build utils)))
|
| 3878 | (snippet
|
| 3879 | '(begin
|
| 3880 | |
| 3881 | (delete-file-recursively "extern")
|
| 3882 | |
| 3883 | (delete-file "unit-test/doctest.h")
|
| 3884 | (substitute* "unit-test/CMakeLists.txt"
|
| 3885 | (("doctest\\.h")
|
| 3886 | ""))
|
| 3887 | (substitute* (find-files "unit-test" "\\.cpp$")
|
| 3888 | (("include \"doctest\\.h\"")
|
| 3889 | "include <doctest/doctest.h>"))))))
|
| 3890 | (build-system cmake-build-system)
|
| 3891 | (arguments
|
| 3892 | (list #:configure-flags #~'("-DBUILD_SHARED_LIBS=ON"
|
| 3893 | "-DBOX2D_BUILD_TESTBED=OFF")
|
| 3894 | #:modules '((guix build cmake-build-system)
|
| 3895 | ((guix build gnu-build-system) #:prefix gnu:)
|
| 3896 | (guix build utils))
|
| 3897 | #:phases
|
| 3898 | #~(modify-phases %standard-phases
|
| 3899 | (replace 'check
|
| 3900 | (lambda* (#:key tests? #:allow-other-keys #:rest args)
|
| 3901 | (when tests?
|
| 3902 | (apply (assoc-ref gnu:%standard-phases 'check)
|
| 3903 | #:tests? tests? #:test-target "unit_test" args)
|
| 3904 | (invoke "bin/unit_test"))))
|
| 3905 | (add-after 'install 'generate-pkgconfig
|
| 3906 | (lambda* (#:key outputs #:allow-other-keys)
|
| 3907 | (let* ((out (assoc-ref outputs "out"))
|
| 3908 | (pkgconfig-dir (string-append out "/lib/pkgconfig"))
|
| 3909 | (pc-file (string-append pkgconfig-dir "/box2d.pc")))
|
| 3910 | (mkdir-p pkgconfig-dir)
|
| 3911 | (with-output-to-file pc-file
|
| 3912 | (lambda ()
|
| 3913 | (format #t "prefix=~a~%" out)
|
| 3914 | (format #t "exec_prefix=${prefix}~%")
|
| 3915 | (format #t "libdir=${exec_prefix}/lib~%")
|
| 3916 | (format #t "includedir=${prefix}/include~%~%")
|
| 3917 | (format #t "Name: Box2D~%")
|
| 3918 | (format #t "Description: Box2D physics engine~%")
|
| 3919 | (format #t "Version: ~a~%" #$version)
|
| 3920 | (format #t "Libs: -L${libdir} -lbox2d~%")
|
| 3921 | (format #t "Cflags: -I${includedir}~%")))))))))
|
| 3922 | (native-inputs
|
| 3923 | (list doctest)) |
| 3924 | (inputs
|
| 3925 | (list libx11))
|
| 3926 | (home-page "https://box2d.org/")
|
| 3927 | (synopsis "2D physics engine for games")
|
| 3928 | (description "Box2D is a 2D rigid body simulation library for games.
|
| 3929 | Programmers can use it in their games to make objects move in realistic ways and
|
| 3930 | make the game world more interactive. From the game engine's point of view, a
|
| 3931 | physics engine is just a system for procedural animation.")
|
| 3932 | (license license:expat)))
|
| 3933 |
|
| 3934 | (define-public box2d-3
|
| 3935 | (package
|
| 3936 | (inherit box2d)
|
| 3937 | (name "box2d")
|
| 3938 | (version "3.1.1")
|
| 3939 | (source
|
| 3940 | (origin
|
| 3941 | (method git-fetch)
|
| 3942 | (uri (git-reference
|
| 3943 | (url "https://github.com/erincatto/box2d")
|
| 3944 | (commit (string-append "v" version))))
|
| 3945 | (file-name (git-file-name name version))
|
| 3946 | (sha256
|
| 3947 | (base32 "0j4vf19idnimpf8niqiw9dmdm40mvvjrhky63yyv2n0z1zs35912"))
|
| 3948 | |
| 3949 | (patches (search-patches "box2d-add-pkgconfig.patch"))
|
| 3950 | (modules '((guix build utils)))
|
| 3951 | (snippet
|
| 3952 | '(begin
|
| 3953 | |
| 3954 | (delete-file-recursively "extern")))))
|
| 3955 | (arguments
|
| 3956 | (list #:configure-flags #~'("-DBUILD_SHARED_LIBS=ON"
|
| 3957 | "-DBOX2D_UNIT_TESTS=OFF" |
| 3958 | "-DBOX2D_SAMPLES=OFF")
|
| 3959 | |
| 3960 | #:tests? #f
|
| 3961 | #:phases #~(modify-phases %standard-phases
|
| 3962 | |
| 3963 | |
| 3964 | |
| 3965 | (add-after 'unpack 'fix-pkgconfig-prefix
|
| 3966 | (lambda _
|
| 3967 | (substitute* "src/box2d.pc.in"
|
| 3968 | (("^prefix=.*")
|
| 3969 | "prefix=@CMAKE_INSTALL_PREFIX@\n")))))))
|
| 3970 | (native-inputs '())))
|
| 3971 |
|
| 3972 | (define-public libtcod
|
| 3973 | (package
|
| 3974 | (name "libtcod")
|
| 3975 | (version "2.2.2")
|
| 3976 | (source
|
| 3977 | (origin
|
| 3978 | (method git-fetch)
|
| 3979 | (uri (git-reference
|
| 3980 | (url "https://github.com/libtcod/libtcod")
|
| 3981 | (commit version)))
|
| 3982 | (file-name (git-file-name name version))
|
| 3983 | (sha256
|
| 3984 | (base32 "1zl1w4kpiiarh0f1q3j95k9vp90fx98hxl1ykma9hlkfw33srmy0"))
|
| 3985 | (modules '((guix build utils)))
|
| 3986 | (snippet
|
| 3987 | '(begin
|
| 3988 | (rmdir "vcpkg")
|
| 3989 | (with-directory-excursion "src"
|
| 3990 | |
| 3991 | (with-directory-excursion "vendor"
|
| 3992 | (for-each delete-file
|
| 3993 | '("khrplatform.h"
|
| 3994 | "lodepng.c"
|
| 3995 | "lodepng.h"
|
| 3996 | "stb_ds.h"
|
| 3997 | "stb_truetype.h"))
|
| 3998 | (for-each delete-file-recursively '("utf8proc" "zlib")))
|
| 3999 | |
| 4000 | |
| 4001 | |
| 4002 | (substitute* "CMakeLists.txt"
|
| 4003 | (("FetchContent_MakeAvailable\\(SDL3\\)")
|
| 4004 | "find_package(SDL3 REQUIRED)")
|
| 4005 | (("FetchContent_MakeAvailable\\(ZLIB\\)")
|
| 4006 | "find_package(ZLIB REQUIRED)")
|
| 4007 | (("FetchContent_MakeAvailable\\(lodepng-c\\)")
|
| 4008 | "find_library(LODEPNG_LIB NAMES lodepng REQUIRED)")
|
| 4009 | (("lodepng-c") "${LODEPNG_LIB}")
|
| 4010 | (("FetchContent_MakeAvailable\\(utf8proc\\)")
|
| 4011 | (string-append "find_package(PkgConfig REQUIRED)\n"
|
| 4012 | " pkg_check_modules(UTF8PROC REQUIRED"
|
| 4013 | " libutf8proc)"))
|
| 4014 | (("utf8proc\\:\\:utf8proc") "utf8proc")
|
| 4015 | ((".*FetchContent_MakeAvailable\\(Stb.*") "")))))))
|
| 4016 | (build-system cmake-build-system)
|
| 4017 | (arguments
|
| 4018 | (list
|
| 4019 | #:configure-flags
|
| 4020 | #~(list "-DLIBTCOD_TESTS=ON"
|
| 4021 | "-DBUILD_SHARED_LIBS=ON")
|
| 4022 | #:phases
|
| 4023 | #~(modify-phases %standard-phases
|
| 4024 | (add-after 'unpack 'patch-commands
|
| 4025 | (lambda* (#:key inputs #:allow-other-keys)
|
| 4026 | (substitute* "src/libtcod/tileset_fallback.c"
|
| 4027 | (("popen\\(\"fc-match")
|
| 4028 | (string-append "popen(\""
|
| 4029 | (search-input-file inputs "/bin/fc-match"))))))
|
| 4030 | (replace 'check
|
| 4031 | (lambda* (#:key tests? #:allow-other-keys)
|
| 4032 | (when tests?
|
| 4033 | (with-directory-excursion "tests"
|
| 4034 | (copy-recursively "../../source/data" "data")
|
| 4035 | (setenv "LD_LIBRARY_PATH" "..")
|
| 4036 | (setenv "XDG_RUNTIME_DIR" (getcwd))
|
| 4037 | (setenv "HOME" (getcwd))
|
| 4038 | (invoke "./unittest"
|
| 4039 | |
| 4040 | "~[!nonportable]"))))))))
|
| 4041 | (native-inputs
|
| 4042 | (list catch2 pkg-config))
|
| 4043 | (inputs
|
| 4044 | (list fontconfig lodepng/c sdl3 stb-truetype utf8proc zlib))
|
| 4045 | (home-page "https://github.com/libtcod/libtcod")
|
| 4046 | (synopsis "Library specifically designed for writing roguelikes")
|
| 4047 | (description
|
| 4048 | "libtcod is a fast, portable and uncomplicated API for roguelike
|
| 4049 | developers providing an advanced true color console, input, and lots of other
|
| 4050 | utilities frequently used in roguelikes.")
|
| 4051 | (license license:bsd-3)))
|
| 4052 |
|
| 4053 | (define-public dhewm3
|
| 4054 | (package
|
| 4055 | (name "dhewm3")
|
| 4056 | (version "1.5.5")
|
| 4057 | (source (origin
|
| 4058 | (method git-fetch)
|
| 4059 | (uri (git-reference (url "https://github.com/dhewm/dhewm3")
|
| 4060 | (commit version)))
|
| 4061 | (file-name (git-file-name name version))
|
| 4062 | (sha256
|
| 4063 | (base32
|
| 4064 | "0lxl3mlrikm4zzjs0rfvsn1pybcrnyn9z3rgyyw50k1a8qs9fbmh"))))
|
| 4065 | (build-system cmake-build-system)
|
| 4066 | (arguments
|
| 4067 | (list #:tests? #f |
| 4068 | #:configure-flags
|
| 4069 | |
| 4070 | #~(if #$(target-32bit?)
|
| 4071 | (list "-DCMAKE_CXX_FLAGS=-D_FILE_OFFSET_BITS=64")
|
| 4072 | '())
|
| 4073 | #:phases
|
| 4074 | #~(modify-phases %standard-phases
|
| 4075 | (add-after 'unpack 'change-to-build-dir
|
| 4076 | (lambda _
|
| 4077 | (chdir "neo"))))))
|
| 4078 | (inputs
|
| 4079 | (list curl
|
| 4080 | libx11
|
| 4081 | openal
|
| 4082 | sdl2
|
| 4083 | zlib))
|
| 4084 | (home-page "https://dhewm3.org/")
|
| 4085 | (synopsis "Port of the original Doom 3 engine")
|
| 4086 | (description
|
| 4087 | "@command{dhewm3} is a source port of the original Doom 3 engine (not
|
| 4088 | Doom 3: BFG Edition), also known as id Tech 4. Compared to the original
|
| 4089 | version of the Doom 3 engine, dhewm3 has many bugfixes, supports EAX-like
|
| 4090 | sound effects on all operating systems and hardware (via OpenAL Softs EFX
|
| 4091 | support), has much better support for widescreen resolutions and has 64bit
|
| 4092 | support.")
|
| 4093 | (license license:gpl3)))
|
| 4094 |
|
| 4095 | (define-public tesseract-engine
|
| 4096 | (let ((svn-revision 2411))
|
| 4097 | (package
|
| 4098 | (name "tesseract-engine")
|
| 4099 | (version (string-append "20200615-" (number->string svn-revision)))
|
| 4100 | (source
|
| 4101 | (origin
|
| 4102 | (method svn-fetch)
|
| 4103 | (uri (svn-reference
|
| 4104 | (url "svn://svn.tuxfamily.org/svnroot/tesseract/main")
|
| 4105 | (revision svn-revision)))
|
| 4106 | (file-name (git-file-name name version))
|
| 4107 | (sha256
|
| 4108 | (base32 "1av9jhl2ivbl7wfszyhyna84llvh1z2d8khkmadm8d105addj10q"))
|
| 4109 | (modules '((guix build utils)))
|
| 4110 | (snippet
|
| 4111 | '(begin
|
| 4112 | (for-each delete-file-recursively
|
| 4113 | '("bin" "bin64"
|
| 4114 | |
| 4115 | |
| 4116 | |
| 4117 | "media"
|
| 4118 | "server.bat"
|
| 4119 | "tesseract.bat"
|
| 4120 | "src/lib"
|
| 4121 | "src/lib64"))
|
| 4122 | #t))))
|
| 4123 | (build-system gnu-build-system)
|
| 4124 | (arguments
|
| 4125 | `(#:make-flags (list "CC=gcc")
|
| 4126 | #:tests? #f |
| 4127 | #:phases
|
| 4128 | (modify-phases %standard-phases
|
| 4129 | (delete 'configure)
|
| 4130 | (add-after 'unpack 'cd-src
|
| 4131 | (lambda _ (chdir "src") #t))
|
| 4132 | (add-before 'build 'fix-env
|
| 4133 | (lambda* (#:key inputs #:allow-other-keys)
|
| 4134 | (setenv "CPATH"
|
| 4135 | (string-append
|
| 4136 | (search-input-directory inputs "include/SDL2")
|
| 4137 | ":" (or (getenv "CPATH") "")))))
|
| 4138 | (add-after 'install 'really-install
|
| 4139 | (lambda* (#:key outputs #:allow-other-keys)
|
| 4140 | (let* ((out (assoc-ref outputs "out"))
|
| 4141 | (share (string-append out "/share/tesseract"))
|
| 4142 | (bin (string-append out "/bin/tesseract"))
|
| 4143 | (client (string-append out "/bin/tesseract-client")))
|
| 4144 | (chdir "..") |
| 4145 | (for-each
|
| 4146 | (lambda (dir)
|
| 4147 | (mkdir-p (string-append share "/" dir))
|
| 4148 | (copy-recursively dir (string-append share "/" dir)))
|
| 4149 | '("config"))
|
| 4150 | (mkdir-p (string-append out "/bin/"))
|
| 4151 | (copy-file "bin_unix/native_client" client)
|
| 4152 | (copy-file "bin_unix/native_server"
|
| 4153 | (string-append out "/bin/tesseract-server"))
|
| 4154 | (call-with-output-file bin
|
| 4155 | (lambda (p)
|
| 4156 | (format p "#!~a
|
| 4157 | TESS_DATA=~a
|
| 4158 | TESS_BIN=~a
|
| 4159 | TESS_OPTIONS=\"-u$HOME/.tesseract\"
|
| 4160 | cd \"$TESS_DATA\"
|
| 4161 | exec \"$TESS_BIN\" \"$TESS_OPTIONS\" \"$@\""
|
| 4162 | (which "bash")
|
| 4163 | share
|
| 4164 | client)))
|
| 4165 | (chmod bin #o755)
|
| 4166 | (install-file "src/readme_tesseract.txt"
|
| 4167 | (string-append out "/share/licenses/tesseract/LICENSE")))
|
| 4168 | #t)))))
|
| 4169 | (inputs
|
| 4170 | `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-image)))
|
| 4171 | ("zlib" ,zlib)
|
| 4172 | ("libpng" ,libpng)
|
| 4173 | ("libgl" ,mesa)))
|
| 4174 | (home-page "http://tesseract.gg/")
|
| 4175 | (synopsis "First-person shooter engine with map editing, instagib, DM and CTF")
|
| 4176 | (description "This package contains the game engine of Tesseract, a
|
| 4177 | first-person shooter focused on cooperative in-game map editing.
|
| 4178 |
|
| 4179 | The engine is derived from @emph{Cube 2: Sauerbraten} technology but with
|
| 4180 | upgraded modern rendering techniques. The new rendering features include
|
| 4181 | fully dynamic omnidirectional shadows, global illumination, HDR lighting,
|
| 4182 | deferred shading, morphological / temporal / multisample anti-aliasing, and
|
| 4183 | much more.")
|
| 4184 | (license license:zlib))))
|
| 4185 |
|
| 4186 | (define-public recastnavigation
|
| 4187 | (package
|
| 4188 | (name "recastnavigation")
|
| 4189 | (version "1.6.0")
|
| 4190 | (source (origin
|
| 4191 | (method git-fetch)
|
| 4192 | (uri (git-reference
|
| 4193 | (url "https://github.com/recastnavigation/recastnavigation")
|
| 4194 | (commit (string-append "v" version))))
|
| 4195 | (file-name (git-file-name name version))
|
| 4196 | (sha256
|
| 4197 | (base32
|
| 4198 | "0rdz3qmp4b961zjah2ax82h471j14w2rcf576gcyx7vldrg8dmj8"))))
|
| 4199 | (build-system cmake-build-system)
|
| 4200 | (arguments
|
| 4201 | `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON"
|
| 4202 | "-DRECASTNAVIGATION_DEMO=OFF"
|
| 4203 | "-DRECASTNAVIGATION_TESTS=ON"
|
| 4204 | "-DRECASTNAVIGATION_EXAMPLES=OFF")))
|
| 4205 | (synopsis "Navigation system for games")
|
| 4206 | (description "Recast is state of the art navigation mesh
|
| 4207 | construction toolset for games.
|
| 4208 |
|
| 4209 | @itemize
|
| 4210 | @item It is automatic, which means that you can throw any level geometry
|
| 4211 | at it and you will get robust mesh out.
|
| 4212 | @item It is fast which means swift turnaround times for level designers.
|
| 4213 | @end itemize
|
| 4214 |
|
| 4215 | The Recast process starts with constructing a voxel mold from a level
|
| 4216 | geometry and then casting a navigation mesh over it. The process
|
| 4217 | consists of three steps, building the voxel mold, partitioning the mold
|
| 4218 | into simple regions, peeling off the regions as simple polygons.
|
| 4219 |
|
| 4220 | Recast is accompanied with Detour, path-finding and spatial reasoning
|
| 4221 | toolkit. You can use any navigation mesh with Detour, but of course the
|
| 4222 | data generated with Recast fits perfectly.
|
| 4223 |
|
| 4224 | Detour offers simple static navigation mesh which is suitable for many
|
| 4225 | simple cases, as well as tiled navigation mesh which allows you to plug
|
| 4226 | in and out pieces of the mesh. The tiled mesh allows you to create
|
| 4227 | systems where you stream new navigation data in and out as the player
|
| 4228 | progresses the level, or you may regenerate tiles as the world changes.")
|
| 4229 | (home-page "https://github.com/recastnavigation/recastnavigation")
|
| 4230 | (license license:zlib)))
|
| 4231 |
|
| 4232 | (define-public raylib
|
| 4233 | (package
|
| 4234 | (name "raylib")
|
| 4235 | (version "5.5")
|
| 4236 | (source (origin
|
| 4237 | (method git-fetch)
|
| 4238 | (uri (git-reference
|
| 4239 | (url "https://github.com/raysan5/raylib/")
|
| 4240 | (commit version)))
|
| 4241 | (file-name (git-file-name name version))
|
| 4242 | |
| 4243 | (sha256
|
| 4244 | (base32
|
| 4245 | "1dhy9ghbwvz0s434j03rfa2l6wxcfj028vlkk1xbf5q97vin5pr7"))))
|
| 4246 | (build-system cmake-build-system)
|
| 4247 | (arguments
|
| 4248 | (list #:tests? #f |
| 4249 | #:configure-flags
|
| 4250 | #~(list "-DBUILD_SHARED_LIBS=ON"
|
| 4251 | "-DUSE_EXTERNAL_GLFW=ON"
|
| 4252 | (string-append "-DCMAKE_C_FLAGS=-lpulse "
|
| 4253 | "-Wno-error=incompatible-pointer-types"))
|
| 4254 | #:phases
|
| 4255 | #~(modify-phases %standard-phases
|
| 4256 | (add-before 'configure 'configure-miniaudio
|
| 4257 | |
| 4258 | (lambda _
|
| 4259 | (substitute* "src/raudio.c"
|
| 4260 | (("^#include \"external/miniaudio\\.h\"") "
|
| 4261 | #define MA_NO_RUNTIME_LINKING
|
| 4262 | #define MA_ENABLE_ONLY_SPECIFIC_BACKENDS
|
| 4263 | #define MA_ENABLE_PULSEAUDIO
|
| 4264 | #include \"external/miniaudio.h\"
|
| 4265 | "))))
|
| 4266 | (add-after 'install 'install-api-files
|
| 4267 | |
| 4268 | (lambda _
|
| 4269 | (install-file (string-append #$source "/src/rcamera.h")
|
| 4270 | (string-append #$output "/include"))
|
| 4271 | (copy-recursively
|
| 4272 | (string-append #$source "/parser/output")
|
| 4273 | (string-append #$output "/share/raylib")))))))
|
| 4274 | (inputs (list glfw-3.4 pulseaudio))
|
| 4275 | (native-inputs (list pkg-config))
|
| 4276 | (synopsis "C library for videogame programming")
|
| 4277 | (description
|
| 4278 | "raylib is a high-level library for video game programming. It aims to
|
| 4279 | abstract away platform and graphics details, allowing you to focus on
|
| 4280 | writing your game.")
|
| 4281 | (home-page "https://www.raylib.com/")
|
| 4282 | (license license:zlib)))
|
| 4283 |
|
| 4284 | (define-public raygui
|
| 4285 | (package
|
| 4286 | (name "raygui")
|
| 4287 | (version "4.0")
|
| 4288 | (source (origin
|
| 4289 | (method git-fetch)
|
| 4290 | (uri (git-reference
|
| 4291 | (url "https://github.com/raysan5/raygui/")
|
| 4292 | (commit version)))
|
| 4293 | (file-name (git-file-name name version))
|
| 4294 | (sha256
|
| 4295 | (base32
|
| 4296 | "13s606dxnypg6n2pbn13d2d407pxkb7bxqbk5swlfvrcjs2w5afn"))))
|
| 4297 | (build-system gnu-build-system)
|
| 4298 | (arguments
|
| 4299 | (list
|
| 4300 | #:phases
|
| 4301 | #~(modify-phases %standard-phases
|
| 4302 | (delete 'bootstrap)
|
| 4303 | (add-after 'unpack 'use-raygui-header
|
| 4304 | (lambda _
|
| 4305 | (rename-file "src/raygui.h" "src/raygui.c")))
|
| 4306 | (delete 'configure)
|
| 4307 | (replace 'build
|
| 4308 | (lambda _
|
| 4309 | (invoke #$(cc-for-target)
|
| 4310 | "-o" "libraygui.so"
|
| 4311 | "src/raygui.c"
|
| 4312 | "-DRAYGUI_IMPLEMENTATION"
|
| 4313 | "-shared" "-fpic"
|
| 4314 | "-lraylib"
|
| 4315 | "-lGL" "-lm" "-lpthread" "-ldl" "-lrt" "-lX11")))
|
| 4316 | (delete 'check)
|
| 4317 | (replace 'install
|
| 4318 | (lambda _
|
| 4319 | (let ((src (string-append #$source "/src"))
|
| 4320 | (inc (string-append #$output "/include"))
|
| 4321 | (lib (string-append #$output "/lib")))
|
| 4322 | (install-file (string-append src "/raygui.h") inc)
|
| 4323 | (install-file "libraygui.so" lib)))))))
|
| 4324 | (inputs (list mesa raylib))
|
| 4325 | (synopsis "Simple and easy-to-use immediate-mode gui library")
|
| 4326 | (description "Originally inspired by Unity IMGUI (immediate mode GUI API).
|
| 4327 |
|
| 4328 | Designed as an auxiliary module for raylib to create simple GUI interfaces using
|
| 4329 | raylib graphic style (simple colors, plain rectangular shapes, wide borders...)
|
| 4330 | but it can be adapted to other engines/frameworks.")
|
| 4331 | (home-page "https://www.raylib.com")
|
| 4332 | (license license:zlib)))
|
| 4333 |
|
| 4334 | (define-public tic80
|
| 4335 | |
| 4336 | (let ((3rd/jsmn
|
| 4337 | (origin |
| 4338 | (method git-fetch)
|
| 4339 | (uri (git-reference
|
| 4340 | (url "https://github.com/zserge/jsmn")
|
| 4341 | (commit "25647e692c7906b96ffd2b05ca54c097948e879c")))
|
| 4342 | (file-name "jsmn-checkout")
|
| 4343 | (sha256
|
| 4344 | (base32
|
| 4345 | "19xgrap95a8ziicgd0c3fns51z1g4q06b5lb5pg76ah4ychhgg5p"))))
|
| 4346 | (3rd/blip-buf
|
| 4347 | (origin |
| 4348 | (method git-fetch)
|
| 4349 | (uri (git-reference
|
| 4350 | (url "https://github.com/nesbox/blip-buf")
|
| 4351 | (commit "330226d9b55ecbeea644e17b5e0f096a165ca07e")))
|
| 4352 | (file-name "blip-buf-checkout")
|
| 4353 | (sha256
|
| 4354 | (base32
|
| 4355 | "0fycffd6pbh9ilmr032dlrwd6dhvpkjp2r9x98r0kmwqpxc4x90d")))))
|
| 4356 | (package
|
| 4357 | (name "tic80")
|
| 4358 | (version "1.3.1")
|
| 4359 | (source
|
| 4360 | (origin
|
| 4361 | (method git-fetch)
|
| 4362 | (uri (git-reference
|
| 4363 | (url "https://github.com/nesbox/TIC-80")
|
| 4364 | (commit (string-append "v" version))))
|
| 4365 | (file-name (git-file-name name version))
|
| 4366 | (sha256
|
| 4367 | (base32
|
| 4368 | "1vzk4f9b73mmal2kh4q9yc8hmvmg62am45ds28cq9m27y0z6psj2"))
|
| 4369 | (modules '((guix build utils)))
|
| 4370 | (snippet
|
| 4371 | #~(begin
|
| 4372 | (delete-file-recursively "vendor")
|
| 4373 | (copy-recursively #$3rd/jsmn "vendor/jsmn")
|
| 4374 | (copy-recursively #$3rd/blip-buf "vendor/blip-buf")))))
|
| 4375 | (build-system cmake-build-system)
|
| 4376 | (arguments
|
| 4377 | (list #:tests? #f |
| 4378 | #:configure-flags
|
| 4379 | #~'("-DBUILD_STATIC=ON" |
| 4380 | "-DPREFER_SYSTEM_LIBRARIES=ON"
|
| 4381 | "-DCMAKE_EXE_LINKER_FLAGS=-lpulse" |
| 4382 | "-DCMAKE_C_FLAGS=-Wno-error=incompatible-pointer-types"
|
| 4383 | |
| 4384 | |
| 4385 | "-DBUILD_WITH_FENNEL=ON"
|
| 4386 | "-DBUILD_WITH_JANET=ON"
|
| 4387 | "-DBUILD_WITH_JS=ON"
|
| 4388 | "-DBUILD_WITH_LUA=ON"
|
| 4389 | "-DBUILD_WITH_RUBY=ON"
|
| 4390 | "-DBUILD_WITH_SCHEME=ON"
|
| 4391 | "-DBUILD_WITH_SQUIRREL=ON"
|
| 4392 | "-DBUILD_WITH_WASM=ON")
|
| 4393 | #:phases
|
| 4394 | #~(modify-phases %standard-phases
|
| 4395 | (add-after 'unpack 'prepare-sources
|
| 4396 | (lambda _
|
| 4397 | (substitute* "cmake/version.cmake"
|
| 4398 | |
| 4399 | (("VERSION_REVISION 0")
|
| 4400 | "VERSION_REVISION 1"))
|
| 4401 | (let* ((s7 #$(this-package-input "s7"))
|
| 4402 | (fennel #$(this-package-input "fennel")))
|
| 4403 | (install-file (string-append s7 "/include/s7.h")
|
| 4404 | "vendor/s7/")
|
| 4405 | (install-file (string-append s7 "/share/s7/s7.c")
|
| 4406 | "vendor/s7/")
|
| 4407 | (mkdir "vendor/fennel")
|
| 4408 | (copy-file (car (find-files fennel "fennel\\.lua"))
|
| 4409 | "vendor/fennel/loadfennel.lua")
|
| 4410 | (with-directory-excursion "vendor/fennel"
|
| 4411 | (substitute* "loadfennel.lua"
|
| 4412 | (("return mod") "package.loaded['fennel'] = mod"))
|
| 4413 | (invoke "xxd" "-i" "loadfennel.lua" "fennel.h")))
|
| 4414 | (substitute* "src/api/mruby.c"
|
| 4415 | (("#include <mruby\\.h>" all)
|
| 4416 | (string-append
|
| 4417 | all "\n#include <mruby/internal.h>")))
|
| 4418 | (substitute* "src/ext/fft.c"
|
| 4419 | (("#include \"miniaudio\\.h\"") "
|
| 4420 | #define MA_NO_RUNTIME_LINKING
|
| 4421 | #define MA_ENABLE_ONLY_SPECIFIC_BACKENDS
|
| 4422 | #define MA_ENABLE_PULSEAUDIO
|
| 4423 | #define MA_ENABLE_NULL
|
| 4424 | #include \"miniaudio.h\"
|
| 4425 | ")))))))
|
| 4426 | (native-inputs
|
| 4427 | (list pkg-config xxd))
|
| 4428 | (inputs
|
| 4429 | (list argparse
|
| 4430 | fennel
|
| 4431 | giflib
|
| 4432 | janet
|
| 4433 | kubazip
|
| 4434 | libpng
|
| 4435 | lua
|
| 4436 | mruby
|
| 4437 | naett
|
| 4438 | pulseaudio
|
| 4439 | quickjs
|
| 4440 | s7
|
| 4441 | sdl2
|
| 4442 | squirrel
|
| 4443 | wasm3))
|
| 4444 | (synopsis "Fantasy tiny computer")
|
| 4445 | (home-page "https://tic80.com/")
|
| 4446 | (description
|
| 4447 | "TIC-80 is a fantasy computer for making, playing and sharing tiny
|
| 4448 | games. There are built-in tools for development: code, sprites, maps, sound
|
| 4449 | editors and the command line, which is enough to create a mini retro game.")
|
| 4450 | (license license:expat))))
|
| 4451 |
|
| 4452 | (define-public bbcsdl
|
| 4453 | (package
|
| 4454 | (name "bbcsdl")
|
| 4455 | (version "1.42a")
|
| 4456 | (source (origin
|
| 4457 | (method git-fetch)
|
| 4458 | (uri (git-reference
|
| 4459 | (url "https://github.com/rtrussell/BBCSDL/")
|
| 4460 | (commit "e3d6e1582dc5a9f9b77b7fc2985f63d24702c7d3")))
|
| 4461 | (file-name (git-file-name name version))
|
| 4462 | (sha256
|
| 4463 | (base32
|
| 4464 | "0hwyd2iv255nci9v3p86cg5i7190cslzrdpq187m8a3vc3c4pmmq"))))
|
| 4465 | (build-system gnu-build-system)
|
| 4466 | (arguments
|
| 4467 | (list
|
| 4468 | #:tests? #f |
| 4469 | #:phases
|
| 4470 | #~(modify-phases %standard-phases
|
| 4471 | (delete 'configure) |
| 4472 | (replace 'build
|
| 4473 | (lambda* (#:key outputs #:allow-other-keys)
|
| 4474 | |
| 4475 | (symlink "source" "../BBCSDL")
|
| 4476 | |
| 4477 | (substitute* "bin/linux/makefile"
|
| 4478 | (("-Wl,-R,'\\$\\$ORIGIN'")
|
| 4479 | (string-append "-Wl,-rpath="
|
| 4480 | (assoc-ref outputs "out") "/opt/bbcsdl")))
|
| 4481 | |
| 4482 | (invoke "make" "-C" "console/linux")
|
| 4483 | (invoke "make" "-C" "bin/linux")))
|
| 4484 | (replace 'install
|
| 4485 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 4486 | (let* ((out (assoc-ref outputs "out"))
|
| 4487 | (opt (string-append out "/opt/bbcsdl"))
|
| 4488 | (bin (string-append out "/bin")))
|
| 4489 | (for-each
|
| 4490 | (lambda (f)
|
| 4491 | (copy-recursively f (string-append opt "/" f)))
|
| 4492 | |
| 4493 | '("lib" "examples" "bbcsdl.bbc"
|
| 4494 | "libstb.so" "bbcsdl" "bbcbasic"))
|
| 4495 | |
| 4496 | (for-each
|
| 4497 | (lambda (font)
|
| 4498 | (delete-file (string-append opt "/lib/" font))
|
| 4499 | (symlink
|
| 4500 | (search-input-file
|
| 4501 | inputs (string-append "share/fonts/truetype/" font))
|
| 4502 | (string-append opt "/lib/" font)))
|
| 4503 | '("DejaVuSans.ttf" "DejaVuSansMono.ttf"
|
| 4504 | "DejaVuSans-Oblique.ttf"
|
| 4505 | "FreeSans.ttf" "FreeMono.ttf" "FreeSerif.ttf"))
|
| 4506 | (mkdir bin)
|
| 4507 | (symlink (string-append opt "/bbcsdl")
|
| 4508 | (string-append bin "/bbcsdl"))
|
| 4509 | (symlink (string-append opt "/bbcbasic")
|
| 4510 | (string-append bin "/bbcbasic"))))))))
|
| 4511 | (native-inputs (list nasm))
|
| 4512 | (inputs (list sdl2 sdl2-ttf sdl2-net font-dejavu font-gnu-freefont))
|
| 4513 | (synopsis "BBC BASIC for SDL 2.0")
|
| 4514 | (home-page "https://www.bbcbasic.co.uk/bbcsdl/")
|
| 4515 | (description
|
| 4516 | "BBC BASIC is the programming language originally specified and adopted
|
| 4517 | by the British Broadcasting Corporation for its groundbreaking Computer
|
| 4518 | Literacy Project of the early 1980s. BBC BASIC for SDL 2.0 combines the
|
| 4519 | simplicity of BASIC with the sophistication of a modern structured language,
|
| 4520 | allowing you to write utilities and games, use sound and graphics, perform
|
| 4521 | calculations and create complete applications.")
|
| 4522 | (license license:zlib)))
|
| 4523 |
|
| 4524 | (define-public shlomif-cmake-modules
|
| 4525 | (let ((commit "2fa3e9be1a1df74ad0e10f0264bfa60e1e3a755c")
|
| 4526 | (revision "0"))
|
| 4527 | (package
|
| 4528 | (name "shlomif-cmake-modules")
|
| 4529 | (version (git-version "0" revision commit))
|
| 4530 | (source
|
| 4531 | (origin
|
| 4532 | (method git-fetch)
|
| 4533 | (uri (git-reference
|
| 4534 | (url "https://github.com/shlomif/shlomif-cmake-modules")
|
| 4535 | (commit commit)))
|
| 4536 | (file-name (git-file-name name version))
|
| 4537 | (sha256
|
| 4538 | (base32 "1755lvg1xxygsxnp6kyjw9m0nddcb19ivm8dy31hfiyr0rxakl9h"))))
|
| 4539 | (build-system copy-build-system)
|
| 4540 | (arguments
|
| 4541 | (list
|
| 4542 | #:install-plan
|
| 4543 | #~'(("shlomif-cmake-modules/" "share/shlomi-fish/cmake"))))
|
| 4544 | (home-page "https://github.com/shlomif/shlomif-cmake-modules")
|
| 4545 | (synopsis "CMake modules for Shlomi Fish's projects")
|
| 4546 | (description
|
| 4547 | "This repository contains CMake modules which are used across
|
| 4548 | @uref{https://www.shlomifish.org/, Shlomi Fish's} projects.")
|
| 4549 | (license license:expat))))
|
| 4550 |
|
| 4551 | (define-public angelscript
|
| 4552 | (package
|
| 4553 | (name "angelscript")
|
| 4554 | (version "2.38.0")
|
| 4555 | (source
|
| 4556 | (origin
|
| 4557 | (method url-fetch)
|
| 4558 | (uri (string-append
|
| 4559 | "https://www.angelcode.com/angelscript/sdk/files/angelscript_"
|
| 4560 | version ".zip"))
|
| 4561 | (sha256
|
| 4562 | (base32 "0vrflpmj3ldfq96js45czkk4r6266bc570v2gpv7wc8hvay5sfxk"))))
|
| 4563 | (build-system cmake-build-system)
|
| 4564 | (outputs '("out" "doc"))
|
| 4565 | (arguments
|
| 4566 | (list
|
| 4567 | #:tests? #f |
| 4568 | #:configure-flags
|
| 4569 | #~(list "-DBUILD_SHARED_LIBS=true")
|
| 4570 | #:phases
|
| 4571 | #~(modify-phases %standard-phases
|
| 4572 | (add-after 'unpack 'chdir
|
| 4573 | (lambda _
|
| 4574 | (chdir "angelscript/projects/cmake")))
|
| 4575 | (add-after 'install 'install-doc
|
| 4576 | (lambda* (#:key outputs #:allow-other-keys)
|
| 4577 | (chdir "../../../")
|
| 4578 | (let ((docdir (string-append (assoc-ref outputs "doc")
|
| 4579 | "/share/doc/anglescript")))
|
| 4580 | (copy-recursively "docs" docdir)))))))
|
| 4581 | (native-inputs (list unzip))
|
| 4582 | (home-page "https://www.angelcode.com/angelscript/")
|
| 4583 | (synopsis "Flexible cross-platform scripting library")
|
| 4584 | (description
|
| 4585 | "AngelScript is an cross-platform scripting library designed to allow
|
| 4586 | applications to extend their functionality through external scripts. It has
|
| 4587 | been designed from the beginning to be an easy to use component, both for the
|
| 4588 | application programmer and the script writer. It can call standard C functions
|
| 4589 | and C++ methods with little to no need for proxy functions. The application
|
| 4590 | registers the functions, objects, and methods that the scripts work with. The
|
| 4591 | same functions used by the application internally can be used by the scripting
|
| 4592 | engine, which eliminates the need to duplicate functionality.")
|
| 4593 | (license license:zlib)))
|
| 4594 |
|
| 4595 | (define-public rinutils
|
| 4596 | (package
|
| 4597 | (name "rinutils")
|
| 4598 | (version "0.10.3")
|
| 4599 | (source
|
| 4600 | (origin
|
| 4601 | (method git-fetch)
|
| 4602 | (uri (git-reference
|
| 4603 | (url "https://github.com/shlomif/rinutils")
|
| 4604 | (commit version)))
|
| 4605 | (file-name (git-file-name name version))
|
| 4606 | (sha256
|
| 4607 | (base32 "0iziwblw3jnvj31pis86x5lvykywfsx6w7a4019zn34p1i4id8js"))))
|
| 4608 | (build-system cmake-build-system)
|
| 4609 | (arguments
|
| 4610 | (list
|
| 4611 | #:configure-flags
|
| 4612 | #~(list (string-append "-DCMAKE_MODULE_PATH="
|
| 4613 | #+shlomif-cmake-modules "/share/shlomi-fish/cmake")
|
| 4614 | (string-append "-DSHLOMIF_SYSTEM_INSTALL_DIR="
|
| 4615 | #+shlomif-cmake-modules "/share/shlomi-fish/cmake"))
|
| 4616 | #:tests? #f)) |
| 4617 | (native-inputs (list shlomif-cmake-modules pkg-config perl))
|
| 4618 | (home-page "https://github.com/shlomif/rinutils")
|
| 4619 | (synopsis "Collection of C headers")
|
| 4620 | (description
|
| 4621 | "Rinutils is a set of C headers containing macros and static
|
| 4622 | functions that have been extracted from @uref{https://www.shlomifish.org/,
|
| 4623 | Shlomi Fish's} projects.")
|
| 4624 | (license license:expat)))
|