aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/games
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/games')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/0ad/data.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/0ad/default.nix14
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/0ad/game.nix102
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/0ad/rootdir_env.patch38
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/0ad/wrapper.nix21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/1oom/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/2048-in-terminal/default.nix33
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/20kly/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/90secondportraits/default.nix59
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/abbaye-des-morts/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/adom/default.nix59
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/airstrike/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alephone/default.nix98
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alephone/durandal/default.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alephone/eternal/default.nix21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alephone/evil/default.nix18
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alephone/infinity/default.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alephone/marathon/default.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alephone/pathways-into-darkness/default.nix19
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alephone/pheonix/default.nix18
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alephone/red/default.nix18
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alephone/rubicon-x/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/alienarena/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/amoeba/data.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/amoeba/default.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/amoeba/include-string-h.patch12
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/among-sus/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/andyetitmoves/default.nix75
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/angband/default.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/anki/default.nix201
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/anki/no-version-check.patch13
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/arena/default.nix74
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/armagetronad/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/arx-libertatis/default.nix63
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/asc/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/assaultcube/default.nix72
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/astromenace/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/atanks/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/augustus/default.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/azimuth/default.nix50
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ball-and-paddle/default.nix44
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ball-and-paddle/getenv-decl.patch13
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/banner/default.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/bastet/default.nix37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/beret/default.nix41
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/beret/use-home-dir.patch48
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/bitsnbots/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/blackshades/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/blobby/blobby.sh10
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/blobby/default.nix38
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/blobby/default.upstream8
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/boohu/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/boohu/deps.nix20
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/braincurses/default.nix28
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/brogue/default.nix51
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/bsdgames/default.nix67
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/btanks/default.nix43
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/bzflag/default.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/builder.nix49
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/common.nix112
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/default.nix42
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/git.nix41
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/lib.nix17
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/pkgs/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/pkgs/tilesets/UndeadPeople/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/stable.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix47
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/chessdb/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/chessx/default.nix56
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/chiaki/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/chocolate-doom/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ckan/default.nix44
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cockatrice/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/commandergenius/default.nix44
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/construo/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/crack-attack/crack-attack-1.1.14-gcc43.patch10
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/crack-attack/crack-attack-1.1.14-glut.patch10
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/crack-attack/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/crafty/default.nix73
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/crawl/crawl_purify.patch47
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/crawl/default.nix76
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/crispy-doom/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/crrcsim/default.nix28
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/crrcsim/gcc6.patch13
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/curseofwar/default.nix37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cutemaze/default.nix28
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/cuyo/default.nix21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/devilutionx/default.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dhewm3/default.nix38
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/duckmarines/default.nix60
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/default.nix122
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/df_permission40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dfhack/default.nix167
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dfhack/fix-stonesense.patch23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix50
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/game.json125
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/game.nix101
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/lazy-pack.nix48
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/legends-browser/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/soundsense.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/default.nix19
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/themes.json87
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/update.sh8
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/twbt/default.nix90
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/unfuck.nix96
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/update.sh42
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/default.nix123
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dfhack.in11
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress-init.in44
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress.in9
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/soundSense.in10
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/assets.nix55
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/default.nix56
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/full.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/easyrpg-player/default.nix52
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/eboard/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/eboard/eboard.patch16
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/eduke32/default.nix77
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/egoboo/default.nix59
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/eidolon/cargo-lock.patch19
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/eidolon/default.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/empty-epsilon/default.nix66
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/endgame-singularity/default.nix48
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/endless-sky/default.nix41
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/endless-sky/fixes.patch36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/enyo-doom/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/eternity-engine/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/extremetuxracer/default.nix39
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/exult/default.nix46
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ezquake/default.nix39
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/factorio/default.nix245
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/factorio/mods.nix213
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/games/factorio/update.py174
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/factorio/utils.nix49
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/factorio/versions.json58
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/fairymax/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/fish-fillets-ng/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/flare/default.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/flare/engine.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/flare/game.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/flightgear/default.nix81
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/fltrator/default.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/freecell-solver/default.nix44
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/freeciv/default.nix69
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/freedink/default.nix61
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/freedroidrpg/default.nix64
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/freeorion/default.nix52
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/freeorion/fix-paths.sh6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/freeorion/fix-paths.xslt13
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/freesweep/default.nix37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/frogatto/data.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/frogatto/default.nix44
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/frogatto/engine.nix50
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/frotz/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/frozen-bubble/default.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/frozen-bubble/fix-compilation.patch33
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/fsg/default.nix37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/galaxis/default.nix47
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gambatte/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gambatte/fix-scons-paths.patch15
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/garden-of-coloured-lights/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gargoyle/darwin.sh54
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gargoyle/default.nix68
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gav/default.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gav/gcc.patch12
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gcompris/default.nix55
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gcs/default.nix76
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gemrb/default.nix43
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gl-117/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/globulation/default.nix53
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/globulation/header-order.patch23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/globulation/public-buildproject.patch21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gltron/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gltron/gentoo-prototypes.patch27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gmad/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gnome-hexgl/default.nix43
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gnubg/default.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gnuchess/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gnuchess/default.upstream1
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gnugo/default.nix20
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gnujump/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gnushogi/default.nix20
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gogui/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gscrabble/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gshogi/default.nix37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gtetrinet/default.nix44
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gtypist/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gweled/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/gzdoom/default.nix85
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/harmonist/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/harmonist/deps.nix20
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/hawkthorne/default.nix39
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/hawkthorne/makefile.patch33
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/hedgewars/default.nix107
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/holdingnuts/default.nix37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/hyperrogue/default.nix55
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/icbm3d/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/instead-launcher/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/instead-launcher/path.patch39
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/instead/default.nix72
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/iortcw/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/iortcw/sp.nix52
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ivan/default.nix69
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/Cargo.lock291
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/default.nix51
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/remove-rust-buildstep.patch21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/julius/default.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/katago/default.nix115
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/keen4/builder.sh31
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/keen4/default.nix21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/keeperrl/default.nix75
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/klavaro/default.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/kobodeluxe/default.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/kobodeluxe/glibc29.patch83
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/koboredux/default.nix87
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/lbreakout2/default.nix21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/leela-zero/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/left4gore/default.nix48
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/legendary-gl/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/lgogdownloader/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/liberal-crime-squad/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/liberation-circuit/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/lincity/default.nix33
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/lincity/ng.nix55
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/liquidwar/5.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/liquidwar/default.nix46
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ltris/default.nix22
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ltris/gcc5_compliance.diff299
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/lugaru/default.nix31
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/lunar-client/default.nix41
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/macopix/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/mar1d/default.nix70
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/mari0/default.nix50
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/mars/default.nix37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/mars/fix-gluortho2d.patch113
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/mars/unbind_fix.patch19
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/megaglest/default.nix58
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/meritous/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/mindustry/default.nix135
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/minecraft-server/default.nix40
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/games/minecraft-server/update.sh21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/minecraft/default.nix160
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/games/minecraft/update.sh7
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/minetest/default.nix90
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/minetest/disable_fixup.patch10
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/minetest/fix_wordsize_confusion.patch10
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/mnemosyne/default.nix81
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/moon-buggy/default.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/mrrescue/default.nix59
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/mudlet/default.nix57
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/multimc/default.nix41
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/n2048/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/naev/default.nix42
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/nethack/default.nix151
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/netris/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/neverball/default.nix41
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/newtonwars/default.nix39
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/nexuiz/default.nix77
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ninvaders/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/njam/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/njam/logfile.patch22
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/nottetris2/default.nix51
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/nudoku/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/nxengine-evo/default.nix65
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/odamex/default.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/oilrush/default.nix78
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/onscripter-en/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openarena/default.nix43
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openclonk/default.nix47
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/opendune/default.nix46
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/opendungeons/cmakepaths.patch17
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/opendungeons/default.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openjk/default.nix64
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openlierox/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openmw/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openmw/tes3mp.nix94
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openmw/tes3mp.patch13
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openra/common.nix84
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openra/default.nix71
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openra/engine.nix60
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openra/engines.nix41
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openra/mkdirp.sh4
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openra/mod-launch-game.sh25
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/games/openra/mod-update.sh160
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openra/mod.nix105
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openra/mods.nix344
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openra/openra-mod.desktop11
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openra/packages.nix60
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openrct2/default.nix82
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openrw/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openspades/default.nix69
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openttd/default.nix94
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openttd/jgrpp.nix13
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/opentyrian/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openxcom/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/openxray/default.nix77
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/orthorobot/default.nix57
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/osu-lazer/bypass-tamper-detection.patch23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/osu-lazer/default.nix111
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/osu-lazer/deps.nix1627
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/games/osu-lazer/update.sh58
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/pacvim/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/papermc/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/pentobi/default.nix38
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/performous/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/performous/performous-cmake.patch86
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/pingus/default.nix22
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/pioneer/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/pioneers/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/planetaryannihilation/default.nix53
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/pokerth/default.nix75
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/pong3d/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/portmod/default.nix98
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/prboom/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/privateer/0001-fix-VSFile-constructor.patch25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/privateer/default.nix43
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/pro-office-calculator/default.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/pysolfc/default.nix48
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/pysolfc/pysolfc-datadir.patch19
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/qgo/default.nix48
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/qgo/fix-paths.patch50
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/qqwing/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/qtads/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/default.nix95
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/games.nix59
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/wrapper.nix31
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quake3/content/demo.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quake3/content/pointrelease.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quake3/ioquake/default.nix41
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quake3/quake3e/default.nix38
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quake3/wrapper/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quakespasm/default.nix42
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quakespasm/vulkan.nix59
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quantumminigolf/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/quantumminigolf/default.upstream4
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/racer/default.nix31
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/racer/mkdir.patch13
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/redeclipse/default.nix48
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/residualvm/default.nix31
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/rftg/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/rigsofrods/default.nix41
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/riko4/default.nix68
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/rili/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/rili/moderinze_cpp.patch391
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/rimshot/default.nix62
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/robotfindskitten/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/rocksndiamonds/default.nix49
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/rogue/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/rrootage/default.nix81
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/runelite/default.nix53
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/sauerbraten/default.nix56
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/scid-vs-pc/0001-put-fonts-in-out.patch77
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/scid-vs-pc/default.nix82
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/scid/default.nix57
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/scorched3d/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/scorched3d/file-existence.patch37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/scrolls/default.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/scummvm/default.nix42
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/scummvm/games.nix155
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/sfrotz/default.nix69
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/sgt-puzzles/default.nix73
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/sgt-puzzles/default.upstream5
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/shattered-pixel-dungeon/default.nix83
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/sienna/default.nix59
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/sil/default.nix63
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/simutrans/default.nix171
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/sm64ex/default.nix69
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/snake4/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/snipes/default.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/soi/default.nix28
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/solarus/default.nix44
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/space-orbit/default.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/speed-dreams/default.nix73
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/spring/default.nix65
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/spring/fix-certs.patch11
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/spring/revert_58b423e.patch16
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/spring/springlobby.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/stardust/default.nix33
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/steam/build-wrapped.sh47
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/steam/default.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/steam/fhsenv.nix286
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/steam/fonts.nix19
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/steam/runtime-wrapped.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/steam/runtime.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/steam/steam.nix39
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/steam/steamcmd.nix46
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/steam/steamcmd.sh27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/stepmania/default.nix44
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/stockfish/default.nix49
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/stuntrally/default.nix43
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/super-tux-kart/default.nix92
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/supertux/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/system-syzygy/default.nix43
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/t4kcommon/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/taisei/0001-lto-fix.patch13
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/taisei/default.nix46
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tcl2048/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tdm/default.nix105
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/teetertorture/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/teeworlds/default.nix57
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tennix/default.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tennix/fix_FTBFS.patch288
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/terraria-server/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tes3cmd/default.nix28
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/the-butterfly-effect/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/the-powder-toy/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tibia/default.nix57
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tintin/default.nix30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tinyfugue/default.nix37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tome2/default.nix51
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tome4/default.nix80
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/toppler/default.nix31
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/torcs/default.nix50
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tr-patcher/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/trackballs/default.nix24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tremulous/default.nix81
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tremulous/parse.patch21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/trigger/default.nix54
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tuxpaint/default.nix52
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tuxpaint/tuxpaint-completion.diff16
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/tuxtype/default.nix43
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/typespeed/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/typespeed/typespeed-config-in-home.patch148
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ue4/cdn-deps.nix7028
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ue4/default.nix83
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ue4/generate-expr-from-cdn.sh37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ue4demos/default.nix195
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ufoai/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ultimatestunts/default.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ultrastardx/default.nix73
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/unnethack/default.nix68
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/uqm/3dovideo.nix61
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/uqm/default.nix109
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/urbanterror/default.nix74
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ut2004/default.nix9
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ut2004/demo.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/ut2004/wrapper.nix46
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/vapor/default.nix61
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/vassal/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/vdrift/0001-Ignore-missing-data-for-installation.patch27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/vdrift/default.nix61
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/vectoroids/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/vessel/default.nix83
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/vessel/isatty.c6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/vitetris/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/vms-empire/default.nix42
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/voxelands/default.nix64
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/warmux/default.nix37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/warsow/default.nix38
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/warsow/engine.nix53
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/warsow/libpath.patch28
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/warzone2100/default.nix68
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/wesnoth/default.nix43
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/widelands/bincmake.patch21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/widelands/default.nix58
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/worldofgoo/default.nix76
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/wyvern/cargo-lock.patch2514
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/wyvern/default.nix36
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xbill/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xboard/default.nix35
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xboard/default.upstream1
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xbomb/default.nix22
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xconq/default.nix54
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xcowsay/default.nix40
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xjump/darwin.patch21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xjump/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xmage/default.nix41
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xmoto/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xonotic/default.nix161
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xpilot/bloodspilot-client.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xpilot/bloodspilot-server.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xpilot/default.nix20
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xpilot/server-gcc5.patch65
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xskat/default.nix38
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xsnow/default.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xsok/default.nix47
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xsokoban/default.nix54
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/xtris/default.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zandronum/add_gitinfo.patch15
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zandronum/default.nix84
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zandronum/dont_update_gitinfo.patch19
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zandronum/fmod.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zandronum/sqlite.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zandronum/zan_configure_impurity.patch65
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zangband/default.nix58
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zaz/default.nix58
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zdoom/bcc-git.nix31
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zdoom/bcc-warning-fix.patch25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zdoom/default.nix57
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zdoom/zdbsp.nix27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zod/default.nix45
-rw-r--r--infra/libkookie/nixpkgs/pkgs/games/zoom/default.nix29
494 files changed, 35412 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/games/0ad/data.nix b/infra/libkookie/nixpkgs/pkgs/games/0ad/data.nix
new file mode 100644
index 000000000000..eeedae924405
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/0ad/data.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, zeroad-unwrapped }:
+
+stdenv.mkDerivation rec {
+ pname = "0ad-data";
+ inherit (zeroad-unwrapped) version;
+
+ src = fetchurl {
+ url = "http://releases.wildfiregames.com/0ad-${version}-alpha-unix-data.tar.xz";
+ sha256 = "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1";
+ };
+
+ installPhase = ''
+ rm binaries/data/tools/fontbuilder/fonts/*.txt
+ mkdir -p $out/share/0ad
+ cp -r binaries/data $out/share/0ad/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A free, open-source game of ancient warfare -- data files";
+ homepage = "https://play0ad.com/";
+ license = licenses.cc-by-sa-30;
+ platforms = platforms.linux;
+ hydraPlatforms = [];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/0ad/default.nix b/infra/libkookie/nixpkgs/pkgs/games/0ad/default.nix
new file mode 100644
index 000000000000..d53942766bb2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/0ad/default.nix
@@ -0,0 +1,14 @@
+{ wxGTK, newScope }:
+
+let
+ callPackage = newScope self;
+
+ self = {
+ zeroad-unwrapped = callPackage ./game.nix { inherit wxGTK; };
+
+ zeroad-data = callPackage ./data.nix { };
+
+ zeroad = callPackage ./wrapper.nix { };
+ };
+
+in self
diff --git a/infra/libkookie/nixpkgs/pkgs/games/0ad/game.nix b/infra/libkookie/nixpkgs/pkgs/games/0ad/game.nix
new file mode 100644
index 000000000000..4c9ad7068878
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/0ad/game.nix
@@ -0,0 +1,102 @@
+{ stdenv, lib, perl, fetchurl, python2
+, pkgconfig, spidermonkey_38, boost, icu, libxml2, libpng, libsodium
+, libjpeg, zlib, curl, libogg, libvorbis, enet, miniupnpc
+, openal, libGLU, libGL, xorgproto, libX11, libXcursor, nspr, SDL2
+, gloox, nvidia-texture-tools
+, withEditor ? true, wxGTK ? null
+}:
+
+assert withEditor -> wxGTK != null;
+
+stdenv.mkDerivation rec {
+ pname = "0ad";
+ version = "0.0.23b";
+
+ src = fetchurl {
+ url = "http://releases.wildfiregames.com/0ad-${version}-alpha-unix-build.tar.xz";
+ sha256 = "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1";
+ };
+
+ nativeBuildInputs = [ python2 perl pkgconfig ];
+
+ buildInputs = [
+ spidermonkey_38 boost icu libxml2 libpng libjpeg
+ zlib curl libogg libvorbis enet miniupnpc openal
+ libGLU libGL xorgproto libX11 libXcursor nspr SDL2 gloox
+ nvidia-texture-tools libsodium
+ ] ++ lib.optional withEditor wxGTK;
+
+ NIX_CFLAGS_COMPILE = toString [
+ "-I${xorgproto}/include/X11"
+ "-I${libX11.dev}/include/X11"
+ "-I${libXcursor.dev}/include/X11"
+ "-I${SDL2}/include/SDL2"
+ ];
+
+ patches = [
+ ./rootdir_env.patch
+ # Fixes build with spidermonkey-38.8.0, includes the minor version check:
+ # https://src.fedoraproject.org/rpms/0ad/c/26dc1657f6e3c0ad9f1180ca38cd79b933ef0c8b
+ (fetchurl {
+ url = "https://src.fedoraproject.org/rpms/0ad/raw/26dc1657f6e3c0ad9f1180ca38cd79b933ef0c8b/f/0ad-mozjs-incompatible.patch";
+ sha256 = "1rzpaalcrzihsgvlk3nqd87n2kxjldlwvb3qp5fcd5ffzr6k90wa";
+ })
+ ];
+
+ configurePhase = ''
+ # Delete shipped libraries which we don't need.
+ rm -rf libraries/source/{enet,miniupnpc,nvtt,spidermonkey}
+
+ # Workaround invalid pkgconfig name for mozjs
+ mkdir pkgconfig
+ ln -s ${spidermonkey_38}/lib/pkgconfig/* pkgconfig/mozjs-38.pc
+ PKG_CONFIG_PATH="$PWD/pkgconfig:$PKG_CONFIG_PATH"
+
+ # Update Makefiles
+ pushd build/workspaces
+ ./update-workspaces.sh \
+ --with-system-nvtt \
+ --with-system-mozjs38 \
+ ${lib.optionalString withEditor "--enable-atlas"} \
+ --bindir="$out"/bin \
+ --libdir="$out"/lib/0ad \
+ --without-tests \
+ -j $NIX_BUILD_CORES
+ popd
+
+ # Move to the build directory.
+ pushd build/workspaces/gcc
+ '';
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ popd
+
+ # Copy executables.
+ install -Dm755 binaries/system/pyrogenesis "$out"/bin/0ad
+ ${lib.optionalString withEditor ''
+ install -Dm755 binaries/system/ActorEditor "$out"/bin/ActorEditor
+ ''}
+
+ # Copy l10n data.
+ install -Dm755 -t $out/share/0ad/data/l10n binaries/data/l10n/*
+
+ # Copy libraries.
+ install -Dm644 -t $out/lib/0ad binaries/system/*.so
+
+ # Copy icon.
+ install -D build/resources/0ad.png $out/share/icons/hicolor/128x128/0ad.png
+ install -D build/resources/0ad.desktop $out/share/applications/0ad.desktop
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A free, open-source game of ancient warfare";
+ homepage = "https://play0ad.com/";
+ license = with licenses; [
+ gpl2 lgpl21 mit cc-by-sa-30
+ licenses.zlib # otherwise masked by pkgs.zlib
+ ];
+ platforms = subtractLists platforms.i686 platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/0ad/rootdir_env.patch b/infra/libkookie/nixpkgs/pkgs/games/0ad/rootdir_env.patch
new file mode 100644
index 000000000000..c001473e5104
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/0ad/rootdir_env.patch
@@ -0,0 +1,38 @@
+diff -ru3 0ad-0.0.20-alpha/source/ps/GameSetup/Paths.cpp 0ad-0.0.20-alpha-new/source/ps/GameSetup/Paths.cpp
+--- 0ad-0.0.20-alpha/source/ps/GameSetup/Paths.cpp 2015-02-14 04:45:13.000000000 +0300
++++ 0ad-0.0.20-alpha-new/source/ps/GameSetup/Paths.cpp 2016-11-03 16:23:47.241514876 +0300
+@@ -155,32 +155,8 @@
+
+ /*static*/ OsPath Paths::Root(const OsPath& argv0)
+ {
+-#if OS_ANDROID
+- return OsPath("/sdcard/0ad"); // TODO: this is kind of bogus
+-#else
+-
+- // get full path to executable
+- OsPath pathname = sys_ExecutablePathname(); // safe, but requires OS-specific implementation
+- if(pathname.empty()) // failed, use argv[0] instead
+- {
+- errno = 0;
+- pathname = wrealpath(argv0);
+- if(pathname.empty())
+- WARN_IF_ERR(StatusFromErrno());
+- }
+-
+- // make sure it's valid
+- if(!FileExists(pathname))
+- {
+- LOGERROR("Cannot find executable (expected at '%s')", pathname.string8());
+- WARN_IF_ERR(StatusFromErrno());
+- }
+-
+- for(size_t i = 0; i < 2; i++) // remove "system/name.exe"
+- pathname = pathname.Parent();
+- return pathname;
+-
+-#endif
++ UNUSED2(argv0);
++ return getenv("ZEROAD_ROOTDIR");
+ }
+
+ /*static*/ OsPath Paths::RootData(const OsPath& argv0)
diff --git a/infra/libkookie/nixpkgs/pkgs/games/0ad/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/games/0ad/wrapper.nix
new file mode 100644
index 000000000000..ca7c8e16e3c5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/0ad/wrapper.nix
@@ -0,0 +1,21 @@
+{ buildEnv, makeWrapper, zeroad-unwrapped, zeroad-data }:
+
+assert zeroad-unwrapped.version == zeroad-data.version;
+
+buildEnv {
+ name = "zeroad-${zeroad-unwrapped.version}";
+ inherit (zeroad-unwrapped) meta;
+
+ buildInputs = [ makeWrapper ];
+
+ paths = [ zeroad-unwrapped zeroad-data ];
+
+ pathsToLink = [ "/" "/bin" ];
+
+ postBuild = ''
+ for i in $out/bin/*; do
+ wrapProgram "$i" \
+ --set ZEROAD_ROOTDIR "$out/share/0ad"
+ done
+ '';
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/1oom/default.nix b/infra/libkookie/nixpkgs/pkgs/games/1oom/default.nix
new file mode 100644
index 000000000000..70c21a3cc1d8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/1oom/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitLab, autoreconfHook, libsamplerate, SDL2, SDL2_mixer, readline }:
+
+stdenv.mkDerivation rec {
+ pname = "1oom";
+ version = "1.0";
+
+ src = fetchFromGitLab {
+ owner = "KilgoreTroutMaskReplicant";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "sha256-+HwSykSyAGHtITVOu4nIG87kWwVxGyFXb/NRSjhWlvs=";
+ };
+
+ nativeBuildInputs = [ autoreconfHook ];
+ buildInputs = [ libsamplerate SDL2 SDL2_mixer readline ];
+
+ outputs = [ "out" "doc" ];
+
+ postInstall = ''
+ install -d $doc/share/doc/${pname}
+ install -t $doc/share/doc/${pname} \
+ HACKING NEWS PHILOSOPHY README doc/*.txt
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://kilgoretroutmaskreplicant.gitlab.io/plain-html/";
+ description = "Master of Orion (1993) game engine recreation";
+ license = licenses.gpl2Only;
+ platforms = platforms.linux;
+ maintainers = [ maintainers.AndersonTorres ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/2048-in-terminal/default.nix b/infra/libkookie/nixpkgs/pkgs/games/2048-in-terminal/default.nix
new file mode 100644
index 000000000000..446252062fac
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/2048-in-terminal/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, ncurses }:
+
+stdenv.mkDerivation rec {
+ pname = "2048-in-terminal";
+ version = "2017-11-29";
+
+ src = fetchFromGitHub {
+ sha256 = "1cqv5z1i5zcrvj0w6pdfnnff8m6kjndqxwkwsw5ma9jz503bmyc6";
+ rev = "4e525066b0ef3442e92d2ba8dd373bdc205ece28";
+ repo = "2048-in-terminal";
+ owner = "alewmoose";
+ };
+
+ buildInputs = [ ncurses ];
+
+ prePatch = ''
+ sed -i '1i#include <fcntl.h>\n' save.c
+ '';
+
+ enableParallelBuilding = true;
+
+ preInstall = ''
+ mkdir -p $out/bin
+ '';
+ installFlags = [ "DESTDIR=$(out)/bin" ];
+
+ meta = with stdenv.lib; {
+ inherit (src.meta) homepage;
+ description = "Animated console version of the 2048 game";
+ license = licenses.mit;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/20kly/default.nix b/infra/libkookie/nixpkgs/pkgs/games/20kly/default.nix
new file mode 100644
index 000000000000..8c81b8b2360e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/20kly/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, fetchurl
+, python }:
+
+python.pkgs.buildPythonApplication rec {
+ pname = "20kly";
+ version = "1.4";
+ format = "other";
+ disabled = !(python.isPy2 or false);
+
+ src = fetchurl {
+ url = "http://jwhitham.org.uk/20kly/lightyears-${version}.tar.bz2";
+ sha256 = "13h73cmfjqkipffimfc4iv0hf89if490ng6vd6xf3wcalpgaim5d";
+ };
+
+ patchPhase = ''
+ substituteInPlace lightyears \
+ --replace \
+ "LIGHTYEARS_DIR = \".\"" \
+ "LIGHTYEARS_DIR = \"$out/share\""
+ '';
+
+ propagatedBuildInputs = with python.pkgs; [ pygame ];
+
+ buildPhase = "python -O -m compileall .";
+
+ installPhase = ''
+ mkdir -p "$out/share"
+ cp -r audio code data lightyears "$out/share"
+ install -Dm755 lightyears "$out/bin/lightyears"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A steampunk-themed strategy game where you have to manage a steam supply network";
+ homepage = "http://jwhitham.org.uk/20kly/";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ fgaz ];
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/90secondportraits/default.nix b/infra/libkookie/nixpkgs/pkgs/games/90secondportraits/default.nix
new file mode 100644
index 000000000000..334a7f873bb8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/90secondportraits/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchurl, love, lua, makeWrapper, makeDesktopItem }:
+
+let
+ pname = "90secondportraits";
+ version = "1.01b";
+
+ icon = fetchurl {
+ url = "http://tangramgames.dk/img/thumb/90secondportraits.png";
+ sha256 = "13k6cq8s7jw77j81xfa5ri41445m778q6iqbfplhwdpja03c6faw";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "90secondportraits";
+ exec = pname;
+ icon = icon;
+ comment = "A silly speed painting game";
+ desktopName = "90 Second Portraits";
+ genericName = "90secondportraits";
+ categories = "Game;";
+ };
+
+in
+
+stdenv.mkDerivation {
+ name = "${pname}-${version}";
+
+ src = fetchurl {
+ url = "https://github.com/SimonLarsen/90-Second-Portraits/releases/download/${version}/${pname}-${version}.love";
+ sha256 = "0jj3k953r6vb02212gqcgqpb4ima87gnqgls43jmylxq2mcm33h5";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+ buildInputs = [ lua love ];
+
+ phases = "installPhase";
+
+ installPhase =
+ ''
+ mkdir -p $out/bin
+ mkdir -p $out/share/games/lovegames
+
+ cp -v $src $out/share/games/lovegames/${pname}.love
+
+ makeWrapper ${love}/bin/love $out/bin/${pname} --add-flags $out/share/games/lovegames/${pname}.love
+
+ chmod +x $out/bin/${pname}
+ mkdir -p $out/share/applications
+ ln -s ${desktopItem}/share/applications/* $out/share/applications/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A silly speed painting game";
+ maintainers = with maintainers; [ leenaars ];
+ platforms = platforms.linux;
+ license = licenses.free;
+ downloadPage = "http://tangramgames.dk/games/90secondportraits";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/abbaye-des-morts/default.nix b/infra/libkookie/nixpkgs/pkgs/games/abbaye-des-morts/default.nix
new file mode 100644
index 000000000000..103b67e99edf
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/abbaye-des-morts/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, SDL2, SDL2_image, SDL2_mixer }:
+
+stdenv.mkDerivation rec {
+ pname = "abbaye-des-morts";
+ version = "2.0.1";
+
+ src = fetchFromGitHub {
+ owner = "nevat";
+ repo = "abbayedesmorts-gpl";
+ rev = "v${version}";
+ sha256 = "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb";
+ };
+
+ buildInputs = [ SDL2 SDL2_image SDL2_mixer ];
+
+ makeFlags = [ "PREFIX=$(out)" "DESTDIR=" ];
+
+ preBuild = stdenv.lib.optionalString stdenv.cc.isClang
+ ''
+ substituteInPlace Makefile \
+ --replace -fpredictive-commoning ""
+ '';
+
+ preInstall = ''
+ mkdir -p $out/bin
+ mkdir -p $out/share/applications
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://locomalito.com/abbaye_des_morts.php";
+ description = "A retro arcade video game";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.marius851000 ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/adom/default.nix b/infra/libkookie/nixpkgs/pkgs/games/adom/default.nix
new file mode 100644
index 000000000000..055959fff2d0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/adom/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchurl, patchelf, zlib, libmad, libpng12, libcaca, libGLU, libGL, alsaLib, libpulseaudio
+, xorg }:
+
+let
+
+ inherit (xorg) libXext libX11;
+
+ lpath = "${stdenv.cc.cc.lib}/lib64:" + stdenv.lib.makeLibraryPath [
+ zlib libmad libpng12 libcaca libXext libX11 libGLU libGL alsaLib libpulseaudio];
+
+in
+stdenv.mkDerivation rec {
+ name = "adom-${version}-noteye";
+ version = "1.2.0_pre23";
+
+ src = fetchurl {
+ url = "http://ancardia.uk.to/download/adom_noteye_linux_ubuntu_64_${version}.tar.gz";
+ sha256 = "0sbn0csaqb9cqi0z5fdwvnymkf84g64csg0s9mm6fzh0sm2mi0hz";
+ };
+
+ buildCommand = ''
+ . $stdenv/setup
+
+ unpackPhase
+
+ mkdir -pv $out
+ cp -r -t $out adom/*
+
+ chmod u+w $out/lib
+ for l in $out/lib/*so* ; do
+ chmod u+w $l
+ ${patchelf}/bin/patchelf \
+ --set-rpath "$out/lib:${lpath}" \
+ $l
+ done
+
+ ${patchelf}/bin/patchelf \
+ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+ --set-rpath "$out/lib:${lpath}" \
+ $out/adom
+
+ mkdir $out/bin
+ cat >$out/bin/adom <<EOF
+ #! ${stdenv.shell}
+ (cd $out; exec $out/adom ; )
+ EOF
+ chmod +x $out/bin/adom
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A rogue-like game with nice graphical interface";
+ homepage = "http://adom.de/";
+ license = licenses.unfreeRedistributable;
+ maintainers = [maintainers.smironov];
+
+ # Please, notify me (smironov) if you need the x86 version
+ platforms = ["x86_64-linux"];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/airstrike/default.nix b/infra/libkookie/nixpkgs/pkgs/games/airstrike/default.nix
new file mode 100644
index 000000000000..10dfc7501fb7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/airstrike/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, makeWrapper, SDL, SDL_image }:
+
+stdenv.mkDerivation rec {
+ pname = "airstrike-pre";
+ version = "6a";
+
+ src = fetchurl {
+ url = "https://icculus.org/airstrike/airstrike-pre${version}-src.tar.gz";
+ sha256 = "1h6rv2zcp84ycmd0kv1pbpqjgwx57dw42x7878d2c2vnpi5jn8qi";
+ };
+
+ buildInputs = [ makeWrapper SDL SDL_image ];
+
+ NIX_LDFLAGS = "-lm";
+
+ installPhase = ''
+ ls -l
+ mkdir -p $out/bin
+ cp airstrike $out/bin
+
+ mkdir -p $out/share
+ cp -r data airstrikerc $out/share
+
+ wrapProgram $out/bin/airstrike \
+ --run "cd $out/share"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A 2d dogfighting game";
+ homepage = "https://icculus.org/airstrike/";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ pSub ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alephone/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alephone/default.nix
new file mode 100644
index 000000000000..879571df7a13
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alephone/default.nix
@@ -0,0 +1,98 @@
+{ stdenv, fetchurl, boost, curl, ffmpeg, icoutils, libmad, libogg, libpng
+, libsndfile, libvorbis, lua, pkgconfig, SDL, SDL_image, SDL_net, SDL_ttf, smpeg
+, speex, zziplib, zlib, makeWrapper, makeDesktopItem, unzip, alephone }:
+
+let
+ self = stdenv.mkDerivation rec {
+ outputs = [ "out" "icons" ];
+ pname = "alephone";
+ version = "20150620";
+
+ src = fetchurl {
+ url =
+ "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${version}/AlephOne-${version}.tar.bz2";
+ sha256 = "0cz18fa3gx8mz5j09ywz8gq0r4q082kh6l9pbpwn8qjanzgn1wy0";
+ };
+
+ nativeBuildInputs = [ pkgconfig icoutils ];
+
+ buildInputs = [
+ boost
+ curl
+ ffmpeg
+ libmad
+ libsndfile
+ libogg
+ libpng
+ libvorbis
+ lua
+ SDL
+ SDL_image
+ SDL_net
+ SDL_ttf
+ smpeg
+ speex
+ zziplib
+ zlib
+ ];
+
+ configureFlags = [ "--with-boost=${boost}" ];
+
+ enableParallelBuilding = true;
+
+ postInstall = ''
+ mkdir $icons
+ icotool -x -i 5 -o $icons Resources/Windows/*.ico
+ pushd $icons
+ for x in *_5_48x48x32.png; do
+ mv $x ''${x%_5_48x48x32.png}.png
+ done
+ popd
+ '';
+
+ meta = with stdenv.lib; {
+ description =
+ "Aleph One is the open source continuation of Bungie’s Marathon 2 game engine";
+ homepage = "https://alephone.lhowon.org/";
+ license = with licenses; [ gpl3 ];
+ maintainers = with maintainers; [ ehmry ];
+ platforms = platforms.linux;
+ };
+ };
+
+in self // {
+ makeWrapper = { pname, desktopName, version, zip, meta
+ , icon ? alephone.icons + "/alephone.png", ... }@extraArgs:
+ stdenv.mkDerivation ({
+ inherit pname version;
+
+ desktopItem = makeDesktopItem {
+ name = desktopName;
+ exec = pname;
+ genericName = pname;
+ categories = "Game;";
+ comment = meta.description;
+ inherit desktopName icon;
+ };
+
+ src = zip;
+
+ nativeBuildInputs = [ makeWrapper unzip ];
+
+ dontConfigure = true;
+ dontBuild = true;
+
+ installPhase = ''
+ mkdir -p $out/bin $out/data/$pname $out/share/applications
+ cp -a * $out/data/$pname
+ cp $desktopItem/share/applications/* $out/share/applications
+ makeWrapper ${alephone}/bin/alephone $out/bin/$pname \
+ --add-flags $out/data/$pname
+ '';
+
+ meta = alephone.meta // {
+ license = stdenv.lib.licenses.free;
+ hydraPlatforms = [ ];
+ } // meta;
+ });
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alephone/durandal/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alephone/durandal/default.nix
new file mode 100644
index 000000000000..cd5450d1c2e4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alephone/durandal/default.nix
@@ -0,0 +1,25 @@
+{ alephone, fetchurl }:
+
+alephone.makeWrapper rec {
+ pname = "durandal";
+ desktopName = "Marathon-Durandal";
+ version = "20150620";
+ icon = alephone.icons + "/marathon2.png";
+
+ zip = fetchurl {
+ url =
+ "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${version}/Marathon2-${version}-Data.zip";
+ sha256 = "1gpg0dk3z8irvdkm4nj71v14lqx77109chqr2ly594jqf6j9wwqv";
+ };
+
+ meta = {
+ description = "Second chapter of the Marathon trilogy";
+ longDescription = ''
+ Fresh from your triumph on the starship Marathon, you are seized by the rogue computer Durandal to do his bidding in a distant part of the galaxy. Within the ruins of an ancient civilization, you must seek the remnants of a lost clan and uncover their long-buried secrets. Battle opponents ancient and terrible, with sophisticated weapons and devious strategies, all the while struggling to escape the alien nightmare…
+
+ This release of Marathon 2: Durandal includes the classic graphics, and revamped high-definition textures and monsters from the Xbox Live Arcade edition.
+ '';
+ homepage = "https://alephone.lhowon.org/games/marathon2.html";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alephone/eternal/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alephone/eternal/default.nix
new file mode 100644
index 000000000000..c21284150618
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alephone/eternal/default.nix
@@ -0,0 +1,21 @@
+{ alephone, fetchurl, unrar }:
+
+alephone.makeWrapper rec {
+ pname = "marathon-eternal";
+ version = "1.2.0";
+ desktopName = "Marathon-Eternal";
+
+ zip = fetchurl {
+ url = "http://eternal.bungie.org/files/_releases/EternalXv120.zip";
+ sha256 = "1qrvx0sp9xc8zbpp5yz8jdz458ajzmyv2si7hrppiyawc8dpcwck";
+ };
+
+ sourceRoot = "Eternal 1.2.0";
+
+ meta = {
+ description =
+ "Picking up from the end of the Marathon trilogy, you find yourself suddenly ninety-four years in the future, in the year 2905";
+ homepage = "http://eternal.bungie.org/";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alephone/evil/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alephone/evil/default.nix
new file mode 100644
index 000000000000..a0120348c14e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alephone/evil/default.nix
@@ -0,0 +1,18 @@
+{ alephone, fetchurl, unrar }:
+
+alephone.makeWrapper rec {
+ pname = "marathon-evil";
+ version = "0";
+ desktopName = "Marathon-Evil";
+
+ zip = fetchurl {
+ url = "http://files3.bungie.org/trilogy/MarathonEvil.zip";
+ sha256 = "08nizbjp2rx10bpqrbhb76as0j2zynmy2c0qa5b482lz1szf9b95";
+ };
+
+ meta = {
+ description = "The first conversion for Marathon Infinity";
+ homepage = "https://alephone.lhowon.org/scenarios.html";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alephone/infinity/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alephone/infinity/default.nix
new file mode 100644
index 000000000000..fc3500d0eb94
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alephone/infinity/default.nix
@@ -0,0 +1,25 @@
+{ alephone, fetchurl }:
+
+alephone.makeWrapper rec {
+ pname = "marathon-infinity";
+ desktopName = "Marathon-Infinity";
+ version = "20190331";
+ icon = alephone.icons + "/marathon-infinity.png";
+
+ zip = fetchurl {
+ url =
+ "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${version}/MarathonInfinity-${version}-Data.zip";
+ sha256 = "03vn91arnsm71dakbfzrdfwpwh5vkwildl7i16xqi1apinmvvh86";
+ };
+
+ meta = {
+ description = "Third chapter of the Marathon trilogy";
+ longDescription = ''
+ Marathon Infinity takes the closed universe of the Marathon series and blows it wide open. The solo/co-op campaign, “Blood Tides of Lh’owon,†is a 20-level scenario sporting new textures, weapons, and aliens. More than that, the scenario sheds a surprising new light on the story’s characters and the meaning of events. Having defeated the Pfhor and reawakened the ancient remnants of the S’pht, the player now faces a world where friends become enemies and all is not what it seems…
+
+ Marathon Infinity is the most popular Marathon game in online play, and is compatible with hundreds of community-made maps. This release includes the classic graphics, and revamped high-definition textures and weapons.
+ '';
+ homepage = "https://alephone.lhowon.org/games/infinity.html";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alephone/marathon/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alephone/marathon/default.nix
new file mode 100644
index 000000000000..1d0787067afc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alephone/marathon/default.nix
@@ -0,0 +1,25 @@
+{ alephone, fetchurl }:
+
+alephone.makeWrapper rec {
+ pname = "marathon";
+ desktopName = "Marathon";
+ version = "20190331";
+ icon = alephone.icons + "/marathon.png";
+
+ zip = fetchurl {
+ url =
+ "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${version}/Marathon-${version}-Data.zip";
+ sha256 = "1d18a7hn8s50rqcs9i72ak5fq5a76hwk7nylfinrxjb134c9vlpz";
+ };
+
+ meta = {
+ description = "First chapter of the Marathon trilogy";
+ longDescription = ''
+ Alien forces have boarded the interstellar colony ship Marathon. The situation is dire. As a security officer onboard, it is your duty to defend the ship and its crew.
+
+ Experience the start of Bungie’s iconic trilogy with Marathon. This release uses the original Marathon data files for the most authentic experience outside of a classic Mac or emulator.
+ '';
+ homepage = "https://alephone.lhowon.org/games/marathon.html";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alephone/pathways-into-darkness/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alephone/pathways-into-darkness/default.nix
new file mode 100644
index 000000000000..6c6de4b88e8f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alephone/pathways-into-darkness/default.nix
@@ -0,0 +1,19 @@
+{ alephone, fetchurl }:
+
+alephone.makeWrapper rec {
+ pname = "pathways-into-darkness";
+ desktopName = "Pathways-Into-Darkness";
+ version = "1.1.1";
+
+ zip = fetchurl {
+ url = "http://simplici7y.com/version/file/1185/AOPID_v1.1.1.zip";
+ sha256 = "0x83xjcw5n5s7sw8z6rb6zzhihjkjgk7x7ynnqq917dcklr7bz4g";
+ };
+
+ meta = {
+ description = ''
+ Port of the 1993 mac game "Pathways Into Darkness" by Bungie to the Aleph One engine'';
+ homepage = "http://simplici7y.com/items/aleph-one-pathways-into-darkness";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alephone/pheonix/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alephone/pheonix/default.nix
new file mode 100644
index 000000000000..90db1aa7c73d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alephone/pheonix/default.nix
@@ -0,0 +1,18 @@
+{ alephone, fetchurl }:
+
+alephone.makeWrapper rec {
+ pname = "marathon-pheonix";
+ desktopName = "Marathon-Pheonix";
+ version = "1.3";
+
+ zip = fetchurl {
+ url = "http://simplici7y.com/version/file/998/Marathon_Phoenix_1.3.zip";
+ sha256 = "1r06k0z8km7l9d3njinsrci4jhk8hrnjdcmjd8n5z2qxkqvhn9qj";
+ };
+
+ meta = {
+ description = "A 35-level single player major Marathon conversion";
+ homepage = "http://www.simplici7y.com/items/marathon-phoenix-2";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alephone/red/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alephone/red/default.nix
new file mode 100644
index 000000000000..f24c9010cd63
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alephone/red/default.nix
@@ -0,0 +1,18 @@
+{ alephone, fetchurl, unrar }:
+
+alephone.makeWrapper rec {
+ pname = "marathon-red";
+ version = "0";
+ desktopName = "Marathon-Red";
+
+ zip = fetchurl {
+ url = "http://files3.bungie.org/trilogy/MarathonRED.zip";
+ sha256 = "1p13snlrvn39znvfkxql67crhysn71db2bwsfrkhjkq58wzs6qgw";
+ };
+
+ meta = {
+ description = "Survival horror-esque Marathon conversion";
+ homepage = "https://alephone.lhowon.org/scenarios.html";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alephone/rubicon-x/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alephone/rubicon-x/default.nix
new file mode 100644
index 000000000000..b59fa4cfeb62
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alephone/rubicon-x/default.nix
@@ -0,0 +1,23 @@
+{ alephone, fetchurl }:
+
+alephone.makeWrapper rec {
+ pname = "rubicon-x";
+ version = "20150620";
+ desktopName = "Marathon-Rubicon-X";
+
+ zip = fetchurl {
+ url = "http://files5.bungie.org/marathon/marathonRubiconX.zip";
+ sha256 = "095si89wap76pvkvk90zqw7djhrhwb1anjm2s8i503jbcn5n4ipm";
+ };
+
+ sourceRoot = "Rubicon X Æ’";
+
+ meta = {
+ description = "Unofficial forth chapter of the Marathon series";
+ longDescription = ''
+ Rubicon X is a free, cross platform, first person shooter that continues the story of Bungie’s Marathon trilogy. First released as Marathon:Rubicon in 2001, Rubicon X is a complete overhaul of the original. It features all new high-resolution artwork, new and updated maps, and enough surprises to feel like a whole new game.
+ '';
+ homepage = "http://www.marathonrubicon.com/";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/alienarena/default.nix b/infra/libkookie/nixpkgs/pkgs/games/alienarena/default.nix
new file mode 100644
index 000000000000..a28cf2508e28
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/alienarena/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, pkgconfig, libjpeg, libX11, libXxf86vm, curl, libogg
+, libvorbis, freetype, openal, libGL }:
+
+stdenv.mkDerivation {
+ name = "alienarena-7.65";
+
+ src = fetchurl {
+ url = "https://icculus.org/alienarena/Files/alienarena-7.65-linux20130207.tar.gz";
+ sha256 = "03nnv4m2xmswr0020hssajncdb8sy95jp5yccsm53sgxga4r8igg";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ libjpeg libX11 curl libogg libvorbis
+ freetype openal libGL libXxf86vm ];
+
+ patchPhase = ''
+ substituteInPlace ./configure \
+ --replace libopenal.so.1 ${openal}/lib/libopenal.so.1 \
+ --replace libGL.so.1 ${libGL}/lib/libGL.so.1
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A free, stand-alone first-person shooter computer game";
+ longDescription = ''
+ Do you like old school deathmatch with modern features? How
+ about rich, colorful, arcade-like atmospheres? How about retro
+ Sci-Fi? Then you're going to love what Alien Arena has in store
+ for you! This game combines some of the very best aspects of
+ such games as Quake III and Unreal Tournament and wraps them up
+ with a retro alien theme, while adding tons of original ideas to
+ make the game quite unique.
+ '';
+ homepage = "http://red.planetarena.org";
+ # Engine is under GPLv2, everything else is under
+ license = licenses.unfreeRedistributable;
+ maintainers = with maintainers; [ astsmtl ];
+ platforms = platforms.linux;
+ hydraPlatforms = [];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/amoeba/data.nix b/infra/libkookie/nixpkgs/pkgs/games/amoeba/data.nix
new file mode 100644
index 000000000000..f86ee71aa424
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/amoeba/data.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+ pname = "amoeba-data";
+ version = "1.1";
+
+ src = fetchurl {
+ url = "http://http.debian.net/debian/pool/non-free/a/amoeba-data/amoeba-data_${version}.orig.tar.gz";
+ sha256 = "1bgclr1v63n14bj9nwzm5zxg48nm0cla9bq1rbd5ylxra18k0jbg";
+ };
+
+ installPhase = ''
+ mkdir -p $out/share/amoeba
+ cp demo.dat $out/share/amoeba/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Fast-paced, polished OpenGL demonstration by Excess (data files)";
+ homepage = "https://packages.qa.debian.org/a/amoeba-data.html";
+ license = licenses.unfree;
+ maintainers = [ maintainers.dezgeg ];
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/amoeba/default.nix b/infra/libkookie/nixpkgs/pkgs/games/amoeba/default.nix
new file mode 100644
index 000000000000..8c4d9ef10926
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/amoeba/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, amoeba-data, alsaLib, expat, freetype, gtk2, libvorbis, libGLU, xorg, pkgconfig }:
+
+stdenv.mkDerivation rec {
+ name = "amoeba-${version}-${debver}";
+ version = "1.1";
+ debver = "29.1";
+
+ srcs = [
+ (fetchurl {
+ url = "http://http.debian.net/debian/pool/contrib/a/amoeba/amoeba_${version}.orig.tar.gz";
+ sha256 = "1hyycw4r36ryka2gab9vzkgs8gq4gqhk08vn29cwak95w0rahgim";
+ })
+ (fetchurl {
+ url = "http://http.debian.net/debian/pool/contrib/a/amoeba/amoeba_${version}-${debver}.debian.tar.xz";
+ sha256 = "1xgi2sqzq97w6hd3dcyq6cka8xmp6nr25qymzhk52cwqh7qb75p3";
+ })
+ ];
+ sourceRoot = "amoeba-1.1.orig";
+
+ prePatch = ''
+ patches="${./include-string-h.patch} $(echo ../debian/patches/*.diff)"
+ '';
+ postPatch = ''
+ sed -i packer/pakfile.cpp -e 's|/usr/share/amoeba|${amoeba-data}/share/amoeba|'
+ sed -i main/linux-config/linux-config.cpp -e 's|libgdk-x11-2.0.so.0|${gtk2}/lib/&|'
+ sed -i main/linux-config/linux-config.cpp -e 's|libgtk-x11-2.0.so.0|${gtk2}/lib/&|'
+ '';
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ alsaLib expat freetype gtk2 libvorbis libGLU xorg.libXxf86vm ];
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/man/man1/
+ cp amoeba $out/bin/
+ cp ../debian/amoeba.1 $out/share/man/man1/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Fast-paced, polished OpenGL demonstration by Excess";
+ homepage = "https://packages.qa.debian.org/a/amoeba.html";
+ license = licenses.gpl2; # Engine is GPLv2, data files in amoeba-data nonfree
+ maintainers = [ maintainers.dezgeg ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/amoeba/include-string-h.patch b/infra/libkookie/nixpkgs/pkgs/games/amoeba/include-string-h.patch
new file mode 100644
index 000000000000..828cab88d989
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/amoeba/include-string-h.patch
@@ -0,0 +1,12 @@
+diff --git a/image/png_image.cpp b/image/png_image.cpp
+index 37875fc..1531d6f 100644
+--- a/image/png_image.cpp
++++ b/image/png_image.cpp
+@@ -4,6 +4,7 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+
+ #include <png.h>
+ #include "png_image.h"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/among-sus/default.nix b/infra/libkookie/nixpkgs/pkgs/games/among-sus/default.nix
new file mode 100644
index 000000000000..c422ed1c8e52
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/among-sus/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchgit, port ? "1234" }:
+
+stdenv.mkDerivation {
+ pname = "among-sus-unstable";
+ version = "2020-10-29";
+
+ src = fetchgit {
+ url = "https://git.sr.ht/~martijnbraam/among-sus";
+ rev = "1f4c8d800d025d36ac66826937161be3252fbc57";
+ sha256 = "19jq7ygh9l11dl1h6702bg57m04y35nqd6yqx1rgp1kxwhp45xyh";
+ };
+
+ patchPhase = ''
+ sed -i 's/port = 1234/port = ${port}/g' main.c
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ install -Dm755 among-sus $out/bin
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://git.sr.ht/~martijnbraam/among-sus";
+ description = "Among us, but it's a text adventure";
+ license = licenses.agpl3Plus;
+ maintainers = [ maintainers.eyjhb ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/andyetitmoves/default.nix b/infra/libkookie/nixpkgs/pkgs/games/andyetitmoves/default.nix
new file mode 100644
index 000000000000..84c1f545a383
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/andyetitmoves/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, fetchurl, libvorbis, libogg, libtheora, SDL, libXft, SDL_image, zlib, libX11, libpng, openal, runtimeShell, requireFile, commercialVersion ? false }:
+
+let plainName = "andyetitmoves";
+ version = "1.2.2";
+in
+
+stdenv.mkDerivation {
+ name = "${plainName}-${version}";
+
+ src = if stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux"
+ then
+ let postfix = if stdenv.hostPlatform.system == "i686-linux" then "i386" else "x86_64";
+ commercialName = "${plainName}-${version}_${postfix}.tar.gz";
+ demoUrl = "http://www.andyetitmoves.net/demo/${plainName}Demo-${version}_${postfix}.tar.gz";
+ in
+ if commercialVersion
+ then requireFile {
+ message = ''
+ We cannot download the commercial version automatically, as you require a license.
+ Once you bought a license, you need to add your downloaded version to the nix store.
+ You can do this by using "nix-prefetch-url file:///\$PWD/${commercialName}" in the
+ directory where yousaved it.
+ '';
+ name = commercialName;
+ sha256 = if stdenv.hostPlatform.system == "i686-linux"
+ then "15wvzmmidvykwjrbnq70h5jrvnjx1hcrm0357qj85q4aqbzavh01"
+ else "1v8z16qa9ka8sf7qq45knsxj87s6sipvv3a7xq11pb5xk08fb2ql";
+ }
+ else fetchurl {
+ url = demoUrl;
+ sha256 = if stdenv.hostPlatform.system == "i686-linux"
+ then "0f14vrrbq05hsbdajrb5y9za65fpng1lc8f0adb4aaz27x7sh525"
+ else "0mg41ya0b27blq3b5498kwl4rj46dj21rcd7qd0rw1kyvr7sx4v4";
+ }
+ else
+ throw "And Yet It Moves nix package only supports linux and intel cpu's.";
+
+ phases = "unpackPhase installPhase";
+
+ installPhase = ''
+ mkdir -p $out/{opt/andyetitmoves,bin}
+ cp -r * $out/opt/andyetitmoves/
+
+ fullPath=${stdenv.cc.cc.lib}/lib64
+ for i in $nativeBuildInputs; do
+ fullPath=$fullPath''${fullPath:+:}$i/lib
+ done
+
+ binName=${if commercialVersion then "AndYetItMoves" else "AndYetItMovesDemo"}
+
+ patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) --set-rpath $fullPath $out/opt/andyetitmoves/lib/$binName
+ cat > $out/bin/$binName << EOF
+ #!${runtimeShell}
+ cd $out/opt/andyetitmoves
+ exec ./lib/$binName
+ EOF
+ chmod +x $out/bin/$binName
+ '';
+
+ buildInputs = [libvorbis libogg libtheora SDL libXft SDL_image zlib libX11 libpng openal];
+
+ meta = {
+ description = "Physics/Gravity Platform game";
+
+ longDescription = ''
+ And Yet It Moves is an award-winning physics-based platform game in which players rotate the game world at will to solve challenging puzzles. Tilting the world turns walls into floors, slides into platforms, and stacks of rocks into dangerous hazards.
+ '';
+
+ homepage = "http://www.andyetitmoves.net/";
+
+ license = stdenv.lib.licenses.unfree;
+
+ maintainers = with stdenv.lib.maintainers; [bluescreen303];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/angband/default.nix b/infra/libkookie/nixpkgs/pkgs/games/angband/default.nix
new file mode 100644
index 000000000000..937fd30d405a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/angband/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, ncurses5 }:
+
+stdenv.mkDerivation rec {
+ pname = "angband";
+ version = "4.2.1";
+
+ src = fetchFromGitHub {
+ owner = "angband";
+ repo = "angband";
+ rev = version;
+ sha256 = "174fphiywwb4yb3kqavwaysx7c97an2n8wjbm4p4d41i1svjsryz";
+ };
+
+ nativeBuildInputs = [ autoreconfHook ];
+ buildInputs = [ ncurses5 ];
+ installFlags = [ "bindir=$(out)/bin" ];
+
+ meta = with stdenv.lib; {
+ homepage = "http://rephial.org/";
+ description = "A single-player roguelike dungeon exploration game";
+ maintainers = [ maintainers.chattered ];
+ license = licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/anki/default.nix b/infra/libkookie/nixpkgs/pkgs/games/anki/default.nix
new file mode 100644
index 000000000000..0d713b1f71e1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/anki/default.nix
@@ -0,0 +1,201 @@
+{ stdenv
+, buildPythonApplication
+, lib
+, python
+, fetchurl
+, fetchFromGitHub
+, lame
+, mplayer
+, libpulseaudio
+, pyqtwebengine
+, decorator
+, beautifulsoup4
+, sqlalchemy
+, pyaudio
+, requests
+, markdown
+, matplotlib
+, pytest
+, glibcLocales
+, nose
+, jsonschema
+, setuptools
+, send2trash
+, CoreAudio
+ # This little flag adds a huge number of dependencies, but we assume that
+ # everyone wants Anki to draw plots with statistics by default.
+, plotsSupport ? true
+ # manual
+, asciidoc
+}:
+
+let
+ # when updating, also update rev-manual to a recent version of
+ # https://github.com/ankitects/anki-docs
+ # The manual is distributed independently of the software.
+ version = "2.1.15";
+ sha256-pkg = "12dvyf3j9df4nrhhnqbzd9b21rpzkh4i6yhhangn2zf7ch0pclss";
+ rev-manual = "8f6387867ac37ef3fe9d0b986e70f898d1a49139";
+ sha256-manual = "0pm5slxn78r44ggvbksz7rv9hmlnsvn9z811r6f63dsc8vm6mfml";
+
+ manual = stdenv.mkDerivation {
+ pname = "anki-manual";
+ inherit version;
+ src = fetchFromGitHub {
+ owner = "ankitects";
+ repo = "anki-docs";
+ rev = rev-manual;
+ sha256 = sha256-manual;
+ };
+ phases = [ "unpackPhase" "patchPhase" "buildPhase" ];
+ nativeBuildInputs = [ asciidoc ];
+ patchPhase = ''
+ # rsync isnt needed
+ # WEB is the PREFIX
+ # We remove any special ankiweb output generation
+ # and rename every .mako to .html
+ sed -e 's/rsync -a/cp -a/g' \
+ -e "s|\$(WEB)/docs|$out/share/doc/anki/html|" \
+ -e '/echo asciidoc/,/mv $@.tmp $@/c \\tasciidoc -b html5 -o $@ $<' \
+ -e 's/\.mako/.html/g' \
+ -i Makefile
+ # patch absolute links to the other language manuals
+ sed -e 's|https://apps.ankiweb.net/docs/|link:./|g' \
+ -i {manual.txt,manual.*.txt}
+ # there’s an artifact in most input files
+ sed -e '/<%def.*title.*/d' \
+ -i *.txt
+ mkdir -p $out/share/doc/anki/html
+ '';
+ };
+
+in
+buildPythonApplication rec {
+ pname = "anki";
+ inherit version;
+
+ src = fetchurl {
+ urls = [
+ "https://apps.ankiweb.net/downloads/current/${pname}-${version}-source.tgz"
+ # "https://apps.ankiweb.net/downloads/current/${name}-source.tgz"
+ # "http://ankisrs.net/download/mirror/${name}.tgz"
+ # "http://ankisrs.net/download/mirror/archive/${name}.tgz"
+ ];
+ sha256 = sha256-pkg;
+ };
+
+ outputs = [ "out" "doc" "man" ];
+
+ propagatedBuildInputs = [
+ pyqtwebengine
+ sqlalchemy
+ beautifulsoup4
+ send2trash
+ pyaudio
+ requests
+ decorator
+ markdown
+ jsonschema
+ setuptools
+ ]
+ ++ lib.optional plotsSupport matplotlib
+ ++ lib.optional stdenv.isDarwin [ CoreAudio ]
+ ;
+
+ checkInputs = [ pytest glibcLocales nose ];
+
+ nativeBuildInputs = [ pyqtwebengine.wrapQtAppsHook ];
+ buildInputs = [ lame mplayer libpulseaudio ];
+
+ patches = [
+ # Disable updated version check.
+ ./no-version-check.patch
+ ];
+
+ # Anki does not use setup.py
+ dontBuild = true;
+
+ postPatch = ''
+ # Remove QT translation files. We'll use the standard QT ones.
+ rm "locale/"*.qm
+
+ # hitting F1 should open the local manual
+ substituteInPlace anki/consts.py \
+ --replace 'HELP_SITE="http://ankisrs.net/docs/manual.html"' \
+ 'HELP_SITE="${manual}/share/doc/anki/html/manual.html"'
+ '';
+
+ # UTF-8 locale needed for testing
+ LC_ALL = "en_US.UTF-8";
+
+ # - Anki writes some files to $HOME during tests
+ # - Skip tests using network
+ checkPhase = ''
+ HOME=$TMP pytest --ignore tests/test_sync.py
+ '';
+
+ installPhase = ''
+ pp=$out/lib/${python.libPrefix}/site-packages
+
+ mkdir -p $out/bin
+ mkdir -p $out/share/applications
+ mkdir -p $doc/share/doc/anki
+ mkdir -p $man/share/man/man1
+ mkdir -p $out/share/mime/packages
+ mkdir -p $out/share/pixmaps
+ mkdir -p $pp
+
+ cat > $out/bin/anki <<EOF
+ #!${python}/bin/python
+ import aqt
+ aqt.run()
+ EOF
+ chmod 755 $out/bin/anki
+
+ cp -v anki.desktop $out/share/applications/
+ cp -v README* LICENSE* $doc/share/doc/anki/
+ cp -v anki.1 $man/share/man/man1/
+ cp -v anki.xml $out/share/mime/packages/
+ cp -v anki.{png,xpm} $out/share/pixmaps/
+ cp -rv locale $out/share/
+ cp -rv anki aqt web $pp/
+
+ # copy the manual into $doc
+ cp -r ${manual}/share/doc/anki/html $doc/share/doc/anki
+ '';
+
+ # now wrapPythonPrograms from postFixup will add both python and qt env variables
+ dontWrapQtApps = true;
+
+ preFixup = ''
+ makeWrapperArgs+=(
+ "''${qtWrapperArgs[@]}"
+ --prefix PATH ':' "${lame}/bin:${mplayer}/bin"
+ )
+ '';
+
+ passthru = {
+ inherit manual;
+ };
+
+ meta = with lib; {
+ homepage = "https://apps.ankiweb.net/";
+ description = "Spaced repetition flashcard program";
+ longDescription = ''
+ Anki is a program which makes remembering things easy. Because it is a lot
+ more efficient than traditional study methods, you can either greatly
+ decrease your time spent studying, or greatly increase the amount you learn.
+
+ Anyone who needs to remember things in their daily life can benefit from
+ Anki. Since it is content-agnostic and supports images, audio, videos and
+ scientific markup (via LaTeX), the possibilities are endless. For example:
+ learning a language, studying for medical and law exams, memorizing
+ people's names and faces, brushing up on geography, mastering long poems,
+ or even practicing guitar chords!
+ '';
+ license = licenses.agpl3Plus;
+ broken = stdenv.hostPlatform.isAarch64;
+ platforms = platforms.mesaPlatforms;
+ maintainers = with maintainers; [ oxij Profpatsch enzime ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/anki/no-version-check.patch b/infra/libkookie/nixpkgs/pkgs/games/anki/no-version-check.patch
new file mode 100644
index 000000000000..ce166b4b87d5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/anki/no-version-check.patch
@@ -0,0 +1,13 @@
+diff -Nurp anki-2.0.33.orig/aqt/main.py anki-2.0.33/aqt/main.py
+--- anki-2.0.33.orig/aqt/main.py 2016-01-05 21:37:53.904533750 +0100
++++ anki-2.0.33/aqt/main.py 2016-01-05 21:39:11.469175976 +0100
+@@ -820,6 +820,9 @@ title="%s">%s</button>''' % (
+ ##########################################################################
+
+ def setupAutoUpdate(self):
++ # Don't check for latest version since the versions are
++ # managed in Nixpkgs.
++ return
+ import aqt.update
+ self.autoUpdate = aqt.update.LatestVersionFinder(self)
+ self.connect(self.autoUpdate, SIGNAL("newVerAvail"), self.newVerAvail)
diff --git a/infra/libkookie/nixpkgs/pkgs/games/arena/default.nix b/infra/libkookie/nixpkgs/pkgs/games/arena/default.nix
new file mode 100644
index 000000000000..beba98b6316a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/arena/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, fetchurl, gtk2-x11, glib, pango, cairo, atk, gdk-pixbuf, libX11 }:
+
+# Arena is free software in the sense of "free beer" but not as in "free
+# speech". We can install it as we please, but we cannot re-distribute it in
+# any way other than the original release tarball, so we cannot include its NAR
+# into the Nixpkgs channel.
+
+let
+
+ inherit (stdenv.lib) makeLibraryPath;
+ libDir = "lib64";
+
+in
+stdenv.mkDerivation rec {
+ name = "arena-3.10-beta";
+
+ src = fetchurl {
+ url = "http://www.playwitharena.de/downloads/arenalinux_64bit_3.10beta.tar.gz";
+ sha256 = "1pzb9sg4lzbbi4gbldvlb85p8xyl9xnplxwyb9pkk2mwzvvxkf0d";
+ };
+
+ # stdenv.cc.cc.lib is in that list to pick up libstdc++.so. Is there a better way?
+ buildInputs = [gtk2-x11 glib pango cairo atk gdk-pixbuf libX11 stdenv.cc.cc.lib];
+
+ unpackPhase = ''
+ # This is is a tar bomb, i.e. it extract a dozen files and directories to
+ # the top-level, so we must create a sub-directory first.
+ mkdir -p $out/lib/${name}
+ tar -C $out/lib/${name} -xf ${src}
+
+ # Remove executable bits from data files. This matters for the find command
+ # we'll use below to find all bundled engines.
+ chmod -x $out/lib/${name}/Engines/*/*.{txt,bin,bmp,zip}
+ '';
+
+ buildPhase = ''
+ # Arena has (at least) two executables plus a couple of bundled chess
+ # engines that we need to patch.
+ exes=( $(find $out -name '*x86_64_linux')
+ $(find $out/lib/${name}/Engines -type f -perm /u+x)
+ )
+ for i in "''${exes[@]}"; do
+ # Arminius is statically linked.
+ if [[ $i =~ "Arminius_2017-01-01" ]]; then echo yo $i; continue; fi
+ echo Fixing interpreter and rpath paths in $i ...
+ patchelf \
+ --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+ --set-rpath ${makeLibraryPath buildInputs}:$(cat $NIX_CC/nix-support/orig-cc)/${libDir} \
+ $i
+ done
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ ln -s $out/lib/${name}/Arena_x86_64_linux $out/bin/arena
+ '';
+
+ dontStrip = true;
+
+ meta = {
+ description = "Chess GUI for analyzing with and playing against various engines";
+ longDescription = ''
+ A free Graphical User Interface (GUI) for chess. Arena assists you in
+ analyzing and playing games as well as in testing chess engines. It runs
+ on Linux or Windows. Arena is compatible to Winboard protocol I, II and
+ UCI protocol I, II. Furthermore, compatible to Chess960, DGT electronic
+ chess board & DGT clocks and much more.
+ '';
+ license = stdenv.lib.licenses.unfree;
+ platforms = ["x86_64-linux"];
+ hydraPlatforms = stdenv.lib.platforms.none;
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/armagetronad/default.nix b/infra/libkookie/nixpkgs/pkgs/games/armagetronad/default.nix
new file mode 100644
index 000000000000..d4d2cbef164d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/armagetronad/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, SDL, libxml2, SDL_image, libjpeg, libpng, libGLU, libGL, zlib }:
+
+let
+ versionMajor = "0.2.8";
+ versionMinor = "3.5";
+ version = "${versionMajor}.${versionMinor}";
+in
+
+stdenv.mkDerivation {
+ pname = "armagetron";
+ inherit version;
+ src = fetchurl {
+ url = "https://launchpad.net/armagetronad/${versionMajor}/${versionMajor}.${versionMinor}/+download/armagetronad-${version}.src.tar.bz2";
+ sha256 = "1vyja7mzivs3pacxb7kznndsgqhq4p0f7x2zg55dckvzqwprdhqx";
+ };
+
+ NIX_LDFLAGS = "-lSDL_image";
+
+ enableParallelBuilding = true;
+
+ configureFlags = [ "--disable-etc" ];
+ buildInputs = [ SDL SDL_image libxml2 libjpeg libpng libGLU libGL zlib ];
+
+ meta = with stdenv.lib; {
+ homepage = "http://armagetronad.org";
+ description = "An multiplayer networked arcade racing game in 3D similar to Tron";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/arx-libertatis/default.nix b/infra/libkookie/nixpkgs/pkgs/games/arx-libertatis/default.nix
new file mode 100644
index 000000000000..52935c96cdb4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/arx-libertatis/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchFromGitHub, cmake, zlib, boost
+, openal, glm, freetype, libGLU, SDL2, epoxy
+, dejavu_fonts, inkscape, optipng, imagemagick
+, withCrashReporter ? !stdenv.isDarwin
+, qtbase ? null
+, wrapQtAppsHook ? null
+, curl ? null
+, gdb ? null
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation {
+ pname = "arx-libertatis";
+ version = "2020-10-20";
+
+ src = fetchFromGitHub {
+ owner = "arx";
+ repo = "ArxLibertatis";
+ rev = "21df2e37664de79e117eff2af164873f05600f4c";
+ sha256 = "06plyyh0ddqv1j04m1vclz9j72609pgrp61v8wfjdcln8djm376i";
+ };
+
+ nativeBuildInputs = [
+ cmake inkscape imagemagick optipng
+ ] ++ optionals withCrashReporter [ wrapQtAppsHook ];
+
+ buildInputs = [
+ zlib boost openal glm
+ freetype libGLU SDL2 epoxy
+ ] ++ optionals withCrashReporter [ qtbase curl ]
+ ++ optionals stdenv.isLinux [ gdb ];
+
+ cmakeFlags = [
+ "-DDATA_DIR_PREFIXES=$out/share"
+ "-DImageMagick_convert_EXECUTABLE=${imagemagick.out}/bin/convert"
+ "-DImageMagick_mogrify_EXECUTABLE=${imagemagick.out}/bin/mogrify"
+ ];
+
+ enableParallelBuilding = true;
+ dontWrapQtApps = true;
+
+ postInstall = ''
+ ln -sf \
+ ${dejavu_fonts}/share/fonts/truetype/DejaVuSansMono.ttf \
+ $out/share/games/arx/misc/dejavusansmono.ttf
+ '' + optionalString withCrashReporter ''
+ wrapQtApp "$out/libexec/arxcrashreporter"
+ '';
+
+ meta = {
+ description = ''
+ A cross-platform, open source port of Arx Fatalis, a 2002
+ first-person role-playing game / dungeon crawler
+ developed by Arkane Studios.
+ '';
+ homepage = "https://arx-libertatis.org/";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ rnhmjoj ];
+ platforms = platforms.linux;
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/asc/default.nix b/infra/libkookie/nixpkgs/pkgs/games/asc/default.nix
new file mode 100644
index 000000000000..28b144a4e864
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/asc/default.nix
@@ -0,0 +1,40 @@
+{ fetchurl, stdenv, SDL, SDL_image, SDL_mixer, SDL_sound, libsigcxx, physfs
+, boost, expat, freetype, libjpeg, wxGTK, lua, perl, pkgconfig, zlib, zip, bzip2
+, libpng, libtiff, fluidsynth, libmikmod, libvorbis, flac, libogg }:
+
+stdenv.mkDerivation rec {
+ name = "asc-2.6.0.0";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/asc-hq/${name}.tar.bz2";
+ sha256 = "1fybasb6srqfg6pqbvh0s0vvzjq9r0n6aq0z44hs7n68kmaam775";
+ };
+
+ configureFlags = [ "--disable-paragui" "--disable-paraguitest" ];
+
+ NIX_CFLAGS_COMPILE = "-fpermissive"; # I'm too lazy to catch all gcc47-related problems
+ hardeningDisable = [ "format" ];
+
+ buildInputs = [
+ SDL SDL_image SDL_mixer SDL_sound libsigcxx physfs boost expat
+ freetype libjpeg wxGTK lua perl pkgconfig zlib zip bzip2 libpng
+ libtiff fluidsynth libmikmod flac libvorbis libogg
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Turn based strategy game";
+
+ longDescription = ''
+ Advanced Strategic Command is a free, turn based strategy game. It is
+ designed in the tradition of the Battle Isle series from Bluebyte and is
+ currently available for Windows and Linux.
+ '';
+
+ homepage = "http://www.asc-hq.org/";
+
+ license = licenses.gpl2Plus;
+
+ maintainers = with maintainers; [ raskin ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/assaultcube/default.nix b/infra/libkookie/nixpkgs/pkgs/games/assaultcube/default.nix
new file mode 100644
index 000000000000..423130a53561
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/assaultcube/default.nix
@@ -0,0 +1,72 @@
+{ fetchFromGitHub, stdenv, makeDesktopItem, openal, pkgconfig, libogg,
+ libvorbis, SDL, SDL_image, makeWrapper, zlib, file,
+ client ? true, server ? true }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+
+ # master branch has legacy (1.2.0.2) protocol 1201 and gcc 6 fix.
+ pname = "assaultcube";
+ version = "unstable-2018-05-20";
+
+ src = fetchFromGitHub {
+ owner = "assaultcube";
+ repo = "AC";
+ rev = "f58ea22b46b5013a520520670434b3c235212371";
+ sha256 = "1vfn3d55vmmipdykrcfvgk6dddi9y95vlclsliirm7jdp20f15hd";
+ };
+
+ nativeBuildInputs = [ makeWrapper pkgconfig ];
+
+ buildInputs = [ file zlib ] ++ optionals client [ openal SDL SDL_image libogg libvorbis ];
+
+ targets = (optionalString server "server") + (optionalString client " client");
+ makeFlags = [ "-C source/src" "CXX=c++" targets ];
+
+ desktop = makeDesktopItem {
+ name = "AssaultCube";
+ desktopName = "AssaultCube";
+ comment = "A multiplayer, first-person shooter game, based on the CUBE engine. Fast, arcade gameplay.";
+ genericName = "First-person shooter";
+ categories = "Game;ActionGame;Shooter";
+ icon = "assaultcube.png";
+ exec = pname;
+ };
+
+ gamedatadir = "/share/games/${pname}";
+
+ installPhase = ''
+
+ bindir=$out/bin
+
+ mkdir -p $bindir $out/$gamedatadir
+
+ cp -r config packages $out/$gamedatadir
+
+ if (test -e source/src/ac_client) then
+ cp source/src/ac_client $bindir
+ mkdir -p $out/share/applications
+ cp ${desktop}/share/applications/* $out/share/applications
+ install -Dpm644 packages/misc/icon.png $out/share/icons/assaultcube.png
+ install -Dpm644 packages/misc/icon.png $out/share/pixmaps/assaultcube.png
+
+ makeWrapper $out/bin/ac_client $out/bin/${pname} \
+ --run "cd $out/$gamedatadir" --add-flags "--home=\$HOME/.assaultcube/v1.2next --init"
+ fi
+
+ if (test -e source/src/ac_server) then
+ cp source/src/ac_server $bindir
+ makeWrapper $out/bin/ac_server $out/bin/${pname}-server \
+ --run "cd $out/$gamedatadir" --add-flags "-Cconfig/servercmdline.txt"
+ fi
+ '';
+
+ meta = {
+ description = "Fast and fun first-person-shooter based on the Cube fps";
+ homepage = "https://assault.cubers.net";
+ maintainers = [ ];
+ platforms = platforms.linux; # should work on darwin with a little effort.
+ license = stdenv.lib.licenses.zlib;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/astromenace/default.nix b/infra/libkookie/nixpkgs/pkgs/games/astromenace/default.nix
new file mode 100644
index 000000000000..7f1ca325746f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/astromenace/default.nix
@@ -0,0 +1,36 @@
+{ fetchurl, stdenv, cmake, xlibsWrapper, libGLU, libGL, SDL, openal, freealut, libogg, libvorbis, runtimeShell }:
+
+stdenv.mkDerivation rec {
+ version = "1.3.2";
+ pname = "astromenace";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/openastromenace/astromenace-src-${version}.tar.bz2";
+ sha256 = "1rkz6lwjcd5mwv72kf07ghvx6z46kf3xs250mjbmnmjpn7r5sxwv";
+ };
+
+ buildInputs = [ cmake xlibsWrapper libGLU libGL SDL openal freealut libogg libvorbis ];
+
+ buildPhase = ''
+ cmake ./
+ make
+ ./AstroMenace --pack --rawdata=../RAW_VFS_DATA
+ '';
+ installPhase = ''
+ mkdir -p $out/bin
+ cp AstroMenace $out
+ cp gamedata.vfs $out
+ cat > $out/bin/AstroMenace << EOF
+ #!${runtimeShell}
+ $out/AstroMenace --dir=$out
+ EOF
+ chmod 755 $out/bin/AstroMenace
+ '';
+
+ meta = {
+ description = "Hardcore 3D space shooter with spaceship upgrade possibilities";
+ homepage = "https://www.viewizard.com/";
+ license = stdenv.lib.licenses.gpl3;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/atanks/default.nix b/infra/libkookie/nixpkgs/pkgs/games/atanks/default.nix
new file mode 100644
index 000000000000..bb11acf38664
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/atanks/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, allegro }:
+
+stdenv.mkDerivation rec {
+ pname = "atanks";
+ version = "6.5";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/atanks/atanks/${pname}-${version}/${pname}-${version}.tar.gz";
+ sha256 = "0bijsbd51j4wsnmdxj54r92m7h8zqnvh9z3qqdig6zx7a8kjn61j";
+ };
+
+ buildInputs = [ allegro ];
+
+ makeFlags = [ "PREFIX=$(out)/" "INSTALL=install" "CXX=g++" ];
+
+ meta = with stdenv.lib; {
+ description = "Atomic Tanks ballistics game";
+ homepage = "http://atanks.sourceforge.net/";
+ maintainers = [ maintainers.raskin ];
+ platforms = platforms.linux;
+ license = licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/augustus/default.nix b/infra/libkookie/nixpkgs/pkgs/games/augustus/default.nix
new file mode 100644
index 000000000000..cabe419ef5bc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/augustus/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, cmake, SDL2, SDL2_mixer, libpng }:
+
+stdenv.mkDerivation rec {
+ pname = "augustus";
+ version = "1.4.1a";
+
+ src = fetchFromGitHub {
+ owner = "Keriew";
+ repo = "augustus";
+ rev = "v${version}";
+ sha256 = "1xqv8j8jh3f13fjhyf7hk1anrn799cwwsvsd75kpl9n5yh5s1j5y";
+ };
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ SDL2 SDL2_mixer libpng ];
+
+ meta = with stdenv.lib; {
+ description = "An open source re-implementation of Caesar III. Fork of Julius incorporating gameplay changes";
+ homepage = "https://github.com/Keriew/augustus";
+ license = licenses.agpl3;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ Thra11 ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/azimuth/default.nix b/infra/libkookie/nixpkgs/pkgs/games/azimuth/default.nix
new file mode 100644
index 000000000000..67bbd8558c3a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/azimuth/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, SDL, which, installTool ? false }:
+
+stdenv.mkDerivation rec {
+ pname = "azimuth";
+ version = "1.0.3";
+
+ src = fetchFromGitHub {
+ owner = "mdsteele";
+ repo = "azimuth";
+ rev = "v${version}";
+ sha256 = "1znfvpmqiixd977jv748glk5zc4cmhw5813zp81waj07r9b0828r";
+ };
+
+ nativeBuildInputs = [ which ];
+ buildInputs = [ SDL ];
+
+ preConfigure = ''
+ cat Makefile
+ substituteInPlace data/azimuth.desktop \
+ --replace Exec=azimuth "Exec=$out/bin/azimuth" \
+ --replace "Version=%AZ_VERSION_NUMBER" "Version=${version}"
+ '';
+
+ makeFlags = [
+ "BUILDTYPE=release"
+ "INSTALLDIR=$(out)"
+ ] ++ (if installTool then ["INSTALLTOOL=true"] else ["INSTALLTOOL=false"]);
+
+
+ enableParallelBuilding = true;
+
+ meta = {
+ description = "A metroidvania game using only vectorial graphic";
+ longDescription = ''
+ Azimuth is a metroidvania game, and something of an homage to the previous
+ greats of the genre (Super Metroid in particular). You will need to pilot
+ your ship, explore the inside of the planet, fight enemies, overcome
+ obstacles, and uncover the storyline piece by piece. Azimuth features a
+ huge game world to explore, lots of little puzzles to solve, dozens of
+ weapons and upgrades to find and use, and a wide variety of enemies and
+ bosses to tangle with.
+ '';
+
+ license = stdenv.lib.licenses.gpl3Plus;
+ homepage = "https://mdsteele.games/azimuth/index.html";
+ maintainers = with stdenv.lib.maintainers; [ marius851000 ];
+ platforms = stdenv.lib.platforms.linux;
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ball-and-paddle/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ball-and-paddle/default.nix
new file mode 100644
index 000000000000..862905efd3bb
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ball-and-paddle/default.nix
@@ -0,0 +1,44 @@
+{ fetchurl, stdenv, SDL, SDL_image, SDL_mixer, SDL_ttf, guile, gettext }:
+
+stdenv.mkDerivation rec {
+ name = "ballandpaddle-0.8.1";
+
+ src = fetchurl {
+ url = "mirror://gnu/ballandpaddle/${name}.tar.gz";
+ sha256 = "0zgpydad0mj7fbkippw3n9hlda6nac084dq5xfbsks9jn1xd30ny";
+ };
+
+ buildInputs = [ SDL SDL_image SDL_mixer SDL_ttf guile gettext ];
+
+ patches = [ ./getenv-decl.patch ];
+
+ preConfigure = ''
+ sed -i "Makefile.in" \
+ -e "s|desktopdir *=.*$|desktopdir = $out/share/applications|g ;
+ s|pixmapsdir *=.*$|pixmapsdir = $out/share/pixmaps|g"
+ '';
+
+ meta = {
+ description = "GNU Ball and Paddle, an old-fashioned ball and paddle game";
+
+ longDescription = ''
+ GNU Ball and Paddle is an old-fashioned ball and paddle game
+ with a set amount of blocks to destroy on each level, while
+ moving a paddle left and right at the bottom of the
+ screen. Various powerups may make different things occur.
+
+ It now uses GNU Guile for extension and the levels are written
+ with Guile. Follow the example level sets and the documentation.
+ '';
+
+ license = stdenv.lib.licenses.gpl3Plus;
+
+ homepage = "https://www.gnu.org/software/ballandpaddle/";
+
+ maintainers = [ ];
+
+ platforms = stdenv.lib.platforms.unix;
+
+ hydraPlatforms = stdenv.lib.platforms.linux; # sdl-config times out on darwin
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ball-and-paddle/getenv-decl.patch b/infra/libkookie/nixpkgs/pkgs/games/ball-and-paddle/getenv-decl.patch
new file mode 100644
index 000000000000..6bf26b50a142
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ball-and-paddle/getenv-decl.patch
@@ -0,0 +1,13 @@
+Make the getenv(3) declaration visible.
+
+--- ballandpaddle-0.8.1/src/settingsmanager.cpp 2009-07-08 02:13:16.000000000 +0200
++++ ballandpaddle-0.8.1/src/settingsmanager.cpp 2009-07-16 23:30:28.000000000 +0200
+@@ -17,6 +17,7 @@
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
++#include <stdlib.h>
+ #include "settingsmanager.h"
+
+ SettingsManager::SettingsManager ()
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/banner/default.nix b/infra/libkookie/nixpkgs/pkgs/games/banner/default.nix
new file mode 100644
index 000000000000..6da8e1bf9bf8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/banner/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+ name = "banner-1.3.4";
+
+ src = fetchurl {
+ url = "http://software.cedar-solutions.com/ftp/software/${name}.tar.gz";
+ sha256 = "04q5ribr0r9s8waky3nk356l0qdhfxw15ipz7lsfgv1fxq3qk6bz";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = "http://software.cedar-solutions.com/utilities.html";
+ description = "Print large banners to ASCII terminals";
+ license = licenses.gpl2;
+
+ longDescription = ''
+ An implementation of the traditional Unix-program used to display
+ large characters.
+ '';
+
+ platforms = platforms.all;
+ maintainers = with maintainers; [ pSub ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/bastet/default.nix b/infra/libkookie/nixpkgs/pkgs/games/bastet/default.nix
new file mode 100644
index 000000000000..d68a05137b43
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/bastet/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, fetchpatch, ncurses, boost }:
+
+stdenv.mkDerivation rec {
+ pname = "bastet";
+ version = "0.43.2";
+ buildInputs = [ ncurses boost ];
+
+ src = fetchFromGitHub {
+ owner = "fph";
+ repo = "bastet";
+ rev = version;
+ sha256 = "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn";
+ };
+
+ patches = [
+ # Compatibility with new Boost
+ (fetchpatch {
+ url = "https://github.com/fph/bastet/commit/0e03f8d4d6bc6949cf1c447e632ce0d1b98c4be1.patch";
+ sha256 = "1475hisbm44jirsrhdlnddppsyn83xmvcx09gfkm9drcix05alzj";
+ })
+ ];
+
+ installPhase = ''
+ mkdir -p "$out"/bin
+ cp bastet "$out"/bin/
+ mkdir -p "$out"/share/man/man6
+ cp bastet.6 "$out"/share/man/man6
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Tetris clone with 'bastard' block-choosing AI";
+ homepage = "http://fph.altervista.org/prog/bastet.html";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.dezgeg ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/beret/default.nix b/infra/libkookie/nixpkgs/pkgs/games/beret/default.nix
new file mode 100644
index 000000000000..f640e2c6aefa
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/beret/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, SDL, SDL_image, SDL_ttf, SDL_mixer }:
+
+stdenv.mkDerivation {
+ name = "beret-1.2.0";
+
+ buildInputs = [ SDL SDL_image SDL_ttf SDL_mixer ];
+
+ NIX_CFLAGS_COMPILE = "-I${SDL.dev}/include/SDL";
+ NIX_CFLAGS_LINK = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s";
+ NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin
+ "-framework CoreFoundation -framework OpenGL -framework Cocoa";
+
+ patches = [ ./use-home-dir.patch ];
+
+ postPatch = ''
+ sed -i 's@RESOURCE_PATH ""@RESOURCE_PATH "'$out'/share/"@' game.c
+ '';
+
+ src = fetchurl {
+ url = "https://gitorious.org/beret/beret/archive-tarball/ae029777";
+ name = "beret-1.2.0.tar.gz";
+ sha256 = "1rx9z72id1810fgv8mizk8qxwd1kh5xi07fdhmjc62mh3fn38szc";
+ };
+
+ installPhase = ''
+ mkdir -p $out/bin
+ install -v -m755 beret $out/bin
+ mkdir -p $out/share
+ cp -av tahoma.ttf images music rooms sfx $out/share
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A 2D puzzle-platformer game about a scientist with telekinetic abilities";
+ homepage = "http://kiwisauce.com/beret/";
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.all;
+ broken = true; # source won't download, and no replacement is visible
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/beret/use-home-dir.patch b/infra/libkookie/nixpkgs/pkgs/games/beret/use-home-dir.patch
new file mode 100644
index 000000000000..c8597a0303b8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/beret/use-home-dir.patch
@@ -0,0 +1,48 @@
+diff -Naur beret-beret-orig/game.c beret-beret/game.c
+--- beret-beret-orig/game.c 2011-12-17 18:51:32.000000000 -0500
++++ beret-beret/game.c 2011-12-21 13:16:37.047511020 -0500
+@@ -10,12 +10,10 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+-#ifdef __APPLE__
+ #include <sys/stat.h>
+ #include <unistd.h>
+ #include <errno.h>
+ #include <pwd.h>
+-#endif
+
+ #define CAMSCROLL 15
+ #define SCR_WIDTH 780
+@@ -88,12 +86,8 @@
+ #define DIRSEP "/"
+ #endif
+
+-#ifdef __APPLE__
+-#define SUPPORT_PATH "Library/Application Support/Beret/"
+-#define RESOURCE_PATH "Beret.app/Contents/Resources/"
+-#else
++#define SUPPORT_PATH ".beret"
+ #define RESOURCE_PATH ""
+-#endif
+
+ #define QUITMOD_WIN KMOD_ALT
+ #define QUITKEY_WIN SDLK_F4
+@@ -812,7 +806,6 @@
+
+ int init() {
+
+- #ifdef __APPLE__
+ char filestr[512];
+ // Get the home directory of the user.
+ struct passwd *pwd = getpwuid(getuid());
+@@ -827,9 +820,6 @@
+ sprintf(filestr, "%s/saves", support_path);
+ mkdir(filestr, S_IRWXU);
+ }
+- #else
+- sprintf(support_path, "");
+- #endif
+
+ if (SDL_Init(SDL_INIT_EVERYTHING) == -1) {
+ printf("Error: couldn't initialize SDL\n");
diff --git a/infra/libkookie/nixpkgs/pkgs/games/bitsnbots/default.nix b/infra/libkookie/nixpkgs/pkgs/games/bitsnbots/default.nix
new file mode 100644
index 000000000000..52286b32f90f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/bitsnbots/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, SDL, lua, libGLU, libGL }:
+
+stdenv.mkDerivation rec {
+ name = "bitsnbots-20111230";
+
+ src = fetchurl {
+ url = "http://moikmellah.org/downloads/bitsnbots/bitsnbots.source.tgz";
+ sha256 = "1iiclm6bfpp2p6d692hpnw25xyr48ki1xkcxa7fvh5b7m1519gsp";
+ };
+
+ patchPhase = ''
+ sed -i '/^INCLUDE/d' Makefile.linux
+ '';
+
+ makefile = "Makefile.linux";
+
+ NIX_CFLAGS_COMPILE = "-I${SDL.dev}/include/SDL";
+
+ NIX_LDFLAGS = "-lGL";
+
+ installPhase = ''
+ mkdir -p $out/share/${name}
+ cp -R bitsnbots resource scripts README $out/share/${name}
+ mkdir -p $out/bin
+ ln -s $out/share/${name}/bitsnbots $out/bin
+ '';
+
+ buildInputs = [ SDL lua libGLU libGL ];
+
+ meta = {
+ description = "Simple puzzle game with moving robots";
+ homepage = "http://moikmellah.org/blog/?page_id=19";
+ license = stdenv.lib.licenses.gpl3Plus;
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/blackshades/default.nix b/infra/libkookie/nixpkgs/pkgs/games/blackshades/default.nix
new file mode 100644
index 000000000000..e47e430d84c9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/blackshades/default.nix
@@ -0,0 +1,34 @@
+{stdenv, fetchsvn, SDL, libGLU, libGL, openal, libvorbis, freealut, SDL_image}:
+
+stdenv.mkDerivation {
+ name = "blackshades-svn-110";
+ src = fetchsvn {
+ url = "svn://svn.icculus.org/blackshades/trunk";
+ rev = "110";
+ sha256 = "0kbrh1dympk8scjxr6av24qs2bffz44l8qmw2m5gyqf4g3rxf6ra";
+ };
+
+ NIX_LDFLAGS = "-lSDL_image";
+
+ buildInputs = [ SDL SDL_image libGLU libGL openal libvorbis freealut ];
+
+ patchPhase = ''
+ sed -i -e s,Data/,$out/opt/$name/Data/,g \
+ -e s,Data:,$out/opt/$name/Data/,g \
+ Source/*.cpp
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin $out/opt/$name
+ cp objs/blackshades $out/bin
+ cp -R Data IF* Readme $out/opt/$name/
+ '';
+
+ meta = {
+ homepage = "http://icculus.org/blackshades/";
+ description = "Protect the VIP";
+ license = stdenv.lib.licenses.free;
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/blobby/blobby.sh b/infra/libkookie/nixpkgs/pkgs/games/blobby/blobby.sh
new file mode 100644
index 000000000000..4c4b32b12433
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/blobby/blobby.sh
@@ -0,0 +1,10 @@
+#! @shell@
+
+test -d ~/.blobby || {
+ mkdir ~/.blobby
+ cp -r "@out@/share/blobby"/* ~/.blobby
+ chmod u+w -R ~/.blobby
+ ( cd ~/.blobby; for i in *.zip; do @unzip@/bin/unzip "$i"; done )
+}
+
+@out@/bin/blobby.bin
diff --git a/infra/libkookie/nixpkgs/pkgs/games/blobby/default.nix b/infra/libkookie/nixpkgs/pkgs/games/blobby/default.nix
new file mode 100644
index 000000000000..ea8bddfa16d4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/blobby/default.nix
@@ -0,0 +1,38 @@
+{stdenv, fetchurl, SDL2, SDL2_image, libGLU, libGL, cmake, physfs, boost, zip, zlib
+, pkgconfig, unzip}:
+stdenv.mkDerivation rec {
+ version = "1.0";
+ pname = "blobby-volley";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/blobby/Blobby%20Volley%202%20%28Linux%29/1.0/blobby2-linux-1.0.tar.gz";
+ sha256 = "1qpmbdlyhfbrdsq4vkb6cb3b8mh27fpizb71q4a21ala56g08yms";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [SDL2 SDL2_image libGLU libGL cmake physfs boost zip zlib
+ unzip];
+
+ preConfigure=''
+ sed -e '1i#include <iostream>' -i src/NetworkMessage.cpp
+ '';
+
+ inherit unzip;
+
+ postInstall = ''
+ cp ../data/Icon.bmp "$out/share/blobby/"
+ mv "$out/bin"/blobby{,.bin}
+ substituteAll "${./blobby.sh}" "$out/bin/blobby"
+ chmod a+x "$out/bin/blobby"
+ '';
+
+ meta = {
+ description = ''A blobby volleyball game'';
+ license = stdenv.lib.licenses.bsd3;
+ platforms = with stdenv.lib.platforms; linux;
+ maintainers = with stdenv.lib.maintainers; [raskin];
+ homepage = "http://blobby.sourceforge.net/";
+ downloadPage = "https://sourceforge.net/projects/blobby/files/Blobby%20Volley%202%20%28Linux%29/";
+ inherit version;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/blobby/default.upstream b/infra/libkookie/nixpkgs/pkgs/games/blobby/default.upstream
new file mode 100644
index 000000000000..8f2804e07946
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/blobby/default.upstream
@@ -0,0 +1,8 @@
+url https://sourceforge.net/projects/blobby/files/Blobby%20Volley%202%20%28Linux%29/
+SF_version_dir
+version_link '[.]tar[.][^.]+/download$'
+SF_redirect
+do_overwrite(){
+ do_overwrite_just_version
+ set_var_value url $CURRENT_URL
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/boohu/default.nix b/infra/libkookie/nixpkgs/pkgs/games/boohu/default.nix
new file mode 100644
index 000000000000..3ca8ee4693a3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/boohu/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, buildGoPackage}:
+
+buildGoPackage rec {
+
+ pname = "boohu";
+ version = "0.13.0";
+
+ goPackagePath = "git.tuxfamily.org/boohu/boohu.git";
+
+ src = fetchurl {
+ url = "https://download.tuxfamily.org/boohu/downloads/${pname}-${version}.tar.gz";
+ sha256 = "0q89yv4klldjpli6y9xpyr6k8nsn7qa68gp90vb3dgxynn91sh68";
+ };
+
+ goDeps = ./deps.nix;
+
+ postInstall = "mv $out/bin/boohu.git $out/bin/boohu";
+
+ meta = with stdenv.lib; {
+ description = "A new coffee-break roguelike game";
+ longDescription = ''
+ Break Out Of Hareka's Underground (Boohu) is a roguelike game mainly
+ inspired from DCSS and its tavern, with some ideas from Brogue, but
+ aiming for very short games, almost no character building, and a
+ simplified inventory.
+ '';
+ homepage = "https://download.tuxfamily.org/boohu/index.html";
+ license = licenses.isc;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [freepotion];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/boohu/deps.nix b/infra/libkookie/nixpkgs/pkgs/games/boohu/deps.nix
new file mode 100644
index 000000000000..c2dc3b41b973
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/boohu/deps.nix
@@ -0,0 +1,20 @@
+[
+ {
+ goPackagePath = "github.com/nsf/termbox-go";
+ fetch = {
+ type = "git";
+ url = "https://github.com/nsf/termbox-go";
+ rev = "93860e16131719fa9722e7c448dbf8c0e3210a0d";
+ sha256 = "03hz060cy8qrl4kgr80pbq6xvr38z4c6ghr3y81i8g854rvp6426";
+ };
+ }
+ {
+ goPackagePath = "github.com/mattn/go-runewidth";
+ fetch = {
+ type = "git";
+ url = "https://github.com/mattn/go-runewidth";
+ rev = "f93a0d58d5fd95e53f82782d07bb0c79d23e1290";
+ sha256 = "1sq97q71vgwnbg1fphsmqrzkbfn6mjal6d8a3qgwv4nbgppwaz25";
+ };
+ }
+]
diff --git a/infra/libkookie/nixpkgs/pkgs/games/braincurses/default.nix b/infra/libkookie/nixpkgs/pkgs/games/braincurses/default.nix
new file mode 100644
index 000000000000..86a8f865442b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/braincurses/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, ncurses }:
+
+stdenv.mkDerivation rec {
+ pname = "braincurses";
+ version = "1.1.0";
+
+ src = fetchFromGitHub {
+ owner = "bderrly";
+ repo = "braincurses";
+ rev = version;
+ sha256 = "0gpny9wrb0zj3lr7iarlgn9j4367awj09v3hhxz9r9a6yhk4anf5";
+ };
+
+ buildInputs = [ ncurses ];
+
+ # There is no install target in the Makefile
+ installPhase = ''
+ install -Dt $out/bin braincurses
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/bderrly/braincurses";
+ description = "A version of the classic game Mastermind";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ dotlambda ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/brogue/default.nix b/infra/libkookie/nixpkgs/pkgs/games/brogue/default.nix
new file mode 100644
index 000000000000..1662f847bfa9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/brogue/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl, SDL, ncurses, libtcod, makeDesktopItem }:
+
+stdenv.mkDerivation rec {
+ pname = "brogue";
+ version = "1.7.5";
+
+ src = fetchurl {
+ url = "https://sites.google.com/site/broguegame/brogue-${version}-linux-amd64.tbz2";
+ sha256 = "0i042zb3axjf0cpgpdh8hvfn66dbfizidyvw0iymjk2n760z2kx7";
+ };
+
+ prePatch = ''
+ sed -i Makefile -e 's,LIBTCODDIR=.*,LIBTCODDIR=${libtcod},g' \
+ -e 's,sdl-config,${SDL.dev}/bin/sdl-config,g'
+ sed -i src/platform/tcod-platform.c -e "s,fonts/font,$out/share/brogue/fonts/font,g"
+ make clean
+ rm -rf src/libtcod*
+ '';
+
+ buildInputs = [ SDL ncurses libtcod ];
+
+ desktopItem = makeDesktopItem {
+ name = "brogue";
+ desktopName = "Brogue";
+ genericName = "Roguelike";
+ comment = "Brave the Dungeons of Doom!";
+ icon = "brogue";
+ exec = "brogue";
+ categories = "Game;AdventureGame;";
+ terminal = "false";
+ };
+
+ installPhase = ''
+ install -m 555 -D bin/brogue $out/bin/brogue
+ install -m 444 -D ${desktopItem}/share/applications/brogue.desktop $out/share/applications/brogue.desktop
+ install -m 444 -D bin/brogue-icon.png $out/share/icons/hicolor/256x256/apps/brogue.png
+ mkdir -p $out/share/brogue
+ cp -r bin/fonts $out/share/brogue/
+ '';
+
+ # fix crash; shouldn’t be a security risk because it’s an offline game
+ hardeningDisable = [ "stackprotector" "fortify" ];
+
+ meta = with stdenv.lib; {
+ description = "A roguelike game";
+ homepage = "https://sites.google.com/site/broguegame/";
+ license = licenses.agpl3;
+ maintainers = [ maintainers.skeidel ];
+ platforms = [ "x86_64-linux" ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/bsdgames/default.nix b/infra/libkookie/nixpkgs/pkgs/games/bsdgames/default.nix
new file mode 100644
index 000000000000..41414a573a66
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/bsdgames/default.nix
@@ -0,0 +1,67 @@
+{ stdenv, fetchurl, ncurses, openssl, flex, bison, less, miscfiles }:
+
+stdenv.mkDerivation {
+ name = "bsd-games-2.17";
+
+ src = fetchurl {
+ url = "ftp://metalab.unc.edu/pub/Linux/games/bsd-games-2.17.tar.gz";
+ sha256 = "0q7zdyyfvn15y0w4g54kq3gza89h61py727m8slmw73cxx594vq6";
+ };
+
+ buildInputs = [ ncurses openssl flex bison ];
+
+ patches = [
+ (fetchurl {
+ url = "http://svn.exactcode.de/t2/trunk/package/games/bsd-games/dm-noutmpx.patch";
+ sha256 = "1k3qp3jj0dksjr4dnppv6dvkwslrgk9c7p2n9vipqildpxgqp7w2";
+ })
+ ];
+
+ hardeningDisable = [ "format" ];
+
+ makeFlags = [ "STRIP=" ];
+
+ preConfigure = ''
+ cat > config.params << EOF
+ bsd_games_cfg_man6dir=$out/share/man/man6
+ bsd_games_cfg_man8dir=$out/share/man/man8
+ bsd_games_cfg_man5dir=$out/share/man/man5
+ bsd_games_cfg_wtf_acronymfile=$out/share/misc/acronyms
+ bsd_games_cfg_fortune_dir=$out/share/games/fortune
+ bsd_games_cfg_quiz_dir=$out/share/games/quiz
+ bsd_games_cfg_gamesdir=$out/bin
+ bsd_games_cfg_sbindir=$out/bin
+ bsd_games_cfg_usrbindir=$out/bin
+ bsd_games_cfg_libexecdir=$out/lib/games/dm
+ bsd_games_cfg_docdir=$out/share/doc/bsd-games
+ bsd_games_cfg_sharedir=$out/share/games
+ bsd_games_cfg_varlibdir=.
+ bsd_games_cfg_non_interactive=y
+ bsd_games_cfg_no_build_dirs="dab hack phantasia sail"
+ bsd_games_cfg_dictionary_src=${miscfiles}/share/web2
+ bsd_games_cfg_pager=${less}
+ EOF
+
+ sed -e s/getline/bsdgames_local_getline/g -i $(grep getline -rl .)
+ '';
+
+ postConfigure = ''
+ sed -i -e 's,/usr,'$out, \
+ -e "s,-o root -g root, ," \
+ -e "s,-o root -g games, ," \
+ -e "s,.*chown.*,true," \
+ -e 's/INSTALL_VARDATA.*/INSTALL_VARDATA := true/' \
+ -e 's/INSTALL_HACKDIR.*/INSTALL_HACKDIR := true/' \
+ -e 's/INSTALL_DM.*/INSTALL_DM := true/' \
+ -e 's/INSTALL_SCORE_FILE.*/INSTALL_SCORE_FILE := true/' \
+ Makeconfig install-man
+ '';
+
+ meta = {
+ homepage = "http://www.t2-project.org/packages/bsd-games.html";
+ description = "Ports of all the games from NetBSD-current that are free";
+ license = stdenv.lib.licenses.free;
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/btanks/default.nix b/infra/libkookie/nixpkgs/pkgs/games/btanks/default.nix
new file mode 100644
index 000000000000..5bb7cfa215bc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/btanks/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, fetchpatch, sconsPackages, pkgconfig, SDL, libGL, zlib, smpeg
+, SDL_image, libvorbis, expat, zip, lua }:
+
+stdenv.mkDerivation rec {
+ pname = "btanks";
+ version = "0.9.8083";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
+ sha256 = "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz";
+ };
+
+ nativeBuildInputs = [ sconsPackages.scons_3_0_1 pkgconfig ];
+
+ buildInputs = [ SDL libGL zlib smpeg SDL_image libvorbis expat zip lua ];
+
+ enableParallelBuilding = true;
+
+ NIX_CFLAGS_COMPILE = "-I${SDL_image}/include/SDL";
+
+ patches = [
+ (fetchpatch {
+ url = "https://aur.archlinux.org/cgit/aur.git/plain/lua52.patch?h=btanks";
+ sha256 = "0ip563kz6lhwiims5djrxq3mvb7jx9yzkpsqxxhbi9n6qzz7y2az";
+ name = "lua52.patch";
+ })
+ (fetchpatch {
+ url = "https://salsa.debian.org/games-team/btanks/raw/master/debian/patches/gcc-4.7.patch";
+ sha256 = "1dxlk1xh69gj10sqcsyckiakb8an3h41206wby4z44mpmvxc7pi4";
+ })
+ (fetchpatch {
+ url = "https://salsa.debian.org/games-team/btanks/raw/master/debian/patches/pow10f.patch";
+ sha256 = "1h45790v2dpdbccfn6lwfgl8782q54i14cz9gpipkaghcka4y0g9";
+ })
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Fast 2d tank arcade game";
+ homepage = "https://sourceforge.net/projects/btanks/";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/bzflag/default.nix b/infra/libkookie/nixpkgs/pkgs/games/bzflag/default.nix
new file mode 100644
index 000000000000..1ec24e02be05
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/bzflag/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, fetchurl, pkgconfig
+, curl, SDL2, libGLU, libGL, glew, ncurses, c-ares
+, Carbon, CoreServices }:
+
+stdenv.mkDerivation rec {
+ pname = "bzflag";
+ version = "2.4.20";
+
+ src = fetchurl {
+ url = "https://download.bzflag.org/${pname}/source/${version}/${pname}-${version}.tar.bz2";
+ sha256 = "16brxqmfiyz4j4lb8ihzjcbwqmpsms6vm3ijbp34lnw0blbwdjb2";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ curl SDL2 libGLU libGL glew ncurses c-ares ]
+ ++ lib.optionals stdenv.isDarwin [ Carbon CoreServices ];
+
+ meta = with lib; {
+ description = "Multiplayer 3D Tank game";
+ homepage = "https://bzflag.org/";
+ license = licenses.lgpl21Plus;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ fpletz ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/builder.nix b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/builder.nix
new file mode 100644
index 000000000000..24128875f3a1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/builder.nix
@@ -0,0 +1,49 @@
+{ stdenvNoCC, lib, type }:
+
+assert lib.elem type [
+ "mod"
+ "soundpack"
+ "tileset"
+];
+
+{ modName, version, src, ... } @ args:
+
+stdenvNoCC.mkDerivation (args // rec {
+ pname = args.pname or "cataclysm-dda-${type}-${modName}";
+
+ modRoot = args.modRoot or ".";
+
+ configurePhase = args.configurePhase or ''
+ runHook preConfigure
+ runHook postConfigure
+ '';
+
+ buildPhase = args.buildPhase or ''
+ runHook preBuild
+ runHook postBuild
+ '';
+
+ checkPhase = args.checkPhase or ''
+ runHook preCheck
+ runHook postCheck
+ '';
+
+ installPhase = let
+ baseDir = {
+ mod = "mods";
+ soundpack = "sound";
+ tileset = "gfx";
+ }.${type};
+ in args.installPhase or ''
+ runHook preInstall
+ destdir="$out/share/cataclysm-dda/${baseDir}"
+ mkdir -p "$destdir"
+ cp -R "${modRoot}" "$destdir/${modName}"
+ runHook postInstall
+ '';
+
+ passthru = {
+ forTiles = true;
+ forCurses = type == "mod";
+ };
+})
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/common.nix b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/common.nix
new file mode 100644
index 000000000000..9ec73cdebe03
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/common.nix
@@ -0,0 +1,112 @@
+{ stdenv, runtimeShell, pkgconfig, gettext, ncurses, CoreFoundation
+, tiles, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, freetype, Cocoa
+, debug
+, useXdgDir
+}:
+
+let
+ inherit (stdenv.lib) optionals optionalString;
+
+ cursesDeps = [ gettext ncurses ]
+ ++ optionals stdenv.isDarwin [ CoreFoundation ];
+
+ tilesDeps = [ SDL2 SDL2_image SDL2_mixer SDL2_ttf freetype ]
+ ++ optionals stdenv.isDarwin [ Cocoa ];
+
+ installXDGAppLauncher = ''
+ launcher="$out/share/applications/cataclysm-dda.desktop"
+ install -D -m 444 data/xdg/*cataclysm-dda.desktop -T "$launcher"
+ sed -i "$launcher" -e "s,\(Exec=\)\(cataclysm-tiles\),\1$out/bin/\2,"
+ install -D -m 444 data/xdg/cataclysm-dda.svg -t $out/share/icons/hicolor/scalable/apps
+ '';
+
+ installMacOSAppLauncher = ''
+ app=$out/Applications/Cataclysm.app
+ install -D -m 444 data/osx/Info.plist -t $app/Contents
+ install -D -m 444 data/osx/AppIcon.icns -t $app/Contents/Resources
+ mkdir $app/Contents/MacOS
+ launcher=$app/Contents/MacOS/Cataclysm.sh
+ cat << EOF > $launcher
+ #!${runtimeShell}
+ $out/bin/cataclysm-tiles
+ EOF
+ chmod 555 $launcher
+ '';
+in
+
+stdenv.mkDerivation {
+ pname = "cataclysm-dda";
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ buildInputs = cursesDeps ++ optionals tiles tilesDeps;
+
+ postPatch = ''
+ patchShebangs .
+
+ # Locale patch required for Darwin builds, see:
+ # https://github.com/NixOS/nixpkgs/pull/74064#issuecomment-560083970
+ sed -i src/translations.cpp \
+ -e 's@#elif (defined(__linux__) || (defined(MACOSX) && !defined(TILES)))@#elif 1@'
+ '';
+
+ makeFlags = [
+ "PREFIX=$(out)" "LANGUAGES=all"
+ (if useXdgDir then "USE_XDG_DIR=1" else "USE_HOME_DIR=1")
+ ] ++ optionals (!debug) [
+ "RELEASE=1"
+ ] ++ optionals tiles [
+ "TILES=1" "SOUND=1"
+ ] ++ optionals stdenv.isDarwin [
+ "NATIVE=osx" "CLANG=1"
+ ];
+
+ postInstall = optionalString tiles
+ ( if !stdenv.isDarwin
+ then installXDGAppLauncher
+ else installMacOSAppLauncher
+ );
+
+ dontStrip = debug;
+
+ # https://hydra.nixos.org/build/65193254
+ # src/weather_data.cpp:203:1: fatal error: opening dependency file obj/tiles/weather_data.d: No such file or directory
+ # make: *** [Makefile:687: obj/tiles/weather_data.o] Error 1
+ enableParallelBuilding = false;
+
+ passthru = {
+ isTiles = tiles;
+ isCurses = !tiles;
+ };
+
+ meta = with stdenv.lib; {
+ description = "A free, post apocalyptic, zombie infested rogue-like";
+ longDescription = ''
+ Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic world.
+ Surviving is difficult: you have been thrown, ill-equipped, into a
+ landscape now riddled with monstrosities of which flesh eating zombies are
+ neither the strangest nor the deadliest.
+
+ Yet with care and a little luck, many things are possible. You may try to
+ eke out an existence in the forests silently executing threats and
+ providing sustenance with your longbow. You can ride into town in a
+ jerry-rigged vehicle, all guns blazing, to settle matters in a fug of
+ smoke from your molotovs. You could take a more measured approach and
+ construct an impregnable fortress, surrounded by traps to protect you from
+ the horrors without. The longer you survive, the more skilled and adapted
+ you will get and the better equipped and armed to deal with the threats
+ you are presented with.
+
+ In the course of your ordeal there will be opportunities and temptations
+ to improve or change your very nature. There are tales of survivors fitted
+ with extraordinary cybernetics giving great power and stories too of
+ gravely mutated survivors who, warped by their ingestion of exotic
+ substances or radiation, now more closely resemble insects, birds or fish
+ than their original form.
+ '';
+ homepage = "https://cataclysmdda.org/";
+ license = licenses.cc-by-sa-30;
+ maintainers = with maintainers; [ mnacamura ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/default.nix b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/default.nix
new file mode 100644
index 000000000000..ada212ea7e9f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/default.nix
@@ -0,0 +1,42 @@
+{ newScope, darwin }:
+
+let
+ callPackage = newScope self;
+
+ stable = rec {
+ tiles = callPackage ./stable.nix {
+ inherit (darwin.apple_sdk.frameworks) CoreFoundation Cocoa;
+ };
+
+ curses = tiles.override { tiles = false; };
+ };
+
+ git = rec {
+ tiles = callPackage ./git.nix {
+ inherit (darwin.apple_sdk.frameworks) CoreFoundation Cocoa;
+ };
+
+ curses = tiles.override { tiles = false; };
+ };
+
+ lib = callPackage ./lib.nix {};
+
+ pkgs = callPackage ./pkgs {};
+
+ self = {
+ inherit
+ callPackage
+ stable
+ git;
+
+ inherit (lib)
+ buildMod
+ buildSoundPack
+ buildTileSet
+ wrapCDDA;
+
+ inherit pkgs;
+ };
+in
+
+self
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/git.nix b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/git.nix
new file mode 100644
index 000000000000..36f37f7aeba4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/git.nix
@@ -0,0 +1,41 @@
+{ lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA
+, tiles ? true, Cocoa
+, debug ? false
+, useXdgDir ? false
+, version ? "2019-11-22"
+, rev ? "a6c8ece992bffeae3788425dd4b3b5871e66a9cd"
+, sha256 ? "0ww2q5gykxm802z1kffmnrfahjlx123j1gfszklpsv0b1fccm1ab"
+}:
+
+let
+ common = callPackage ./common.nix {
+ inherit CoreFoundation tiles Cocoa debug useXdgDir;
+ };
+
+ self = common.overrideAttrs (common: rec {
+ pname = common.pname + "-git";
+ inherit version;
+
+ src = fetchFromGitHub {
+ owner = "CleverRaven";
+ repo = "Cataclysm-DDA";
+ inherit rev sha256;
+ };
+
+ makeFlags = common.makeFlags ++ [
+ "VERSION=git-${version}-${lib.substring 0 8 src.rev}"
+ ];
+
+ passthru = common.passthru // {
+ pkgs = pkgs.override { build = self; };
+ withMods = wrapCDDA self;
+ };
+
+ meta = common.meta // {
+ maintainers = with lib.maintainers;
+ common.meta.maintainers ++ [ rardiol ];
+ };
+ });
+in
+
+self
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/lib.nix b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/lib.nix
new file mode 100644
index 000000000000..02678ed0228e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/lib.nix
@@ -0,0 +1,17 @@
+{ callPackage }:
+
+{
+ buildMod = callPackage ./builder.nix {
+ type = "mod";
+ };
+
+ buildSoundPack = callPackage ./builder.nix {
+ type = "soundpack";
+ };
+
+ buildTileSet = callPackage ./builder.nix {
+ type = "tileset";
+ };
+
+ wrapCDDA = callPackage ./wrapper.nix {};
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/pkgs/default.nix b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/pkgs/default.nix
new file mode 100644
index 000000000000..6f3df09a7861
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/pkgs/default.nix
@@ -0,0 +1,27 @@
+{ lib, callPackage, build ? null }:
+
+let
+ pkgs = {
+ mod = {
+ };
+
+ soundpack = {
+ };
+
+ tileset = {
+ UndeadPeople = callPackage ./tilesets/UndeadPeople {};
+ };
+ };
+
+ pkgs' = lib.mapAttrs (_: mod: lib.filterAttrs availableForBuild mod) pkgs;
+
+ availableForBuild = _: mod:
+ if isNull build then
+ true
+ else if build.isTiles then
+ mod.forTiles
+ else
+ mod.forCurses;
+in
+
+lib.makeExtensible (_: pkgs')
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/pkgs/tilesets/UndeadPeople/default.nix b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/pkgs/tilesets/UndeadPeople/default.nix
new file mode 100644
index 000000000000..7a58cea82081
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/pkgs/tilesets/UndeadPeople/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildTileSet, fetchFromGitHub }:
+
+buildTileSet {
+ modName = "UndeadPeople";
+ version = "2020-07-08";
+
+ src = fetchFromGitHub {
+ owner = "SomeDeadGuy";
+ repo = "UndeadPeopleTileset";
+ rev = "f7f13b850fafe2261deee051f45d9c611a661534";
+ sha256 = "0r06srjr7rq51jk9yfyxz80nfgb98mkn86cbcjfxpibgbqvcp0zm";
+ };
+
+ modRoot = "MSX++UnDeadPeopleEdition";
+
+ meta = with lib; {
+ description = "Cataclysm DDA tileset based on MSX++ tileset";
+ homepage = "https://github.com/SomeDeadGuy/UndeadPeopleTileset";
+ license = licenses.unfree;
+ maintainers = with maintainers; [ mnacamura ];
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/stable.nix b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/stable.nix
new file mode 100644
index 000000000000..076a33a9e899
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/stable.nix
@@ -0,0 +1,34 @@
+{ lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA
+, tiles ? true, Cocoa
+, debug ? false
+, useXdgDir ? false
+}:
+
+let
+ common = callPackage ./common.nix {
+ inherit CoreFoundation tiles Cocoa debug useXdgDir;
+ };
+
+ self = common.overrideAttrs (common: rec {
+ version = "0.E-2";
+
+ src = fetchFromGitHub {
+ owner = "CleverRaven";
+ repo = "Cataclysm-DDA";
+ rev = version;
+ sha256 = "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68";
+ };
+
+ passthru = common.passthru // {
+ pkgs = pkgs.override { build = self; };
+ withMods = wrapCDDA self;
+ };
+
+ meta = common.meta // {
+ maintainers = with lib.maintainers;
+ common.meta.maintainers ++ [ skeidel ];
+ };
+ });
+in
+
+self
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix
new file mode 100644
index 000000000000..a73c320f9c67
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix
@@ -0,0 +1,47 @@
+{ lib, symlinkJoin, makeWrapper }:
+
+unwrapped:
+
+pkgsSpec:
+
+let
+ mods = if lib.isFunction pkgsSpec
+ then pkgsSpec unwrapped.pkgs
+ else pkgsSpec;
+in
+
+if builtins.length mods == 0
+then unwrapped
+else symlinkJoin {
+ name = unwrapped.name + "-with-mods";
+
+ paths = [ unwrapped ] ++ mods;
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ postBuild = ''
+ if [ -x $out/bin/cataclysm ]; then
+ wrapProgram $out/bin/cataclysm \
+ --add-flags "--datadir $out/share/cataclysm-dda/"
+ fi
+ if [ -x $out/bin/cataclysm-tiles ]; then
+ wrapProgram $out/bin/cataclysm-tiles \
+ --add-flags "--datadir $out/share/cataclysm-dda/"
+ fi
+
+ # Launch the wrapped program
+ replaceProgram() {
+ cp "$1" "''${1}.bk"
+ unlink "$1"
+ mv "''${1}.bk" "$1"
+ sed -i "$1" -e "s,/nix/store/.\+\(/bin/cataclysm-tiles\),$out\1,"
+ }
+ for script in "$out/share/applications/cataclysm-dda.desktop" \
+ "$out/Applications/Cataclysm.app/Contents/MacOS/Cataclysm.sh"
+ do
+ if [ -e "$script" ]; then
+ replaceProgram "$script"
+ fi
+ done
+ '';
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/chessdb/default.nix b/infra/libkookie/nixpkgs/pkgs/games/chessdb/default.nix
new file mode 100644
index 000000000000..76862c4bffe1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/chessdb/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, tcl, tk, libX11, makeWrapper }:
+
+stdenv.mkDerivation {
+ name = "chessdb-3.6.19-beta-1";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/chessdb/ChessDB-3.6.19-beta-1.tar.gz";
+ sha256 = "0brc3wln3bxp979iqj2w1zxpfd0pch8zzazhdmwf7acww4hrsz62";
+ };
+
+ buildInputs = [ tcl tk libX11 makeWrapper ];
+
+ makeFlags = [
+ "BINDIR=$(out)/bin"
+ "SHAREDIR=$(out)/share/chessdb"
+ "SOUNDSDIR=$(out)/share/chessdb/sounds"
+ "TBDIR=$(out)/share/chessdb/tablebases"
+ "MANDIR=$(out)/man"
+ ];
+
+ postInstall = ''
+ wrapProgram $out/bin/chessdb --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"
+ '';
+
+ meta = {
+ homepage = "http://chessdb.sourceforge.net/";
+ description = "A free chess database";
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/chessx/default.nix b/infra/libkookie/nixpkgs/pkgs/games/chessx/default.nix
new file mode 100644
index 000000000000..5b3be969cf1e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/chessx/default.nix
@@ -0,0 +1,56 @@
+{ mkDerivation
+, stdenv
+, pkgconfig
+, zlib
+, qtbase
+, qtsvg
+, qttools
+, qtmultimedia
+, qmake
+, fetchurl
+}:
+
+mkDerivation rec {
+ pname = "chessx";
+ version = "1.5.0";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/chessx/chessx-${version}.tgz";
+ sha256 = "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i";
+ };
+
+ nativeBuildInputs = [
+ pkgconfig
+ qmake
+ ];
+
+ buildInputs = [
+ qtbase
+ qtmultimedia
+ qtsvg
+ qttools
+ zlib
+ ];
+
+ # RCC: Error in 'resources.qrc': Cannot find file 'i18n/chessx_da.qm'
+ enableParallelBuilding = false;
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p "$out/bin"
+ mkdir -p "$out/share/applications"
+ cp -pr release/chessx "$out/bin"
+ cp -pr unix/chessx.desktop "$out/share/applications"
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "http://chessx.sourceforge.net/";
+ description = "Browse and analyse chess games";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.luispedro ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/chiaki/default.nix b/infra/libkookie/nixpkgs/pkgs/games/chiaki/default.nix
new file mode 100644
index 000000000000..27dde97ead7b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/chiaki/default.nix
@@ -0,0 +1,32 @@
+{ lib, mkDerivation, fetchFromGitHub
+, cmake, ffmpeg, libopus, qtbase, qtmultimedia, qtsvg, pkgconfig, protobuf
+, python3Packages, SDL2 }:
+
+mkDerivation rec {
+ pname = "chiaki";
+ version = "1.3.0";
+
+ src = fetchFromGitHub {
+ rev = "v${version}";
+ owner = "thestr4ng3r";
+ repo = "chiaki";
+ fetchSubmodules = true;
+ sha256 = "07w7srxxr8zjp91p5n1sqf4j8lljfrm78lz1m15s2nzlm579015h";
+ };
+
+ nativeBuildInputs = [
+ cmake pkgconfig protobuf python3Packages.python python3Packages.protobuf
+ ];
+ buildInputs = [ ffmpeg libopus qtbase qtmultimedia qtsvg protobuf SDL2 ];
+
+ doCheck = true;
+ installCheckPhase = "$out/bin/chiaki --help";
+
+ meta = with lib; {
+ homepage = "https://github.com/thestr4ng3r/chiaki";
+ description = "Free and Open Source PS4 Remote Play Client";
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ delroth ];
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/chocolate-doom/default.nix b/infra/libkookie/nixpkgs/pkgs/games/chocolate-doom/default.nix
new file mode 100644
index 000000000000..1b77a72f8d0b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/chocolate-doom/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, autoreconfHook, pkgconfig, SDL2, SDL2_mixer, SDL2_net, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+ pname = "chocolate-doom";
+ version = "3.0.1";
+
+ src = fetchFromGitHub {
+ owner = "chocolate-doom";
+ repo = pname;
+ rev = "${pname}-${version}";
+ sha256 = "1zlcqhd49c5n8vaahgaqrc2y10z86xng51sbd82xm3rk2dly25jp";
+ };
+
+ postPatch = ''
+ sed -e 's#/games#/bin#g' -i src{,/setup}/Makefile.am
+ '';
+
+ nativeBuildInputs = [ autoreconfHook pkgconfig ];
+ buildInputs = [ SDL2 SDL2_mixer SDL2_net ];
+ enableParallelBuilding = true;
+
+ meta = {
+ homepage = "http://chocolate-doom.org/";
+ description = "A Doom source port that accurately reproduces the experience of Doom as it was played in the 1990s";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.unix;
+ hydraPlatforms = stdenv.lib.platforms.linux; # darwin times out
+ maintainers = with stdenv.lib.maintainers; [ MP2E ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ckan/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ckan/default.nix
new file mode 100644
index 000000000000..a13ff8d66faf
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ckan/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, makeWrapper, perl, mono, gtk2, curl }:
+
+stdenv.mkDerivation rec {
+ pname = "ckan";
+ version = "1.16.1";
+
+ src = fetchFromGitHub {
+ owner = "KSP-CKAN";
+ repo = "CKAN";
+ rev = "v${version}";
+ sha256 = "0lfvl8w09lakz35szp5grfvhq8xx486f5igvj1m6azsql4n929lg";
+ };
+
+ buildInputs = [ makeWrapper perl mono ];
+
+ postPatch = ''
+ substituteInPlace bin/build \
+ --replace /usr/bin/perl ${perl}/bin/perl
+ '';
+
+ # Tests don't currently work, as they try to write into /var/empty.
+ doCheck = false;
+ checkTarget = "test";
+
+ libraries = stdenv.lib.makeLibraryPath [ gtk2 curl ];
+
+ installPhase = ''
+ mkdir -p $out/bin
+ for exe in *.exe; do
+ install -m 0644 $exe $out/bin
+ makeWrapper ${mono}/bin/mono $out/bin/$(basename $exe .exe) \
+ --add-flags $out/bin/$exe \
+ --set LD_LIBRARY_PATH $libraries
+ done
+ '';
+
+ meta = {
+ description = "Mod manager for Kerbal Space Program";
+ homepage = "https://github.com/KSP-CKAN/CKAN";
+ license = stdenv.lib.licenses.mit;
+ maintainers = [ stdenv.lib.maintainers.Baughn ];
+ platforms = stdenv.lib.platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cockatrice/default.nix b/infra/libkookie/nixpkgs/pkgs/games/cockatrice/default.nix
new file mode 100644
index 000000000000..ac31de4e4c24
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cockatrice/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, mkDerivation, cmake, protobuf
+, qtbase, qtmultimedia, qttools, qtwebsockets, wrapQtAppsHook
+}:
+
+mkDerivation rec {
+ pname = "cockatrice";
+ version = "2020-08-23-Release-2.7.5";
+
+ src = fetchFromGitHub {
+ owner = "Cockatrice";
+ repo = "Cockatrice";
+ rev = version;
+ sha256 = "1yaxm7q0ja3rgx197hh8ynjc6ncc4hm0qdn9v7f0l4fbv0bdpv34";
+ };
+
+ buildInputs = [
+ cmake qtbase qtmultimedia protobuf qttools qtwebsockets
+ ];
+
+ nativeBuildInputs = [ wrapQtAppsHook ];
+
+ meta = {
+ homepage = "https://github.com/Cockatrice/Cockatrice";
+ description = "A cross-platform virtual tabletop for multiplayer card games";
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = with stdenv.lib.maintainers; [ evanjs ];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/commandergenius/default.nix b/infra/libkookie/nixpkgs/pkgs/games/commandergenius/default.nix
new file mode 100644
index 000000000000..251ea852cf18
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/commandergenius/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitLab, SDL2, SDL2_image, pkgconfig
+, libvorbis, libGL, boost, cmake, zlib, curl, SDL2_mixer, python3
+}:
+
+stdenv.mkDerivation rec {
+ pname = "commandergenius";
+ version = "2.3.3";
+
+ src = fetchFromGitLab {
+ owner = "Dringgstein";
+ repo = "Commander-Genius";
+ rev = "v${version}";
+ sha256 = "04nb23wwvc3yywz3cr6gvn02fa7psfs22ssg4wk12s08z1azvz3h";
+ };
+
+ buildInputs = [ SDL2 SDL2_image SDL2_mixer libGL boost libvorbis zlib curl python3 ];
+
+ preConfigure = ''
+ export cmakeFlags="$cmakeFlags -DCMAKE_INSTALL_PREFIX=$out -DSHAREDIR=$out/share"
+ export makeFlags="$makeFlags DESTDIR=$(out)"
+ '';
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+
+ postPatch = ''
+ NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(sdl2-config --cflags)"
+ sed -i 's,APPDIR games,APPDIR bin,' src/install.cmake
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Modern Interpreter for the Commander Keen Games";
+ longDescription = ''
+ Commander Genius is an open-source clone of
+ Commander Keen which allows you to play
+ the games, and some of the mods
+ made for it. All of the original data files
+ are required to do so
+ '';
+ homepage = "https://github.com/gerstrong/Commander-Genius";
+ maintainers = with maintainers; [ hce ];
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/construo/default.nix b/infra/libkookie/nixpkgs/pkgs/games/construo/default.nix
new file mode 100644
index 000000000000..815c2f3fab40
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/construo/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, fetchurl
+, libX11
+, zlib
+, xorgproto
+, libGL ? null
+, libGLU ? null
+, freeglut ? null
+}:
+
+stdenv.mkDerivation rec {
+ pname = "construo";
+ version = "0.2.3";
+
+ src = fetchurl {
+ url = "https://github.com/Construo/construo/releases/download/v${version}/${pname}-${version}.tar.gz";
+ sha256 = "1wmj527hbj1qv44cdsj6ahfjrnrjwg2dp8gdick8nd07vm062qxa";
+ };
+
+ buildInputs = [ libX11 zlib xorgproto ]
+ ++ stdenv.lib.optional (libGL != null) libGL
+ ++ stdenv.lib.optional (libGLU != null) libGLU
+ ++ stdenv.lib.optional (freeglut != null) freeglut;
+
+ preConfigure = ''
+ substituteInPlace src/Makefile.in \
+ --replace games bin
+ '';
+
+ meta = {
+ description = "Masses and springs simulation game";
+ homepage = "http://fs.fsf.org/construo/";
+ license = stdenv.lib.licenses.gpl3;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/crack-attack/crack-attack-1.1.14-gcc43.patch b/infra/libkookie/nixpkgs/pkgs/games/crack-attack/crack-attack-1.1.14-gcc43.patch
new file mode 100644
index 000000000000..fb2910d128ee
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/crack-attack/crack-attack-1.1.14-gcc43.patch
@@ -0,0 +1,10 @@
+--- crack-attack-1.1.14/src/Game.h
++++ crack-attack-1.1.14/src/Game.h
+@@ -34,6 +34,7 @@
+ #include <climits>
+ #include <cstdlib>
+ #include <cmath>
++#include <cstring>
+
+ #ifdef __MINGW32__
+ # include <windows.h>
diff --git a/infra/libkookie/nixpkgs/pkgs/games/crack-attack/crack-attack-1.1.14-glut.patch b/infra/libkookie/nixpkgs/pkgs/games/crack-attack/crack-attack-1.1.14-glut.patch
new file mode 100644
index 000000000000..4daea4c53a28
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/crack-attack/crack-attack-1.1.14-glut.patch
@@ -0,0 +1,10 @@
+--- crack-attack-1.1.14/src/Attack.cxx
++++ crack-attack-1.1.14/src/Attack.cxx
+@@ -83,6 +83,7 @@
+ int height = -1, width = -1;
+
+ player_name[0] = '\0';
++ glutInit(&argc, argv);
+ parseCommandLine(argc, argv, mode, port, host_name, player_name, height, width);
+ run_crack_attack(mode, port, host_name, player_name, height, width);
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/crack-attack/default.nix b/infra/libkookie/nixpkgs/pkgs/games/crack-attack/default.nix
new file mode 100644
index 000000000000..05c829441ad9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/crack-attack/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, pkgconfig, gtk2, freeglut, SDL, SDL_mixer, libGLU, libGL, libXi, libXmu }:
+
+stdenv.mkDerivation {
+ name = "crack-attack-1.1.14";
+
+ src = fetchurl {
+ url = "mirror://savannah/crack-attack/crack-attack-1.1.14.tar.gz";
+ sha256 = "1sakj9a2q05brpd7lkqxi8q30bccycdzd96ns00s6jbxrzjlijkm";
+ };
+
+ patches = [
+ ./crack-attack-1.1.14-gcc43.patch
+ ./crack-attack-1.1.14-glut.patch
+ ];
+
+ configureFlags = [
+ "--enable-sound=yes"
+ "--prefix=${placeholder "out"}"
+ "--datadir=${placeholder "out"}/share"
+ ];
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ gtk2 freeglut SDL SDL_mixer libGLU libGL libXi libXmu ];
+
+ hardeningDisable = [ "format" ];
+ enableParallelBuilding = true;
+
+ meta = {
+ description = "A fast-paced puzzle game inspired by the classic Super NES title Tetris Attack!";
+ homepage = "https://www.nongnu.org/crack-attack/";
+ license = stdenv.lib.licenses.gpl2;
+ platforms = stdenv.lib.platforms.linux;
+ maintainers = [ stdenv.lib.maintainers.piotr ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/crafty/default.nix b/infra/libkookie/nixpkgs/pkgs/games/crafty/default.nix
new file mode 100644
index 000000000000..191baa7e5923
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/crafty/default.nix
@@ -0,0 +1,73 @@
+{ stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation rec {
+ pname = "crafty";
+ version = "25.0.1";
+
+ src = fetchurl {
+ url = "http://www.craftychess.com/downloads/source/crafty-${version}.zip";
+ sha256 = "0aqgj2q7kdlgbha01qs869cwyja13bc7q2lh4nfhlba2pklknsm8";
+ };
+
+ bookBin = fetchurl {
+ url = "http://www.craftychess.com/downloads/book/book.bin";
+ sha256 = "10rrgkr3hxm7pxdbc2jq8b5g74gfhzk4smahks3k8am1cmyq4p7r";
+ };
+
+ startPgn = fetchurl {
+ url = "http://craftychess.com/downloads/book/start.pgn.gz";
+ sha256 = "12g70mgfifwssfvndzq94pin34dizlixhsga75vgj7dakysi2p7f";
+ };
+
+ buildInputs = [ unzip ];
+
+ unpackPhase = ''
+ mkdir "craftysrc"
+ unzip $src -d craftysrc
+ gunzip -c $startPgn > "craftysrc/start.pgn"
+ '';
+
+ buildPhase = ''
+ cd craftysrc
+ make unix-gcc
+ '';
+
+ installPhase = ''
+ BUILDDIR="$PWD"
+ mkdir -p $out/bin
+ cp -p ./crafty $out/bin
+
+ mkdir -p $out/share/crafty
+ cd $out/share/crafty
+
+ $out/bin/crafty "books create $BUILDDIR/start.pgn 60"
+ rm -f *.001
+
+ cp -p ${bookBin} $out/share/crafty/book.bin
+
+ mv $out/bin/crafty $out/bin/.crafty-wrapped
+
+ cat - > $out/bin/crafty <<EOF
+ #! ${stdenv.shell}
+ #
+ # The books are copied from share/crafty to ~/.crafty/books the first time
+ # this script is run. You can restore them at any time just copying them
+ # again.
+ if [[ ! -d "\$HOME/.crafty/books" ]]; then
+ mkdir "\$HOME/.crafty/books" -p
+ cp "$out/share/crafty/"book*.bin "\$HOME/.crafty/books"
+ chmod ug+w "\$HOME/.crafty/books/"*
+ fi
+ exec $out/bin/.crafty-wrapped bookpath=\$HOME/.crafty/books "\$@"
+ EOF
+ chmod +x $out/bin/crafty
+ '';
+
+ meta = {
+ homepage = "http://www.craftychess.com/";
+ description = "Chess program developed by Dr. Robert M. Hyatt";
+ license = stdenv.lib.licenses.unfree;
+ platforms = stdenv.lib.platforms.unix;
+ maintainers = [ stdenv.lib.maintainers.jwiegley ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/crawl/crawl_purify.patch b/infra/libkookie/nixpkgs/pkgs/games/crawl/crawl_purify.patch
new file mode 100644
index 000000000000..dda55b09f329
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/crawl/crawl_purify.patch
@@ -0,0 +1,47 @@
+diff --git a/crawl-ref/source/Makefile b/crawl-ref/source/Makefile
+--- a/crawl-ref/source/Makefile
++++ b/crawl-ref/source/Makefile
+@@ -248,9 +248,9 @@ ifeq ($(uname_S),Darwin)
+ STRIP := strip -x
+ NEED_APPKIT = YesPlease
+ LIBNCURSES_IS_UNICODE = Yes
+- NO_PKGCONFIG = Yes
+- BUILD_SQLITE = YesPlease
+- BUILD_ZLIB = YesPlease
++ #NO_PKGCONFIG = Yes
++ #BUILD_SQLITE = YesPlease
++ #BUILD_ZLIB = YesPlease
+ ifdef TILES
+ EXTRA_LIBS += -framework AppKit -framework AudioUnit -framework CoreAudio -framework ForceFeedback -framework Carbon -framework IOKit -framework OpenGL -framework AudioToolbox -framework CoreVideo contrib/install/$(ARCH)/lib/libSDL2main.a
+ BUILD_FREETYPE = YesPlease
+diff --git a/crawl-ref/source/util/find_font b/crawl-ref/source/util/find_font
+--- a/crawl-ref/source/util/find_font
++++ b/crawl-ref/source/util/find_font
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+
+-FONTDIRS="/usr/share/fonts /usr/local/share/fonts /usr/*/lib/X11/fonts"
++FONTDIRS="${fontsPath}/share/fonts"
+
+ name=$1
+ [ "$name" ] || { echo "Usage: $0 <fontname.ttf>" >&2; exit 100; }
+@@ -11,6 +11,6 @@
+ for dir in $FONTDIRS; do
+ [ -d "$dir" ] && echo "$dir"
+ done
+- } | xargs -I% find % \( -type f -o -type l \) -iname "$name" -print \
++ } | xargs -I% find -L % \( -type f -o -type l \) -iname "$name" -print \
+ | head -n1
+ } 2>/dev/null
+diff --git a/crawl-ref/source/windowmanager-sdl.cc b/crawl-ref/source/windowmanager-sdl.cc
+--- a/crawl-ref/source/windowmanager-sdl.cc
++++ b/crawl-ref/source/windowmanager-sdl.cc
+@@ -20,7 +20,7 @@
+ # else
+ # include <SDL2/SDL.h>
+ # endif
+-# include <SDL_image.h>
++# include <SDL2/SDL_image.h>
+ # if defined(USE_SOUND) && !defined(WINMM_PLAY_SOUNDS)
+ # include <SDL2/SDL_mixer.h>
+ # endif
diff --git a/infra/libkookie/nixpkgs/pkgs/games/crawl/default.nix b/infra/libkookie/nixpkgs/pkgs/games/crawl/default.nix
new file mode 100644
index 000000000000..20e31c979e6f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/crawl/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, lib, fetchFromGitHub, fetchpatch, which, sqlite, lua5_1, perl, python3, zlib, pkgconfig, ncurses
+, dejavu_fonts, libpng, SDL2, SDL2_image, SDL2_mixer, libGLU, libGL, freetype, pngcrush, advancecomp
+, tileMode ? false, enableSound ? tileMode
+
+# MacOS / Darwin builds
+, darwin ? null
+}:
+
+stdenv.mkDerivation rec {
+ name = "crawl-${version}${lib.optionalString tileMode "-tiles"}";
+ version = "0.25.1";
+
+ src = fetchFromGitHub {
+ owner = "crawl";
+ repo = "crawl";
+ rev = version;
+ sha256 = "0i1cvwzwmcb07ynz1nk2svprfhsgcqmagvj5jfzayvcb1a2ww23b";
+ };
+
+ # Patch hard-coded paths and remove force library builds
+ patches = [ ./crawl_purify.patch ];
+
+ nativeBuildInputs = [ pkgconfig which perl pngcrush advancecomp ];
+
+ # Still unstable with luajit
+ buildInputs = [ lua5_1 zlib sqlite ncurses ]
+ ++ (with python3.pkgs; [ pyyaml ])
+ ++ lib.optionals tileMode [ libpng SDL2 SDL2_image freetype libGLU libGL ]
+ ++ lib.optional enableSound SDL2_mixer
+ ++ (lib.optionals stdenv.isDarwin (
+ assert (lib.assertMsg (darwin != null) "Must have darwin frameworks available for darwin builds");
+ with darwin.apple_sdk.frameworks; [
+ AppKit AudioUnit CoreAudio ForceFeedback Carbon IOKit OpenGL
+ ]
+ ));
+
+ preBuild = ''
+ cd crawl-ref/source
+ echo "${version}" > util/release_ver
+ patchShebangs 'util'
+ patchShebangs util/gen-mi-enum
+ rm -rf contrib
+ '';
+
+ fontsPath = lib.optionalString tileMode dejavu_fonts;
+
+ makeFlags = [ "prefix=${placeholder "out"}" "FORCE_CC=cc" "FORCE_CXX=c++" "HOSTCXX=c++"
+ "SAVEDIR=~/.crawl" "sqlite=${sqlite.dev}"
+ "DATADIR=${placeholder "out"}"
+ ] ++ lib.optional tileMode "TILES=y"
+ ++ lib.optional enableSound "SOUND=y";
+
+ postInstall = ''
+ ${lib.optionalString tileMode "mv $out/bin/crawl $out/bin/crawl-tiles"}
+ sed -i 's#/usr/games/##' debian/crawl${lib.optionalString tileMode "-tiles"}.desktop
+ install -m 444 -D debian/crawl${lib.optionalString tileMode "-tiles"}.desktop \
+ $out/share/applications/crawl${lib.optionalString tileMode "-tiles"}.desktop
+ install -m 444 -D dat/tiles/stone_soup_icon-512x512.png $out/share/icons/hicolor/512x512/apps/crawl.png
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Open-source, single-player, role-playing roguelike game";
+ homepage = "http://crawl.develz.org/";
+ longDescription = ''
+ Dungeon Crawl: Stone Soup, an open-source, single-player, role-playing
+ roguelike game of exploration and treasure-hunting in dungeons filled
+ with dangerous and unfriendly monsters in a quest to rescue the
+ mystifyingly fabulous Orb of Zot.
+ '';
+ platforms = platforms.linux ++ platforms.darwin;
+ license = with licenses; [ gpl2Plus bsd2 bsd3 mit licenses.zlib cc0 ];
+ maintainers = [ maintainers.abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/crispy-doom/default.nix b/infra/libkookie/nixpkgs/pkgs/games/crispy-doom/default.nix
new file mode 100644
index 000000000000..70e191fe887b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/crispy-doom/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, autoreconfHook, pkgconfig, SDL2, SDL2_mixer, SDL2_net, fetchFromGitHub, python }:
+
+stdenv.mkDerivation rec {
+ pname = "crispy-doom";
+ version = "5.9.2";
+
+ src = fetchFromGitHub {
+ owner = "fabiangreffrath";
+ repo = pname;
+ rev = "${pname}-${version}";
+ sha256 = "0fkw9z66sjcz7k528wyla6mgi4impqimn93yhqmc194ycrjirraa";
+ };
+
+ postPatch = ''
+ sed -e 's#/games#/bin#g' -i src{,/setup}/Makefile.am
+ for script in $(grep -lr '^#!/usr/bin/env python$'); do patchShebangs $script; done
+ '';
+
+ nativeBuildInputs = [ autoreconfHook pkgconfig python ];
+ buildInputs = [ SDL2 SDL2_mixer SDL2_net ];
+ enableParallelBuilding = true;
+
+ meta = {
+ homepage = "http://fabiangreffrath.github.io/crispy-doom";
+ description = "A limit-removing enhanced-resolution Doom source port based on Chocolate Doom";
+ longDescription = ''
+ Crispy Doom is a limit-removing enhanced-resolution Doom source port based on Chocolate Doom.
+ Its name means that 640x400 looks \"crisp\" and is also a slight reference to its origin.
+ '';
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.unix;
+ maintainers = with stdenv.lib.maintainers; [ neonfuz ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/crrcsim/default.nix b/infra/libkookie/nixpkgs/pkgs/games/crrcsim/default.nix
new file mode 100644
index 000000000000..e57d6bcab066
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/crrcsim/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, libGLU, libGL, SDL, SDL_mixer, plib, libjpeg }:
+let
+ version = "0.9.13";
+in
+stdenv.mkDerivation rec {
+ pname = "crrcsim";
+ inherit version;
+
+ src = fetchurl {
+ url = "mirror://sourceforge/crrcsim/${pname}-${version}.tar.gz";
+ sha256 = "abe59b35ebb4322f3c48e6aca57dbf27074282d4928d66c0caa40d7a97391698";
+ };
+
+ buildInputs = [
+ libGLU libGL SDL SDL_mixer plib libjpeg
+ ];
+
+ patches = [
+ ./gcc6.patch
+ ];
+
+ meta = {
+ description = "A model-airplane flight simulator";
+ maintainers = with stdenv.lib.maintainers; [ raskin ];
+ platforms = [ "i686-linux" "x86_64-linux" ];
+ license = stdenv.lib.licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/crrcsim/gcc6.patch b/infra/libkookie/nixpkgs/pkgs/games/crrcsim/gcc6.patch
new file mode 100644
index 000000000000..c19f28c514d7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/crrcsim/gcc6.patch
@@ -0,0 +1,13 @@
+diff --git c/src/mod_video/crrc_animation.cpp i/src/mod_video/crrc_animation.cpp
+index ee7d7f4..855b106 100644
+--- c/src/mod_video/crrc_animation.cpp
++++ i/src/mod_video/crrc_animation.cpp
+@@ -84,7 +84,7 @@ void createAnimation(SimpleXMLTransfer *animation, ssgEntity* model)
+ else
+ {
+ std::cerr << "createAnimation: unknown animation type \'"
+- << type << "\'" << std::cerr;
++ << type << "\'" << std::endl;
+ }
+
+ if (anim != NULL)
diff --git a/infra/libkookie/nixpkgs/pkgs/games/curseofwar/default.nix b/infra/libkookie/nixpkgs/pkgs/games/curseofwar/default.nix
new file mode 100644
index 000000000000..9aff3798b6ba
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/curseofwar/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, fetchFromGitHub
+, ncurses
+, SDL
+}:
+
+stdenv.mkDerivation rec {
+ pname = "curseofwar";
+ version = "1.3.0";
+
+ src = fetchFromGitHub {
+ owner = "a-nikolaev";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1wd71wdnj9izg5d95m81yx3684g4zdi7fsy0j5wwnbd9j34ilz1i";
+ };
+
+ buildInputs = [
+ ncurses
+ SDL
+ ];
+
+ makeFlags = (if isNull SDL then [] else [ "SDL=yes" ]) ++ [
+ "PREFIX=$(out)"
+ # force platform's cc on darwin, otherwise gcc is used
+ "CC=${stdenv.cc.targetPrefix}cc"
+ ];
+
+ meta = with stdenv.lib; {
+ description = "A fast-paced action strategy game";
+ homepage = "https://a-nikolaev.github.io/curseofwar/";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ fgaz ];
+ platforms = platforms.all;
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cutemaze/default.nix b/infra/libkookie/nixpkgs/pkgs/games/cutemaze/default.nix
new file mode 100644
index 000000000000..a293989d5e6a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cutemaze/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, qmake, qttools, qtsvg, mkDerivation }:
+
+mkDerivation rec {
+ pname = "cutemaze";
+ version = "1.2.6";
+
+ src = fetchurl {
+ url = "https://gottcode.org/cutemaze/${pname}-${version}-src.tar.bz2";
+ sha256 = "0pw31j2i3ifndikhz9w684ia00r8zvcgnb66ign9w4lgs1zjgcrw";
+ };
+
+ nativeBuildInputs = [ qmake qttools ];
+
+ buildInputs = [ qtsvg ];
+
+ postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+ mkdir -p $out/Applications
+ mv CuteMaze.app $out/Applications
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://gottcode.org/cutemaze/";
+ description = "Simple, top-down game in which mazes are randomly generated";
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ dotlambda ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/cuyo/default.nix b/infra/libkookie/nixpkgs/pkgs/games/cuyo/default.nix
new file mode 100644
index 000000000000..72c55fc18112
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/cuyo/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, SDL, SDL_mixer, zlib }:
+
+stdenv.mkDerivation {
+ pname = "cuyo";
+ version = "2.1.0";
+
+ src = fetchurl {
+ url = "https://download.savannah.gnu.org/releases/cuyo/cuyo-2.1.0.tar.gz";
+ sha256 = "17yqv924x7yvwix7yz9jdhgyar8lzdhqvmpvv0any8rdkajhj23c";
+ };
+
+ buildInputs = [ SDL SDL_mixer zlib ];
+
+ meta = {
+ homepage = "http://karimmi.de/cuyo";
+ description = "Stacking blocks game, with different rules for each level";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/devilutionx/default.nix b/infra/libkookie/nixpkgs/pkgs/games/devilutionx/default.nix
new file mode 100644
index 000000000000..69d7e3ca6662
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/devilutionx/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchFromGitHub, cmake, SDL2, SDL2_mixer, SDL2_ttf, libsodium, pkg-config }:
+stdenv.mkDerivation rec {
+ version = "1.0.1";
+ pname = "devilutionx";
+
+ src = fetchFromGitHub {
+ owner = "diasurgical";
+ repo = "devilutionX";
+ rev = version;
+ sha256 = "1jvjlch9ql5s5jx9g5y5pkc2xn62199qylsmzpqzx1jc3k2vmw5i";
+ };
+
+ NIX_CFLAGS_COMPILE = [
+ "-I${SDL2_ttf}/include/SDL2"
+ ''-DTTF_FONT_PATH="${placeholder "out"}/share/fonts/truetype/CharisSILB.ttf"''
+ ];
+
+ nativeBuildInputs = [ pkg-config cmake ];
+ buildInputs = [ libsodium SDL2 SDL2_mixer SDL2_ttf ];
+
+ installPhase = ''
+ runHook preInstall
+
+ '' + (if stdenv.isDarwin then ''
+ mkdir -p $out/Applications
+ mv devilutionx.app $out/Applications
+ '' else ''
+ install -Dm755 -t $out/bin devilutionx
+ install -Dt $out/share/fonts/truetype ../Packaging/resources/CharisSILB.ttf
+
+ # TODO: icons and .desktop (see Packages/{debian,fedora}/*)
+ '') + ''
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/diasurgical/devilutionX";
+ description = "Diablo build for modern operating systems";
+ longDescription = "In order to play this game a copy of diabdat.mpq is required. Place a copy of diabdat.mpq in ~/.local/share/diasurgical/devilution before executing the game.";
+ license = licenses.unlicense;
+ maintainers = [ maintainers.karolchmist ];
+ platforms = platforms.linux ++ platforms.darwin ++ platforms.windows;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dhewm3/default.nix b/infra/libkookie/nixpkgs/pkgs/games/dhewm3/default.nix
new file mode 100644
index 000000000000..1735c4380f26
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dhewm3/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, cmake, SDL2, libGLU, libGL, zlib, libjpeg, libogg, libvorbis
+, openal, curl }:
+
+stdenv.mkDerivation rec {
+ pname = "dhewm3";
+ version = "1.5.0";
+
+ src = fetchFromGitHub {
+ owner = "dhewm";
+ repo = "dhewm3";
+ rev = version;
+ sha256 = "0wsabvh1x4g12xmhzs2m2pgri2q9sir1w3m2r7fpy6kzxp32hqdk";
+ };
+
+ # Add libGLU libGL linking
+ patchPhase = ''
+ sed -i 's/\<idlib\()\?\)$/idlib GL\1/' neo/CMakeLists.txt
+ '';
+
+ preConfigure = ''
+ cd "$(ls -d dhewm3-*.src)"/neo
+ '';
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ SDL2 libGLU libGL zlib libjpeg libogg libvorbis openal curl ];
+
+ enableParallelBuilding = true;
+
+ hardeningDisable = [ "format" ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/dhewm/dhewm3";
+ description = "Doom 3 port to SDL";
+ license = stdenv.lib.licenses.gpl3;
+ maintainers = with maintainers; [ MP2E ];
+ platforms = with platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/duckmarines/default.nix b/infra/libkookie/nixpkgs/pkgs/games/duckmarines/default.nix
new file mode 100644
index 000000000000..7af31c606a93
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/duckmarines/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, love, lua, makeWrapper, makeDesktopItem }:
+
+let
+ pname = "duckmarines";
+ version = "1.0c";
+
+ icon = fetchurl {
+ url = "http://tangramgames.dk/img/thumb/duckmarines.png";
+ sha256 = "07ypbwqcgqc5f117yxy9icix76wlybp1cmykc8f3ivdps66hl0k5";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "duckmarines";
+ exec = pname;
+ icon = icon;
+ comment = "Duck-themed action puzzle video game";
+ desktopName = "Duck Marines";
+ genericName = "duckmarines";
+ categories = "Game;";
+ };
+
+in
+
+stdenv.mkDerivation rec {
+ name = "${pname}-${version}";
+
+ src = fetchurl {
+ url = "https://github.com/SimonLarsen/${pname}/releases/download/v${version}/${pname}-1.0c.love";
+ sha256 = "1rvgpkvi4h9zhc4fwb4knhsa789yjcx4a14fi4vqfdyybhvg5sh9";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+ buildInputs = [ lua love ];
+
+ phases = [ "installPhase" ];
+
+ installPhase =
+ ''
+ mkdir -p $out/bin
+ mkdir -p $out/share/games/lovegames
+
+ cp -v ${src} $out/share/games/lovegames/${pname}.love
+
+ makeWrapper ${love}/bin/love $out/bin/${pname} --add-flags $out/share/games/lovegames/${pname}.love
+
+ chmod +x $out/bin/${pname}
+ mkdir -p $out/share/applications
+ ln -s ${desktopItem}/share/applications/* $out/share/applications/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Duck-themed action puzzle video game";
+ maintainers = with maintainers; [ leenaars ];
+ platforms = platforms.linux;
+ hydraPlatforms = [];
+ license = licenses.free;
+ downloadPage = "http://tangramgames.dk/games/duckmarines";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/default.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/default.nix
new file mode 100644
index 000000000000..2a4df9bf7cf7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/default.nix
@@ -0,0 +1,122 @@
+{ pkgs, stdenv, stdenvNoCC, gccStdenv, lib, recurseIntoAttrs }:
+
+# To whomever it may concern:
+#
+# This directory menaces with spikes of Nix code. It is terrifying.
+#
+# If this is your first time here, you should probably install the dwarf-fortress-full package,
+# for instance with:
+#
+# environment.systemPackages = [ pkgs.dwarf-fortress-packages.dwarf-fortress-full ];
+#
+# You can adjust its settings by using override, or compile your own package by
+# using the other packages here.
+#
+# For example, you can enable the FPS indicator, disable the intro, pick a
+# theme other than phoebus (the default for dwarf-fortress-full), _and_ use
+# an older version with something like:
+#
+# environment.systemPackages = [
+# (pkgs.dwarf-fortress-packages.dwarf-fortress-full.override {
+# dfVersion = "0.44.11";
+# theme = "cla";
+# enableIntro = false;
+# enableFPS = true;
+# })
+# ]
+#
+# Take a look at lazy-pack.nix to see all the other options.
+#
+# You will find the configuration files in ~/.local/share/df_linux/data/init. If
+# you un-symlink them and edit, then the scripts will avoid overwriting your
+# changes on later launches, but consider extending the wrapper with your
+# desired options instead.
+
+with lib;
+
+let
+ callPackage = pkgs.newScope self;
+
+ # The latest Dwarf Fortress version. Maintainers: when a new version comes
+ # out, ensure that (unfuck|dfhack|twbt) are all up to date before changing
+ # this.
+ latestVersion = "0.47.04";
+
+ # Converts a version to a package name.
+ versionToName = version: "dwarf-fortress_${lib.replaceStrings ["."] ["_"] version}";
+
+ dwarf-therapist-original = pkgs.qt5.callPackage ./dwarf-therapist {
+ texlive = pkgs.texlive.combine {
+ inherit (pkgs.texlive) scheme-basic float caption wrapfig adjmulticol sidecap preprint enumitem;
+ };
+ };
+
+ # A map of names to each Dwarf Fortress package we know about.
+ df-games = lib.listToAttrs (map (dfVersion: {
+ name = versionToName dfVersion;
+ value =
+ let
+ # I can't believe this syntax works. Spikes of Nix code indeed...
+ dwarf-fortress = callPackage ./game.nix {
+ inherit dfVersion;
+ inherit dwarf-fortress-unfuck;
+ };
+
+ # unfuck is linux-only right now, we will only use it there.
+ dwarf-fortress-unfuck = if stdenv.isLinux then callPackage ./unfuck.nix { inherit dfVersion; }
+ else null;
+
+ twbt = callPackage ./twbt { inherit dfVersion; };
+
+ dfhack = callPackage ./dfhack {
+ inherit (pkgs.perlPackages) XMLLibXML XMLLibXSLT;
+ inherit dfVersion twbt;
+ stdenv = gccStdenv;
+ };
+
+ dwarf-therapist = callPackage ./dwarf-therapist/wrapper.nix {
+ inherit dwarf-fortress;
+ dwarf-therapist = dwarf-therapist-original;
+ };
+ in
+ callPackage ./wrapper {
+ inherit (self) themes;
+
+ dwarf-fortress = dwarf-fortress;
+ twbt = twbt;
+ dfhack = dfhack;
+ dwarf-therapist = dwarf-therapist;
+
+ jdk = pkgs.jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+ };
+ }) (lib.attrNames self.df-hashes));
+
+ self = rec {
+ df-hashes = builtins.fromJSON (builtins.readFile ./game.json);
+
+ # Aliases for the latest Dwarf Fortress and the selected Therapist install
+ dwarf-fortress = getAttr (versionToName latestVersion) df-games;
+ inherit dwarf-therapist-original;
+ dwarf-therapist = dwarf-fortress.dwarf-therapist;
+ dwarf-fortress-original = dwarf-fortress.dwarf-fortress;
+
+ dwarf-fortress-full = callPackage ./lazy-pack.nix {
+ inherit df-games versionToName latestVersion;
+ };
+
+ soundSense = callPackage ./soundsense.nix { };
+
+ legends-browser = callPackage ./legends-browser {
+ jre = pkgs.jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+ };
+
+ themes = recurseIntoAttrs (callPackage ./themes {
+ stdenv = stdenvNoCC;
+ });
+
+ # Theme aliases
+ phoebus-theme = themes.phoebus;
+ cla-theme = themes.cla;
+ };
+
+in self // df-games
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/df_permission b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/df_permission
new file mode 100644
index 000000000000..dc1c0c151e0b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/df_permission
@@ -0,0 +1,40 @@
+From tarn.adams@gmail.com Sat Oct 30 00:56:16 2010
+Date: Fri, 29 Oct 2010 16:56:15 -0800
+From: Tarn Adams <tarn.adams@gmail.com>
+To: roconnor@theorem.ca
+Subject: Re: Dwarf Fortress Redistribution for NixOS
+
+Sure, that redistribution is fine. I think I've handled the movie
+issue for next time now. Thanks for the heads up on that.
+
+Tarn
+
+On Fri, Oct 29, 2010 at 6:56 AM, <roconnor@theorem.ca> wrote:
+> I'd like to distribute a *slightly* modified version of Dwarf Fortress which
+> is needed to run it under the NixOS distribution of Linux (see
+> <https://nixos.org/>
+>
+> Modification: The interpreter location /lib/ld-linux.so.2 in
+> lib/Dwarf_Fortress is replaced with the location of ld-linux.so.2 under the
+> NixOS distribution (which is currently
+> /nix/store/l8x3fdy1r6zf441vnqa87lzsvxrjbdz9-glibc-2.11.1/lib/ld-linux.so.2
+> but might change at a later date to something similar).
+>
+> I don't need you to recompile Dwarf Fortress.  I can patch the binary itself
+> using patchelf.  I just would like your permission to redistrubute this
+> modified binary.
+>
+> Thanks, I'm looking forward to trying out your game and letting other Nix
+> users try it out too.
+>
+> P.S. the inital_movies are open in read/write mode instead of read-only mode
+> which causes some issues under NixOS because the inital_movies are stored
+> read-only.  I have a workaround, but you may want to consider opening these
+> files in read-only mode.
+>
+> --
+> Russell O'Connor                                      <http://r6.ca/>
+> ``All talk about `theft,''' the general counsel of the American Graphophone
+> Company wrote, ``is the merest claptrap, for there exists no property in
+> ideas musical, literary or artistic, except as defined by statute.''
+>
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dfhack/default.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dfhack/default.nix
new file mode 100644
index 000000000000..11c21b82c29c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dfhack/default.nix
@@ -0,0 +1,167 @@
+{ stdenv, buildEnv, lib, fetchFromGitHub, cmake, writeScriptBin
+, perl, XMLLibXML, XMLLibXSLT, zlib, ruby
+, enableStoneSense ? false, allegro5, libGLU, libGL
+, enableTWBT ? true, twbt
+, SDL
+, dfVersion
+}:
+
+with lib;
+
+let
+ dfhack-releases = {
+ "0.43.05" = {
+ dfHackRelease = "0.43.05-r3.1";
+ sha256 = "1ds366i0qcfbn62w9qv98lsqcrm38npzgvcr35hf6ihqa6nc6xrl";
+ xmlRev = "860a9041a75305609643d465123a4b598140dd7f";
+ prerelease = false;
+ };
+ "0.44.05" = {
+ dfHackRelease = "0.44.05-r2";
+ sha256 = "1cwifdhi48a976xc472nf6q2k0ibwqffil5a4llcymcxdbgxdcc9";
+ xmlRev = "2794f8a6d7405d4858bac486a0bb17b94740c142";
+ prerelease = false;
+ };
+ "0.44.09" = {
+ dfHackRelease = "0.44.09-r1";
+ sha256 = "1nkfaa43pisbyik5inj5q2hja2vza5lwidg5z02jyh136jm64hwk";
+ xmlRev = "3c0bf63674d5430deadaf7befaec42f0ec1e8bc5";
+ prerelease = false;
+ };
+ "0.44.10" = {
+ dfHackRelease = "0.44.10-r2";
+ sha256 = "19bxsghxzw3bilhr8sm4axz7p7z8lrvbdsd1vdjf5zbg04rs866i";
+ xmlRev = "321bd48b10c4c3f694cc801a7dee6be392c09b7b";
+ prerelease = false;
+ };
+ "0.44.11" = {
+ dfHackRelease = "0.44.11-beta2.1";
+ sha256 = "1jgwcqg9m1ybv3szgnklp6zfpiw5mswla464dlj2gfi5v82zqbv2";
+ xmlRev = "f27ebae6aa8fb12c46217adec5a812cd49a905c8";
+ prerelease = true;
+ };
+ "0.44.12" = {
+ dfHackRelease = "0.44.12-r1";
+ sha256 = "0j03lq6j6w378z6cvm7jspxc7hhrqm8jaszlq0mzfvap0k13fgyy";
+ xmlRev = "23500e4e9bd1885365d0a2ef1746c321c1dd5094";
+ prerelease = false;
+ };
+ "0.47.02" = {
+ dfHackRelease = "0.47.02-alpha0";
+ sha256 = "19lgykgqm0si9vd9hx4zw8b5m9188gg8r1a6h25np2m2ziqwbjj9";
+ xmlRev = "23500e4e9bd1885365d0a2ef1746c321c1dd509a";
+ prerelease = true;
+ };
+ "0.47.04" = {
+ dfHackRelease = "0.47.04-r2";
+ sha256 = "18ppn1dqaxi6ahjzsvb9kw70rvca106a1hibhzc4rxmraypnqb89";
+ xmlRev = "036b662a1bbc96b4911f3cbe74dfa1243b6459bc";
+ prerelease = false;
+ };
+ };
+
+ release = if hasAttr dfVersion dfhack-releases
+ then getAttr dfVersion dfhack-releases
+ else throw "[DFHack] Unsupported Dwarf Fortress version: ${dfVersion}";
+
+ version = release.dfHackRelease;
+
+ # revision of library/xml submodule
+ xmlRev = release.xmlRev;
+
+ arch =
+ if stdenv.hostPlatform.system == "x86_64-linux" then "64"
+ else if stdenv.hostPlatform.system == "i686-linux" then "32"
+ else throw "Unsupported architecture";
+
+ fakegit = writeScriptBin "git" ''
+ #! ${stdenv.shell}
+ if [ "$*" = "describe --tags --long" ]; then
+ echo "${version}-unknown"
+ elif [ "$*" = "describe --tags --abbrev=8 --long" ]; then
+ echo "${version}-unknown"
+ elif [ "$*" = "describe --tags --abbrev=8 --exact-match" ]; then
+ echo "${version}"
+ elif [ "$*" = "rev-parse HEAD" ]; then
+ if [ "$(dirname "$(pwd)")" = "xml" ]; then
+ echo "${xmlRev}"
+ else
+ echo "refs/tags/${version}"
+ fi
+ elif [ "$*" = "rev-parse HEAD:library/xml" ]; then
+ echo "${xmlRev}"
+ else
+ exit 1
+ fi
+ '';
+
+ dfhack = stdenv.mkDerivation {
+ pname = "dfhack-base";
+ inherit version;
+
+ # Beware of submodules
+ src = fetchFromGitHub {
+ owner = "DFHack";
+ repo = "dfhack";
+ rev = release.dfHackRelease;
+ sha256 = release.sha256;
+ fetchSubmodules = true;
+ };
+
+ patches = [ ./fix-stonesense.patch ];
+
+ # As of
+ # https://github.com/DFHack/dfhack/commit/56e43a0dde023c5a4595a22b29d800153b31e3c4,
+ # dfhack gets its goodies from the directory above the Dwarf_Fortress
+ # executable, which leads to stock Dwarf Fortress and not the built
+ # environment where all the dfhack resources are symlinked to (typically
+ # ~/.local/share/df_linux). This causes errors like `tweak is not a
+ # recognized command` to be reported and dfhack to lose some of its
+ # functionality.
+ postPatch = ''
+ sed -i 's@cached_path = path_string.*@cached_path = getenv("DF_DIR");@' library/Process-linux.cpp
+ '';
+
+ nativeBuildInputs = [ cmake perl XMLLibXML XMLLibXSLT fakegit ];
+ # We don't use system libraries because dfhack needs old C++ ABI.
+ buildInputs = [ zlib SDL ]
+ ++ lib.optionals enableStoneSense [ allegro5 libGLU libGL ];
+
+ preConfigure = ''
+ # Trick build system into believing we have .git
+ mkdir -p .git/modules/library/xml
+ touch .git/index .git/modules/library/xml/index
+ '';
+
+ preBuild = ''
+ export LD_LIBRARY_PATH="$PWD/depends/protobuf''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
+ '';
+
+ cmakeFlags = [ "-DDFHACK_BUILD_ARCH=${arch}" "-DDOWNLOAD_RUBY=OFF" ]
+ ++ lib.optionals enableStoneSense [ "-DBUILD_STONESENSE=ON" "-DSTONESENSE_INTERNAL_SO=OFF" ];
+
+ # dfhack expects an unversioned libruby.so to be present in the hack
+ # subdirectory for ruby plugins to function.
+ postInstall = ''
+ ln -s ${ruby}/lib/libruby-*.so $out/hack/libruby.so
+ '';
+
+ enableParallelBuilding = true;
+ };
+in
+
+buildEnv {
+ name = "dfhack-${version}";
+
+ passthru = { inherit version dfVersion; };
+
+ paths = [ dfhack ] ++ lib.optionals enableTWBT [ twbt.lib ];
+
+ meta = with stdenv.lib; {
+ description = "Memory hacking library for Dwarf Fortress and a set of tools that use it";
+ homepage = "https://github.com/DFHack/dfhack/";
+ license = licenses.zlib;
+ platforms = [ "x86_64-linux" "i686-linux" ];
+ maintainers = with maintainers; [ robbinch a1russell abbradar numinit ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dfhack/fix-stonesense.patch b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dfhack/fix-stonesense.patch
new file mode 100644
index 000000000000..da860cd55624
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dfhack/fix-stonesense.patch
@@ -0,0 +1,23 @@
+From f5be6fe5fb192f01ae4551ed9217e97fd7f6a0ae Mon Sep 17 00:00:00 2001
+From: Herwig Hochleitner <hhochleitner@gmail.com>
+Date: Sun, 1 Oct 2017 18:01:43 +0200
+Subject: [PATCH] include <GL/glext.h>
+
+this fixes `GLhandleARB` not being defined
+---
+ plugins/stonesense/common.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/plugins/stonesense/common.h b/plugins/stonesense/common.h
+index eb36691..ef45389 100644
+--- a/plugins/stonesense/common.h
++++ b/plugins/stonesense/common.h
+@@ -31,6 +31,8 @@ using namespace df::enums;
+ #include <allegro5/allegro_opengl.h>
+ #include <allegro5/utf8.h>
+
++#include <GL/glext.h>
++
+ // allegro leaks X headers, undef some of it here:
+ #undef TileShape
+ #undef None \ No newline at end of file
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix
new file mode 100644
index 000000000000..f5c093e1f16c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, qtbase
+, qtdeclarative, cmake, texlive, ninja }:
+
+stdenv.mkDerivation rec {
+ pname = "dwarf-therapist";
+ version = "41.1.5";
+
+ src = fetchFromGitHub {
+ owner = "Dwarf-Therapist";
+ repo = "Dwarf-Therapist";
+ rev = "v${version}";
+ sha256 = "0w1mwwf49vdmvmdfvlkn4m0hzvlj111rpl8hv4rw6v8nv6yfb2y4";
+ };
+
+ nativeBuildInputs = [ texlive cmake ninja ];
+ buildInputs = [ qtbase qtdeclarative ];
+
+ installPhase = if stdenv.isDarwin then ''
+ mkdir -p $out/Applications
+ cp -r DwarfTherapist.app $out/Applications
+ '' else null;
+
+ meta = with stdenv.lib; {
+ description = "Tool to manage dwarves in a running game of Dwarf Fortress";
+ maintainers = with maintainers; [ abbradar bendlas numinit jonringer ];
+ license = licenses.mit;
+ platforms = platforms.unix;
+ homepage = "https://github.com/Dwarf-Therapist/Dwarf-Therapist";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in
new file mode 100644
index 000000000000..77936c430e2b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in
@@ -0,0 +1,26 @@
+#!@stdenv_shell@ -e
+
+[ -z "$DT_DIR" ] && DT_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/dwarftherapist"
+
+install_dir="@install@"
+therapist_dir="@therapist@"
+
+cat <<EOF >&2
+Using $DT_DIR as Dwarf Therapist overlay directory.
+EOF
+
+update_path() {
+ local path="$1"
+
+ mkdir -p "$DT_DIR/$(dirname "$path")"
+ if [ ! -e "$DT_DIR/$path" ] || [ -L "$DT_DIR/$path" ]; then
+ rm -f "$DT_DIR/$path"
+ ln -s "$install_dir/share/dwarftherapist/$path" "$DT_DIR/$path"
+ fi
+}
+
+cd "$install_dir/share/dwarftherapist"
+update_path memory_layouts
+
+QT_QPA_PLATFORM_PLUGIN_PATH="@qt_plugin_path@" \
+ exec "$therapist_dir/bin/dwarftherapist" "$@"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix
new file mode 100644
index 000000000000..6871a611784c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix
@@ -0,0 +1,50 @@
+{ pkgs, stdenv, dwarf-therapist, dwarf-fortress, makeWrapper }:
+
+let
+ platformSlug = if stdenv.targetPlatform.is32bit then
+ "linux32" else "linux64";
+ inifile = "linux/v0.${dwarf-fortress.baseVersion}.${dwarf-fortress.patchVersion}_${platformSlug}.ini";
+
+in
+
+stdenv.mkDerivation {
+ name = "dwarf-therapist-${dwarf-therapist.version}";
+
+ wrapper = ./dwarf-therapist.in;
+
+ paths = [ dwarf-therapist ];
+
+ buildInputs = [ makeWrapper ];
+
+ passthru = { inherit dwarf-fortress dwarf-therapist; };
+
+ buildCommand = ''
+ mkdir -p $out/bin
+ ln -s $out/bin/dwarftherapist $out/bin/DwarfTherapist
+ substitute $wrapper $out/bin/dwarftherapist \
+ --subst-var-by stdenv_shell ${stdenv.shell} \
+ --subst-var-by install $out \
+ --subst-var-by therapist ${dwarf-therapist} \
+ --subst-var-by qt_plugin_path "${pkgs.qt5.qtbase}/lib/qt-${pkgs.qt5.qtbase.qtCompatVersion}/plugins/platforms"
+
+ chmod 755 $out/bin/dwarftherapist
+
+ # Fix up memory layouts
+ rm -rf $out/share/dwarftherapist/memory_layouts/linux
+ mkdir -p $out/share/dwarftherapist/memory_layouts/linux
+ orig_md5=$(cat "${dwarf-fortress}/hash.md5.orig" | cut -c1-8)
+ patched_md5=$(cat "${dwarf-fortress}/hash.md5" | cut -c1-8)
+ input_file="${dwarf-therapist}/share/dwarftherapist/memory_layouts/${inifile}"
+ output_file="$out/share/dwarftherapist/memory_layouts/${inifile}"
+
+ echo "[Dwarf Therapist Wrapper] Fixing Dwarf Fortress MD5 prefix:"
+ echo " Input: $input_file"
+ echo " Search: $orig_md5"
+ echo " Output: $output_file"
+ echo " Replace: $patched_md5"
+
+ substitute "$input_file" "$output_file" --replace "$orig_md5" "$patched_md5"
+ '';
+
+ preferLocalBuild = true;
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/game.json b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/game.json
new file mode 100644
index 000000000000..f5f1f389904f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/game.json
@@ -0,0 +1,125 @@
+{
+ "0.43.05": {
+ "linux": "1r0b96yrdf24m9476k5x7rmp3faxr0kfwwdf35agpvlb1qbi6v45",
+ "linux32": "16l1lydpkbnl3zhz4i2snmjk7pps8vmw3zv0bjgr8dncbsrycd03",
+ "osx": "1j2zdkjnmxy8yn599pm0qmbi4zjp1m8h4ggqjxhyzp135h0lqqf9",
+ "osx32": "09ym4mflp5z78pk5mvj7b44xihnsvrxmh0b5kix6h1m6z3cc90l4",
+ "win": "0m337wh4c47ij1f3zrimvy7baff7nzrmgjbmrwdy89d0z90xpnx8",
+ "win_s": "0bjk5m1qkn3ldhqiwbq24y2m9fz9r574d54ngdb8b4ri2xfl1fbp",
+ "win32": "162rl9ygpj66pis87bqc5bwc0mk75hxv6ianhn87pbl4rh7g8ax8",
+ "win32_s": "0gv1jyw5fdskjjs27pr41grbmkk7ipqn0ry615f5g79k3mhl200i",
+ "legacy": "09lvbmg1gq257qchlbmq7hxc5nl9r39jpf73zhmwb5xfbpprn0zs",
+ "legacy_s": "023a5b27fm65w7gmzjssyyci70fdjk2zbv965y4n0f23kc4rj9gl",
+ "legacy32": "1m75arxj1q82l2dkk8qcargm3xczxlqi8krwvg3iimddky34gipq",
+ "legacy32_s": "1hgzsk66isfr5vcraxwgl7cvycl14kwf8w9kzxr8jyp5z7k24q29"
+ },
+ "0.44.05": {
+ "linux": "18bjyhjp5458bfbizm8vq4s00pqpfs097qp6pv76m84kgbc4ghg3",
+ "linux32": "1b9i4kf4c8s6bhqwn8jx100mg7fqp8nmswrai5w8dsma01py4amr",
+ "osx": "1ssc8vq3ad38x9c04j8gg96kxv0g2npi3jwcg40676byx5nrx7b6",
+ "osx32": "12i7x8idcbvp5h62jyc7b7j98jf4lrisnwglvnrms6jclj0b3g0q",
+ "win": "1kaifarjx0akg7s5a2ngfw0vm0vyr4jnax5rrbv96dliqn5knddz",
+ "win_s": "1a1xikrjdv4b0yfgnp5s8d6xn0njylynsqd8zixdc01vccl5kqm6",
+ "win32": "1j3cq0h7jdvxbsbpfxa7bli45smvy9m4fji0j6849kj7x0vcpwq4",
+ "win32_s": "10cw1n48ffkrv9ms07ka5b5370d9k2fm051cnnq03lkcvlwrq145",
+ "legacy": "0y7xpgmwn4nshhc7apyf8mj5ycl0q5vckdaviwzz6w1x31s3dp6n",
+ "legacy_s": "0j8rbw9ww1avmh8zhyzljjj6in87q4qffpffdl394fsi74n8px0d",
+ "legacy32": "0d3l4jvx53a01fjf1lf20ar9lfyykfhk05dlrfwz3w4k7vj4vvlf",
+ "legacy32_s": "1c5x9x44bblz7anhmk4y9a7p1b39b9k7gzvj4pi55jzfq0k60kl7"
+ },
+ "0.44.09": {
+ "linux": "1haikynkg1pqyrzzqk1qxm19p36ww58qp8brh3fjxssp4x71rcdy",
+ "linux32": "0lmbrdf7wjdwj5yx0khnq871yxvhfwqxjjyfkqcdy5ik18lvlkj8",
+ "osx": "01dss8g9lmi8majp6lxcfw166ydz4himkz6am5pi29gixaf4vfqs",
+ "osx32": "1iwlvmz1ir9k0kzn6726frmkznvsg9a99bbqnxvwcnq3nnnjxw3s",
+ "win": "08g5irgp59dfjgj3jxc8ixwzgnz2wghcl8cg1b1g4088dsf2x3x8",
+ "win_s": "1xyb4msn9wfrh7x136r8xn3sjz6z8c4zksbzifa0z0bpa3pdviap",
+ "win32": "0m8bs2mnyi1r4x84fwnfgd1ijdcf08xsq5zy84476svci932g5kz",
+ "win32_s": "0pl319qmyy96ibzlgj4wfj19dv1wzyg8ig6q11l4c7rivzc9286i",
+ "legacy": "0l8nrvppfzazhjsfkd5nd0bxnc6ljk8fs6yg8qh69g7q7zvzgnd3",
+ "legacy_s": "1c49z539a31czzq0rnhg6yrv1zbaja35sd0ssr4k7lsghjv84k1z",
+ "legacy32": "155xg6dpb8frlw7d9h7m1y0spw55wl4nkn7zrm70bpyp39pydlqp",
+ "legacy32_s": "05qkzjfx1ybrv96wya1dirdfxdkhj6a440sjpzwbqpkqgr8z57a3"
+ },
+ "0.44.10": {
+ "linux": "1cqm43hn3ar9d8a7y7dwq48ajp72cirn1gclh8r2fykkypprxmp2",
+ "linux32": "0gdb6sq8725nwdisxwha8f5b6arq570s73aj4gdrh611gxh13r6n",
+ "osx": "1wpa45d81q8f5mhqmaxvdkz93k6cm3pg7vpsqjjjsp5s961gd74g",
+ "osx32": "0rsy1n19n12gh8rddgi3db32in488f2nizq8kw25hga03hsh4r6x",
+ "win": "04i0ka12hmn3chsyfmk2pbknr1pdf3p8yaz7kv82ri4g6dvsjfv6",
+ "win_s": "01m6nqcrz4rhdc8wb31azj3vmjid8bdpqaf9wkz4g4vvjyy7xiyz",
+ "win32": "1nymin8wbzbh8gm2702dy7h5spdijdxnysdz71ldyl0xx4vw68d9",
+ "win32_s": "1skz0jpfm6j9bins04kn96f3v3k0kvjqlh25x3129r3hh8xacnd3",
+ "legacy": "0s84vpfr2b5y1kda9allqjrpkaxw15mkblk9dq08syhsj19vspa7",
+ "legacy_s": "18b7ikp7xy2y071h3ydfh5mq9hw9y303rdqyikvra5ji3n5p96cm",
+ "legacy32": "1yh2fl3qwpy6wrxavhn75grbjygymnfh746hxbmc60la7y5flrpy",
+ "legacy32_s": "0j65w2hxgpccg9qsaz14r82qvnvfd0pbl2gyx9fv8d77kxhkc4pw"
+ },
+ "0.44.11": {
+ "linux": "1qizfkxl2k6pn70is4vz94q4k55bc3pm13b2r6yqi6lw1cnna4sf",
+ "linux32": "11m39lfyrsxlw1g7f269q7fzwichg06l21fxhqzgvlvmzmxsf8q5",
+ "osx": "073hmcj7bm323m3xqi42605rkvmgmv83bnxz1byymgs8aqyfykkx",
+ "osx32": "0w5avnj86wprk8q0rb5qm9kxbigzk6dk0akqbw4m76jgg2jdmir7",
+ "win": "1yxyv1sycn5jc3g1y02d82154xydg3kbghis7l3xi28n3bh8387b",
+ "win_s": "1xzwl6c362wqgps911y9q8vndp8zyd20fc2p7pkzzmw2hrgfqi6q",
+ "win32": "16x2rg3gm3lh2akg7n057kkxxigb2ljz0nk685lmn4j0adq8l31p",
+ "win32_s": "1a2y220111d94mzj5y3jwpy062k8fw25akyp7yn3fwa17vwvn8zq",
+ "legacy": "0gfjmsfqj21hs4d1hm7fvppbdjspc4r2qnnp6mwcbgh67i5p5rdb",
+ "legacy_s": "1wr4hpzmhgl8haric3jpfd3kwqv1fi4vkb1gvaax5f7kplvfqfac",
+ "legacy32": "1cpzckwvqkxqn0c498mmh4papsjdi3mcvcp2vzlvj46kvdl3n0f0",
+ "legacy32_s": "024vzwfcrx7ms4dip0ccwd0vizzck2pwz2ryyvlz4rpjzhswj5gi"
+ },
+ "0.44.12": {
+ "win32": "0bxrc7zj4vgcgdwc130g6f5jnp13vgx9a2kn2l1jcc958x8a367g",
+ "linux32": "0fmr8diskmbh12s0bpfn5gky9lmrc7xxj6va5adjm6ahxv9jwr06",
+ "osx": "1md6r1pimmlhcn5gjqzg0ygbdwc2v125sfjy0f6gbfbykwcm7391",
+ "osx32": "1dbg7pavxw20r8iqc566fn558avgj5glsycvi6ggbvsh0rpw6n5v",
+ "win": "0zb5ximqi5j7vyvgjzfz7ycadh5sgb7jlyaa68x0sjlbybdr1min",
+ "win_s": "1ncf5zr1fggr5knf30l0wh7spp376v1jcc6m9c86zim8azcfx0y7",
+ "linux": "0ydr5lnysy45nsznqp5r2pysdqn3f0xkrkh9v9l1md111mriabas",
+ "win32_s": "1mxbjkikf010skrpng51r86jmv4nal51j5n1y9kyhv344bq6chr9",
+ "legacy": "11a212ynhx18p3k8hvdjx199din14wggxiwz191b4309fznzpprz",
+ "legacy_s": "05madj529y18ndxrih96mivbzng1vz2zbzicrcnj58i2084zm23f",
+ "legacy32": "0rapcydiic2nq6idjf7fg53xsxk8dxzyi1vflpz554ghdrnsmwjv",
+ "legacy32_s": "16fgbd3lx4r270dxqj6gr1g1iqjj8cv389h2hw1l646xx28g8d2m"
+ },
+ "0.47.01": {
+ "linux": "1wbybkfpgvpd2yliy8mfgddnz806ac4rv4j0lhlsqwpk8jj0mx81",
+ "linux32": "1fnz1mydqgybcm8kzranvjzc2x9g6bcalxv3fsjngvpv13x6izzv",
+ "osx": "18wdffidasbrsbhqjwds08ckbrjhcw0759aynz7zggyy5is9q8iw",
+ "osx32": "1b4kf3vg0zd5w5s0rdhzfz0rswkl6sq0j1f8qmimnw7qd09h43wx",
+ "win": "1v3v2z7g67d6926h9lxakznvbddyxyr85i1ym34y2wywnc886z7r",
+ "win_s": "0yahynimhz4nvdi5qp5a612vf7ikg87w2aj2r8s1lhdw6xwdkpyc",
+ "win32": "07mqhm64c1ddjc3vpyhf9qf14lp19xwz3pgg4c2pvcwy4yyrys22",
+ "win32_s": "07acbxai8g04yxg7n68nyx4jwcqqkgjn7n96q2lzxdvc988kiivz",
+ "legacy32_s": "1gxmc3rsl9glai3wb4wzsda3qyhdimd8s5kbr5m753n8lmzasafx"
+ },
+ "0.47.02": {
+ "linux": "1zbsygbfiqxxs767qxkxjp3ayywi5q0d8xlrqlbd0l8a3ccg5avw",
+ "linux32": "1ddc9s4n408j8gidgign51bgv2wgy5z4cy74jzx00pvnhsfp2mpy",
+ "osx": "1mwy88yxip1wys1kxpfsbg7wlvfrkc4lg04gqw0d266a88dj7a30",
+ "osx32": "08ssnzl52gqqgcqhl0ynyikbxz76825kpcg1d6yx8g7ifjndf19n",
+ "win": "08g7fy18y8q32l0158314bny0qg57xz37qj9fri9r4xbhci67ldk",
+ "win_s": "0x56s1md62yk661aqcdgnz8k0zir0zr8qwan5vrqc0q9yh069yl1",
+ "win32": "0ww64mymbilb235n93d7w4c9axq3ww2mxa0f7bl4x8yrxwc8k942",
+ "win32_s": "0r801vip807v88icf47i3s82v7lshx67q4ilzfjirqfslh1x00bs",
+ "legacy": "14f4d6r7swfjnlaalg4l5916ihj6wvhlsgjp7cygamzp4c2wgng8",
+ "legacy_s": "1jxf52kaijf4crwxj30a4f6z7rzs6xa91y6vn5s8jr0cvbr5pz64",
+ "legacy32": "0j7shqdv3gimacj03cil2y0fmr0j0fp57cwmdjwnxwx3m96k3xwm",
+ "legacy32_s": "1wc7pcp9dwz0q1na3i5pbqknya595qdkmr7hsmgh2kk8rsp3g9g2"
+ },
+ "0.47.04": {
+ "linux": "1ri82c5hja6n0wv538srf2nbcyb8ip49w4l201m90cmcycmqgr8x",
+ "linux32": "00yz8gl75sbx15d7vl22ij0a5qd325kpc9mgm1lh5g7i065vgzn8",
+ "osx": "0c1g655bn5n4pbzxw3v83gmy54va5y87m7ksi6iryfal0m9lshhv",
+ "osx32": "1knfgqbwa7v9va1w6i8yzz6xp3dj633dbs50izx6ldszm0ra42pg",
+ "win": "0j7ixr3rf9900zzfw3nd3vg97kdkspm530cmf9dkwhf6klmpks7s",
+ "win_s": "11amw5gjhi753mvf17wifcjiyikjx0qwa16787gfhj9jfp0yw764",
+ "win32": "1xw9f49n85c31kbzkm5zh81kccjx9msjyy3xwr0klak5w398a59l",
+ "win32_s": "0s26hrgfk2b5wg4dvg90wgw1mvrrvbyjhmsys9f5fl7zn1pjbxxr",
+ "legacy": "103bcnn8gxi2rkpjmjfgv5a5kxmh1zd7vagrsscv55sppd7fcl7n",
+ "legacy_s": "19ai7lvxx0y3iha9qrbl5krric547rzs6vm4ibk8x61vv97jrbd8",
+ "legacy32": "0lli6s1g7yj3p3h26ajgq3h619n88qn6s7amyz6z8w7hyzfi7wij",
+ "legacy32_s": "1wzxbzgln9pmsk2nchrl94d2yd09xdgynmjl4qwcaqzkrnf3sfqc"
+ }
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/game.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/game.nix
new file mode 100644
index 000000000000..9200d01aa985
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/game.nix
@@ -0,0 +1,101 @@
+{ stdenv, lib, fetchurl
+, SDL, dwarf-fortress-unfuck
+
+# Our own "unfuck" libs for macOS
+, ncurses, fmodex, gcc
+
+, dfVersion, df-hashes
+}:
+
+with lib;
+
+let
+ libpath = makeLibraryPath [ stdenv.cc.cc stdenv.cc.libc dwarf-fortress-unfuck SDL ];
+
+ homepage = "http://www.bay12games.com/dwarves/";
+
+ # Map Dwarf Fortress platform names to Nixpkgs platform names.
+ # Other srcs are avilable like 32-bit mac & win, but I have only
+ # included the ones most likely to be needed by Nixpkgs users.
+ platforms = {
+ x86_64-linux = "linux";
+ i686-linux = "linux32";
+ x86_64-darwin = "osx";
+ i686-darwin = "osx32";
+ x86_64-cygwin = "win";
+ i686-cygwin = "win32";
+ };
+
+ dfVersionTriple = splitVersion dfVersion;
+ baseVersion = elemAt dfVersionTriple 1;
+ patchVersion = elemAt dfVersionTriple 2;
+
+ game = if hasAttr dfVersion df-hashes
+ then getAttr dfVersion df-hashes
+ else throw "Unknown Dwarf Fortress version: ${dfVersion}";
+ dfPlatform = if hasAttr stdenv.hostPlatform.system platforms
+ then getAttr stdenv.hostPlatform.system platforms
+ else throw "Unsupported system: ${stdenv.hostPlatform.system}";
+ sha256 = if hasAttr dfPlatform game
+ then getAttr dfPlatform game
+ else throw "Unsupported dfPlatform: ${dfPlatform}";
+
+in
+
+stdenv.mkDerivation {
+ name = "dwarf-fortress-${dfVersion}";
+
+ src = fetchurl {
+ url = "${homepage}df_${baseVersion}_${patchVersion}_${dfPlatform}.tar.bz2";
+ inherit sha256;
+ };
+
+ installPhase = ''
+ mkdir -p $out
+ cp -r * $out
+ rm $out/libs/lib*
+
+ exe=$out/${if stdenv.isLinux then "libs/Dwarf_Fortress"
+ else "dwarfort.exe"}
+
+ # Store the original hash
+ md5sum $exe | awk '{ print $1 }' > $out/hash.md5.orig
+ '' + optionalString stdenv.isLinux ''
+ patchelf \
+ --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
+ --set-rpath "${libpath}" \
+ $exe
+ '' + optionalString stdenv.isDarwin ''
+ # My custom unfucked dwarfort.exe for macOS. Can't use
+ # absolute paths because original doesn't have enough
+ # header space. Someone plz break into Tarn's house & put
+ # -headerpad_max_install_names into his LDFLAGS.
+
+ ln -s ${getLib ncurses}/lib/libncurses.dylib $out/libs
+ ln -s ${getLib gcc.cc}/lib/libstdc++.6.dylib $out/libs
+ ln -s ${getLib fmodex}/lib/libfmodex.dylib $out/libs
+
+ install_name_tool \
+ -change /usr/lib/libncurses.5.4.dylib \
+ @executable_path/libs/libncurses.dylib \
+ -change /usr/local/lib/x86_64/libstdc++.6.dylib \
+ @executable_path/libs/libstdc++.6.dylib \
+ $exe
+ '' + ''
+ # Store the new hash
+ md5sum $exe | awk '{ print $1 }' > $out/hash.md5
+ '';
+
+ passthru = {
+ inherit baseVersion patchVersion dfVersion;
+ updateScript = ./update.sh;
+ };
+
+ meta = {
+ description = "A single-player fantasy game with a randomly generated adventure world";
+ inherit homepage;
+ license = licenses.unfreeRedistributable;
+ platforms = attrNames platforms;
+ maintainers = with maintainers; [ a1russell robbinch roconnor abbradar numinit shazow ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/lazy-pack.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/lazy-pack.nix
new file mode 100644
index 000000000000..03aa5d54304f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/lazy-pack.nix
@@ -0,0 +1,48 @@
+{ stdenvNoCC, lib, buildEnv
+, df-games, themes, latestVersion, versionToName
+, dfVersion ? latestVersion
+ # This package should, at any given time, provide an opinionated "optimal"
+ # DF experience. It's the equivalent of the Lazy Newbie Pack, that is, and
+ # should contain every utility available unless you disable them.
+, enableDFHack ? stdenvNoCC.isLinux
+, enableTWBT ? enableDFHack
+, enableSoundSense ? true
+, enableStoneSense ? true
+, enableDwarfTherapist ? true
+, enableLegendsBrowser ? true, legends-browser
+, theme ? themes.phoebus
+# General config options:
+, enableIntro ? true
+, enableTruetype ? true
+, enableFPS ? false
+, enableTextMode ? false
+, enableSound ? true
+}:
+
+with lib;
+
+let
+ dfGame = versionToName dfVersion;
+ dwarf-fortress = if hasAttr dfGame df-games
+ then getAttr dfGame df-games
+ else throw "Unknown Dwarf Fortress version: ${dfVersion}";
+ dwarf-therapist = dwarf-fortress.dwarf-therapist;
+in
+buildEnv {
+ name = "dwarf-fortress-full";
+ paths = [
+ (dwarf-fortress.override {
+ inherit enableDFHack enableTWBT enableSoundSense enableStoneSense theme
+ enableIntro enableTruetype enableFPS enableTextMode enableSound;
+ })]
+ ++ lib.optional enableDwarfTherapist dwarf-therapist
+ ++ lib.optional enableLegendsBrowser legends-browser;
+
+ meta = with stdenvNoCC.lib; {
+ description = "An opinionated wrapper for Dwarf Fortress";
+ maintainers = with maintainers; [ Baughn numinit ];
+ license = licenses.mit;
+ platforms = platforms.all;
+ homepage = "https://github.com/NixOS/nixpkgs/";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/legends-browser/default.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/legends-browser/default.nix
new file mode 100644
index 000000000000..b11060025151
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/legends-browser/default.nix
@@ -0,0 +1,36 @@
+{ stdenvNoCC, buildEnv, writeShellScriptBin, fetchurl, jre }:
+
+let
+ name = "legends-browser-${version}";
+ version = "1.17.1";
+
+ jar = fetchurl {
+ url = "https://github.com/robertjanetzko/LegendsBrowser/releases/download/${version}/legendsbrowser-${version}.jar";
+ sha256 = "05b4ksbl4481rh3ykfirbp6wvxhppcd5mvclhn9995gsrcaj8gx9";
+ };
+
+ script = writeShellScriptBin "legends-browser" ''
+ set -eu
+ BASE="$HOME/.local/share/df_linux/legends-browser/"
+ mkdir -p "$BASE"
+ cd "$BASE"
+ if [[ ! -e legendsbrowser.properties ]]; then
+ echo 'Creating initial configuration for legends-browser'
+ echo "last=$(cd ..; pwd)" > legendsbrowser.properties
+ fi
+ ${jre}/bin/java -jar ${jar}
+ '';
+in
+
+buildEnv {
+ inherit name;
+ paths = [ script ];
+
+ meta = with stdenvNoCC.lib; {
+ description = "A multi-platform, open source, java-based legends viewer for dwarf fortress";
+ maintainers = with maintainers; [ Baughn ];
+ license = licenses.mit;
+ platforms = platforms.all;
+ homepage = "https://github.com/robertjanetzko/LegendsBrowser";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/soundsense.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/soundsense.nix
new file mode 100644
index 000000000000..a59c87306903
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/soundsense.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchzip, dos2unix
+, soundPack ? stdenv.mkDerivation {
+ name = "soundsense-soundpack";
+ src = fetchzip {
+ url = "http://df.zweistein.cz/soundsense/soundpack.zip";
+ sha256 = "0qz0mjkp7wp0gxk3ws2x760awv8c9lkacj2fn9bz3gqqnq262ffa";
+ };
+ installPhase = ''
+ cp -r . $out
+ '';
+}}:
+
+stdenv.mkDerivation rec {
+ version = "2016-1_196";
+ dfVersion = "0.44.12";
+ inherit soundPack;
+ pname = "soundsense";
+ src = fetchzip {
+ url = "http://df.zweistein.cz/soundsense/soundSense_${version}.zip";
+ sha256 = "1gkrs69l3xsh858yjp204ddp29m668j630akm7arssc9359wxqkk";
+ };
+ phases = [ "unpackPhase" "buildPhase" "installPhase" ];
+ nativeBuildInputs = [ dos2unix ];
+ buildPhase = ''
+ dos2unix soundSense.sh
+ chmod +x soundSense.sh
+ '';
+ installPhase = ''
+ mkdir $out
+ cp -R . $out/soundsense
+ ln -s $out/soundsense/dfhack $out/hack
+ ln -s $soundPack $out/soundsense/packs
+ '';
+ passthru = { inherit version dfVersion; };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/default.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/default.nix
new file mode 100644
index 000000000000..6241df7590d9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/default.nix
@@ -0,0 +1,19 @@
+{lib, fetchFromGitHub, ...}:
+
+with builtins;
+
+listToAttrs (map (v: {
+ inherit (v) name;
+ value = fetchFromGitHub {
+ name = "${v.name}-${v.version}";
+ owner = "DFgraphics";
+ repo = v.name;
+ rev = v.version;
+ sha256 = v.sha256;
+ meta = with lib; {
+ platforms = platforms.all;
+ maintainers = [ maintainers.matthewbauer maintainers.shazow ];
+ license = licenses.free;
+ };
+ };
+}) (fromJSON (readFile ./themes.json)))
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/themes.json b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/themes.json
new file mode 100644
index 000000000000..8b0b9127d5b1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/themes.json
@@ -0,0 +1,87 @@
+[
+ {
+ "name": "afro-graphics",
+ "version": "47.04",
+ "sha256": "1x1ir0qi3g8wgzwm1pnrkrqb6lhnjq87vs30l8kva6y5wr4sz7q0"
+ },
+ {
+ "name": "autoreiv",
+ "version": "47.01",
+ "sha256": "1c2xchlfq7ajpcq8qgrzkw5yfgm0k3fiwq6n7l4724dlbim3rjp2"
+ },
+ {
+ "name": "cla",
+ "version": "0.47.xx-v26.3",
+ "sha256": "0ca81r3821jja4pqib75qxcsgg3s0wxzyq1jb4jc0495cvzxw7qa"
+ },
+ {
+ "name": "dfgraphics",
+ "version": "42.05",
+ "sha256": "18xyqn458hh8l2qgbvrvz17nbp6yk91d7rqlxlp1g5wr9qfq28rp"
+ },
+ {
+ "name": "gemset",
+ "version": "47.04",
+ "sha256": "015nkkdnpykhz6a1n8qi3wgap19a4wavz4n2xbvfa4g770lcjd92"
+ },
+ {
+ "name": "ironhand",
+ "version": "47.04",
+ "sha256": "0x3hi1isgc2cv7c3qz87rm7ik0kbd748djpnghvjdqpj3a0n1ih2"
+ },
+ {
+ "name": "jolly-bastion",
+ "version": "47.04",
+ "sha256": "0799ad90g62nvpdcl6zq3vr2nvfc62lprm4br9n2hbs8wgrra6rq"
+ },
+ {
+ "name": "mayday",
+ "version": "47.04a",
+ "sha256": "1hpj40762n81grsddg3nc5jxc0bqmy2xamxvsgxzb2bx0b7akz0w"
+ },
+ {
+ "name": "meph",
+ "version": "47.04_v5.5.0_V1.1.2",
+ "sha256": "0q8hfm66rag61qd2hab7lsr4nyg52bn1hvy6bl7z6kv4yj5cra50"
+ },
+ {
+ "name": "obsidian",
+ "version": "47.04a",
+ "sha256": "0y5kmj362i9y8w1n5d1nx80yq88c0xqps9i02gvnls6r421a4nms"
+ },
+ {
+ "name": "phoebus",
+ "version": "47.04a",
+ "sha256": "1ihbqs5a3b8pydbcynblvgw2bxkgr9hhpmgjlji7a7zvz8m6h6pw"
+ },
+ {
+ "name": "rally-ho",
+ "version": "47.04",
+ "sha256": "0pmvpfbj07ll674lw7mjgkb4kgjk4mxr82fjq4ppvwrnzx6vi2g0"
+ },
+ {
+ "name": "spacefox",
+ "version": "47.04",
+ "sha256": "0sk3k5bcpfl2xind4vfrgzbcqqbw0mg47pm3d3h44vi6hl3bdaqj"
+ },
+ {
+ "name": "taffer",
+ "version": "47.04",
+ "sha256": "1ly2sc0pb2kybb8grj19zx372whblmd0bj8p64akpi2rrywi13sy"
+ },
+ {
+ "name": "tergel",
+ "version": "47.01",
+ "sha256": "142sd1i11vvirn68rp4gqzl67ww597df1lc57ycnpnz0n3q39kxy"
+ },
+ {
+ "name": "vettlingr",
+ "version": "1.4a",
+ "sha256": "1p4y0dm52rb49dnmcnivddlsd94m4gr1pxn04fpjbrvck22klgpj"
+ },
+ {
+ "name": "wanderlust",
+ "version": "47.04",
+ "sha256": "1z56m8zplq5d18sbkwg5lwcy8iwfa5hbxixsm3hdxm04qyld1z89"
+ }
+]
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/update.sh b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/update.sh
new file mode 100755
index 000000000000..1b652bf49943
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/themes/update.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p jq nix coreutils curl nix-prefetch-git
+
+curl "https://api.github.com/users/dfgraphics/repos" | jq -r '.[].name | ascii_downcase' | while read repo; do
+ version="$(curl "https://api.github.com/repos/DFgraphics/${repo}/releases/latest" | jq -r .tag_name)"
+ sha256="$(nix-prefetch-git "https://github.com/DFgraphics/${repo}" "${version}" | jq -r ".sha256")"
+ echo "{}" | jq ".name=\"${repo}\" | .version=\"${version}\" | .sha256=\"${sha256}\""
+done | jq -s . > themes.json
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/twbt/default.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/twbt/default.nix
new file mode 100644
index 000000000000..a0990e04f93a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/twbt/default.nix
@@ -0,0 +1,90 @@
+{ stdenvNoCC, lib, fetchurl, unzip
+, dfVersion
+}:
+
+with lib;
+
+let
+ twbt-releases = {
+ "0.43.05" = {
+ twbtRelease = "6.22";
+ sha256 = "0di5d38f6jj9smsz0wjcs1zav4zba6hrk8cbn59kwpb1wamsh5c7";
+ prerelease = false;
+ };
+ "0.44.05" = {
+ twbtRelease = "6.35";
+ sha256 = "0qjkgl7dsqzsd7pdq8a5bihhi1wplfkv1id7sj6dp3swjpsfxp8g";
+ prerelease = false;
+ };
+ "0.44.09" = {
+ twbtRelease = "6.41";
+ sha256 = "0nsq15z05pbhqjvw2xqs1a9b1n2ma0aalhc3vh3mi4cd4k7lxh44";
+ prerelease = false;
+ };
+ "0.44.10" = {
+ twbtRelease = "6.49";
+ sha256 = "1qjkc7k33qhxj2g18njzasccjqsis5y8zrw5vl90h4rs3i8ld9xz";
+ prerelease = false;
+ };
+ "0.44.11" = {
+ twbtRelease = "6.51";
+ sha256 = "1yclqmarjd97ch054h425a12r8a5ailmflsd7b39cg4qhdr1nii5";
+ prerelease = true;
+ };
+ "0.44.12" = {
+ twbtRelease = "6.54";
+ sha256 = "10gfd6vv0vk4v1r5hjbz7vf1zqys06dsad695gysc7fbcik2dakh";
+ prerelease = false;
+ };
+ "0.47.02" = {
+ twbtRelease = "6.61";
+ sha256 = "07bqy9rkd64h033sxdpigp5zq4xrr0xd36wdr1b21g649mv8j6yw";
+ prerelease = false;
+ };
+ "0.47.04" = {
+ twbtRelease = "6.xx";
+ dfhackRelease = "0.47.04-r2";
+ sha256 = "092dgp8fh1j4nqr9wbzn89ib1nhscclr8m91lfxsvg0mgn7j8xlv";
+ prerelease = true;
+ };
+ };
+
+ release = if hasAttr dfVersion twbt-releases
+ then getAttr dfVersion twbt-releases
+ else throw "[TWBT] Unsupported Dwarf Fortress version: ${dfVersion}";
+in
+
+stdenvNoCC.mkDerivation rec {
+ pname = "twbt";
+ version = release.twbtRelease;
+
+ src = fetchurl {
+ url =
+ if version == "6.xx" then
+ "https://github.com/thurin/df-twbt/releases/download/${release.dfhackRelease}/twbt-${version}-linux64-${release.dfhackRelease}.zip"
+ else
+ "https://github.com/mifki/df-twbt/releases/download/v${version}/twbt-${version}-linux.zip";
+ sha256 = release.sha256;
+ };
+
+ sourceRoot = ".";
+
+ outputs = [ "lib" "art" "out" ];
+
+ buildInputs = [ unzip ];
+
+ installPhase = ''
+ mkdir -p $lib/hack/{plugins,lua} $art/data/art
+ cp -a */twbt.plug.so $lib/hack/plugins/
+ cp -a *.lua $lib/hack/lua/
+ cp -a *.png $art/data/art/
+ '';
+
+ meta = with stdenvNoCC.lib; {
+ description = "A plugin for Dwarf Fortress / DFHack that improves various aspects the game interface.";
+ maintainers = with maintainers; [ Baughn numinit ];
+ license = licenses.mit;
+ platforms = platforms.linux;
+ homepage = "https://github.com/mifki/df-twbt";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/unfuck.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/unfuck.nix
new file mode 100644
index 000000000000..533649131f5a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/unfuck.nix
@@ -0,0 +1,96 @@
+{ stdenv, lib, fetchFromGitHub, cmake
+, libGL, libSM, SDL, SDL_image, SDL_ttf, glew, openalSoft
+, ncurses, glib, gtk2, libsndfile, zlib
+, dfVersion, pkg-config
+}:
+
+with lib;
+
+let
+ unfuck-releases = {
+ "0.43.05" = {
+ unfuckRelease = "0.43.05";
+ sha256 = "173dyrbxlzqvjf1j3n7vpns4gfjkpyvk9z16430xnmd5m6nda8p2";
+ };
+ "0.44.05" = {
+ unfuckRelease = "0.44.05";
+ sha256 = "00yj4l4gazxg4i6fj9rwri6vm17i6bviy2mpkx0z5c0mvsr7s14b";
+ };
+ "0.44.09" = {
+ unfuckRelease = "0.44.09";
+ sha256 = "138p0v8z2x47f0fk9k6g75ikw5wb3vxldwv5ggbkf4hhvlw6lvzm";
+ };
+ "0.44.10" = {
+ unfuckRelease = "0.44.10";
+ sha256 = "0vb19qx2ibc79j4bgbk9lskb883qfb0815zw1dfz9k7rqwal8mzj";
+ };
+ "0.44.11" = {
+ unfuckRelease = "0.44.11.1";
+ sha256 = "1kszkb1d1vll8p04ja41nangsaxb5lv4p3xh2jhmsmipfixw7nvz";
+ };
+ "0.44.12" = {
+ unfuckRelease = "0.44.12";
+ sha256 = "1kszkb1d1vll8p04ja41nangsaxb5lv4p3xh2jhmsmipfixw7nvz";
+ };
+ "0.47.01" = {
+ unfuckRelease = "0.47.01";
+ sha256 = "11xvb3qh4crdf59pwfwpi73rzm3ysd1r1xp2k1jp7527jmqapk4k";
+ };
+ "0.47.02" = {
+ unfuckRelease = "0.47.01";
+ sha256 = "11xvb3qh4crdf59pwfwpi73rzm3ysd1r1xp2k1jp7527jmqapk4k";
+ };
+ "0.47.04" = {
+ unfuckRelease = "0.47.04";
+ sha256 = "1wa990xbsyiiz7abq153xmafvvk1dmgz33rp907d005kzl1z86i9";
+ };
+ };
+
+ release = if hasAttr dfVersion unfuck-releases
+ then getAttr dfVersion unfuck-releases
+ else throw "[unfuck] Unknown Dwarf Fortress version: ${dfVersion}";
+in
+
+stdenv.mkDerivation {
+ name = "dwarf_fortress_unfuck-${release.unfuckRelease}";
+
+ src = fetchFromGitHub {
+ owner = "svenstaro";
+ repo = "dwarf_fortress_unfuck";
+ rev = release.unfuckRelease;
+ sha256 = release.sha256;
+ };
+
+ cmakeFlags = [
+ "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
+ "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
+ ];
+
+ nativeBuildInputs = [ cmake pkg-config ];
+ buildInputs = [
+ libSM SDL SDL_image SDL_ttf glew openalSoft
+ ncurses gtk2 libsndfile zlib libGL
+ ];
+
+ # Don't strip unused symbols; dfhack hooks into some of them.
+ dontStrip = true;
+
+ installPhase = ''
+ install -D -m755 ../build/libgraphics.so $out/lib/libgraphics.so
+ '';
+
+ enableParallelBuilding = true;
+
+ # Breaks dfhack because of inlining.
+ hardeningDisable = [ "fortify" ];
+
+ passthru = { inherit dfVersion; };
+
+ meta = with stdenv.lib; {
+ description = "Unfucked multimedia layer for Dwarf Fortress";
+ homepage = "https://github.com/svenstaro/dwarf_fortress_unfuck";
+ license = licenses.free;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ abbradar numinit ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/update.sh b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/update.sh
new file mode 100755
index 000000000000..e36badc4199e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/update.sh
@@ -0,0 +1,42 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p jq nix coreutils curl
+
+# systems to generate hashes for
+systems='linux linux32 osx osx32
+ win win_s win32 win32_s
+ legacy legacy_s legacy32 legacy32_s'
+
+if [ $# -eq 0 ]; then
+ versions="$(curl http://www.bay12games.com/dwarves/ \
+ | grep 'DWARF FORTRESS CLASSIC ' \
+ | sed 's/.*DWARF FORTRESS CLASSIC \([0-9.]*\) .*/\1/')"
+else
+ versions="$@"
+fi
+
+tmp1="$(mktemp)"
+tmp2="$(mktemp)"
+for version in $versions; do
+ for system in $systems; do
+ echo -n $version,$system,
+ ver=$(echo $version | sed -e s,^0\.,, | tr . _)
+ if [[ "$system" = *win* ]] || [[ "$system" = *legacy* ]]; then
+ ext=zip
+ else
+ ext=tar.bz2
+ fi
+ nix-prefetch-url \
+ http://www.bay12games.com/dwarves/df_${ver}_${system}.${ext}
+ done
+done | jq --slurp --raw-input \
+ 'split("\n") | .[:-1] | map(split(",")) |
+ map({ "version": .[0], "platform": .[1], "sha256": .[2] }) |
+ group_by(.version) |
+ map(map({"version": .version, (.platform): .sha256}) | add |
+ {(.version): .} | map_values(del(.version))) | add' \
+ > "$tmp1"
+
+# Append $tmp1 to game.json. There should be a better way to handle
+# this but all other attempts failed for me.
+jq -M --argfile a "$tmp1" '. + $a' < "$(dirname "$0")/game.json" > "$tmp2"
+cat "$tmp2" > "$(dirname "$0")/game.json"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/default.nix b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/default.nix
new file mode 100644
index 000000000000..79b63e3ce9ee
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/default.nix
@@ -0,0 +1,123 @@
+{ stdenv, lib, buildEnv, substituteAll, runCommand
+, dwarf-fortress
+, dwarf-therapist
+, enableDFHack ? false, dfhack
+, enableSoundSense ? false, soundSense, jdk
+, enableStoneSense ? false
+, enableTWBT ? false, twbt
+, themes ? {}
+, theme ? null
+# General config options:
+, enableIntro ? true
+, enableTruetype ? true
+, enableFPS ? false
+, enableTextMode ? false
+, enableSound ? true
+}:
+
+let
+ dfhack_ = dfhack.override {
+ inherit enableStoneSense;
+ inherit enableTWBT;
+ };
+
+ ptheme =
+ if builtins.isString theme
+ then builtins.getAttr theme themes
+ else theme;
+
+ unBool = b: if b then "YES" else "NO";
+
+ # These are in inverse order for first packages to override the next ones.
+ themePkg = lib.optional (theme != null) ptheme;
+ pkgs = lib.optional enableDFHack dfhack_
+ ++ lib.optional enableSoundSense soundSense
+ ++ lib.optional enableTWBT twbt.art
+ ++ [ dwarf-fortress ];
+
+ fixup = lib.singleton (runCommand "fixup" {} (''
+ mkdir -p $out/data/init
+ '' + (if (theme != null) then ''
+ cp ${lib.head themePkg}/data/init/init.txt $out/data/init/init.txt
+ '' else ''
+ cp ${dwarf-fortress}/data/init/init.txt $out/data/init/init.txt
+ '') + lib.optionalString enableDFHack ''
+ mkdir -p $out/hack
+
+ # Patch the MD5
+ orig_md5=$(cat "${dwarf-fortress}/hash.md5.orig")
+ patched_md5=$(cat "${dwarf-fortress}/hash.md5")
+ input_file="${dfhack_}/hack/symbols.xml"
+ output_file="$out/hack/symbols.xml"
+
+ echo "[DFHack Wrapper] Fixing Dwarf Fortress MD5:"
+ echo " Input: $input_file"
+ echo " Search: $orig_md5"
+ echo " Output: $output_file"
+ echo " Replace: $patched_md5"
+
+ substitute "$input_file" "$output_file" --replace "$orig_md5" "$patched_md5"
+ '' + lib.optionalString enableTWBT ''
+ substituteInPlace $out/data/init/init.txt \
+ --replace '[PRINT_MODE:2D]' '[PRINT_MODE:TWBT]'
+ '' +
+ lib.optionalString enableTextMode ''
+ substituteInPlace $out/data/init/init.txt \
+ --replace '[PRINT_MODE:2D]' '[PRINT_MODE:TEXT]'
+ '' + ''
+ substituteInPlace $out/data/init/init.txt \
+ --replace '[INTRO:YES]' '[INTRO:${unBool enableIntro}]' \
+ --replace '[TRUETYPE:YES]' '[TRUETYPE:${unBool enableTruetype}]' \
+ --replace '[FPS:NO]' '[FPS:${unBool enableFPS}]' \
+ --replace '[SOUND:YES]' '[SOUND:${unBool enableSound}]'
+ ''));
+
+ env = buildEnv {
+ name = "dwarf-fortress-env-${dwarf-fortress.dfVersion}";
+
+ paths = fixup ++ themePkg ++ pkgs;
+ pathsToLink = [ "/" "/hack" "/hack/scripts" ];
+
+ ignoreCollisions = true;
+ };
+in
+
+stdenv.mkDerivation {
+ name = "dwarf-fortress-${dwarf-fortress.dfVersion}";
+
+ dfInit = substituteAll {
+ name = "dwarf-fortress-init";
+ src = ./dwarf-fortress-init.in;
+ inherit env;
+ exe = if stdenv.isLinux then "libs/Dwarf_Fortress"
+ else "dwarfort.exe";
+ };
+
+ runDF = ./dwarf-fortress.in;
+ runDFHack = ./dfhack.in;
+ runSoundSense = ./soundSense.in;
+
+ passthru = { inherit dwarf-fortress dwarf-therapist; };
+
+ buildCommand = ''
+ mkdir -p $out/bin
+
+ substitute $runDF $out/bin/dwarf-fortress \
+ --subst-var-by stdenv_shell ${stdenv.shell} \
+ --subst-var dfInit
+ chmod 755 $out/bin/dwarf-fortress
+ '' + lib.optionalString enableDFHack ''
+ substitute $runDFHack $out/bin/dfhack \
+ --subst-var-by stdenv_shell ${stdenv.shell} \
+ --subst-var dfInit
+ chmod 755 $out/bin/dfhack
+ '' + lib.optionalString enableSoundSense ''
+ substitute $runSoundSense $out/bin/soundsense \
+ --subst-var-by stdenv_shell ${stdenv.shell} \
+ --subst-var-by jre ${jdk.jre} \
+ --subst-var dfInit
+ chmod 755 $out/bin/soundsense
+ '';
+
+ preferLocalBuild = true;
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dfhack.in b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dfhack.in
new file mode 100644
index 000000000000..026b33ab87bf
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dfhack.in
@@ -0,0 +1,11 @@
+#!@stdenv_shell@ -e
+
+source @dfInit@
+
+for i in dfhack.init-example dfhack-config/default hack/* stonesense/*; do
+ update_path "$i"
+done
+
+cd "$DF_DIR"
+LD_LIBRARY_PATH="$env_dir/hack/libs:$env_dir/hack${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH" \
+ LD_PRELOAD="$env_dir/hack/libdfhack.so:$LD_PRELOAD" exec $env_dir/libs/Dwarf_Fortress "$@"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress-init.in b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress-init.in
new file mode 100644
index 000000000000..b041067d89e4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress-init.in
@@ -0,0 +1,44 @@
+shopt -s extglob
+
+[ -z "$DF_DIR" ] && export DF_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/df_linux"
+env_dir="@env@"
+exe="$env_dir/@exe@"
+
+update_path() {
+ local path="$1"
+
+ mkdir -p "$DF_DIR/$(dirname "$path")"
+ # If user has replaced these data directories, let them stay.
+ if [ ! -e "$DF_DIR/$path" ] || [ -L "$DF_DIR/$path" ]; then
+ rm -f "$DF_DIR/$path"
+ ln -s "$env_dir/$path" "$DF_DIR/$path"
+ fi
+}
+
+forcecopy_path() {
+ local path="$1"
+
+ mkdir -p "$DF_DIR/$(dirname "$path")"
+ rm -rf "$DF_DIR/$path"
+ cp -rL --no-preserve=all "$env_dir/$path" "$DF_DIR/$path"
+}
+
+mkdir -p "$DF_DIR"
+
+cat <<EOF >&2
+Using $DF_DIR as Dwarf Fortress overlay directory.
+If you do any changes in it, don't forget to clean it when updating the game version!
+We try to detect changes based on data directories being symbolic links -- keep this in mind.
+
+EOF
+
+cd "$env_dir"
+for i in data/init/* data/!(init|index|announcement) raw; do
+ update_path "$i"
+done
+
+forcecopy_path data/index
+# For some reason, it's needed to be writable...
+forcecopy_path data/announcement
+forcecopy_path data/help
+forcecopy_path data/dipscript
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress.in b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress.in
new file mode 100644
index 000000000000..4448bd05fda5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress.in
@@ -0,0 +1,9 @@
+#!@stdenv_shell@ -e
+
+source @dfInit@
+
+export DYLD_LIBRARY_PATH="$env_dir/libs"
+export DYLD_FRAMEWORK_PATH="$env_dir/libs"
+
+cd "$DF_DIR"
+exec "$exe" "$@"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/soundSense.in b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/soundSense.in
new file mode 100644
index 000000000000..28357ed7579f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dwarf-fortress/wrapper/soundSense.in
@@ -0,0 +1,10 @@
+#!@stdenv_shell@ -e
+
+source @dfInit@
+
+for p in soundsense/*; do
+ update_path "$p"
+done
+
+cd "$DF_DIR"
+PATH=@jre@/bin exec $DF_DIR/soundsense/soundSense.sh
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/assets.nix b/infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/assets.nix
new file mode 100644
index 000000000000..47a8222cd6a9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/assets.nix
@@ -0,0 +1,55 @@
+{ stdenv, requireFile, gogUnpackHook }:
+
+let
+ generic = ver: source: let
+ pname = "descent${toString ver}";
+ in stdenv.mkDerivation rec {
+ name = "${pname}-assets-${version}";
+ version = "2.0.0.7";
+
+ src = requireFile rec {
+ name = "setup_descent12_${version}.exe";
+ sha256 = "1r1drbfda6czg21f9qqiiwgnkpszxgmcn5bafp5ljddh34swkn3f";
+ message = ''
+ While the Descent ${toString ver} game engine is free, the game assets are not.
+
+ Please purchase the game on gog.com and download the Windows installer.
+
+ Once you have downloaded the file, please use the following command and re-run the
+ installation:
+
+ nix-prefetch-url file://\$PWD/${name}
+ '';
+ };
+
+ nativeBuildInputs = [ gogUnpackHook ];
+
+ dontBuild = true;
+ dontFixup = true;
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/share/{games/${pname},doc/${pname}/examples}
+ pushd "app/${source}"
+ mv dosbox*.conf $out/share/doc/${pname}/examples
+ mv *.txt *.pdf $out/share/doc/${pname}
+ cp -r * $out/share/games/descent${toString ver}
+ popd
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Descent ${toString ver} assets from GOG";
+ homepage = "https://www.dxx-rebirth.com/";
+ license = licenses.unfree;
+ maintainers = with maintainers; [ peterhoeg ];
+ hydraPlatforms = [];
+ };
+ };
+
+in {
+ descent1-assets = generic 1 "descent";
+ descent2-assets = generic 2 "descent 2";
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/default.nix b/infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/default.nix
new file mode 100644
index 000000000000..aa2563d4e4b9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/default.nix
@@ -0,0 +1,56 @@
+{ stdenv
+, fetchFromGitHub
+, fetchurl
+, fetchpatch
+, scons
+, pkgconfig
+, SDL
+, SDL_mixer
+, libGLU
+, libGL
+, libpng
+, physfs
+}:
+
+let
+ music = fetchurl {
+ url = "https://www.dxx-rebirth.com/download/dxx/res/d2xr-sc55-music.dxa";
+ sha256 = "05mz77vml396mff43dbs50524rlm4fyds6widypagfbh5hc55qdc";
+ };
+
+in
+stdenv.mkDerivation rec {
+ pname = "dxx-rebirth";
+ version = "0.59.20200202";
+
+ src = fetchFromGitHub {
+ owner = "dxx-rebirth";
+ repo = "dxx-rebirth";
+ rev = "8ebb66c5c9c74ebb93d49741cc9545f2bb7fa05d";
+ sha256 = "1lsrlp47aby2m9hh7i3nv5rb0srlkmnq1w2ca6vyvlga9m9h7jrk";
+ };
+
+ nativeBuildInputs = [ pkgconfig scons ];
+
+ buildInputs = [ libGLU libGL libpng physfs SDL SDL_mixer ];
+
+ enableParallelBuilding = true;
+
+ NIX_CFLAGS_COMPILE = [
+ "-Wno-format-nonliteral"
+ "-Wno-format-truncation"
+ ];
+
+ postInstall = ''
+ install -Dm644 ${music} $out/share/games/dxx-rebirth/${music.name}
+ install -Dm644 -t $out/share/doc/dxx-rebirth *.txt
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Source Port of the Descent 1 and 2 engines";
+ homepage = "https://www.dxx-rebirth.com/";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ peterhoeg ];
+ platforms = with platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/full.nix b/infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/full.nix
new file mode 100644
index 000000000000..782a2d21112c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/dxx-rebirth/full.nix
@@ -0,0 +1,30 @@
+{ stdenv, makeWrapper
+, dxx-rebirth, descent1-assets, descent2-assets }:
+
+let
+ generic = ver: assets: stdenv.mkDerivation {
+ name = "d${toString ver}x-rebirth-full-${assets.version}";
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ buildCommand = ''
+ mkdir -p $out/bin
+
+ makeWrapper ${dxx-rebirth}/bin/d${toString ver}x-rebirth $out/bin/descent${toString ver} \
+ --add-flags "-hogdir ${assets}/share/games/descent${toString ver}"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Descent ${toString ver} using the DXX-Rebirth project engine and game assets from GOG";
+ homepage = "https://www.dxx-rebirth.com/";
+ license = with licenses; [ free unfree ];
+ maintainers = with maintainers; [ peterhoeg ];
+ platforms = with platforms; linux;
+ hydraPlatforms = [];
+ };
+ };
+
+in {
+ d1x-rebirth-full = generic 1 descent1-assets;
+ d2x-rebirth-full = generic 2 descent2-assets;
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/easyrpg-player/default.nix b/infra/libkookie/nixpkgs/pkgs/games/easyrpg-player/default.nix
new file mode 100644
index 000000000000..f3f039fe78bb
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/easyrpg-player/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub, cmake, doxygen ? null, pkgconfig, freetype ? null, glib, harfbuzz ? null
+, liblcf, libpng, libsndfile ? null, libvorbis ? null, libxmp ? null
+, libXcursor, libXext, libXi, libXinerama, libXrandr, libXScrnSaver, libXxf86vm
+, mpg123 ? null, opusfile ? null, pcre, pixman, SDL2_mixer, speexdsp ? null, wildmidi ? null, zlib }:
+
+stdenv.mkDerivation rec {
+ pname = "easyrpg-player";
+ version = "0.6.2.3";
+
+ src = fetchFromGitHub {
+ owner = "EasyRPG";
+ repo = "Player";
+ rev = version;
+ sha256 = "103ywad12dcfjpf97kyx22smilqrw1f20xcfvjjr4mm3walc2mdp";
+ };
+
+ nativeBuildInputs = [ cmake doxygen pkgconfig ];
+
+ buildInputs = [
+ freetype
+ glib
+ harfbuzz
+ liblcf
+ libpng
+ libsndfile
+ libvorbis
+ libxmp
+ libXcursor
+ libXext
+ libXi
+ libXinerama
+ libXrandr
+ libXScrnSaver
+ libXxf86vm
+ mpg123
+ opusfile
+ SDL2_mixer
+ pcre
+ pixman
+ speexdsp
+ wildmidi
+ zlib
+ ];
+
+ meta = with stdenv.lib; {
+ description = "RPG Maker 2000/2003 and EasyRPG games interpreter";
+ homepage = "https://easyrpg.org/";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ yegortimoshenko ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/eboard/default.nix b/infra/libkookie/nixpkgs/pkgs/games/eboard/default.nix
new file mode 100644
index 000000000000..b11cc90d11f1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/eboard/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, perl, pkgconfig, gtk2 }:
+
+stdenv.mkDerivation {
+ name = "eboard-1.1.1";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/eboard/eboard-1.1.1.tar.bz2";
+ sha256 = "0vm25j1s2zg1lipwjv9qrcm877ikfmk1yh34i8f5l3bwd63115xd";
+ };
+
+ patches = [ ./eboard.patch ];
+
+ buildInputs = [ gtk2 ];
+ nativeBuildInputs = [ perl pkgconfig ];
+
+ hardeningDisable = [ "format" ];
+
+ preConfigure = ''
+ patchShebangs ./configure
+ '';
+
+ NIX_CFLAGS_COMPILE = "-fpermissive";
+ NIX_LDFLAGS = "-ldl";
+
+ meta = {
+ homepage = "http://www.bergo.eng.br/eboard/";
+ description = "Chess interface for Unix-like systems";
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/eboard/eboard.patch b/infra/libkookie/nixpkgs/pkgs/games/eboard/eboard.patch
new file mode 100644
index 000000000000..f80c1b2f78d7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/eboard/eboard.patch
@@ -0,0 +1,16 @@
+--- a/cimg.cc 2014-05-25 02:41:58.000000000 -0500
++++ b/cimg.cc 2014-05-25 02:42:31.000000000 -0500
+@@ -94,11 +94,11 @@
+ ct == PNG_COLOR_TYPE_GRAY_ALPHA)
+ png_set_gray_to_rgb(pngp);
+
+- alloc(pngp->width,pngp->height);
++ alloc(png_get_image_width(pngp, infp),png_get_image_height(pngp, infp));
+ if (!ok) { fclose(f); return; }
+ ok = 0;
+
+- for(i=0;i<pngp->height;i++) {
++ for(i=0;i<png_get_image_height(pngp, infp);i++) {
+ png_read_row(pngp, (png_bytep) (&data[i*rowlen]), NULL);
+ }
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/eduke32/default.nix b/infra/libkookie/nixpkgs/pkgs/games/eduke32/default.nix
new file mode 100644
index 000000000000..df0950eb9376
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/eduke32/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig, nasm, makeDesktopItem
+, alsaLib, flac, gtk2, libvorbis, libvpx, libGLU, libGL
+, SDL2, SDL2_mixer }:
+
+let
+ version = "20200907";
+ rev = "9257";
+ revExtra = "93f62bbad";
+
+ desktopItem = makeDesktopItem {
+ name = "eduke32";
+ exec = "@out@/bin/${wrapper}";
+ comment = "Duke Nukem 3D port";
+ desktopName = "Enhanced Duke Nukem 3D";
+ genericName = "Duke Nukem 3D port";
+ categories = "Game;";
+ };
+
+ wrapper = "eduke32-wrapper";
+
+in stdenv.mkDerivation {
+ pname = "eduke32";
+ inherit version;
+
+ src = fetchurl {
+ url = "http://dukeworld.duke4.net/eduke32/synthesis/latest/eduke32_src_${version}-${rev}-${revExtra}.tar.xz";
+ sha256 = "972630059be61ef9564a241b84ef2ee4f69fc85c19ee36ce46052ff2f1ce3bf9";
+ };
+
+ buildInputs = [ alsaLib flac gtk2 libvorbis libvpx libGL libGLU SDL2 SDL2_mixer ];
+
+ nativeBuildInputs = [ makeWrapper pkgconfig ]
+ ++ stdenv.lib.optional (stdenv.hostPlatform.system == "i686-linux") nasm;
+
+ postPatch = ''
+ substituteInPlace source/build/src/glbuild.cpp \
+ --replace libGLU.so ${libGLU}/lib/libGLU.so
+
+ for f in glad.c glad_wgl.c ; do
+ substituteInPlace source/glad/src/$f \
+ --replace libGL.so ${libGL}/lib/libGL.so
+ done
+ '';
+
+ NIX_CFLAGS_COMPILE = "-I${SDL2.dev}/include/SDL2 -I${SDL2_mixer}/include/SDL2";
+
+ makeFlags = [
+ "SDLCONFIG=${SDL2}/bin/sdl2-config"
+ ];
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ runHook preInstall
+
+ install -Dm755 -t $out/bin eduke32 mapster32
+
+ makeWrapper $out/bin/eduke32 $out/bin/${wrapper} \
+ --set-default EDUKE32_DATA_DIR /var/lib/games/eduke32 \
+ --add-flags '-g "$EDUKE32_DATA_DIR/DUKE3D.GRP"'
+
+ cp -rv ${desktopItem}/share $out
+ substituteInPlace $out/share/applications/eduke32.desktop \
+ --subst-var out
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Enhanched port of Duke Nukem 3D for various platforms";
+ homepage = "http://eduke32.com";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ sander ];
+ # Darwin is untested (supported by upstream)
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/egoboo/default.nix b/infra/libkookie/nixpkgs/pkgs/games/egoboo/default.nix
new file mode 100644
index 000000000000..138ad8a757f1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/egoboo/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchurl, libGLU, libGL, SDL, SDL_mixer, SDL_image, SDL_ttf }:
+
+stdenv.mkDerivation rec {
+ # pf5234 (a developer?) at freenode #egoboo told me that I better use 2.7.3 until
+ # they fix more, because it even has at least one bugs less than 2.7.4.
+ # 2.8.0 does not start properly on linux
+ # They just starting making that 2.8.0 work on linux.
+ name = "egoboo-2.7.3";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/egoboo/${name}.tar.gz";
+ sha256 = "18cjgp9kakrsa90jcb4cl8hhh9k57mi5d1sy5ijjpd3p7zl647hd";
+ };
+
+ buildPhase = ''
+ cd source
+ make -C enet all
+ # The target 'all' has trouble
+ make -C game -f Makefile.unix egoboo
+ '';
+
+ # The user will need to have all the files in '.' to run egoboo, with
+ # writeable controls.txt and setup.txt
+ installPhase = ''
+ mkdir -p $out/share/${name}
+ cp -v game/egoboo $out/share/${name}
+ cd ..
+ cp -v -Rd controls.txt setup.txt players modules basicdat $out/share/${name}
+ '';
+
+ buildInputs = [ libGLU libGL SDL SDL_mixer SDL_image SDL_ttf ];
+
+ /*
+ This big commented thing may be needed for versions 2.8.0 or beyond
+ I keep it here for future updates.
+
+ # Some files have to go to $HOME, but we put them in the 'shared'.
+ patchPhase = ''
+ sed -i -e 's,''${HOME}/.''${PROJ_NAME},''${PREFIX}/share/games/''${PROJ_NAME},g' Makefile
+ '';
+
+ preBuild = ''
+ makeFlags=PREFIX=$out
+ '';
+ */
+
+ NIX_LDFLAGS = "-lm";
+
+ meta = {
+ description = "3D dungeon crawling adventure";
+
+ homepage = "http://www.freedink.org/";
+ license = stdenv.lib.licenses.gpl2Plus;
+
+ # I take it out of hydra as it does not work as well as I'd like
+ # maintainers = [ stdenv.lib.maintainers.bjg ];
+ # platforms = stdenv.lib.platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/eidolon/cargo-lock.patch b/infra/libkookie/nixpkgs/pkgs/games/eidolon/cargo-lock.patch
new file mode 100644
index 000000000000..5aa09c526830
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/eidolon/cargo-lock.patch
@@ -0,0 +1,19 @@
+diff --git a/Cargo.lock b/Cargo.lock
+index 8abf781..62511ef 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -1,3 +1,5 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
+ [[package]]
+ name = "adler32"
+ version = "1.0.3"
+@@ -229,7 +231,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
+
+ [[package]]
+ name = "eidolon"
+-version = "1.4.5"
++version = "1.4.6"
+ dependencies = [
+ "butlerd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "dirs 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/infra/libkookie/nixpkgs/pkgs/games/eidolon/default.nix b/infra/libkookie/nixpkgs/pkgs/games/eidolon/default.nix
new file mode 100644
index 000000000000..4ae64df41437
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/eidolon/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchgit, rustPlatform, pkgconfig, openssl }:
+
+rustPlatform.buildRustPackage rec {
+ pname = "eidolon";
+ version = "1.4.6";
+
+ src = fetchgit {
+ url = "https://git.sr.ht/~nicohman/eidolon";
+ rev = version;
+ sha256 = "1yn3k569pxzw43mmsk97088xpkdc714rks3ncchbb6ccx25kgxrr";
+ };
+ cargoPatches = [ ./cargo-lock.patch ];
+
+ cargoSha256 = "1i8qfphynwi42pkhhgllxq42dnw9f0dd6f829z94a3g91czyqvsw";
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ openssl ];
+
+ meta = with stdenv.lib; {
+ description = "A single TUI-based registry for drm-free, wine and steam games on linux, accessed through a rofi launch menu";
+ homepage = "https://github.com/nicohman/eidolon";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ _0x4A6F ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/empty-epsilon/default.nix b/infra/libkookie/nixpkgs/pkgs/games/empty-epsilon/default.nix
new file mode 100644
index 000000000000..dc761fb7d7a2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/empty-epsilon/default.nix
@@ -0,0 +1,66 @@
+{ lib, stdenv, fetchFromGitHub, cmake, sfml, libX11, glew, python3 }:
+
+let
+
+ major = "2020";
+ minor = "11";
+ patch = "23";
+
+ version = "${major}.${minor}.${patch}";
+
+ serious-proton = stdenv.mkDerivation {
+ pname = "serious-proton";
+ inherit version;
+
+ src = fetchFromGitHub {
+ owner = "daid";
+ repo = "SeriousProton";
+ rev = "EE-${version}";
+ sha256 = "sha256-/gwJPlvvOCv5XIsiVgZ8Eb/7vgwG/V+s/soGVCfYrwo=";
+ };
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ sfml libX11 ];
+
+ meta = with lib; {
+ description = "C++ game engine coded on top of SFML used for EmptyEpsilon";
+ homepage = "https://github.com/daid/SeriousProton";
+ license = licenses.mit;
+ maintainers = with maintainers; [ fpletz ];
+ platforms = platforms.linux;
+ };
+ };
+
+in
+
+
+stdenv.mkDerivation {
+ pname = "empty-epsilon";
+ inherit version;
+
+ src = fetchFromGitHub {
+ owner = "daid";
+ repo = "EmptyEpsilon";
+ rev = "EE-${version}";
+ sha256 = "sha256-HbF6xThR+ogNHbAcXF03DaBhwVhNEr5BJO7jeeVZH/o=";
+ };
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ serious-proton sfml glew libX11 python3 ];
+
+ cmakeFlags = [
+ "-DSERIOUS_PROTON_DIR=${serious-proton.src}"
+ "-DCPACK_PACKAGE_VERSION=${version}"
+ "-DCPACK_PACKAGE_VERSION_MAJOR=${major}"
+ "-DCPACK_PACKAGE_VERSION_MINOR=${minor}"
+ "-DCPACK_PACKAGE_VERSION_PATCH=${patch}"
+ ];
+
+ meta = with lib; {
+ description = "Open source bridge simulator based on Artemis";
+ homepage = "https://daid.github.io/EmptyEpsilon/";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ fpletz lheckemann ma27 ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/endgame-singularity/default.nix b/infra/libkookie/nixpkgs/pkgs/games/endgame-singularity/default.nix
new file mode 100644
index 000000000000..4e855dbd053f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/endgame-singularity/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, fetchurl
+, fetchFromGitHub
+, unzip
+, python3
+, enableDefaultMusicPack ? true
+}:
+
+python3.pkgs.buildPythonApplication rec {
+ pname = "endgame-singularity";
+ version = "1.00";
+
+ srcs = [
+ (fetchFromGitHub {
+ owner = "singularity";
+ repo = "singularity";
+ rev = "v${version}";
+ sha256 = "0ndrnxwii8lag6vrjpwpf5n36hhv223bb46d431l9gsigbizv0hl";
+ })
+ ] ++ stdenv.lib.optional enableDefaultMusicPack (
+ fetchurl {
+ url = "http://www.emhsoft.com/singularity/endgame-singularity-music-007.zip";
+ sha256 = "0vf2qaf66jh56728pq1zbnw50yckjz6pf6c6qw6dl7vk60kkqnpb";
+ }
+ );
+ sourceRoot = "source";
+
+ nativeBuildInputs = [ unzip ]; # The music is zipped
+ propagatedBuildInputs = with python3.pkgs; [ pygame numpy polib ];
+
+ # Add the music
+ postInstall = stdenv.lib.optionalString enableDefaultMusicPack ''
+ cp -R "../endgame-singularity-music-007" \
+ "$(echo $out/lib/python*/site-packages/singularity)/music"
+ # ↑ we cannot glob on [...]/music, it doesn't exist yet
+ '';
+
+ meta = {
+ homepage = "http://www.emhsoft.com/singularity/";
+ description = "A simulation game about strong AI";
+ longDescription = ''
+ A simulation of a true AI. Go from computer to computer, pursued by the
+ entire world. Keep hidden, and you might have a chance
+ '';
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = with stdenv.lib.maintainers; [ fgaz ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/endless-sky/default.nix b/infra/libkookie/nixpkgs/pkgs/games/endless-sky/default.nix
new file mode 100644
index 000000000000..76ab6542a7f3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/endless-sky/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub
+, SDL2, libpng, libjpeg, glew, openal, scons, libmad
+}:
+
+let
+ version = "0.9.12";
+
+in
+stdenv.mkDerivation {
+ pname = "endless-sky";
+ inherit version;
+
+ src = fetchFromGitHub {
+ owner = "endless-sky";
+ repo = "endless-sky";
+ rev = "v${version}";
+ sha256 = "1hly68ljm7yv01jfxyr7g6jivhj0igg6xx7vi92zqymick0hlh7a";
+ };
+
+ enableParallelBuilding = true;
+
+ buildInputs = [
+ SDL2 libpng libjpeg glew openal scons libmad
+ ];
+
+ prefixKey = "PREFIX=";
+
+ patches = [
+ ./fixes.patch
+ ];
+
+ meta = with stdenv.lib; {
+ description = "A sandbox-style space exploration game similar to Elite, Escape Velocity, or Star Control";
+ homepage = "https://endless-sky.github.io/";
+ license = with licenses; [
+ gpl3Plus cc-by-sa-30 cc-by-sa-40 publicDomain
+ ];
+ maintainers = with maintainers; [ lheckemann ];
+ platforms = platforms.linux; # Maybe other non-darwin Unix
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/endless-sky/fixes.patch b/infra/libkookie/nixpkgs/pkgs/games/endless-sky/fixes.patch
new file mode 100644
index 000000000000..359e2ee4af3b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/endless-sky/fixes.patch
@@ -0,0 +1,36 @@
+diff --git a/SConstruct b/SConstruct
+index 48fd080..419b40d 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -55,7 +55,7 @@ sky = env.Program("endless-sky", Glob("build/" + env["mode"] + "/*.cpp"))
+
+
+ # Install the binary:
+-env.Install("$DESTDIR$PREFIX/games", sky)
++env.Install("$DESTDIR$PREFIX/bin", sky)
+
+ # Install the desktop file:
+ env.Install("$DESTDIR$PREFIX/share/applications", "endless-sky.desktop")
+diff --git a/source/Files.cpp b/source/Files.cpp
+index c8c8957..d196459 100644
+--- a/source/Files.cpp
++++ b/source/Files.cpp
+@@ -114,15 +114,9 @@ void Files::Init(const char * const *argv)
+ if(resources.back() != '/')
+ resources += '/';
+ #if defined __linux__ || defined __FreeBSD__ || defined __DragonFly__
+- // Special case, for Linux: the resource files are not in the same place as
+- // the executable, but are under the same prefix (/usr or /usr/local).
+- static const string LOCAL_PATH = "/usr/local/";
+- static const string STANDARD_PATH = "/usr/";
+- static const string RESOURCE_PATH = "share/games/endless-sky/";
+- if(!resources.compare(0, LOCAL_PATH.length(), LOCAL_PATH))
+- resources = LOCAL_PATH + RESOURCE_PATH;
+- else if(!resources.compare(0, STANDARD_PATH.length(), STANDARD_PATH))
+- resources = STANDARD_PATH + RESOURCE_PATH;
++ // Workaround for NixOS. Not sure how to proceed with other OSes, feedback
++ // is welcome.
++ resources += "../share/games/endless-sky/";
+ #elif defined __APPLE__
+ // Special case for Mac OS X: the resources are in ../Resources relative to
+ // the folder the binary is in.
diff --git a/infra/libkookie/nixpkgs/pkgs/games/enyo-doom/default.nix b/infra/libkookie/nixpkgs/pkgs/games/enyo-doom/default.nix
new file mode 100644
index 000000000000..0158dc2b5318
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/enyo-doom/default.nix
@@ -0,0 +1,27 @@
+{ mkDerivation, stdenv, fetchFromGitLab, cmake, qtbase }:
+
+mkDerivation rec {
+ pname = "enyo-doom";
+ version = "2.0.2";
+
+ src = fetchFromGitLab {
+ owner = "sdcofer70";
+ repo = "enyo-doom";
+ rev = version;
+ sha256 = "1s1vpwrrpb9c7r2b0k1j7dlsfasfzmi6prcwql4mxwixrl7f8ms1";
+ };
+
+ nativeBuildInputs = [ cmake ];
+
+ buildInputs = [ qtbase ];
+
+ enableParallelBuilding = true;
+
+ meta = {
+ homepage = "https://gitlab.com/sdcofer70/enyo-doom";
+ description = "Frontend for Doom engines";
+ license = stdenv.lib.licenses.gpl2;
+ platforms = stdenv.lib.platforms.unix;
+ maintainers = [ stdenv.lib.maintainers.tadfisher ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/eternity-engine/default.nix b/infra/libkookie/nixpkgs/pkgs/games/eternity-engine/default.nix
new file mode 100644
index 000000000000..c170c0b9c189
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/eternity-engine/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, cmake, libGL, SDL, SDL_mixer, SDL_net, fetchFromGitHub, makeWrapper }:
+
+stdenv.mkDerivation rec {
+ pname = "eternity-engine";
+ version = "3.42.02";
+ src = fetchFromGitHub {
+ owner = "team-eternity";
+ repo = "eternity";
+ rev = version;
+ sha256 = "00kpq4k23hjmzjaymw3sdda7mqk8fjq6dzf7fmdal9fm7lfmj41k";
+ };
+
+ nativeBuildInputs = [ cmake makeWrapper ];
+ buildInputs = [ libGL SDL SDL_mixer SDL_net ];
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ install -Dm755 source/eternity $out/lib/eternity/eternity
+ cp -r $src/base $out/lib/eternity/base
+ mkdir $out/bin
+ makeWrapper $out/lib/eternity/eternity $out/bin/eternity
+ '';
+
+ meta = {
+ homepage = "http://doomworld.com/eternity";
+ description = "New school Doom port by James Haley";
+ license = stdenv.lib.licenses.gpl3;
+ platforms = stdenv.lib.platforms.linux;
+ maintainers = with stdenv.lib.maintainers; [ MP2E ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/extremetuxracer/default.nix b/infra/libkookie/nixpkgs/pkgs/games/extremetuxracer/default.nix
new file mode 100644
index 000000000000..1c0a47e4b617
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/extremetuxracer/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, libGLU, libGL, libX11, xorgproto, tcl, freeglut, freetype
+, sfml, libXi
+, libXmu, libXext, libXt, libSM, libICE
+, libpng, pkgconfig, gettext, intltool
+}:
+
+stdenv.mkDerivation rec {
+ version = "0.8.0";
+ pname = "extremetuxracer";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/extremetuxracer/etr-${version}.tar.xz";
+ sha256 = "05ysaxvsgps9fxc421kdifsxmc1sn6n79cjaa0k0i3fs9qqrja2b";
+ };
+
+ buildInputs = [
+ libGLU libGL libX11 xorgproto tcl freeglut freetype
+ sfml libXi
+ libXmu libXext libXt libSM libICE
+ libpng pkgconfig gettext intltool
+ ];
+
+ configureFlags = [ "--with-tcl=${tcl}/lib" ];
+
+ preConfigure = ''
+ export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE"
+ '';
+
+ meta = {
+ description = "High speed arctic racing game based on Tux Racer";
+ longDescription = ''
+ ExtremeTuxRacer - Tux lies on his belly and accelerates down ice slopes.
+ '';
+ license = stdenv.lib.licenses.gpl2Plus;
+ homepage = "https://sourceforge.net/projects/extremetuxracer/";
+ maintainers = with stdenv.lib.maintainers; [ ];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/exult/default.nix b/infra/libkookie/nixpkgs/pkgs/games/exult/default.nix
new file mode 100644
index 000000000000..adbf4dd07025
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/exult/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, pkgconfig, SDL2, libogg, libvorbis, zlib, unzip }:
+
+let
+
+ # Digital recordings of the music on an original Roland MT-32. So
+ # we don't need actual MIDI playback capability.
+ audio = fetchurl {
+ url = "mirror://sourceforge/exult/exult_audio.zip";
+ sha256 = "0s5wvgy9qja06v38g0qwzpaw76ff96vzd6gb1i3lb9k4hvx0xqbj";
+ };
+
+in
+
+stdenv.mkDerivation rec {
+ name = "exult-1.6";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/exult/${name}.tar.gz";
+ sha256 = "1dm27qkxj30567zb70q4acddsizn0xyi3z87hg7lysxdkyv49s3s";
+ };
+
+ configureFlags = [ "--disable-tools" ];
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ SDL2 libogg libvorbis zlib unzip ];
+
+ enableParallelBuilding = true;
+
+ NIX_LDFLAGS = "-lX11";
+
+ postInstall =
+ ''
+ mkdir -p $out/share/exult/music
+ unzip -o -d $out/share/exult ${audio}
+ chmod 644 $out/share/exult/*.flx
+ ''; # */
+
+ meta = {
+ homepage = "http://exult.sourceforge.net/";
+ description = "A reimplementation of the Ultima VII game engine";
+ maintainers = [ stdenv.lib.maintainers.eelco ];
+ platforms = stdenv.lib.platforms.unix;
+ hydraPlatforms = stdenv.lib.platforms.linux; # darwin times out
+ license = stdenv.lib.licenses.gpl2Plus;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ezquake/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ezquake/default.nix
new file mode 100644
index 000000000000..802125e3f8b1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ezquake/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, curl, expat
+, jansson, libpng, libjpeg, libGLU, libGL, libXxf86vm, pcre
+, pkgconfig, SDL2, vim, speex }:
+
+stdenv.mkDerivation rec {
+ pname = "ezquake";
+ version = "3.2.2";
+
+ src = fetchFromGitHub {
+ owner = "ezQuake";
+ repo = pname + "-source";
+ rev = version;
+ sha256 = "1rfp816gnp7jfd27cg1la5n1q6z2wgd9qljnlmnx7v2jixql8brf";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [
+ expat curl jansson libpng libjpeg libGLU libGL libXxf86vm pcre SDL2 vim speex
+ ];
+
+ installPhase = with stdenv.lib; let
+ sys = last (splitString "-" stdenv.hostPlatform.system);
+ arch = head (splitString "-" stdenv.hostPlatform.system);
+ in ''
+ mkdir -p $out/bin
+ find .
+ mv ezquake-${sys}-${arch} $out/bin/ezquake
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ homepage = "http://ezquake.github.io/";
+ description = "A modern QuakeWorld client focused on competitive online play";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ edwtjo ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/factorio/default.nix b/infra/libkookie/nixpkgs/pkgs/games/factorio/default.nix
new file mode 100644
index 000000000000..4535f31f2623
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/factorio/default.nix
@@ -0,0 +1,245 @@
+{ stdenv, fetchurl, makeWrapper, makeDesktopItem
+, alsaLib, libpulseaudio, libX11, libXcursor, libXinerama, libXrandr, libXi, libGL
+, libSM, libICE, libXext, factorio-utils
+, releaseType
+, mods ? []
+, username ? "", token ? "" # get/reset token at https://factorio.com/profile
+, experimental ? false # true means to always use the latest branch
+}:
+
+assert releaseType == "alpha"
+ || releaseType == "headless"
+ || releaseType == "demo";
+
+let
+
+ inherit (stdenv.lib) importJSON;
+
+ helpMsg = ''
+
+ ===FETCH FAILED===
+ Please ensure you have set the username and token with config.nix, or
+ /etc/nix/nixpkgs-config.nix if on NixOS.
+
+ Your token can be seen at https://factorio.com/profile (after logging in). It is
+ not as sensitive as your password, but should still be safeguarded. There is a
+ link on that page to revoke/invalidate the token, if you believe it has been
+ leaked or wish to take precautions.
+
+ Example:
+ {
+ packageOverrides = pkgs: {
+ factorio = pkgs.factorio.override {
+ username = "FactorioPlayer1654";
+ token = "d5ad5a8971267c895c0da598688761";
+ };
+ };
+ }
+
+ Alternatively, instead of providing the username+token, you may manually
+ download the release through https://factorio.com/download , then add it to
+ the store using e.g.:
+
+ releaseType=alpha
+ version=0.17.74
+ nix-prefetch-url file://$HOME/Downloads/factorio_\''${releaseType}_x64_\''${version}.tar.xz --name factorio_\''${releaseType}_x64-\''${version}.tar.xz
+
+ Note the ultimate "_" is replaced with "-" in the --name arg!
+ '';
+
+ desktopItem = makeDesktopItem {
+ name = "factorio";
+ desktopName = "Factorio";
+ comment = "A game in which you build and maintain factories.";
+ exec = "factorio";
+ icon = "factorio";
+ type = "Application";
+ categories = "Game";
+ };
+
+ branch = if experimental then "experimental" else "stable";
+
+ # NB `experimental` directs us to take the latest build, regardless of its branch;
+ # hence the (stable, experimental) pairs may sometimes refer to the same distributable.
+ versions = importJSON ./versions.json;
+ binDists = makeBinDists versions;
+
+ actual = binDists.${stdenv.hostPlatform.system}.${releaseType}.${branch} or (throw "Factorio ${releaseType}-${branch} binaries for ${stdenv.hostPlatform.system} are not available for download.");
+
+ makeBinDists = versions:
+ let f = path: name: value:
+ if builtins.isAttrs value then
+ if value ? "name" then
+ makeBinDist value
+ else
+ builtins.mapAttrs (f (path ++ [ name ])) value
+ else
+ throw "expected attrset at ${toString path} - got ${toString value}";
+ in
+ builtins.mapAttrs (f []) versions;
+ makeBinDist = { name, version, tarDirectory, url, sha256, needsAuth }: {
+ inherit version tarDirectory;
+ src =
+ if !needsAuth then
+ fetchurl { inherit name url sha256; }
+ else
+ (stdenv.lib.overrideDerivation
+ (fetchurl {
+ inherit name url sha256;
+ curlOpts = [
+ "--get"
+ "--data-urlencode" "username@username"
+ "--data-urlencode" "token@token"
+ ];
+ })
+ (_: { # This preHook hides the credentials from /proc
+ preHook =
+ if username != "" && token != "" then ''
+ echo -n "${username}" >username
+ echo -n "${token}" >token
+ '' else ''
+ # Deliberately failing since username/token was not provided, so we can't fetch.
+ # We can't use builtins.throw since we want the result to be used if the tar is in the store already.
+ exit 1
+ '';
+ failureHook = ''
+ cat <<EOF
+ ${helpMsg}
+ EOF
+ '';
+ }));
+ };
+
+ configBaseCfg = ''
+ use-system-read-write-data-directories=false
+ [path]
+ read-data=$out/share/factorio/data/
+ [other]
+ check_updates=false
+ '';
+
+ updateConfigSh = ''
+ #! $SHELL
+ if [[ -e ~/.factorio/config.cfg ]]; then
+ # Config file exists, but may have wrong path.
+ # Try to edit it. I'm sure this is perfectly safe and will never go wrong.
+ sed -i 's|^read-data=.*|read-data=$out/share/factorio/data/|' ~/.factorio/config.cfg
+ else
+ # Config file does not exist. Phew.
+ install -D $out/share/factorio/config-base.cfg ~/.factorio/config.cfg
+ fi
+ '';
+
+ modDir = factorio-utils.mkModDirDrv mods;
+
+ base = with actual; {
+ name = "factorio-${releaseType}-${version}";
+
+ inherit src;
+
+ preferLocalBuild = true;
+ dontBuild = true;
+
+ installPhase = ''
+ mkdir -p $out/{bin,share/factorio}
+ cp -a data $out/share/factorio
+ cp -a bin/${tarDirectory}/factorio $out/bin/factorio
+ patchelf \
+ --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+ $out/bin/factorio
+ '';
+
+ passthru.updateScript = if (username != "" && token != "") then [
+ ./update.py "--username=${username}" "--token=${token}"
+ ] else null;
+
+ meta = {
+ description = "A game in which you build and maintain factories";
+ longDescription = ''
+ Factorio is a game in which you build and maintain factories.
+
+ You will be mining resources, researching technologies, building
+ infrastructure, automating production and fighting enemies. Use your
+ imagination to design your factory, combine simple elements into
+ ingenious structures, apply management skills to keep it working and
+ finally protect it from the creatures who don't really like you.
+
+ Factorio has been in development since spring of 2012, and reached
+ version 1.0 in mid 2020.
+ '';
+ homepage = "https://www.factorio.com/";
+ license = stdenv.lib.licenses.unfree;
+ maintainers = with stdenv.lib.maintainers; [ Baughn elitak erictapen priegger lukegb ];
+ platforms = [ "x86_64-linux" ];
+ };
+ };
+
+ releases = rec {
+ headless = base;
+ demo = base // {
+
+ buildInputs = [ makeWrapper libpulseaudio ];
+
+ libPath = stdenv.lib.makeLibraryPath [
+ alsaLib
+ libpulseaudio
+ libX11
+ libXcursor
+ libXinerama
+ libXrandr
+ libXi
+ libGL
+ libSM
+ libICE
+ libXext
+ ];
+
+ installPhase = base.installPhase + ''
+ wrapProgram $out/bin/factorio \
+ --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:$libPath \
+ --run "$out/share/factorio/update-config.sh" \
+ --argv0 "" \
+ --add-flags "-c \$HOME/.factorio/config.cfg" \
+ ${if mods!=[] then "--add-flags --mod-directory=${modDir}" else ""}
+
+ # TODO Currently, every time a mod is changed/added/removed using the
+ # modlist, a new derivation will take up the entire footprint of the
+ # client. The only way to avoid this is to remove the mods arg from the
+ # package function. The modsDir derivation will have to be built
+ # separately and have the user specify it in the .factorio config or
+ # right along side it using a symlink into the store I think i will
+ # just remove mods for the client derivation entirely. this is much
+ # cleaner and more useful for headless mode.
+
+ # TODO: trying to toggle off a mod will result in read-only-fs-error.
+ # not much we can do about that except warn the user somewhere. In
+ # fact, no exit will be clean, since this error will happen on close
+ # regardless. just prints an ugly stacktrace but seems to be otherwise
+ # harmless, unless maybe the user forgets and tries to use the mod
+ # manager.
+
+ install -m0644 <(cat << EOF
+ ${configBaseCfg}
+ EOF
+ ) $out/share/factorio/config-base.cfg
+
+ install -m0755 <(cat << EOF
+ ${updateConfigSh}
+ EOF
+ ) $out/share/factorio/update-config.sh
+
+ mkdir -p $out/share/icons/hicolor/{64x64,128x128}/apps
+ cp -a data/core/graphics/factorio-icon.png $out/share/icons/hicolor/64x64/apps/factorio.png
+ cp -a data/core/graphics/factorio-icon@2x.png $out/share/icons/hicolor/128x128/apps/factorio.png
+ ln -s ${desktopItem}/share/applications $out/share/
+ '';
+ };
+ alpha = demo // {
+
+ installPhase = demo.installPhase + ''
+ cp -a doc-html $out/share/factorio
+ '';
+ };
+ };
+
+in stdenv.mkDerivation (releases.${releaseType})
diff --git a/infra/libkookie/nixpkgs/pkgs/games/factorio/mods.nix b/infra/libkookie/nixpkgs/pkgs/games/factorio/mods.nix
new file mode 100644
index 000000000000..5c9b4f0628a2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/factorio/mods.nix
@@ -0,0 +1,213 @@
+# This file is here for demo purposes only, populated with a small sampling of
+# mods. It will eventually be replaced by a nixos-channel that will provide
+# derivations for most or all of the mods tracked through the official mod
+# manager site.
+{ stdenv, fetchurl
+, factorio-utils
+, allRecommendedMods ? true
+, allOptionalMods ? false
+}:
+with stdenv.lib;
+let
+ modDrv = factorio-utils.modDrv { inherit allRecommendedMods allOptionalMods; };
+in
+rec {
+
+ bobassembly = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobassembly_0.13.0.zip"
+ ];
+ sha256 = "0c0m7sb45r37g882x0aq8mc82yhfh9j9h8g018d4s5pf93vzr6d1";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobconfig ];
+ recommendedDeps = [ bobplates ];
+ };
+
+ bobconfig = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobconfig_0.13.1.zip"
+ ];
+ sha256 = "0z4kmggm1slbr3qiy5xahc9nhdffllp21n9nv5gh1zbzv72sb1rp";
+ };
+ };
+
+ bobelectronics = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobelectronics_0.13.1.zip"
+ ];
+ sha256 = "16sn5w33s0ckiwqxx7b2pcsqmhxbxjm2w4h4vd99hwpvdpjyav52";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobconfig ];
+ recommendedDeps = [ bobplates ];
+ };
+
+ bobenemies = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobenemies_0.13.1.zip"
+ ];
+ sha256 = "1wnb5wsvh9aa3i9mj17f36ybbd13qima3iwshw60i6xkzzqfk44d";
+ };
+ optionalDeps = [ bobconfig ];
+ };
+
+ bobgreenhouse = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobgreenhouse_0.13.2.zip"
+ ];
+ sha256 = "1ql26875dvz2lqln289jg1w6yjzsd0x0pqmd570jffwi5m320rrw";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobconfig ];
+ recommendedDeps = [ bobplates ];
+ };
+
+ bobinserters = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobinserters_0.13.3.zip"
+ ];
+ sha256 = "0nys9zhaw0v3w2xzrhawr8g2hcxkzdmyqd4s8xm5bnbrgrq86g9z";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobconfig ];
+ recommendedDeps = [ ];
+ };
+
+ boblibrary = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/boblibrary_0.13.1.zip"
+ ];
+ sha256 = "04fybs626lzxf0p21jl8kakh2mddah7l9m57srk7a87jw5bj1zx8";
+ };
+ };
+
+ boblogistics = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/boblogistics_0.13.7.zip"
+ ];
+ sha256 = "0c91zmyxwsmyv6vm6gp498vb7flqlcyzkbp9s5q1651hpyd378hx";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobconfig ];
+ recommendedDeps = [ bobplates ];
+ };
+
+ bobmining = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobmining_0.13.1.zip"
+ ];
+ sha256 = "1l7k3v4aizihppgi802fr5b8zbnq2h05c2bbsk5hds239qgxy80m";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobconfig bobores bobplates ];
+ };
+
+ bobmodules = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobmodules_0.13.0.zip"
+ ];
+ sha256 = "0ggd2gc4s5sbld7gyncbzdgq8gc00mvxjcfv7i2dchcrdzrlr556";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobconfig ];
+ recommendedDeps = [ bobplates bobassembly bobelectronics ];
+ };
+
+ bobores = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobores_0.13.1.zip"
+ ];
+ sha256 = "1rri70655kj77sdr3zgp56whmcl0gfjmw90jm7lj1jp8l1pdfzb9";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobconfig ];
+ };
+
+ bobplates = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobplates_0.13.2.zip"
+ ];
+ sha256 = "0iczpa26hflj17k84p4n6wz0pwhbbrfk86dgac4bfz28kqg58nj1";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobconfig bobenemies ];
+ recommendedDeps = [ bobores bobtech ];
+ };
+
+ bobpower = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobpower_0.13.1.zip"
+ ];
+ sha256 = "18sblnlvprrm2vzlczlki09yj9lr4y64808zrwmcasf7470skar3";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobconfig ];
+ recommendedDeps = [ bobplates ];
+ };
+
+ bobrevamp = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobrevamp_0.13.0.zip"
+ ];
+ sha256 = "0rkyf61clh8fjg72z9i7r4skvdzgd49ky6s0486xxljhbil4nxb7";
+ };
+ deps = [ boblibrary ];
+ };
+
+ bobtech = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobtech_0.13.0.zip"
+ ];
+ sha256 = "0arc9kilxzdpapn3gh5h8269ssgsjxib4ny0qissq2sg95gxlsn0";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ bobenemies ];
+ };
+
+ bobtechsave = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobtechsave_0.13.0.zip"
+ ];
+ sha256 = "1vlv4sgdfd9ldjm8y79n95ms5k6x2i7khjc422lp9080m03v1hcl";
+ };
+ };
+
+ bobwarfare = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/bobwarfare_0.13.4.zip"
+ ];
+ sha256 = "07wzn16i4r0qjm41wfyl17rrhry2vrph08a0kq8w5iy6qcbqqfd3";
+ };
+ deps = [ boblibrary ];
+ optionalDeps = [ boblibrary bobplates ];
+ recommendedDeps = [ bobtech ];
+ };
+
+ clock = modDrv {
+ src = fetchurl {
+ urls = [
+ "https://f.xor.us/factorio-mods/clock_0.13.0.zip"
+ ];
+ sha256 = "0nflywbj6p2kz2w9wff78vskzljrzaf32ib56k3z456d9y8mlxfd";
+ };
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/factorio/update.py b/infra/libkookie/nixpkgs/pkgs/games/factorio/update.py
new file mode 100755
index 000000000000..b1cdce6b4aa1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/factorio/update.py
@@ -0,0 +1,174 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i python -p "python3.withPackages (ps: with ps; [ ps.absl-py ps.requests ])" nix
+
+from collections import defaultdict
+import copy
+from dataclasses import dataclass
+import json
+import os.path
+import subprocess
+from typing import Callable, Dict
+
+from absl import app
+from absl import flags
+from absl import logging
+import requests
+
+
+FACTORIO_API = "https://factorio.com/api/latest-releases"
+
+
+FLAGS = flags.FLAGS
+
+flags.DEFINE_string('username', '', 'Factorio username for retrieving binaries.')
+flags.DEFINE_string('token', '', 'Factorio token for retrieving binaries.')
+flags.DEFINE_string('out', '', 'Output path for versions.json.')
+
+
+@dataclass
+class System:
+ nix_name: str
+ url_name: str
+ tar_name: str
+
+
+@dataclass
+class ReleaseType:
+ name: str
+ needs_auth: bool = False
+
+
+@dataclass
+class ReleaseChannel:
+ name: str
+
+
+FactorioVersionsJSON = Dict[str, Dict[str, str]]
+OurVersionJSON = Dict[str, Dict[str, Dict[str, Dict[str, str]]]]
+
+
+SYSTEMS = [
+ System(nix_name="x86_64-linux", url_name="linux64", tar_name="x64"),
+]
+
+RELEASE_TYPES = [
+ ReleaseType("alpha", needs_auth=True),
+ ReleaseType("demo"),
+ ReleaseType("headless"),
+]
+
+RELEASE_CHANNELS = [
+ ReleaseChannel("experimental"),
+ ReleaseChannel("stable"),
+]
+
+
+def find_versions_json() -> str:
+ if FLAGS.out:
+ return out
+ try_paths = ["pkgs/games/factorio/versions.json", "versions.json"]
+ for path in try_paths:
+ if os.path.exists(path):
+ return path
+ raise Exception("Couldn't figure out where to write versions.json; try specifying --out")
+
+
+def fetch_versions() -> FactorioVersionsJSON:
+ return json.loads(requests.get("https://factorio.com/api/latest-releases").text)
+
+
+def generate_our_versions(factorio_versions: FactorioVersionsJSON) -> OurVersionJSON:
+ rec_dd = lambda: defaultdict(rec_dd)
+ output = rec_dd()
+ for system in SYSTEMS:
+ for release_type in RELEASE_TYPES:
+ for release_channel in RELEASE_CHANNELS:
+ version = factorio_versions[release_channel.name][release_type.name]
+ this_release = {
+ "name": f"factorio_{release_type.name}_{system.tar_name}-{version}.tar.xz",
+ "url": f"https://factorio.com/get-download/{version}/{release_type.name}/{system.url_name}",
+ "version": version,
+ "needsAuth": release_type.needs_auth,
+ "tarDirectory": system.tar_name,
+ }
+ output[system.nix_name][release_type.name][release_channel.name] = this_release
+ return output
+
+
+def iter_version(versions: OurVersionJSON, it: Callable[[str, str, str, Dict[str, str]], Dict[str, str]]) -> OurVersionJSON:
+ versions = copy.deepcopy(versions)
+ for system_name, system in versions.items():
+ for release_type_name, release_type in system.items():
+ for release_channel_name, release in release_type.items():
+ release_type[release_channel_name] = it(system_name, release_type_name, release_channel_name, dict(release))
+ return versions
+
+
+def merge_versions(old: OurVersionJSON, new: OurVersionJSON) -> OurVersionJSON:
+ """Copies already-known hashes from version.json to avoid having to re-fetch."""
+ def _merge_version(system_name: str, release_type_name: str, release_channel_name: str, release: Dict[str, str]) -> Dict[str, str]:
+ old_system = old.get(system_name, {})
+ old_release_type = old_system.get(release_type_name, {})
+ old_release = old_release_type.get(release_channel_name, {})
+ if not "sha256" in old_release:
+ logging.info("%s/%s/%s: not copying sha256 since it's missing", system_name, release_type_name, release_channel_name)
+ return release
+ if not all(old_release.get(k, None) == release[k] for k in ['name', 'version', 'url']):
+ logging.info("%s/%s/%s: not copying sha256 due to mismatch", system_name, release_type_name, release_channel_name)
+ return release
+ release["sha256"] = old_release["sha256"]
+ return release
+ return iter_version(new, _merge_version)
+
+
+def nix_prefetch_url(name: str, url: str, algo: str = 'sha256') -> str:
+ cmd = ['nix-prefetch-url', '--type', algo, '--name', name, url]
+ logging.info('running %s', cmd)
+ out = subprocess.check_output(cmd)
+ return out.decode('utf-8').strip()
+
+
+def fill_in_hash(versions: OurVersionJSON) -> OurVersionJSON:
+ """Fill in sha256 hashes for anything missing them."""
+ urls_to_hash = {}
+ def _fill_in_hash(system_name: str, release_type_name: str, release_channel_name: str, release: Dict[str, str]) -> Dict[str, str]:
+ if "sha256" in release:
+ logging.info("%s/%s/%s: skipping fetch, sha256 already present", system_name, release_type_name, release_channel_name)
+ return release
+ url = release["url"]
+ if url in urls_to_hash:
+ logging.info("%s/%s/%s: found url %s in cache", system_name, release_type_name, release_channel_name, url)
+ release["sha256"] = urls_to_hash[url]
+ return release
+ logging.info("%s/%s/%s: fetching %s", system_name, release_type_name, release_channel_name, url)
+ if release["needsAuth"]:
+ if not FLAGS.username or not FLAGS.token:
+ raise Exception("fetching %s/%s/%s from %s requires --username and --token" % (system_name, release_type_name, release_channel_name, url))
+ url += f"?username={FLAGS.username}&token={FLAGS.token}"
+ release["sha256"] = nix_prefetch_url(release["name"], url)
+ urls_to_hash[url] = release["sha256"]
+ return release
+ return iter_version(versions, _fill_in_hash)
+
+
+def main(argv):
+ factorio_versions = fetch_versions()
+ new_our_versions = generate_our_versions(factorio_versions)
+ old_our_versions = None
+ our_versions_path = find_versions_json()
+ if our_versions_path:
+ logging.info('Loading old versions.json from %s', our_versions_path)
+ with open(our_versions_path, 'r') as f:
+ old_our_versions = json.load(f)
+ if old_our_versions:
+ logging.info('Merging in old hashes')
+ new_our_versions = merge_versions(old_our_versions, new_our_versions)
+ logging.info('Fetching necessary tars to get hashes')
+ new_our_versions = fill_in_hash(new_our_versions)
+ with open(our_versions_path, 'w') as f:
+ logging.info('Writing versions.json to %s', our_versions_path)
+ json.dump(new_our_versions, f, sort_keys=True, indent=2)
+ f.write("\n")
+
+if __name__ == '__main__':
+ app.run(main)
diff --git a/infra/libkookie/nixpkgs/pkgs/games/factorio/utils.nix b/infra/libkookie/nixpkgs/pkgs/games/factorio/utils.nix
new file mode 100644
index 000000000000..2764592a3246
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/factorio/utils.nix
@@ -0,0 +1,49 @@
+# This file provides a top-level function that will be used by both nixpkgs and nixos
+# to generate mod directories for use at runtime by factorio.
+{ stdenv }:
+with stdenv.lib;
+{
+ mkModDirDrv = mods: # a list of mod derivations
+ let
+ recursiveDeps = modDrv: [modDrv] ++ map recursiveDeps modDrv.deps;
+ modDrvs = unique (flatten (map recursiveDeps mods));
+ in
+ stdenv.mkDerivation {
+ name = "factorio-mod-directory";
+
+ preferLocalBuild = true;
+ buildCommand = ''
+ mkdir -p $out
+ for modDrv in ${toString modDrvs}; do
+ # NB: there will only ever be a single zip file in each mod derivation's output dir
+ ln -s $modDrv/*.zip $out
+ done
+ '';
+ };
+
+ modDrv = { allRecommendedMods, allOptionalMods }:
+ { src
+ , name ? null
+ , deps ? []
+ , optionalDeps ? []
+ , recommendedDeps ? []
+ }: stdenv.mkDerivation {
+
+ inherit src;
+
+ # Use the name of the zip, but endstrip ".zip" and possibly the querystring that gets left in by fetchurl
+ name = replaceStrings ["_"] ["-"] (if name != null then name else removeSuffix ".zip" (head (splitString "?" src.name)));
+
+ deps = deps ++ optionals allOptionalMods optionalDeps
+ ++ optionals allRecommendedMods recommendedDeps;
+
+ preferLocalBuild = true;
+ buildCommand = ''
+ mkdir -p $out
+ srcBase=$(basename $src)
+ srcBase=''${srcBase#*-} # strip nix hash
+ srcBase=''${srcBase%\?*} # strip querystring leftover from fetchurl
+ cp $src $out/$srcBase
+ '';
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/factorio/versions.json b/infra/libkookie/nixpkgs/pkgs/games/factorio/versions.json
new file mode 100644
index 000000000000..b4c905450355
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/factorio/versions.json
@@ -0,0 +1,58 @@
+{
+ "x86_64-linux": {
+ "alpha": {
+ "experimental": {
+ "name": "factorio_alpha_x64-1.1.5.tar.xz",
+ "needsAuth": true,
+ "sha256": "17hm62mhldms41wv0vv2bzg8zg1mg7ga61h3yzw9dfvic661khmp",
+ "tarDirectory": "x64",
+ "url": "https://factorio.com/get-download/1.1.5/alpha/linux64",
+ "version": "1.1.5"
+ },
+ "stable": {
+ "name": "factorio_alpha_x64-1.0.0.tar.xz",
+ "needsAuth": true,
+ "sha256": "0zixscff0svpb0yg8nzczp2z4filqqxi1k0z0nrpzn2hhzhf1464",
+ "tarDirectory": "x64",
+ "url": "https://factorio.com/get-download/1.0.0/alpha/linux64",
+ "version": "1.0.0"
+ }
+ },
+ "demo": {
+ "experimental": {
+ "name": "factorio_demo_x64-1.0.0.tar.xz",
+ "needsAuth": false,
+ "sha256": "0h9cqbp143w47zcl4qg4skns4cngq0k40s5jwbk0wi5asjz8whqn",
+ "tarDirectory": "x64",
+ "url": "https://factorio.com/get-download/1.0.0/demo/linux64",
+ "version": "1.0.0"
+ },
+ "stable": {
+ "name": "factorio_demo_x64-1.0.0.tar.xz",
+ "needsAuth": false,
+ "sha256": "0h9cqbp143w47zcl4qg4skns4cngq0k40s5jwbk0wi5asjz8whqn",
+ "tarDirectory": "x64",
+ "url": "https://factorio.com/get-download/1.0.0/demo/linux64",
+ "version": "1.0.0"
+ }
+ },
+ "headless": {
+ "experimental": {
+ "name": "factorio_headless_x64-1.1.5.tar.xz",
+ "needsAuth": false,
+ "sha256": "1s4ajj8kkz1q5rivv2q6c8ii73nxa11g4fs6hic3r43l52n89ml1",
+ "tarDirectory": "x64",
+ "url": "https://factorio.com/get-download/1.1.5/headless/linux64",
+ "version": "1.1.5"
+ },
+ "stable": {
+ "name": "factorio_headless_x64-1.0.0.tar.xz",
+ "needsAuth": false,
+ "sha256": "0r0lplns8nxna2viv8qyx9mp4cckdvx6k20w2g2fwnj3jjmf3nc1",
+ "tarDirectory": "x64",
+ "url": "https://factorio.com/get-download/1.0.0/headless/linux64",
+ "version": "1.0.0"
+ }
+ }
+ }
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/fairymax/default.nix b/infra/libkookie/nixpkgs/pkgs/games/fairymax/default.nix
new file mode 100644
index 000000000000..b5e3afa9e3b7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/fairymax/default.nix
@@ -0,0 +1,40 @@
+{stdenv, fetchurl}:
+stdenv.mkDerivation rec {
+ pname = "fairymax";
+ version = "4.8";
+ src = fetchurl {
+ url = "http://home.hccnet.nl/h.g.muller/fmax4_8w.c";
+ sha256 = "01vxhpa4z0613mkgkzmsln293wxmyp5kdzil93cd1ik51q4gwjca";
+ };
+ ini = fetchurl {
+ url = "http://home.hccnet.nl/h.g.muller/fmax.ini";
+ sha256 = "1zwx70g3gspbqx1zf9gm1may8jrli9idalvskxbdg33qgjys47cn";
+ };
+ unpackPhase = ''
+ cp ${src} fairymax.c
+ cp ${ini} fmax.ini
+ '';
+ buildPhase = ''
+ gcc *.c -o fairymax -DINI_FILE='"'"$out/share/fairymax/fmax.ini"'"'
+ '';
+ installPhase = ''
+ mkdir -p "$out"/{bin,share/fairymax}
+ cp fairymax "$out/bin"
+ cp fmax.ini "$out/share/fairymax"
+ '';
+ meta = {
+ inherit version;
+ description = ''A small chess engine supporting fairy pieces'';
+ longDescription = ''
+ A version of micro-Max that reads the piece description
+ from a file fmax.ini, so that arbitrary fairy pieces can be
+ implemented. This version (4.8J) supports up to 15 piece types,
+ and board sizes up to 12x8. A Linux port exists in the
+ format of a debian package.
+ '';
+ license = stdenv.lib.licenses.free ;
+ maintainers = [stdenv.lib.maintainers.raskin];
+ platforms = stdenv.lib.platforms.linux;
+ homepage = "http://home.hccnet.nl/h.g.muller/dwnldpage.html";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/fish-fillets-ng/default.nix b/infra/libkookie/nixpkgs/pkgs/games/fish-fillets-ng/default.nix
new file mode 100644
index 000000000000..638bf59fc781
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/fish-fillets-ng/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchurl, SDL, lua5_1, pkgconfig, SDL_mixer, SDL_image, SDL_ttf}:
+stdenv.mkDerivation rec {
+ pname = "fish-fillets-ng";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "mirror://sourceforge/fillets/fillets-ng-${version}.tar.gz";
+ sha256 = "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij";
+ };
+ data = fetchurl {
+ url = "mirror://sourceforge/fillets/fillets-ng-data-${version}.tar.gz";
+ sha256 = "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh";
+ };
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [SDL lua5_1 SDL_mixer SDL_image SDL_ttf];
+ postInstall=''
+ mkdir -p "$out/share/games/fillets-ng/"
+ tar -xf ${data} -C "$out/share/games/fillets-ng/" --strip-components=1
+ '';
+ meta = {
+ inherit version;
+ description = ''A puzzle game'';
+ license = stdenv.lib.licenses.gpl2Plus;
+ maintainers = [stdenv.lib.maintainers.raskin];
+ platforms = stdenv.lib.platforms.linux;
+ homepage = "http://fillets.sourceforge.net/";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/flare/default.nix b/infra/libkookie/nixpkgs/pkgs/games/flare/default.nix
new file mode 100644
index 000000000000..2058abebb55e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/flare/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildEnv, callPackage, makeWrapper, Cocoa }:
+
+buildEnv {
+ name = "flare-1.11";
+
+ paths = [
+ (callPackage ./engine.nix { inherit Cocoa; })
+ (callPackage ./game.nix {})
+ ];
+
+ buildInputs = [ makeWrapper ];
+ postBuild = ''
+ mkdir -p $out/bin
+ makeWrapper $out/games/flare $out/bin/flare --run "cd $out/share/games/flare"
+ '';
+
+ meta = with lib; {
+ description = "Fantasy action RPG using the FLARE engine";
+ homepage = "https://flarerpg.org/";
+ maintainers = [ maintainers.aanderse ];
+ license = [ licenses.gpl3 licenses.cc-by-sa-30 ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/flare/engine.nix b/infra/libkookie/nixpkgs/pkgs/games/flare/engine.nix
new file mode 100644
index 000000000000..74f983c64413
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/flare/engine.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, cmake, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, Cocoa }:
+
+stdenv.mkDerivation rec {
+ pname = "flare-engine";
+ version = "1.11";
+
+ src = fetchFromGitHub {
+ owner = "flareteam";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1j6raymz128miq517h9drks4gj79dajw3lsr0msqxz0z3zm6cc4n";
+ };
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ SDL2 SDL2_image SDL2_mixer SDL2_ttf ]
+ ++ stdenv.lib.optional stdenv.isDarwin Cocoa;
+
+ meta = with stdenv.lib; {
+ description = "Free/Libre Action Roleplaying Engine";
+ homepage = "https://github.com/flareteam/flare-engine";
+ maintainers = [ maintainers.aanderse ];
+ license = [ licenses.gpl3 ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/flare/game.nix b/infra/libkookie/nixpkgs/pkgs/games/flare/game.nix
new file mode 100644
index 000000000000..6a231a5ff7d7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/flare/game.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, cmake }:
+
+stdenv.mkDerivation rec {
+ pname = "flare-game";
+ version = "1.11";
+
+ src = fetchFromGitHub {
+ owner = "flareteam";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "18m2qfbbaqklm20gnr7wzrwbmylp1jh781a4p1dq0hymqcg92x5l";
+ };
+
+ nativeBuildInputs = [ cmake ];
+
+ meta = with stdenv.lib; {
+ description = "Fantasy action RPG using the FLARE engine";
+ homepage = "https://github.com/flareteam/flare-game";
+ maintainers = [ maintainers.aanderse ];
+ license = [ licenses.cc-by-sa-30 ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/flightgear/default.nix b/infra/libkookie/nixpkgs/pkgs/games/flightgear/default.nix
new file mode 100644
index 000000000000..e32f2e96d4fa
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/flightgear/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchurl, wrapQtAppsHook
+, freeglut, freealut, libGLU, libGL, libICE, libjpeg, openal, openscenegraph, plib
+, libSM, libunwind, libX11, xorgproto, libXext, libXi
+, libXmu, libXt, simgear, zlib, boost, cmake, libpng, udev, fltk13, apr
+, makeDesktopItem, qtbase, qtdeclarative, glew
+}:
+
+let
+ version = "2020.1.2";
+ shortVersion = builtins.substring 0 6 version;
+ data = stdenv.mkDerivation rec {
+ pname = "flightgear-data";
+ inherit version;
+
+ src = fetchurl {
+ url = "mirror://sourceforge/flightgear/release-${shortVersion}/FlightGear-${version}-data.tar.bz2";
+ sha256 = "0ldsjb54k8nb99h6n4f4x20nawd2pa0a8skkwkrgckdpmdv0zwyk";
+ };
+
+ phases = [ "installPhase" ];
+
+ installPhase = ''
+ mkdir -p "$out/share/FlightGear"
+ tar xf "${src}" -C "$out/share/FlightGear/" --strip-components=1
+ '';
+ };
+in
+stdenv.mkDerivation rec {
+ pname = "flightgear";
+ # inheriting data for `nix-prefetch-url -A pkgs.flightgear.data.src`
+ inherit version data;
+
+ src = fetchurl {
+ url = "mirror://sourceforge/flightgear/release-${shortVersion}/${pname}-${version}.tar.bz2";
+ sha256 = "1770kgwa7z70sx6da9x1q9cszpd3ywz6nn8jrb6xv8ldjqcpqpvb";
+ };
+
+ # Of all the files in the source and data archives, there doesn't seem to be
+ # a decent icon :-)
+ iconsrc = fetchurl {
+ url = "http://wiki.flightgear.org/images/6/62/FlightGear_logo.png";
+ sha256 = "1ikz413jia55vfnmx8iwrlxvx8p16ggm81mbrj66wam3q7s2dm5p";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "flightgear";
+ exec = "fgfs";
+ icon = iconsrc;
+ comment = "FlightGear Flight Simulator";
+ desktopName = "FlightGear";
+ genericName = "Flight simulator";
+ categories = "Game;Simulation";
+ };
+
+ nativeBuildInputs = [ cmake wrapQtAppsHook ];
+ buildInputs = [
+ freeglut freealut libGLU libGL libICE libjpeg openal openscenegraph plib
+ libSM libunwind libX11 xorgproto libXext libXi
+ libXmu libXt simgear zlib boost libpng udev fltk13 apr qtbase
+ glew qtdeclarative
+ ];
+
+ postInstall = ''
+ mkdir -p "$out/share/applications/"
+ cp "${desktopItem}"/share/applications/* "$out/share/applications/" #*/
+ '';
+
+ qtWrapperArgs = [
+ "--set FG_ROOT ${data}/share/FlightGear"
+ ];
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Flight simulator";
+ maintainers = with maintainers; [ raskin ];
+ platforms = platforms.linux;
+ hydraPlatforms = []; # disabled from hydra because it's so big
+ license = licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/fltrator/default.nix b/infra/libkookie/nixpkgs/pkgs/games/fltrator/default.nix
new file mode 100644
index 000000000000..e01a3f9fb9c0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/fltrator/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, unzip, fltk, which, libjpeg }:
+
+stdenv.mkDerivation rec {
+ pname = "fltrator";
+ version = "2.3";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/fltrator/fltrator-${version}-code.zip";
+ sha256 = "125aqq1sfrm0c9cm6gyylwdmc8xrb0rjf563xvw7q28sdbl6ayp7";
+ };
+
+ buildInputs = [ fltk libjpeg ];
+ nativeBuildInputs = [ unzip which ];
+
+ postPatch = ''
+ substituteInPlace src/fltrator.cxx\
+ --replace 'home += "fltrator/"' "home = \"$out/fltrator/\""
+ substituteInPlace src/fltrator-landscape.cxx\
+ --replace 'home += "fltrator/"' "home = \"$out/fltrator/\""
+ substituteInPlace rsc/fltrator.desktop \
+ --replace 'Exec=fltrator' "Exec=$out/bin/fltrator"
+ '';
+
+ dontAddPrefix = true;
+
+ makeFlags = [ "HOME=$(out)" "RSC_PATH=$(out)/fltrator"];
+
+ postInstall = ''
+ mkdir -p $out/share/applications
+ cp rsc/fltrator.desktop $out/share/applications
+ mkdir -p $out/share/icons/hicolor/128x128/apps/
+ cp rsc/fltrator-128.png $out/share/icons/hicolor/128x128/apps/fltrator2.png
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A simple retro style arcade side-scroller game";
+ longDescription = '' FLTrator is a simple retro style arcade side-scroller game in which you steer a spaceship through a landscape with hostile rockets and other obstacles.
+ It has ten different levels and a level editor to create new levels or modify the existing.''; # from https://libregamewiki.org/FLTrator
+ homepage = "http://fltrator.sourceforge.net/";
+ platforms = platforms.linux;
+ maintainers = [ maintainers.marius851000 ];
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/freecell-solver/default.nix b/infra/libkookie/nixpkgs/pkgs/games/freecell-solver/default.nix
new file mode 100644
index 000000000000..1845ba825eb2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/freecell-solver/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, pkgconfig, cmake
+, perl, gmp, libtap, gperf
+, perlPackages, python3 }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+ pname = "freecell-solver";
+ version = "4.18.0";
+
+ src = fetchurl {
+ url = "https://fc-solve.shlomifish.org/downloads/fc-solve/${pname}-${version}.tar.xz";
+ sha256 = "1cmaib69pijmcpvgjvrdry8j4xys8l906l80b8z21vvyhdwrfdnn";
+ };
+
+ nativeBuildInputs = [
+ cmake perl pkgconfig
+ ] ++ (with perlPackages; TaskFreecellSolverTesting.buildInputs ++ [
+ GamesSolitaireVerify StringShellQuote TaskFreecellSolverTesting TemplateToolkit
+ ]);
+
+ buildInputs = [
+ gmp libtap gperf
+ python3 python3.pkgs.random2
+ ];
+
+ # "ninja t/CMakeFiles/delta-states-test.t.exe.dir/__/delta_states.c.o" fails
+ # to depend on the generated "is_king.h".
+ enableParallelBuilding = false;
+
+ meta = {
+ description = "A FreeCell automatic solver";
+ longDescription = ''
+ FreeCell Solver is a program that automatically solves layouts
+ of Freecell and similar variants of Card Solitaire such as Eight
+ Off, Forecell, and Seahaven Towers, as well as Simple Simon
+ boards.
+ '';
+ homepage = "https://fc-solve.shlomifish.org/";
+ license = licenses.mit;
+ maintainers = [ maintainers.AndersonTorres ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/freeciv/default.nix b/infra/libkookie/nixpkgs/pkgs/games/freeciv/default.nix
new file mode 100644
index 000000000000..c8f9c7908428
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/freeciv/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, lua5_3, pkgconfig, python3
+, zlib, bzip2, curl, lzma, gettext, libiconv
+, sdlClient ? true, SDL, SDL_mixer, SDL_image, SDL_ttf, SDL_gfx, freetype, fluidsynth
+, gtkClient ? false, gtk3
+, qtClient ? false, qt5
+, server ? true, readline
+, enableSqlite ? true, sqlite
+}:
+
+let
+ inherit (stdenv.lib) optional optionals;
+
+in stdenv.mkDerivation rec {
+ pname = "freeciv";
+ version = "2.6.2.1";
+
+ src = fetchFromGitHub {
+ owner = "freeciv";
+ repo = "freeciv";
+ rev = "R${builtins.replaceStrings [ "." ] [ "_" ] version}";
+ sha256 = "1nra6b6sk2gciaw1fpwx7qa20hky8cwcdwlshcl1zsikg577hyg5";
+ };
+
+ postPatch = ''
+ for f in {common,utility}/*.py; do
+ substituteInPlace $f \
+ --replace '/usr/bin/env python3' ${python3.interpreter}
+ done
+ '';
+
+ nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+ buildInputs = [ lua5_3 zlib bzip2 curl lzma gettext libiconv ]
+ ++ optionals sdlClient [ SDL SDL_mixer SDL_image SDL_ttf SDL_gfx freetype fluidsynth ]
+ ++ optionals gtkClient [ gtk3 ]
+ ++ optionals qtClient [ qt5.qtbase ]
+ ++ optional server readline
+ ++ optional enableSqlite sqlite;
+
+ configureFlags = [ "--enable-shared" ]
+ ++ optional sdlClient "--enable-client=sdl"
+ ++ optionals qtClient [
+ "--enable-client=qt"
+ "--with-qt5-includes=${qt5.qtbase.dev}/include"
+ ]
+ ++ optional enableSqlite "--enable-fcdb=sqlite3"
+ ++ optional (!gtkClient) "--enable-fcmp=cli"
+ ++ optional (!server) "--disable-server";
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Multiplayer (or single player), turn-based strategy game";
+
+ longDescription = ''
+ Freeciv is a Free and Open Source empire-building strategy game
+ inspired by the history of human civilization. The game commences in
+ prehistory and your mission is to lead your tribe from the stone age
+ to the space age...
+ '';
+
+ homepage = "http://www.freeciv.org"; # http only
+ license = licenses.gpl2;
+
+ maintainers = with maintainers; [ pierron ];
+ platforms = platforms.unix;
+ hydraPlatforms = platforms.linux; # sdl-config times out on darwin
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/freedink/default.nix b/infra/libkookie/nixpkgs/pkgs/games/freedink/default.nix
new file mode 100644
index 000000000000..735a49bee622
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/freedink/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl, SDL, SDL_mixer, SDL_image, SDL_ttf, SDL_gfx
+, pkgconfig, intltool, fontconfig, libzip, zip, zlib }:
+
+let
+ version = "1.08.20121209";
+
+ freedink_data = stdenv.mkDerivation rec {
+ pname = "freedink-data";
+ inherit version;
+
+ src = fetchurl {
+ url = "mirror://gnu/freedink/${pname}-${version}.tar.gz";
+ sha256 = "1mhns09l1s898x18ahbcy9gabrmgsr8dv7pm0a2ivid8mhxahn1j";
+ };
+
+ prePatch = "substituteInPlace Makefile --replace /usr/local $out";
+ };
+
+in stdenv.mkDerivation rec {
+ pname = "freedink";
+ inherit version;
+
+ src = fetchurl {
+ url = "mirror://gnu/freedink/${pname}-${version}.tar.gz";
+ sha256 = "19xximbcm6506kvpf3s0q96697kmzca3yrjdr6dgphklp33zqsqr";
+ };
+
+ buildInputs = [
+ SDL SDL_mixer SDL_image SDL_ttf SDL_gfx
+ pkgconfig intltool fontconfig libzip zip zlib
+ ];
+
+ preConfigure = ''
+ # Build fails on Linux with windres.
+ export ac_cv_prog_ac_ct_WINDRES=
+ '';
+
+ postInstall = ''
+ mkdir -p "$out/share/"
+ ln -s ${freedink_data}/share/dink "$out/share/"
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = {
+ description = "A free, portable and enhanced version of the Dink Smallwood game engine";
+
+ longDescription = ''
+ GNU FreeDink is a new and portable version of the Dink Smallwood
+ game engine, which runs the original game as well as its D-Mods,
+ with close compatibility, under multiple platforms.
+ '';
+
+ homepage = "http://www.freedink.org/";
+ license = stdenv.lib.licenses.gpl3Plus;
+
+ maintainers = [ stdenv.lib.maintainers.bjg ];
+ platforms = stdenv.lib.platforms.all;
+ hydraPlatforms = stdenv.lib.platforms.linux; # sdl-config times out on darwin
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/freedroidrpg/default.nix b/infra/libkookie/nixpkgs/pkgs/games/freedroidrpg/default.nix
new file mode 100644
index 000000000000..443d60b9d672
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/freedroidrpg/default.nix
@@ -0,0 +1,64 @@
+{ fetchurl, stdenv, pkgconfig, gettext, python3, SDL, SDL_image, SDL_gfx, SDL_mixer, libogg, libvorbis, lua5_3, libjpeg, libpng, zlib, libiconv }:
+
+let
+ version = "0.16.1";
+in stdenv.mkDerivation {
+ pname = "freedroidrpg";
+ inherit version;
+
+ src = fetchurl {
+ url = "ftp://ftp.osuosl.org/pub/freedroid/freedroidRPG-${stdenv.lib.versions.majorMinor version}/freedroidRPG-${version}.tar.gz";
+ sha256 = "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2";
+ };
+
+ nativeBuildInputs = [ pkgconfig gettext python3 ];
+
+ buildInputs = [
+ SDL SDL_image SDL_gfx SDL_mixer libogg libvorbis lua5_3 libjpeg libpng zlib
+ ] ++ stdenv.lib.optional stdenv.isDarwin libiconv;
+
+ meta = with stdenv.lib; {
+ description = "Isometric 3D RPG similar to game Diablo";
+
+ longDescription = ''
+ <para>
+ FreedroidRPG is an original isometric 3D role playing game
+ taking place in the future, on Earth. It features action and
+ dialogs.
+ </para>
+ <para>
+ The game tells the story of a world destroyed by a conflict between
+ robots and their human masters. Play as Tux in a quest to save the
+ world from the murderous rebel bots who know no mercy. You get to
+ choose which path you wish to follow, and freedom of choice is
+ everywhere in the game.
+ </para>
+ <para>
+ FreedroidRPG features a real time combat system with melee and
+ ranged weapons, fairly similar to the proprietary game Diablo.
+ There is an innovative system of programs that can be run in order
+ to take control of enemy robots, alter their behavior, or improve one's
+ characteristics. You can use over 50 different kinds of items and
+ fight countless enemies on your way to your destiny. An advanced
+ dialog system provides story background and immersive role
+ playing situations.
+ </para>
+ <para>
+ The game is complete, fully playable, and can provide about
+ 12 hours of fun. It is still being actively developed, and
+ help is welcome in many areas. People having - or trying to acquire -
+ programming, map editing, or writing skills will find FreedroidRPG
+ to be an exciting, fast-moving project in which they can fully
+ express their creativity.
+ </para>
+ '';
+
+ homepage = "http://www.freedroid.org/";
+
+ license = licenses.gpl2Plus;
+
+ maintainers = with maintainers; [ jtojnar ];
+ platforms = platforms.unix;
+ hydraPlatforms = platforms.linux; # sdl-config times out on darwin
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/freeorion/default.nix b/infra/libkookie/nixpkgs/pkgs/games/freeorion/default.nix
new file mode 100644
index 000000000000..27be32071c18
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/freeorion/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub, cmake, doxygen, graphviz, makeWrapper
+, boost168, SDL2, python2, freetype, openal, libogg, libvorbis, zlib, libpng, libtiff
+, libjpeg, libGLU, libGL, glew, libxslt
+}:
+
+stdenv.mkDerivation rec {
+ version = "0.4.9";
+ pname = "freeorion";
+
+ src = fetchFromGitHub {
+ owner = "freeorion";
+ repo = "freeorion";
+ rev = "v${version}";
+ sha256 = "18xigx4qla225ybf7mc1w8zfm81nhcm1i5181n5l2fbndvslb1wf";
+ };
+
+ buildInputs = [
+ (boost168.override { enablePython = true; })
+ SDL2 python2 freetype openal libogg libvorbis zlib libpng libtiff libjpeg libGLU libGL glew ];
+
+ nativeBuildInputs = [ cmake doxygen graphviz makeWrapper ];
+
+ enableParallelBuilding = true;
+
+ patches = [
+ ];
+
+ postInstall = ''
+ mkdir -p $out/fixpaths
+ # We need final slashes for XSLT replace to work properly
+ substitute ${./fix-paths.xslt} $out/fixpaths/fix-paths.xslt \
+ --subst-var-by nixStore "$NIX_STORE/" \
+ --subst-var-by out "$out/"
+ substitute ${./fix-paths.sh} $out/fixpaths/fix-paths \
+ --subst-var-by libxsltBin ${libxslt.bin} \
+ --subst-var-by shell ${stdenv.shell} \
+ --subst-var out
+ chmod +x $out/fixpaths/fix-paths
+
+ wrapProgram $out/bin/freeorion \
+ --run $out/fixpaths/fix-paths \
+ --prefix LD_LIBRARY_PATH : $out/lib/freeorion
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A free, open source, turn-based space empire and galactic conquest (4X) computer game";
+ homepage = "http://www.freeorion.org";
+ license = with licenses; [ gpl2 cc-by-sa-30 ];
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ tex ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/freeorion/fix-paths.sh b/infra/libkookie/nixpkgs/pkgs/games/freeorion/fix-paths.sh
new file mode 100644
index 000000000000..3f82533dd60d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/freeorion/fix-paths.sh
@@ -0,0 +1,6 @@
+#!@shell@
+
+if [ -e ~/.config/freeorion/config.xml ]; then
+ @libxsltBin@/bin/xsltproc -o ~/.config/freeorion/config.xml @out@/fixpaths/fix-paths.xslt ~/.config/freeorion/config.xml
+fi
+exit 0
diff --git a/infra/libkookie/nixpkgs/pkgs/games/freeorion/fix-paths.xslt b/infra/libkookie/nixpkgs/pkgs/games/freeorion/fix-paths.xslt
new file mode 100644
index 000000000000..f0db646b81ad
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/freeorion/fix-paths.xslt
@@ -0,0 +1,13 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="xml" omit-xml-declaration="no" indent="yes" />
+
+ <xsl:template match='node() | @*'>
+ <xsl:copy>
+ <xsl:apply-templates select='node() | @*'/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match='//text()[starts-with(., "@nixStore@")]'>
+ <xsl:value-of select='concat("@out@", substring-after(substring-after(., "@nixStore@"), "/"))'/>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/infra/libkookie/nixpkgs/pkgs/games/freesweep/default.nix b/infra/libkookie/nixpkgs/pkgs/games/freesweep/default.nix
new file mode 100644
index 000000000000..fdaaadbe42f0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/freesweep/default.nix
@@ -0,0 +1,37 @@
+{ fetchFromGitHub, ncurses, stdenv,
+ updateAutotoolsGnuConfigScriptsHook }:
+
+stdenv.mkDerivation rec {
+ pname = "freesweep";
+ version = "1.0.1";
+
+ src = fetchFromGitHub {
+ owner = "rwestlund";
+ repo = "freesweep";
+ rev = "v${version}";
+ sha256 = "0grkwmz9whg1vlnk6gbr0vv9i2zgbd036182pk0xj4cavaj9rpjb";
+ };
+
+ nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook ];
+ buildInputs = [ ncurses ];
+
+ preConfigure = ''
+ configureFlags="$configureFlags --with-prefsdir=$out/share"
+ '';
+
+ installPhase = ''
+ runHook preInstall
+ install -D -m 0555 freesweep $out/bin/freesweep
+ install -D -m 0444 sweeprc $out/share/sweeprc
+ install -D -m 0444 freesweep.6 $out/share/man/man6/freesweep.6
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A console minesweeper-style game written in C for Unix-like systems";
+ homepage = "https://github.com/rwestlund/freesweep";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ kierdavis ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/frogatto/data.nix b/infra/libkookie/nixpkgs/pkgs/games/frogatto/data.nix
new file mode 100644
index 000000000000..ab5bbe2dd9fb
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/frogatto/data.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+ pname = "frogatto-data";
+ version = "unstable-2018-12-18";
+
+ src = fetchFromGitHub {
+ owner = "frogatto";
+ repo = "frogatto";
+ # master branch as of 2018-12-18
+ rev = "8f261b5d3fca3c88e6a534316a28378cf687d3e5";
+ sha256 = "0nyfwfyy5gxp61ydna299nq9p5wra9mk0bf1drdngg6bwws1hrqx";
+ };
+
+ installPhase = ''
+ mkdir -p $out/share/frogatto/modules
+ cp -ar . $out/share/frogatto/modules/frogatto
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/frogatto/frogatto";
+ description = "Data files to the frogatto game";
+ license = with licenses; [ cc-by-30 unfree ];
+ maintainers = with maintainers; [ astro ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/frogatto/default.nix b/infra/libkookie/nixpkgs/pkgs/games/frogatto/default.nix
new file mode 100644
index 000000000000..f6d4789c30b1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/frogatto/default.nix
@@ -0,0 +1,44 @@
+{ buildEnv, stdenv, callPackage, makeWrapper, makeDesktopItem }:
+
+let
+ description = "Action-adventure game, starring a certain quixotic frog";
+ engine = callPackage ./engine.nix { };
+ data = callPackage ./data.nix { };
+ desktopItem = makeDesktopItem {
+ name = "frogatto";
+ exec = "frogatto";
+ startupNotify = "true";
+ icon = "${data}/share/frogatto/modules/frogatto/images/os/frogatto-icon.png";
+ comment = description;
+ desktopName = "Frogatto";
+ genericName = "frogatto";
+ categories = "Game;ArcadeGame;";
+ };
+ version = "unstable-2018-12-18";
+in buildEnv {
+ name = "frogatto-${version}";
+
+ buildInputs = [ makeWrapper ];
+ paths = [ engine data desktopItem ];
+ pathsToLink = [
+ "/bin"
+ "/share/frogatto/data"
+ "/share/frogatto/images"
+ "/share/frogatto/modules"
+ "/share/applications"
+ ];
+
+ postBuild = ''
+ wrapProgram $out/bin/frogatto \
+ --run "cd $out/share/frogatto"
+ '';
+
+ meta = with stdenv.lib; {
+ broken = true;
+ homepage = "https://frogatto.com";
+ description = description;
+ license = with licenses; [ cc-by-30 unfree ];
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ astro ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/frogatto/engine.nix b/infra/libkookie/nixpkgs/pkgs/games/frogatto/engine.nix
new file mode 100644
index 000000000000..d51cfcb8f205
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/frogatto/engine.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, which
+, boost, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf
+, glew, zlib, icu, pkgconfig, cairo, libvpx }:
+
+stdenv.mkDerivation {
+ pname = "anura-engine";
+ version = "unstable-2018-11-28";
+
+ src = fetchFromGitHub {
+ owner = "anura-engine";
+ repo = "anura";
+ # trunk branch as of 2018-11-28
+ rev = "8070111467802dc772c0a6c7806ecd16b0bcdaa9";
+ sha256 = "0xbqwfmws69n7iiz17n93h4jiw39cwyf7hxw0qi2c8cccr37b1nr";
+ fetchSubmodules = true;
+ };
+
+ nativeBuildInputs = [
+ which pkgconfig
+ ];
+
+ buildInputs = [
+ boost
+ SDL2
+ SDL2_image
+ SDL2_mixer
+ SDL2_ttf
+ glew
+ zlib
+ icu
+ cairo
+ libvpx
+ ];
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/frogatto
+ cp -ar data images modules $out/share/frogatto/
+ cp -a anura $out/bin/frogatto
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/anura-engine/anura";
+ description = "Game engine used by Frogatto";
+ license = licenses.zlib;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ astro ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/frotz/default.nix b/infra/libkookie/nixpkgs/pkgs/games/frotz/default.nix
new file mode 100644
index 000000000000..6ff163105da8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/frotz/default.nix
@@ -0,0 +1,40 @@
+{ fetchFromGitLab
+, libao
+, libmodplug
+, libsamplerate
+, libsndfile
+, libvorbis
+, ncurses
+, stdenv }:
+
+stdenv.mkDerivation rec {
+ version = "2.52";
+ pname = "frotz";
+
+ src = fetchFromGitLab {
+ domain = "gitlab.com";
+ owner = "DavidGriffith";
+ repo = "frotz";
+ rev = version;
+ sha256 = "11ca1dz31b7s5vxjqncwjwmbbcr2m5v2rxjn49g4gnvwd6mqw48y";
+ };
+
+ buildInputs = [ libao libmodplug libsamplerate libsndfile libvorbis ncurses ];
+ preBuild = ''
+ makeFlagsArray+=(
+ CC="cc"
+ CFLAGS="-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600"
+ LDFLAGS="-lncursesw -ltinfo"
+ )
+ '';
+ installFlags = [ "PREFIX=$(out)" ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://davidgriffith.gitlab.io/frotz/";
+ changelog = "https://gitlab.com/DavidGriffith/frotz/-/raw/${version}/NEWS";
+ description = "A z-machine interpreter for Infocom games and other interactive fiction";
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ nicknovitski ddelabru ];
+ license = licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/frozen-bubble/default.nix b/infra/libkookie/nixpkgs/pkgs/games/frozen-bubble/default.nix
new file mode 100644
index 000000000000..3b562ee44f2e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/frozen-bubble/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, perlPackages, pkgconfig, SDL, SDL_mixer, SDL_Pango, glib }:
+
+perlPackages.buildPerlModule {
+ pname = "frozen-bubble";
+ version = "2.212";
+
+ src = fetchurl {
+ url = "mirror://cpan/authors/id/K/KT/KTHAKORE/Games-FrozenBubble-2.212.tar.gz";
+ sha256 = "721e04ff69c5233060656bfbf4002aa1aeadd96c95351f0c57bb85b6da35a305";
+ };
+ patches = [ ./fix-compilation.patch ];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ buildInputs = [ glib SDL SDL_mixer SDL_Pango perlPackages.SDL perlPackages.FileSlurp ];
+ propagatedBuildInputs = with perlPackages; [ AlienSDL CompressBzip2 FileShareDir FileWhich IPCSystemSimple LocaleMaketextLexicon ];
+
+ perlPreHook = "export LD=$CC";
+
+ meta = {
+ description = "Puzzle with Bubbles";
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = with stdenv.lib.maintainers; [ puckipedia ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/frozen-bubble/fix-compilation.patch b/infra/libkookie/nixpkgs/pkgs/games/frozen-bubble/fix-compilation.patch
new file mode 100644
index 000000000000..e87dd0668dc2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/frozen-bubble/fix-compilation.patch
@@ -0,0 +1,33 @@
+diff --git a/Build.PL b/Build.PL
+index b029d1e..8737395 100644
+--- a/Build.PL
++++ b/Build.PL
+@@ -16,13 +16,14 @@ use Games::FrozenBubble;
+ my $prefix = Alien::SDL->config('prefix');
+ my $cflags = '-I'
+ . File::Spec->catfile( $prefix, 'include' )
++ . ' ' . `pkg-config --cflags SDL_mixer`
+ ;
+ $cflags .= ' -fnested-functions' if $^O =~ /darwin/;
+ ###!!! this looks strange, you perhaps meant "$cflags .= ..."
+ ###!!! I intended Alien::SDL to add -I$prefix/include automatically, please tell me when it does not work (kmx)
+ my $devnull = File::Spec->devnull();
+ my @cflags = ExtUtils::CBuilder->new->split_like_shell( $cflags );
+-my @linkers = ( ExtUtils::CBuilder->new->split_like_shell( Alien::SDL->config('libs', '-lSDL_mixer', '-lSDL_Pango') ) );
++my @linkers = ( ExtUtils::CBuilder->new->split_like_shell( Alien::SDL->config('libs', '-lSDL_Pango',`pkg-config --libs SDL_mixer`) ) );
+ push @linkers, '-liconv'
+ if $^O =~ /win/i; ###!!! really only Win needs this? ; BEWARE this matches also 'darwin', 'cygwin'!!!!
+
+diff --git a/inc/My/Builder.pm b/inc/My/Builder.pm
+index 2ebaf91..c420b9a 100644
+--- a/inc/My/Builder.pm
++++ b/inc/My/Builder.pm
+@@ -123,7 +123,7 @@ sub ACTION_server {
+ push @ofiles, $cbuilder->compile(
+ source => catfile($server_directory, $cfile),
+ extra_compiler_flags => [
+- qw(-g -Wall -Werror -pipe), # verbatim from Makefile
++ qw(-g -pipe), # verbatim from Makefile
+ '-I' . $server_directory, # does not seem to be necessary
+ $cbuilder->split_like_shell(`pkg-config glib-2.0 --cflags`),
+ $cbuilder->split_like_shell(`pkg-config glib-2.0 --libs`),
diff --git a/infra/libkookie/nixpkgs/pkgs/games/fsg/default.nix b/infra/libkookie/nixpkgs/pkgs/games/fsg/default.nix
new file mode 100644
index 000000000000..b8a0d5ff3c76
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/fsg/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, gtk2, glib, pkgconfig, libGLU, libGL, wxGTK, libX11, xorgproto
+, runtimeShell }:
+
+stdenv.mkDerivation {
+ name = "fsg-4.4";
+
+ src = fetchurl {
+ name = "fsg-src-4.4.tar.gz";
+ url = "https://github.com/ctrlcctrlv/wxsand/blob/master/fsg-src-4.4-ORIGINAL.tar.gz?raw=true";
+ sha256 = "1756y01rkvd3f1pkj88jqh83fqcfl2fy0c48mcq53pjzln9ycv8c";
+ };
+
+ hardeningDisable = [ "format" ];
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ gtk2 glib libGLU libGL wxGTK libX11 xorgproto ];
+
+ preBuild = ''
+ sed -e '
+ s@currentProbIndex != 100@0@;
+ ' -i MainFrame.cpp
+ sed -re '/ctrans_prob/s/energy\[center][+]energy\[other]/(int)(fmin(energy[center]+energy[other],99))/g' -i Canvas.cpp
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin $out/libexec
+ cp sand $out/libexec
+ echo -e '#!${runtimeShell}\nLC_ALL=C '$out'/libexec/sand "$@"' >$out/bin/fsg
+ chmod a+x $out/bin/fsg
+ '';
+
+ meta = {
+ description = "Cellular automata engine tuned towards the likes of Falling Sand";
+ maintainers = [stdenv.lib.maintainers.raskin];
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/galaxis/default.nix b/infra/libkookie/nixpkgs/pkgs/games/galaxis/default.nix
new file mode 100644
index 000000000000..19df8db78a0a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/galaxis/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, ncurses, xmlto }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+ pname = "galaxis";
+ version = "1.10";
+
+ src = fetchurl{
+ url = "http://www.catb.org/~esr/galaxis/${pname}-${version}.tar.gz";
+ sha256 = "1181x3z4r0794v2bkpigb5fablw1nayj42wvhy2am79p7j1iqq5r";
+ };
+
+ buildInputs = [ ncurses xmlto ];
+
+ patchPhase = ''
+ sed -i\
+ -e 's|^install: galaxis\.6 uninstall|install: galaxis.6|'\
+ -e 's|usr/||g' -e 's|ROOT|DESTDIR|g'\
+ -e 's|install -m 755 -o 0 -g 0|install -m 755|' Makefile
+ '';
+
+ dontConfigure = true;
+
+ makeFlags = [ "DESTDIR=$(out)" ];
+
+ meta = {
+ description = "Rescue lifeboats lost in interstellar space";
+ longDescription = ''
+ Lifeboats from a crippled interstellar liner are adrift in a starfield. To
+ find them, you can place probes that look in all eight compass directions
+ and tell you how many lifeboats they see. If you drop a probe directly on
+ a lifeboat it will be revealed immediately. Your objective: find the
+ lifeboats as quickly as possible, before the stranded passengers run out
+ of oxygen!
+
+ This is a UNIX-hosted, curses-based clone of the nifty little Macintosh
+ freeware game Galaxis. It doesn't have the super-simple, point-and-click
+ interface of the original, but compensates by automating away some of the
+ game's simpler deductions.
+ '';
+ homepage = "http://catb.org/~esr/galaxis/";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.AndersonTorres ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gambatte/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gambatte/default.nix
new file mode 100644
index 000000000000..b2a2f0a3f92d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gambatte/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, scons, qt4, alsaLib }:
+
+stdenv.mkDerivation {
+ pname = "gambatte";
+ version = "2020-03-14";
+
+ src = fetchFromGitHub {
+ owner = "sinamas";
+ repo = "gambatte";
+ rev = "56e3371151b5ee86dcdcf4868324ebc6de220bc9";
+ sha256 = "0cc6zcvxpvi5hgcssb1zy0fkj9nk7n0d2xm88a4v05kpm5zw7sh2";
+ };
+
+ buildInputs = [ scons qt4 alsaLib ];
+
+ patches = [ ./fix-scons-paths.patch ];
+
+ buildPhase = ''
+ ./build_qt.sh
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp gambatte_qt/bin/gambatte_qt $out/bin/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Portable, open-source Game Boy Color emulator";
+ homepage = "https://github.com/sinamas/gambatte";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.dezgeg ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gambatte/fix-scons-paths.patch b/infra/libkookie/nixpkgs/pkgs/games/gambatte/fix-scons-paths.patch
new file mode 100644
index 000000000000..ea10ee4163b4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gambatte/fix-scons-paths.patch
@@ -0,0 +1,15 @@
+diff --git a/libgambatte/SConstruct b/libgambatte/SConstruct
+index e882514..87e1eaa 100644
+--- a/libgambatte/SConstruct
++++ b/libgambatte/SConstruct
+@@ -5,7 +5,9 @@ vars = Variables()
+ vars.Add('CC')
+ vars.Add('CXX')
+
+-env = Environment(CPPPATH = ['src', 'include', '../common'],
++import os
++env = Environment(ENV = os.environ,
++ CPPPATH = ['src', 'include', '../common'],
+ CFLAGS = global_cflags + global_defines,
+ CXXFLAGS = global_cxxflags + global_defines,
+ variables = vars)
diff --git a/infra/libkookie/nixpkgs/pkgs/games/garden-of-coloured-lights/default.nix b/infra/libkookie/nixpkgs/pkgs/games/garden-of-coloured-lights/default.nix
new file mode 100644
index 000000000000..fde573cecd85
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/garden-of-coloured-lights/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, autoconf, automake, allegro }:
+
+stdenv.mkDerivation rec {
+ pname = "garden-of-coloured-lights";
+ version = "1.0.9";
+
+ buildInputs = [ allegro autoconf automake ];
+
+ prePatch = ''
+ noInline='s/inline //'
+ sed -e "$noInline" -i src/stuff.c
+ sed -e "$noInline" -i src/stuff.h
+ '';
+
+ src = fetchurl {
+ url = "mirror://sourceforge/garden/${version}/garden-${version}.tar.gz";
+ sha256 = "1qsj4d7r22m5f9f5f6cyvam1y5q5pbqvy5058r7w0k4s48n77y6s";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Old-school vertical shoot-em-up / bullet hell";
+ homepage = "http://garden.sourceforge.net/drupal/";
+ maintainers = with maintainers; [ Profpatsch ];
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gargoyle/darwin.sh b/infra/libkookie/nixpkgs/pkgs/games/gargoyle/darwin.sh
new file mode 100644
index 000000000000..ed0daec4ef1f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gargoyle/darwin.sh
@@ -0,0 +1,54 @@
+#!@shell@
+
+set -e
+
+GARGDIST=build/macosx.release
+BUNDLE=${out}/Applications/Gargoyle.app/Contents
+TERPS="
+advsys/advsys
+agility/agility
+alan2/alan2
+alan3/alan3
+bocfel/bocfel
+frotz/frotz
+garglk/gargoyle
+geas/geas
+git/git
+glulxe/glulxe
+hugo/hugo
+jacl/jacl
+level9/level9
+magnetic/magnetic
+nitfol/nitfol
+scare/scare
+scott/scott
+tads/tadsr
+"
+
+mkdir -p $BUNDLE/MacOS
+mkdir -p $BUNDLE/Frameworks
+mkdir -p $BUNDLE/Resources
+mkdir -p $BUNDLE/PlugIns
+
+install_name_tool -id @executable_path/../Frameworks/libgarglk.dylib $GARGDIST/garglk/libgarglk.dylib
+for file in $TERPS
+do
+install_name_tool -change @executable_path/libgarglk.dylib @executable_path/../Frameworks/libgarglk.dylib $GARGDIST/$file || true
+cp -f $GARGDIST/$file $BUNDLE/PlugIns
+done
+
+cp -f garglk/launcher.plist $BUNDLE/Info.plist
+cp -f $GARGDIST/garglk/gargoyle $BUNDLE/MacOS/Gargoyle
+cp -f $GARGDIST/garglk/libgarglk.dylib $BUNDLE/Frameworks
+cp -f $GARGDIST/garglk/libgarglk.dylib $BUNDLE/PlugIns
+cp -f garglk/launchmac.nib $BUNDLE/Resources/MainMenu.nib
+cp -f garglk/garglk.ini $BUNDLE/Resources
+cp -f garglk/*.icns $BUNDLE/Resources
+cp -f licenses/* $BUNDLE/Resources
+
+mkdir $BUNDLE/Resources/Fonts
+cp fonts/LiberationMono*.ttf $BUNDLE/Resources/Fonts
+cp fonts/LinLibertine*.otf $BUNDLE/Resources/Fonts
+
+mkdir -p ${out}/bin
+ln -s $BUNDLE/MacOS/Gargoyle ${out}/bin/gargoyle
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gargoyle/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gargoyle/default.nix
new file mode 100644
index 000000000000..c4c512be2b89
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gargoyle/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitHub, substituteAll, jam, cctools, pkgconfig
+, SDL, SDL_mixer, SDL_sound, gtk2, libvorbis, smpeg }:
+
+let
+
+ jamenv = ''
+ unset AR
+ '' + (if stdenv.isDarwin then ''
+ export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${SDL.dev}/include/SDL"
+ export GARGLKINI="$out/Applications/Gargoyle.app/Contents/Resources/garglk.ini"
+ '' else ''
+ export NIX_LDFLAGS="$NIX_LDFLAGS -rpath $out/libexec/gargoyle"
+ export DESTDIR="$out"
+ export _BINDIR=libexec/gargoyle
+ export _APPDIR=libexec/gargoyle
+ export _LIBDIR=libexec/gargoyle
+ export GARGLKINI="$out/etc/garglk.ini"
+ '');
+
+in
+
+stdenv.mkDerivation rec {
+ pname = "gargoyle";
+ version = "2019.1.1";
+
+ src = fetchFromGitHub {
+ owner = "garglk";
+ repo = "garglk";
+ rev = version;
+ sha256 = "0w54avmbp4i4zps2rb4acmpa641s6wvwbrln4vbdhcz97fx48nzz";
+ };
+
+ nativeBuildInputs = [ jam pkgconfig ] ++ stdenv.lib.optional stdenv.isDarwin cctools;
+
+ buildInputs = [ SDL SDL_mixer SDL_sound gtk2 ]
+ ++ stdenv.lib.optionals stdenv.isDarwin [ smpeg libvorbis ];
+
+ buildPhase = jamenv + "jam -j$NIX_BUILD_CORES";
+
+ installPhase =
+ if stdenv.isDarwin then
+ (substituteAll {
+ inherit (stdenv) shell;
+ isExecutable = true;
+ src = ./darwin.sh;
+ })
+ else jamenv + ''
+ jam -j$NIX_BUILD_CORES install
+ mkdir -p "$out/bin"
+ ln -s ../libexec/gargoyle/gargoyle "$out/bin"
+ mkdir -p "$out/etc"
+ cp garglk/garglk.ini "$out/etc"
+ mkdir -p "$out/share/applications"
+ cp garglk/gargoyle.desktop "$out/share/applications"
+ mkdir -p "$out/share/icons/hicolor/32x32/apps"
+ cp garglk/gargoyle-house.png "$out/share/icons/hicolor/32x32/apps"
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ homepage = "http://ccxvii.net/gargoyle/";
+ license = licenses.gpl2Plus;
+ description = "Interactive fiction interpreter GUI";
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ orivej ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gav/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gav/default.nix
new file mode 100644
index 000000000000..e42afefb8308
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gav/default.nix
@@ -0,0 +1,26 @@
+{stdenv, fetchurl, SDL, SDL_image, SDL_mixer, SDL_net} :
+
+stdenv.mkDerivation {
+ name = "gav-0.9.0";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/gav/gav-0.9.0.tar.gz";
+ sha256 = "8f0deb8b2cd775b339229054f4f282583a4cfbcba9d27a6213cf910bab944f3e";
+ };
+
+ prePatch = ''
+ mkdir -p $out/bin
+ sed -e "s@/usr@$out@" -i Makefile
+ sed -e "s@/usr@$out@" -i Theme.h
+ '';
+
+ patches = [ ./gcc.patch ];
+ buildInputs = [SDL SDL_image SDL_mixer SDL_net];
+
+ meta = {
+ description = "Remake of AV Arcade Volleyball";
+ homepage = "http://gav.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gav/gcc.patch b/infra/libkookie/nixpkgs/pkgs/games/gav/gcc.patch
new file mode 100644
index 000000000000..eb4c64727bce
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gav/gcc.patch
@@ -0,0 +1,12 @@
+diff --git a/aarg.h b/aarg.h
+index a212870..907671c 100644
+--- a/aarg.h
++++ b/aarg.h
+@@ -5,6 +5,7 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <unistd.h>
++#include <string.h>
+ #include <map>
+ #include <string>
+ #include <sstream>
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gcompris/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gcompris/default.nix
new file mode 100644
index 000000000000..e4bc00793eb0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gcompris/default.nix
@@ -0,0 +1,55 @@
+{ mkDerivation
+, cmake
+, fetchurl
+, gettext
+, gst_all_1
+, lib
+, ninja
+, qmlbox2d
+, qtbase
+, qtdeclarative
+, qtgraphicaleffects
+, qtmultimedia
+, qtquickcontrols
+, qtsensors
+, qttools
+, qtxmlpatterns
+}:
+
+mkDerivation rec {
+ pname = "gcompris";
+ version = "1.0";
+
+ src = fetchurl {
+ url = "http://gcompris.net/download/qt/src/gcompris-qt-${version}.tar.xz";
+ sha256 = "08dw1q0h4qz2q0ksa5pbmb9v60hr1zv9skx6z8dlq9b1i7harnds";
+ };
+
+ cmakeFlags = [
+ "-DQML_BOX2D_LIBRARY=${qmlbox2d}/${qtbase.qtQmlPrefix}/Box2D.2.0"
+ ];
+
+ nativeBuildInputs = [ cmake gettext ninja qttools ];
+
+ buildInputs = [
+ qmlbox2d qtbase qtdeclarative qtgraphicaleffects qtmultimedia qtquickcontrols qtsensors qtxmlpatterns
+ ] ++ (with gst_all_1; [
+ gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad
+ ]);
+
+ postInstall = ''
+ install -Dm444 ../org.kde.gcompris.desktop $out/share/applications/gcompris.desktop
+ install -Dm444 ../images/256-apps-gcompris-qt.png $out/share/icons/hicolor/256x256/apps/gcompris-qt.png
+ install -Dm444 ../org.kde.gcompris.appdata.xml -t $out/share/metainfo
+
+ qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+ '';
+
+ meta = with lib; {
+ description = "A high quality educational software suite, including a large number of activities for children aged 2 to 10";
+ homepage = "https://gcompris.net/";
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ guibou ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gcs/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gcs/default.nix
new file mode 100644
index 000000000000..9c0b479304a6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gcs/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, fetchFromGitHub, runCommand
+, jdk8, ant
+, jre8, makeWrapper
+}:
+
+let
+ gcs = fetchFromGitHub {
+ owner = "richardwilkes";
+ repo = "gcs";
+ rev = "gcs-4.8.0";
+ sha256 = "0k8am8vfwls5s2z4zj1p1aqy8gapn5vbr9zy66s5g048ch8ah1hm";
+ };
+ appleStubs = fetchFromGitHub {
+ owner = "richardwilkes";
+ repo = "apple_stubs";
+ rev = "gcs-4.3.0";
+ sha256 = "0m1qw30b19s04hj7nch1mbvv5s698g5dr1d1r7r07ykvk1yh7zsa";
+ };
+ toolkit = fetchFromGitHub {
+ owner = "richardwilkes";
+ repo = "toolkit";
+ rev = "gcs-4.8.0";
+ sha256 = "1ciwwh0wxk3pzsj6rbggsbg3l2f741qy7yx1ca4v7vflsma84f1n";
+ };
+ library = fetchFromGitHub {
+ owner = "richardwilkes";
+ repo = "gcs_library";
+ rev = "gcs-4.8.0";
+ sha256 = "085jpp9mpv5kw00zds9sywmfq31mrlbrgahnwcjkx0z9i22amz4g";
+ };
+in stdenv.mkDerivation rec {
+ pname = "gcs";
+ version = "4.8.0";
+
+ src = runCommand "${pname}-${version}-src" { preferLocalBuild = true; } ''
+ mkdir -p $out
+ cd $out
+
+ cp -r ${gcs} gcs
+ cp -r ${appleStubs} apple_stubs
+ cp -r ${toolkit} toolkit
+ cp -r ${library} gcs_library
+ '';
+
+ buildInputs = [ jdk8 jre8 ant makeWrapper ];
+ buildPhase = ''
+ cd apple_stubs
+ ant
+
+ cd ../toolkit
+ ant
+
+ cd ../gcs
+ ant
+
+ cd ..
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/java
+
+ find gcs/libraries toolkit/libraries apple_stubs/ \( -name '*.jar' -and -not -name '*-src.jar' \) -exec cp '{}' $out/share/java ';'
+
+ makeWrapper ${jre8}/bin/java $out/bin/gcs \
+ --set GCS_LIBRARY ${library} \
+ --add-flags "-cp $out/share/java/gcs-${version}.jar com.trollworks.gcs.app.GCS"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A stand-alone, interactive, character sheet editor for the GURPS 4th Edition roleplaying game system";
+ homepage = "https://gurpscharactersheet.com/";
+ license = licenses.mpl20;
+ platforms = platforms.all;
+ maintainers = with maintainers; [];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gemrb/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gemrb/default.nix
new file mode 100644
index 000000000000..5fa58c7c3565
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gemrb/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, cmake
+, freetype, SDL2, SDL2_mixer, openal, zlib, libpng, python, libvorbis
+, libiconv }:
+
+stdenv.mkDerivation rec {
+ pname = "gemrb";
+ version = "0.8.7";
+
+ src = fetchFromGitHub {
+ owner = "gemrb";
+ repo = "gemrb";
+ rev = "v${version}";
+ sha256 = "14j9mhrbi4gnrbv25nlsvcxzkylijzrnwbqqnrg7pr452lb3srpb";
+ };
+
+ # TODO: make libpng, libvorbis, sdl_mixer, freetype, vlc, glew (and other gl
+ # reqs) optional
+ buildInputs = [ freetype python openal SDL2 SDL2_mixer zlib libpng libvorbis libiconv ];
+
+ nativeBuildInputs = [ cmake ];
+
+ # TODO: add proper OpenGL support. We are currently (0.8.7) getting a shader
+ # error on execution when enabled.
+ cmakeFlags = [
+ "-DLAYOUT=opt"
+ # "-DOPENGL_BACKEND=GLES"
+ # "-DOpenGL_GL_PREFERENCE=GLVND"
+ ];
+
+ meta = with stdenv.lib; {
+ description = "A reimplementation of the Infinity Engine, used by games such as Baldur's Gate";
+ longDescription = ''
+ GemRB (Game engine made with pre-Rendered Background) is a portable
+ open-source implementation of Bioware's Infinity Engine. It was written to
+ support pseudo-3D role playing games based on the Dungeons & Dragons
+ ruleset (Baldur's Gate and Icewind Dale series, Planescape: Torment).
+ '';
+ homepage = "https://gemrb.org/";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ peterhoeg ];
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gl-117/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gl-117/default.nix
new file mode 100644
index 000000000000..f76f761189c1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gl-117/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl
+, libGLU, libGL, SDL, freeglut, SDL_mixer, autoconf, automake, libtool
+}:
+
+stdenv.mkDerivation rec {
+ pname = "gl-117";
+ version = "1.3.2";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/gl-117/gl-117/GL-117%20Source/${pname}-${version}.tar.bz2";
+ sha256 = "1yvg1rp1yijv0b45cz085b29x5x0g5fkm654xdv5qwh2l6803gb4";
+ };
+
+ buildInputs = [ libGLU libGL SDL freeglut SDL_mixer autoconf automake libtool ];
+
+ meta = with stdenv.lib; {
+ description = "An air combat simulator";
+ homepage = "https://sourceforge.net/projects/gl-117";
+ maintainers = with maintainers; [ raskin ];
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/globulation/default.nix b/infra/libkookie/nixpkgs/pkgs/games/globulation/default.nix
new file mode 100644
index 000000000000..e0e4b876f3ec
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/globulation/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl, libGLU, libGL, SDL, sconsPackages, SDL_ttf, SDL_image, zlib, SDL_net
+, speex, libvorbis, libogg, boost, fribidi, bsdiff
+, fetchpatch
+}:
+let
+ version = "0.9.4";
+ patchlevel = "4";
+ tutorial4patch = fetchurl {
+ url = "http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=34;filename=tutorial-part4.map.bspatch;att=1;bug=595448";
+ name = "globulation2-tutorial4-map-patch-debian.bspatch";
+ sha256 = "d3511ac0f822d512c42abd34b3122f2990862d3d0af6ce464ff372f5bd7f35e9";
+ };
+in
+stdenv.mkDerivation rec {
+ name = "glob2-${version}.${patchlevel}";
+
+ src = fetchurl {
+ url = "mirror://savannah/glob2/${version}/${name}.tar.gz";
+ sha256 = "1f0l2cqp2g3llhr9jl6jj15k0wb5q8n29vqj99xy4p5hqs78jk8g";
+ };
+
+ patches = [ ./header-order.patch ./public-buildproject.patch
+ (fetchpatch {
+ url = "https://bitbucket.org/giszmo/glob2/commits/c9dc715624318e4fea4abb24e04f0ebdd9cd8d2a/raw";
+ sha256 = "0017xg5agj3dy0hx71ijdcrxb72bjqv7x6aq7c9zxzyyw0mkxj0k";
+ })
+ ];
+
+ postPatch = ''
+ cp campaigns/tutorial-part4.map{,.orig}
+ bspatch campaigns/tutorial-part4.map{.orig,} ${tutorial4patch}
+ sed -i -e "s@env = Environment()@env = Environment( ENV = os.environ )@" SConstruct
+ '';
+
+ nativeBuildInputs = [ sconsPackages.scons_3_0_1 ];
+ buildInputs = [ libGLU libGL SDL SDL_ttf SDL_image zlib SDL_net speex libvorbis libogg boost fribidi bsdiff ];
+
+ postConfigure = ''
+ sconsFlags+=" BINDIR=$out/bin"
+ sconsFlags+=" INSTALLDIR=$out/share/globulation2"
+ sconsFlags+=" DATADIR=$out/share/globulation2/glob2"
+ '';
+
+ NIX_LDFLAGS = "-lboost_system";
+
+ meta = with stdenv.lib; {
+ description = "RTS without micromanagement";
+ maintainers = with maintainers; [ raskin ];
+ platforms = platforms.linux;
+ license = licenses.gpl3;
+ };
+ passthru.updateInfo.downloadPage = "http://globulation2.org/wiki/Download_and_Install";
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/globulation/header-order.patch b/infra/libkookie/nixpkgs/pkgs/games/globulation/header-order.patch
new file mode 100644
index 000000000000..6c8dd922c255
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/globulation/header-order.patch
@@ -0,0 +1,23 @@
+With gcc 4.4, compilation of libgag/src/TextStream.cpp fails with the error:
+'class GAGCore::StreamBackend' has no member named 'getc'. Reordering
+#include's solves the problem.
+
+Patch from Debian.
+
+Index: glob2-0.9.4.1/libgag/src/TextStream.cpp
+===================================================================
+--- glob2-0.9.4.1.orig/libgag/src/TextStream.cpp 2009-06-27 20:19:38.000000000 +0400
++++ glob2-0.9.4.1/libgag/src/TextStream.cpp 2009-06-27 20:20:22.000000000 +0400
+@@ -17,11 +17,11 @@
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+-#include <TextStream.h>
+ #include <assert.h>
+ #include <fstream>
+ #include <iostream>
+ #include <stack>
++#include <TextStream.h>
+ #ifdef WIN32
+ #define snprintf _snprintf
+ #define vsnprintf _vsnprintf
diff --git a/infra/libkookie/nixpkgs/pkgs/games/globulation/public-buildproject.patch b/infra/libkookie/nixpkgs/pkgs/games/globulation/public-buildproject.patch
new file mode 100644
index 000000000000..1eaedf08820d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/globulation/public-buildproject.patch
@@ -0,0 +1,21 @@
+diff -Nru glob2-0.9.4.4/src/Game.h glob2-0.9.4.4.new/src/Game.h
+--- glob2-0.9.4.4/src/Game.h 2009-08-29 16:39:06.000000000 -0400
++++ glob2-0.9.4.4.new/src/Game.h 2015-08-29 00:59:07.843398596 -0400
+@@ -148,7 +148,7 @@
+ TOP_TO_BOTTOM,
+ BOTTOM_TO_TOP
+ };
+-
++public:
+ struct BuildProject
+ {
+ int posX;
+@@ -158,7 +158,7 @@
+ int unitWorking;
+ int unitWorkingFuture;
+ };
+-
++private:
+ ///Initiates Game
+ void init(GameGUI *gui, MapEdit* edit);
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gltron/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gltron/default.nix
new file mode 100644
index 000000000000..f6d74b6e9b75
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gltron/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, SDL, libGLU, libGL, zlib, libpng, libvorbis, libmikmod, SDL_sound } :
+
+stdenv.mkDerivation rec {
+ name = "gltron-0.70";
+ src = fetchurl {
+ url = "mirror://sourceforge/gltron/${name}-source.tar.gz";
+ sha256 = "e0c8ebb41a18a1f8d7302a9c2cb466f5b1dd63e9a9966c769075e6b6bdad8bb0";
+ };
+
+ patches = [ ./gentoo-prototypes.patch ];
+
+ postPatch = ''
+ # Fix https://sourceforge.net/p/gltron/bugs/15
+ sed -i /__USE_MISC/d lua/src/lib/liolib.c
+ '';
+
+ # The build fails, unless we disable the default -Wall -Werror
+ configureFlags = [ "--disable-warn" ];
+
+ buildInputs = [ SDL libGLU libGL zlib libpng libvorbis libmikmod SDL_sound ];
+
+ meta = {
+ homepage = "http://www.gltron.org/";
+ description = "Game based on the movie Tron";
+ license = stdenv.lib.licenses.gpl2Plus;
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gltron/gentoo-prototypes.patch b/infra/libkookie/nixpkgs/pkgs/games/gltron/gentoo-prototypes.patch
new file mode 100644
index 000000000000..71078ae553f7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gltron/gentoo-prototypes.patch
@@ -0,0 +1,27 @@
+Taken from:
+http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/games-action/gltron/files/gltron-0.70-prototypes.patch?revision=1.1&view=markup
+
+scripting.h declares these params as const so make sure they're the same.
+
+--- a/nebu/scripting/scripting.c
++++ b/nebu/scripting/scripting.c
+@@ -169,16 +169,16 @@
+ return status;
+ }
+
+-void scripting_RunFile(char *name) {
++void scripting_RunFile(const char *name) {
+ lua_dofile(L, name);
+ }
+
+-void scripting_Run(char *command) {
++void scripting_Run(const char *command) {
+ /* fprintf(stderr, "[command] %s\n", command); */
+ lua_dostring(L, command);
+ }
+
+-void scripting_RunFormat(char *format, ... ) {
++void scripting_RunFormat(const char *format, ... ) {
+ char buf[4096];
+ va_list ap;
+ va_start(ap, format);
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gmad/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gmad/default.nix
new file mode 100644
index 000000000000..aad53a7915a5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gmad/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, premake4, bootil }:
+
+stdenv.mkDerivation rec {
+ name = "gmad-unstable-2015-04-16";
+
+ meta = {
+ description = "Garry's Mod Addon Creator and Extractor";
+ homepage = "https://github.com/garrynewman/gmad";
+ license = stdenv.lib.licenses.unfree;
+ maintainers = [ stdenv.lib.maintainers.abigailbuccaneer ];
+ platforms = stdenv.lib.platforms.all;
+ };
+
+ src = fetchFromGitHub {
+ owner = "garrynewman";
+ repo = "gmad";
+ rev = "377f3458bf1ecb8a1a2217c2194773e3c2a2dea0";
+ sha256="0myi9njr100gxhxk1vrzr2sbij5kxl959sq0riiqgg01div338g0";
+ };
+
+ buildInputs = [ premake4 bootil ];
+
+ targetName =
+ if stdenv.isLinux then "gmad_linux"
+ else if stdenv.isDarwin then "gmad_osx"
+ else "gmad";
+
+ premakeFlags = [ "--bootil_lib=${bootil}/lib" "--bootil_inc=${bootil}/include" ];
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp ${targetName} $out/bin/gmad
+ '';
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gnome-hexgl/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gnome-hexgl/default.nix
new file mode 100644
index 000000000000..cfa9a0b81d02
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gnome-hexgl/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, fetchFromGitHub
+, ninja
+, meson
+, pkg-config
+, gthree
+, gsound
+, epoxy
+, gtk3
+}:
+
+stdenv.mkDerivation rec {
+ pname = "gnome-hexgl";
+ version = "unstable-2020-07-24";
+
+ src = fetchFromGitHub {
+ owner = "alexlarsson";
+ repo = "gnome-hexgl";
+ rev = "f47a351055a235730795341dcd6b2397cc4bfa0c";
+ sha256 = "yZWGymaSUfnCP8VAEdDH64w0muSnRK/XPi1/IqTrE4k=";
+ };
+
+ nativeBuildInputs = [
+ ninja
+ meson
+ pkg-config
+ ];
+
+ buildInputs = [
+ gthree
+ gsound
+ epoxy
+ gtk3
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Gthree port of HexGL";
+ homepage = "https://github.com/alexlarsson/gnome-hexgl";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jtojnar ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gnubg/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gnubg/default.nix
new file mode 100644
index 000000000000..edfde5ea3e94
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gnubg/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, glib, python, gtk2, readline }:
+
+let version = "1.06.002"; in
+stdenv.mkDerivation {
+ name = "gnubg-"+version;
+
+ src = fetchurl {
+ url = "http://gnubg.org/media/sources/gnubg-release-${version}-sources.tar.gz";
+ sha256 = "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ python glib gtk2 readline ];
+
+ configureFlags = [ "--with-gtk" "--with--board3d" ];
+
+ meta = with stdenv.lib;
+ { description = "World class backgammon application";
+ homepage = "http://www.gnubg.org/";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.ehmry ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gnuchess/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gnuchess/default.nix
new file mode 100644
index 000000000000..a7b279334966
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gnuchess/default.nix
@@ -0,0 +1,35 @@
+{stdenv, fetchurl, flex, makeWrapper}:
+let
+ s = # Generated upstream information
+ rec {
+ baseName="gnuchess";
+ version="6.2.7";
+ name="${baseName}-${version}";
+ url="mirror://gnu/chess/${name}.tar.gz";
+ sha256="0ilq4bfl0lwyzf11q7n2skydjhalfn3bgxhrp5hjxs5bc5d6fdp5";
+ };
+ buildInputs = [
+ flex
+ ];
+in
+stdenv.mkDerivation {
+ inherit (s) name version;
+ src = fetchurl {
+ inherit (s) url sha256;
+ };
+ inherit buildInputs;
+ nativeBuildInputs = [ makeWrapper ];
+
+ postInstall = ''
+ wrapProgram $out/bin/gnuchessx --set PATH "$out/bin"
+ wrapProgram $out/bin/gnuchessu --set PATH "$out/bin"
+ '';
+
+ meta = {
+ inherit (s) version;
+ description = "GNU Chess engine";
+ maintainers = [stdenv.lib.maintainers.raskin];
+ platforms = stdenv.lib.platforms.unix;
+ license = stdenv.lib.licenses.gpl3Plus;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gnuchess/default.upstream b/infra/libkookie/nixpkgs/pkgs/games/gnuchess/default.upstream
new file mode 100644
index 000000000000..f19dca51addc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gnuchess/default.upstream
@@ -0,0 +1 @@
+url https://ftp.gnu.org/gnu/chess/
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gnugo/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gnugo/default.nix
new file mode 100644
index 000000000000..069d14756e33
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gnugo/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+ pname = "gnugo";
+ version = "3.8";
+
+ src = fetchurl {
+ url = "mirror://gnu/gnugo/gnugo-${version}.tar.gz";
+ sha256 = "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s";
+ };
+
+ hardeningDisable = [ "format" ];
+
+ meta = {
+ description = "GNU Go - A computer go player";
+ homepage = "https://www.gnu.org/software/gnugo/";
+ license = stdenv.lib.licenses.gpl3;
+ platforms = stdenv.lib.platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gnujump/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gnujump/default.nix
new file mode 100644
index 000000000000..8af7b84db26e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gnujump/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, SDL, SDL_image, SDL_mixer }:
+
+stdenv.mkDerivation rec {
+ pname = "gnujump";
+ version = "1.0.8";
+ src = fetchurl {
+ url = "mirror://gnu/gnujump/${pname}-${version}.tar.gz";
+ sha256 = "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk";
+ };
+ buildInputs = [ SDL SDL_image SDL_mixer ];
+
+ NIX_LDFLAGS = "-lm";
+
+ meta = with stdenv.lib; {
+ homepage = "https://jump.gnu.sinusoid.es/index.php?title=Main_Page";
+ description = "A clone of the simple yet addictive game Xjump";
+ longDescription = ''
+ The goal in this game is to jump to the next floor trying not to fall
+ down. As you go upper in the Falling Tower the floors will fall faster.
+ Try to survive longer get upper than anyone. It might seem too simple but
+ once you've tried you'll realize how addictive this is.
+ '';
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ fgaz ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gnushogi/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gnushogi/default.nix
new file mode 100644
index 000000000000..01c08fbf3dcb
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gnushogi/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, zlib }:
+
+stdenv.mkDerivation rec {
+ pname = "gnushogi";
+ version = "1.4.2";
+ buildInputs = [ zlib ];
+
+ src = fetchurl {
+ url = "mirror://gnu/gnushogi/${pname}-${version}.tar.gz";
+ sha256 = "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y";
+ };
+
+ meta = with stdenv.lib; {
+ description = "GNU implementation of Shogi, also known as Japanese Chess";
+ homepage = "https://www.gnu.org/software/gnushogi/";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.ciil ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gogui/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gogui/default.nix
new file mode 100644
index 000000000000..b13a145ff5e8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gogui/default.nix
@@ -0,0 +1,29 @@
+{ fetchurl, stdenv, openjdk, unzip, makeWrapper }:
+
+let
+ version = "1.4.9";
+in stdenv.mkDerivation {
+ pname = "gogui";
+ inherit version;
+ buildInputs = [ unzip makeWrapper ];
+ src = fetchurl {
+ url = "mirror://sourceforge/project/gogui/gogui/${version}/gogui-${version}.zip";
+ sha256 = "0qk6p1bhi1816n638bg11ljyj6zxvm75jdf02aabzdmmd9slns1j";
+ };
+ dontConfigure = true;
+ installPhase = ''
+ mkdir -p $out/share/doc
+ mv -vi {bin,lib} $out/
+ mv -vi doc $out/share/doc/gogui
+ for x in $out/bin/*; do
+ wrapProgram $x --prefix PATH ":" ${openjdk}/bin
+ done
+ '';
+ meta = {
+ maintainers = [ stdenv.lib.maintainers.cleverca22 ];
+ description = "A graphical user interface to programs that play the board game Go and support the Go Text Protocol such as GNU Go";
+ homepage = "http://gogui.sourceforge.net/";
+ platforms = stdenv.lib.platforms.unix;
+ license = stdenv.lib.licenses.gpl3;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gscrabble/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gscrabble/default.nix
new file mode 100644
index 000000000000..cab509a3e9a6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gscrabble/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub
+, gtk3, wrapGAppsHook, gst_all_1, gobject-introspection
+, python3Packages, gnome3 }:
+
+buildPythonApplication {
+ pname = "gscrabble";
+ version = "unstable-2019-03-11";
+
+ src = fetchFromGitHub {
+ owner = "RaaH";
+ repo = "gscrabble";
+ rev = "4b6e4e151a4cd4a4f66a5be2c8616becac3f2a29";
+ sha256 = "0a89kqh04x52q7qyv1rfa7xif0pdw3zc0dw5a24msala919g90q2";
+ };
+
+ doCheck = false;
+
+ nativeBuildInputs = [ wrapGAppsHook ];
+
+ buildInputs = with gst_all_1; [
+ gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad
+ gnome3.adwaita-icon-theme gtk3 gobject-introspection
+ ];
+
+ propagatedBuildInputs = with python3Packages; [ gst-python pygobject3 ];
+
+ preFixup = ''
+ gappsWrapperArgs+=(
+ --prefix PYTHONPATH : "$out/share/GScrabble/modules"
+ )
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Golden Scrabble crossword puzzle game";
+ homepage = "https://github.com/RaaH/gscrabble/";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ maintainers = [ ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gshogi/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gshogi/default.nix
new file mode 100644
index 000000000000..9004bd3d0423
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gshogi/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub
+, gtk3, gobject-introspection
+, wrapGAppsHook, python3Packages }:
+
+buildPythonApplication rec {
+ pname = "gshogi";
+ version = "0.5.1";
+
+ src = fetchFromGitHub {
+ owner = "johncheetham";
+ repo = "gshogi";
+ rev = "v${version}";
+ sha256 = "06vgndfgwyfi50wg3cw92zspc9z0k7xn2pp6qsjih0l5yih8iwqh";
+ };
+
+ doCheck = false; # no tests available
+
+ buildInputs = [
+ gtk3
+ gobject-introspection
+ ];
+
+ nativeBuildInputs = [ wrapGAppsHook ];
+
+ propagatedBuildInputs = with python3Packages; [
+ pygobject3
+ pycairo
+ ];
+
+ meta = with stdenv.lib; {
+ description = "A graphical implementation of the Shogi board game, also known as Japanese Chess";
+ homepage = "http://johncheetham.com/projects/gshogi/";
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ maintainers = [ maintainers.ciil ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gtetrinet/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gtetrinet/default.nix
new file mode 100644
index 000000000000..f3cc9ab0006d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gtetrinet/default.nix
@@ -0,0 +1,44 @@
+{ fetchFromGitHub, stdenv, autoreconfHook, intltool, pkgconfig, libgnome, libgnomeui, GConf }:
+
+stdenv.mkDerivation {
+ name = "gtetrinet-0.7.11";
+
+ src = fetchFromGitHub {
+ owner = "GNOME";
+ repo = "gtetrinet";
+ rev = "6be3df83f3dc5c7cb966e6cd447182df01b93222";
+ sha256 = "1y05x8lfyxvkjg6c87cfd0xxmb22c88scx8fq3gah7hjy5i42v93";
+ };
+
+ nativeBuildInputs = [ autoreconfHook intltool pkgconfig ];
+
+ buildInputs = [ libgnome libgnomeui ];
+
+ propagatedUserEnvPkgs = [ GConf ];
+
+ postAutoreconf = ''
+ intltoolize --force
+ '';
+
+ preInstall = ''
+ export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
+ '';
+
+ postInstall = ''
+ mv "$out/games" "$out/bin"
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = {
+ description = "Client for Tetrinet, a multiplayer online Tetris game";
+ longDescription = ''
+ GTetrinet is a client program for Tetrinet, a multiplayer tetris game
+ that is played over the internet.
+ '';
+ homepage = "http://gtetrinet.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl2;
+ platforms = stdenv.lib.platforms.unix;
+ maintainers = [ stdenv.lib.maintainers.chris-martin ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gtypist/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gtypist/default.nix
new file mode 100644
index 000000000000..ae12c325306b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gtypist/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchurl, makeWrapper, libiconv, ncurses, perl, fortune}:
+
+stdenv.mkDerivation rec {
+ pname = "gtypist";
+ version = "2.9.5";
+
+ src = fetchurl {
+ url = "mirror://gnu/gtypist/gtypist-${version}.tar.xz";
+ sha256 = "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1";
+ };
+
+ buildInputs = [ makeWrapper ncurses perl fortune ]
+ ++ stdenv.lib.optional stdenv.isDarwin libiconv;
+
+ preFixup = ''
+ wrapProgram "$out/bin/typefortune" \
+ --prefix PATH : "${fortune}/bin" \
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://www.gnu.org/software/gtypist";
+ description = "Universal typing tutor";
+ license = licenses.gpl3Plus;
+ platforms = platforms.linux ++ platforms.darwin;
+ maintainers = with maintainers; [ pSub ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gweled/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gweled/default.nix
new file mode 100644
index 000000000000..fce5ec09c79c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gweled/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchbzr, intltool
+, gtk2, wrapGAppsHook, autoreconfHook, pkgconfig
+, libmikmod, librsvg, libcanberra-gtk2, hicolor-icon-theme }:
+
+stdenv.mkDerivation rec {
+ pname = "gweled";
+ version = "unstable-2018-02-15";
+
+ src = fetchbzr {
+ url = "lp:gweled";
+ rev = "94";
+ sha256 = "01c38y4df5a06wqbsmsn8ysxx7hav9yvw6zdwbc9m5m55z7vmdb8";
+ };
+
+ doCheck = false;
+
+ nativeBuildInputs = [ wrapGAppsHook intltool autoreconfHook pkgconfig ];
+
+ buildInputs = [ gtk2 libmikmod librsvg hicolor-icon-theme libcanberra-gtk2 ];
+
+ configureFlags = [ "--disable-setgid" ];
+
+ meta = with stdenv.lib; {
+ description = "Bejeweled clone game";
+ homepage = "https://gweled.org";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = [ ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/gzdoom/default.nix b/infra/libkookie/nixpkgs/pkgs/games/gzdoom/default.nix
new file mode 100644
index 000000000000..fdbdda2d313e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/gzdoom/default.nix
@@ -0,0 +1,85 @@
+{ stdenv, fetchFromGitHub, cmake, makeWrapper, openal, fluidsynth_1
+, soundfont-fluid, libGL, SDL2, bzip2, zlib, libjpeg, libsndfile, mpg123
+, game-music-emu, pkgconfig }:
+
+let
+ zmusic-src = fetchFromGitHub {
+ owner = "coelckers";
+ repo = "zmusic";
+ rev = "2d0ea861174f9e2031400ab29f5bcc8425521cc6";
+ sha256 = "1ac7lhbzwfr0fsyv7n70hvb8imzngxn1qyanmv9j26j0h90hhl8a";
+ };
+ zmusic = stdenv.mkDerivation {
+ pname = "zmusic";
+ version = "1.1.0";
+
+ src = zmusic-src;
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+
+ preConfigure = ''
+ sed -i \
+ -e "s@/usr/share/sounds/sf2/@${soundfont-fluid}/share/soundfonts/@g" \
+ -e "s@FluidR3_GM.sf2@FluidR3_GM2-2.sf2@g" \
+ source/mididevices/music_fluidsynth_mididevice.cpp
+ '';
+
+ };
+
+ gzdoom = stdenv.mkDerivation rec {
+ pname = "gzdoom";
+ version = "4.4.2";
+
+ src = fetchFromGitHub {
+ owner = "coelckers";
+ repo = "gzdoom";
+ rev = "g${version}";
+ sha256 = "1xkkmbsdv64wyb9r2fv5mwyqw0bjryk528jghdrh47pndmjs9a38";
+ fetchSubmodules = true;
+ };
+
+ nativeBuildInputs = [ cmake makeWrapper pkgconfig ];
+ buildInputs = [
+ SDL2
+ libGL
+ openal
+ fluidsynth_1
+ bzip2
+ zlib
+ libjpeg
+ libsndfile
+ mpg123
+ game-music-emu
+ zmusic
+ ];
+
+ enableParallelBuilding = true;
+
+ NIX_CFLAGS_LINK = "-lopenal -lfluidsynth";
+
+ installPhase = ''
+ install -Dm755 gzdoom "$out/lib/gzdoom/gzdoom"
+ for i in *.pk3; do
+ install -Dm644 "$i" "$out/lib/gzdoom/$i"
+ done
+ for i in fm_banks/*; do
+ install -Dm644 "$i" "$out/lib/gzdoom/$i"
+ done
+ for i in soundfonts/*; do
+ install -Dm644 "$i" "$out/lib/gzdoom/$i"
+ done
+ mkdir $out/bin
+ makeWrapper $out/lib/gzdoom/gzdoom $out/bin/gzdoom
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/coelckers/gzdoom";
+ description =
+ "A Doom source port based on ZDoom. It features an OpenGL renderer and lots of new features";
+ license = licenses.gpl3;
+ platforms = [ "x86_64-linux" ];
+ maintainers = with maintainers; [ lassulus ];
+ };
+ };
+
+in gzdoom
diff --git a/infra/libkookie/nixpkgs/pkgs/games/harmonist/default.nix b/infra/libkookie/nixpkgs/pkgs/games/harmonist/default.nix
new file mode 100644
index 000000000000..fb9e1cf66176
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/harmonist/default.nix
@@ -0,0 +1,34 @@
+{stdenv, fetchurl, buildGoPackage}:
+
+buildGoPackage rec {
+
+ pname = "harmonist";
+ version = "0.3.0";
+
+ goPackagePath = "git.tuxfamily.org/harmonist/harmonist.git";
+
+ src = fetchurl {
+ url = "https://download.tuxfamily.org/harmonist/releases/${pname}-${version}.tar.gz";
+ sha256 = "16bh4zzq7szwcw19n34bslkf81fz3i0p4zqkd8gdi5ixkbm998lm";
+ };
+
+ goDeps = ./deps.nix;
+
+ postInstall = "mv $out/bin/harmonist.git $out/bin/harmonist";
+
+ meta = with stdenv.lib; {
+ description = "A stealth coffee-break roguelike game";
+ longDescription = ''
+ Harmonist is a stealth coffee-break roguelike game. The game has a heavy
+ focus on tactical positioning, light and noise mechanisms, making use of
+ various terrain types and cones of view for monsters. Aiming for a
+ replayable streamlined experience, the game avoids complex inventory
+ management and character building, relying on items and player
+ adaptability for character progression.
+ '';
+ homepage = "https://harmonist.tuxfamily.org/";
+ license = licenses.isc;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [freepotion];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/harmonist/deps.nix b/infra/libkookie/nixpkgs/pkgs/games/harmonist/deps.nix
new file mode 100644
index 000000000000..68290823625c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/harmonist/deps.nix
@@ -0,0 +1,20 @@
+[
+ {
+ goPackagePath = "github.com/nsf/termbox-go";
+ fetch = {
+ type = "git";
+ url = "https://github.com/nsf/termbox-go";
+ rev = "93860e16131719fa9722e7c448dbf8c0e3210a0d";
+ sha256 = "03hz060cy8qrl4kgr80pbq6xvr38z4c6ghr3y81i8g854rvp6426";
+ };
+ }
+ {
+ goPackagePath = "github.com/mattn/go-runewidth";
+ fetch = {
+ type = "git";
+ url = "https://github.com/mattn/go-runewidth";
+ rev = "18c3d09a134a52720932bbaa92c798a0ab111004";
+ sha256 = "1snr8mk63vz2h44knq26dm81p83887v7kb09iywqmx0nqzngih66";
+ };
+ }
+]
diff --git a/infra/libkookie/nixpkgs/pkgs/games/hawkthorne/default.nix b/infra/libkookie/nixpkgs/pkgs/games/hawkthorne/default.nix
new file mode 100644
index 000000000000..819845309927
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/hawkthorne/default.nix
@@ -0,0 +1,39 @@
+{ fetchgit, stdenv, love, curl, zip }:
+
+stdenv.mkDerivation {
+ version = "0.12.1";
+ pname = "hawkthorne";
+
+ src = fetchgit {
+ url = "https://github.com/hawkthorne/hawkthorne-journey.git";
+ rev = "610b9b3907b2a1b21da2ae926e4c7c4c9e19959b";
+ sha256 = "013smhdf9sh91153fpk2bwhhnpg6pn7kfrpw77jmf0v48i3q44h2";
+ };
+
+ buildInputs = [
+ love curl zip
+ ];
+
+ patches = [
+ ./makefile.patch
+ ];
+
+ enableParallelBuilding = true;
+
+ meta = {
+ description = "Journey to the Center of Hawkthorne - A fan-made retro-style game based on the show Community";
+ longDescription = ''
+ Journey to the Center of Hawkthorne is an open source game written in Love2D.
+ It's based on the show Community, starring Jim Rash and Joel McHale as
+ the primary will-they-or-won't-they relationship.
+
+ This game has been entirely developed by fans of the show, who were inspired
+ to bring to life the video game used to determine the winner of Pierce
+ Hawthorne's inheritance.
+ '';
+ homepage = "https://www.reddit.com/r/hawkthorne";
+ license = stdenv.lib.licenses.mit;
+ maintainers = with stdenv.lib.maintainers; [ campadrenalin ];
+ broken = true;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/hawkthorne/makefile.patch b/infra/libkookie/nixpkgs/pkgs/games/hawkthorne/makefile.patch
new file mode 100644
index 000000000000..16a79683149d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/hawkthorne/makefile.patch
@@ -0,0 +1,33 @@
+diff --git a/Makefile b/Makefile
+index 55eb817..f3406aa 100644
+--- a/Makefile
++++ b/Makefile
+@@ -18,10 +18,14 @@ endif
+
+ tilemaps := $(patsubst %.tmx,%.lua,$(wildcard src/maps/*.tmx))
+
+-maps: $(tilemaps)
+-
+ love: build/hawkthorne.love
+
++shebang: build/hawkthorne.love
++ cat <(echo '#!/usr/bin/env love') build/hawkthorne.love > build/hawkthorne
++ chmod +x build/hawkthorne
++
++maps: $(tilemaps)
++
+ build/hawkthorne.love: $(tilemaps) src/*
+ mkdir -p build
+ cd src && zip --symlinks -q -r ../build/hawkthorne.love . -x ".*" \
+@@ -30,6 +34,12 @@ build/hawkthorne.love: $(tilemaps) src/*
+ run: $(tilemaps) $(LOVE)
+ $(LOVE) src
+
++check: test
++
++install: shebang
++ mkdir -p $(out)/bin
++ cp build/hawkthorne $(out)/bin
++
+ src/maps/%.lua: src/maps/%.tmx bin/tmx2lua
+ bin/tmx2lua $<
diff --git a/infra/libkookie/nixpkgs/pkgs/games/hedgewars/default.nix b/infra/libkookie/nixpkgs/pkgs/games/hedgewars/default.nix
new file mode 100644
index 000000000000..f31a44e97c09
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/hedgewars/default.nix
@@ -0,0 +1,107 @@
+{ mkDerivation, SDL2_image, SDL2_ttf, SDL2_net, fpc, ghcWithPackages, ffmpeg_3, freeglut
+, lib, fetchurl, cmake, pkgconfig, lua5_1, SDL2, SDL2_mixer
+, zlib, libpng, libGL, libGLU, physfs
+, qtbase, qttools
+, llvm
+, withServer ? true
+}:
+
+let
+ # gameServer/hedgewars-server.cabal depends on network < 3
+ ghc = ghcWithPackages (pkgs: with pkgs; [
+ SHA bytestring entropy hslogger network_2_6_3_1 pkgs.zlib random
+ regex-tdfa sandi utf8-string vector
+ ]);
+
+in
+mkDerivation rec {
+ pname = "hedgewars";
+ version = "1.0.0";
+
+ src = fetchurl {
+ url = "https://www.hedgewars.org/download/releases/hedgewars-src-${version}.tar.bz2";
+ sha256 = "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1";
+ };
+
+ nativeBuildInputs = [ cmake pkgconfig qttools ];
+
+ buildInputs = [
+ SDL2_ttf SDL2_net SDL2 SDL2_mixer SDL2_image
+ fpc lua5_1
+ llvm # hard-requirement on aarch64, for some reason not strictly necessary on x86-64
+ ffmpeg_3 freeglut physfs
+ qtbase
+ ] ++ lib.optional withServer ghc;
+
+ postPatch = ''
+ substituteInPlace gameServer/CMakeLists.txt \
+ --replace mask evaluate
+
+ # compile with fpc >= 3.2.0
+ # https://github.com/archlinux/svntogit-community/blob/75a1b3900fb3dd553d5114bbc8474d85fd6abb02/trunk/PKGBUILD#L26
+ sed -i 's/procedure ShiftWorld(Dir: LongInt); inline;/procedure ShiftWorld(Dir: LongInt);/' hedgewars/uWorld.pas
+ '';
+
+ cmakeFlags = [
+ "-DNOVERSIONINFOUPDATE=ON"
+ "-DNOSERVER=${if withServer then "OFF" else "ON"}"
+ ];
+
+
+ # hslogger brings network-3 and network-bsd which conflict with
+ # network-2.6.3.1
+ preConfigure = ''
+ substituteInPlace gameServer/CMakeLists.txt \
+ --replace "haskell_flags}" \
+ "haskell_flags} -package network-2.6.3.1 -hide-package network-bsd"
+ '';
+
+ NIX_LDFLAGS = lib.concatMapStringsSep " " (e: "-rpath ${e}/lib") [
+ SDL2.out
+ SDL2_image
+ SDL2_mixer
+ SDL2_net
+ SDL2_ttf
+ libGL
+ libGLU
+ libpng.out
+ lua5_1
+ physfs
+ zlib.out
+ ];
+
+ qtWrapperArgs = [
+ "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libGL libGLU freeglut physfs ]}"
+ ];
+
+ meta = with lib; {
+ description = "Turn-based strategy artillery game similar to Worms";
+ homepage = "http://hedgewars.org/";
+ license = licenses.gpl2;
+ longDescription = ''
+ Each player controls a team of several hedgehogs. During the course of
+ the game, players take turns with one of their hedgehogs. They then use
+ whatever tools and weapons are available to attack and kill the
+ opponents' hedgehogs, thereby winning the game. Hedgehogs may move
+ around the terrain in a variety of ways, normally by walking and jumping
+ but also by using particular tools such as the "Rope" or "Parachute", to
+ move to otherwise inaccessible areas. Each turn is time-limited to
+ ensure that players do not hold up the game with excessive thinking or
+ moving.
+
+ A large variety of tools and weapons are available for players during
+ the game: Grenade, Cluster Bomb, Bazooka, UFO, Homing Bee, Shotgun,
+ Desert Eagle, Fire Punch, Baseball Bat, Dynamite, Mine, Rope, Pneumatic
+ pick, Parachute. Most weapons, when used, cause explosions that deform
+ the terrain, removing circular chunks. The landscape is an island
+ floating on a body of water, or a restricted cave with water at the
+ bottom. A hedgehog dies when it enters the water (either by falling off
+ the island, or through a hole in the bottom of it), it is thrown off
+ either side of the arena or when its health is reduced, typically from
+ contact with explosions, to zero (the damage dealt to the attacked
+ hedgehog or hedgehogs after a player's or CPU turn is shown only when
+ all movement on the battlefield has ceased).'';
+ maintainers = with maintainers; [ kragniz fpletz ];
+ inherit (ghc.meta) platforms;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/holdingnuts/default.nix b/infra/libkookie/nixpkgs/pkgs/games/holdingnuts/default.nix
new file mode 100644
index 000000000000..d0cee8d76cfe
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/holdingnuts/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, cmake, SDL, qt4 }:
+
+let mirror = "http://download.holdingnuts.net";
+in stdenv.mkDerivation rec {
+ pname = "holdingnuts";
+ version = "0.0.5";
+
+ src = fetchurl {
+ url = "${mirror}/release/${version}/${pname}-${version}.tar.bz2";
+ sha256 = "0iw25jmnqzscg34v66d4zz70lvgjp4l7gi16nna6491xnqha5a8g";
+ };
+
+ patches = [
+ (fetchurl {
+ url = "${mirror}/patches/holdingnuts-0.0.5-wheel.patch";
+ sha256 = "0hap5anxgc19s5qi64mjpi3wpgphy4dqdxqw34q19dw3gwxw5g8n";
+ })
+ (fetchurl {
+ url = "${mirror}/patches/holdingnuts-qpixmapcache-workaround.patch";
+ sha256 = "15cf9j9mdm85f0h7w5f5852ic7xpim0243yywkd2qrfp37mi93pd";
+ })
+ ];
+
+ postPatch = ''
+ substituteInPlace src/system/SysAccess.c --replace /usr/share $out/share
+ '';
+
+ buildInputs = [ cmake SDL qt4 ];
+
+ meta = with stdenv.lib; {
+ homepage = "http://www.holdingnuts.net/";
+ description = "Open Source Poker client and server";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ obadz ];
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/hyperrogue/default.nix b/infra/libkookie/nixpkgs/pkgs/games/hyperrogue/default.nix
new file mode 100644
index 000000000000..32882f168945
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/hyperrogue/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchFromGitHub, SDL, SDL_ttf, SDL_gfx, SDL_mixer, autoreconfHook,
+ libpng, glew, makeDesktopItem }:
+
+stdenv.mkDerivation rec {
+ pname = "hyperrogue";
+ version = "11.3o";
+
+ src = fetchFromGitHub {
+ owner = "zenorogue";
+ repo = "hyperrogue";
+ rev = "v${version}";
+ sha256 = "0bijgbqpc867pq8lbwwvcnc713gm51mmz625xb5br0q2qw09nkyh";
+ };
+
+ CPPFLAGS = "-I${SDL.dev}/include/SDL";
+
+ buildInputs = [ autoreconfHook SDL SDL_ttf SDL_gfx SDL_mixer libpng glew ];
+
+ desktopItem = makeDesktopItem {
+ name = "hyperrogue";
+ desktopName = "HyperRogue";
+ genericName = "HyperRogue";
+ comment = meta.description;
+ icon = "hyperrogue";
+ exec = "hyperrogue";
+ categories = "Game;AdventureGame;";
+ };
+
+ postInstall = ''
+ install -m 444 -D ${desktopItem}/share/applications/hyperrogue.desktop \
+ $out/share/applications/hyperrogue.desktop
+ install -m 444 -D hyperroid/app/src/main/res/drawable-ldpi/icon.png \
+ $out/share/icons/hicolor/36x36/apps/hyperrogue.png
+ install -m 444 -D hyperroid/app/src/main/res/drawable-mdpi/icon.png \
+ $out/share/icons/hicolor/48x48/apps/hyperrogue.png
+ install -m 444 -D hyperroid/app/src/main/res/drawable-hdpi/icon.png \
+ $out/share/icons/hicolor/72x72/apps/hyperrogue.png
+ install -m 444 -D hyperroid/app/src/main/res/drawable-xhdpi/icon.png \
+ $out/share/icons/hicolor/96x96/apps/hyperrogue.png
+ install -m 444 -D hyperroid/app/src/main/res/drawable-xxhdpi/icon.png \
+ $out/share/icons/hicolor/144x144/apps/hyperrogue.png
+ install -m 444 -D hyperroid/app/src/main/res/drawable-xxxhdpi/icon.png \
+ $out/share/icons/hicolor/192x192/apps/hyperrogue.png
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ homepage = "http://www.roguetemple.com/z/hyper/";
+ description = "A roguelike game set in hyperbolic geometry";
+ maintainers = with maintainers; [ rardiol ];
+ license = licenses.gpl2;
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/icbm3d/default.nix b/infra/libkookie/nixpkgs/pkgs/games/icbm3d/default.nix
new file mode 100644
index 000000000000..71ecfacb37ec
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/icbm3d/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchurl, libX11}:
+
+stdenv.mkDerivation {
+ name = "icbm3d-0.4";
+ src = fetchurl {
+ url = "ftp://ftp.tuxpaint.org/unix/x/icbm3d/icbm3d.0.4.tar.gz";
+ sha256 = "1z9q01mj0v9qbwby5cajjc9wpvdw2ma5v1r639vraxpl9qairm4s";
+ };
+
+ buildInputs = [ libX11 ];
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp icbm3d $out/bin
+ '';
+
+ meta = {
+ homepage = "http://www.newbreedsoftware.com/icbm3d/";
+ description = "3D vector-based clone of the atari game Missile Command";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/instead-launcher/default.nix b/infra/libkookie/nixpkgs/pkgs/games/instead-launcher/default.nix
new file mode 100644
index 000000000000..84e3474225ad
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/instead-launcher/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, instead, qmake4Hook, zlib }:
+
+stdenv.mkDerivation rec {
+ pname = "instead-launcher";
+
+ version = "0.7.0";
+
+ src = fetchFromGitHub {
+ owner = "instead-hub";
+ repo = "instead-launcher";
+ rev = version;
+ sha256 = "1svy8i8anspway01pnz2cy69aad03anvkq04wrdfv1h9c34gbvb9";
+ };
+
+ patches = [ ./path.patch ];
+
+ postPatch = ''
+ substituteInPlace platform.cpp --subst-var-by instead ${instead}
+ '';
+
+ nativeBuildInputs = [ qmake4Hook ];
+
+ buildInputs = [ zlib ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://instead.syscall.ru/wiki/en/instead-launcher";
+ description = "Install and play games from INSTEAD repository";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ orivej ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/instead-launcher/path.patch b/infra/libkookie/nixpkgs/pkgs/games/instead-launcher/path.patch
new file mode 100644
index 000000000000..f63737bfb160
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/instead-launcher/path.patch
@@ -0,0 +1,39 @@
+From c7460a7fc255ef4e8e0e37798605c4d8bb50633d Mon Sep 17 00:00:00 2001
+From: Orivej Desh <orivej@gmx.fr>
+Date: Sat, 1 Apr 2017 01:30:37 +0000
+Subject: [PATCH] path
+
+---
+ mainwindow.cpp | 2 +-
+ platform.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/mainwindow.cpp b/mainwindow.cpp
+index 9687c4e..234b176 100644
+--- a/mainwindow.cpp
++++ b/mainwindow.cpp
+@@ -688,7 +688,7 @@ void MainWindow::loadConfig() {
+ if ( args.contains( "default-gamespath" ) )
+ defGamesPath = args["default-gamespath"].toString();
+
+- QString insteadPath = conf.value("InsteadPath", defInsteadPath).toString();
++ QString insteadPath = defInsteadPath;
+ bool autoRefresh = conf.value("AutoRefresh", "false").toString() == "true";
+ bool autoRefreshSW = conf.value("AutoRefreshSW", "false").toString() == "true";
+ QString lang = conf.value( "Language", "*" ).toString();
+diff --git a/platform.cpp b/platform.cpp
+index bda86be..c356f1c 100644
+--- a/platform.cpp
++++ b/platform.cpp
+@@ -22,7 +22,7 @@ QString getConfigPath() {
+ }
+
+ QString getDefaultInterpreterPath() {
+- return "/usr/local/bin/sdl-instead";
++ return "@instead@/bin/sdl-instead";
+ }
+
+ #elif defined(Q_OS_WIN)
+--
+2.12.2
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/instead/default.nix b/infra/libkookie/nixpkgs/pkgs/games/instead/default.nix
new file mode 100644
index 000000000000..8672a7e44940
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/instead/default.nix
@@ -0,0 +1,72 @@
+{ stdenv, fetchurl, SDL2, SDL2_ttf, SDL2_image, SDL2_mixer, pkgconfig, lua, zlib, unzip }:
+
+let
+ version = "3.3.2";
+
+ # I took several games at random from https://instead.syscall.ru/games/
+ games = [
+ (fetchurl {
+ url = "http://instead-games.googlecode.com/files/instead-apple-day-1.2.zip";
+ sha256 = "0d4m554hiqmgl4xl0jp0b3bqjl35879768hqznh9y57y04sygd2a";
+ })
+ (fetchurl {
+ url = "http://instead-games.googlecode.com/files/instead-cat_en-1.2.zip";
+ sha256 = "0jlm3ssqlka16dm0rg6qfjh6xdh3pv7lj2s4ib4mqwj2vfy0v6sg";
+ })
+ (fetchurl {
+ url = "http://instead-games.googlecode.com/files/instead-vinny-0.1.zip";
+ sha256 = "15qdbg82zp3a8vz4qxminr0xbzbdpnsciliy2wm3raz4hnadawg1";
+ })
+ (fetchurl {
+ url = "http://instead-games.googlecode.com/files/instead-toilet3in1-1.2.zip";
+ sha256 = "0wz4bljbg67m84qwpaqpzs934a5pcbhpgh39fvbbbfvnnlm4lirl";
+ })
+ (fetchurl {
+ url = "http://instead-games.googlecode.com/files/instead-kayleth-0.4.1.zip";
+ sha256 = "0xmn9inys0kbcdd02qaqp8gazqs67xq3fq7hvcy2qb9jbq85j8b2";
+ })
+ ];
+in
+
+stdenv.mkDerivation {
+ name = "instead-" + version;
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/instead/instead/${version}/instead_${version}.tar.gz";
+ sha256 = "u5j2kDKRvMQPsG8iA6uOBScuyE/e1BJIK2+qVL6jqQs=";
+ };
+
+ NIX_LDFLAGS = "-llua -lgcc_s";
+
+ nativeBuildInputs = [ pkgconfig unzip ];
+ buildInputs = [ SDL2 SDL2_ttf SDL2_image SDL2_mixer lua zlib ];
+
+ postPatch = ''
+ substituteInPlace configure.sh \
+ --replace "/tmp/sdl-test" $(mktemp)
+ '';
+
+ configurePhase = ''
+ { echo 2; echo $out; } | ./configure.sh
+ '';
+
+ inherit games;
+
+ postInstall = ''
+ pushd $out/share/instead/games
+ for a in $games; do
+ unzip $a
+ done
+ popd
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Simple text adventure interpreter for Unix and Windows";
+ homepage = "https://instead.syscall.ru/";
+ license = stdenv.lib.licenses.gpl2;
+ platforms = with stdenv.lib.platforms; linux;
+ maintainers = with maintainers; [ pSub ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/iortcw/default.nix b/infra/libkookie/nixpkgs/pkgs/games/iortcw/default.nix
new file mode 100644
index 000000000000..3aa459777ea7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/iortcw/default.nix
@@ -0,0 +1,27 @@
+{ buildEnv, callPackage, makeWrapper }:
+
+let
+ sp = callPackage ./sp.nix {};
+ mp = sp.overrideAttrs (oldAttrs: rec {
+ sourceRoot = "source/MP";
+ });
+in buildEnv {
+ name = "iortcw";
+
+ paths = [ sp mp ];
+
+ pathsToLink = [ "/opt" ];
+
+ buildInputs = [ makeWrapper ];
+
+ # so we can launch sp from mp game and vice versa
+ postBuild = ''
+ for i in `find -L $out/opt/iortcw -maxdepth 1 -type f -executable`; do
+ makeWrapper $i $out/bin/`basename $i` --run "cd $out/opt/iortcw"
+ done
+ '';
+
+ meta = sp.meta // {
+ description = "Game engine for Return to Castle Wolfenstein";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/iortcw/sp.nix b/infra/libkookie/nixpkgs/pkgs/games/iortcw/sp.nix
new file mode 100644
index 000000000000..71144ad0eb85
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/iortcw/sp.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub, opusfile, libogg, SDL2, openal, freetype
+, libjpeg, curl, makeWrapper }:
+
+stdenv.mkDerivation rec {
+ pname = "iortcw-sp";
+ version = "1.51c";
+
+ src = fetchFromGitHub {
+ owner = "iortcw";
+ repo = "iortcw";
+ rev = version;
+ sha256 = "0g5wgqb1gm34pd05dj2i8nj3qhsz0831p3m7bsgxpjcg9c00jpyw";
+ };
+
+ enableParallelBuilding = true;
+
+ sourceRoot = "source/SP";
+
+ makeFlags = [
+ "USE_INTERNAL_LIBS=0"
+ "COPYDIR=${placeholder "out"}/opt/iortcw"
+ "USE_OPENAL_DLOPEN=0"
+ "USE_CURL_DLOPEN=0"
+ ];
+
+ installTargets = [ "copyfiles" ];
+
+ buildInputs = [
+ opusfile libogg SDL2 freetype libjpeg openal curl
+ ];
+ nativeBuildInputs = [ makeWrapper ];
+
+ NIX_CFLAGS_COMPILE = [
+ "-I${SDL2.dev}/include/SDL2"
+ "-I${opusfile}/include/opus"
+ ];
+ NIX_CFLAGS_LINK = [ "-lSDL2" ];
+
+ postInstall = ''
+ for i in `find $out/opt/iortcw -maxdepth 1 -type f -executable`; do
+ makeWrapper $i $out/bin/`basename $i` --run "cd $out/opt/iortcw"
+ done
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Single player version of game engine for Return to Castle Wolfenstein";
+ homepage = src.meta.homepage;
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ gnidorah ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ivan/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ivan/default.nix
new file mode 100644
index 000000000000..c5a93939a0f9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ivan/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, SDL2, SDL2_mixer, alsaLib, libpng
+, pcre, makeDesktopItem }:
+
+stdenv.mkDerivation rec {
+
+ pname = "ivan";
+ version = "058";
+
+ src = fetchFromGitHub {
+ owner = "Attnam";
+ repo = "ivan";
+ rev = "v${version}";
+ sha256 = "04jzs8wad2b3g9hvnijr4r89iiw6b1i44zdzkg0dy447lrw6l6xc";
+ };
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+
+ buildInputs = [ SDL2 SDL2_mixer alsaLib libpng pcre ];
+
+ hardeningDisable = ["all"];
+
+ # Enable wizard mode
+ cmakeFlags = ["-DCMAKE_CXX_FLAGS=-DWIZARD"];
+
+ # Help CMake find SDL_mixer.h
+ NIX_CFLAGS_COMPILE = "-I${SDL2_mixer}/include/SDL2";
+
+ # Create "ivan.desktop" file
+ ivanDesktop = makeDesktopItem {
+ name = pname;
+ exec = pname;
+ icon = "ivan.png";
+ desktopName = "IVAN";
+ genericName = pname;
+ categories = "Game;AdventureGame;RolePlaying;";
+ comment = meta.description;
+ };
+
+ # Create appropriate directories. Copy icons and desktop item to these directories.
+ postInstall = ''
+ mkdir -p $out/share/applications
+ mkdir -p $out/share/icons/hicolor/16x16/apps
+ mkdir -p $out/share/icons/hicolor/32x32/apps
+ mkdir -p $out/share/icons/hicolor/128x128/apps
+ mkdir -p $out/share/icons/hicolor/256x256/apps
+ mkdir -p $out/share/icons/hicolor/512x512/apps
+ cp $src/Graphics/icons/shadowless.iconset/icon_16x16.png $out/share/icons/hicolor/16x16/apps/ivan.png
+ cp $src/Graphics/icons/shadowless.iconset/icon_32x32.png $out/share/icons/hicolor/32x32/apps/ivan.png
+ cp $src/Graphics/icons/shadowless.iconset/icon_128x128.png $out/share/icons/hicolor/128x128/apps/ivan.png
+ cp $src/Graphics/icons/shadowless.iconset/icon_256x256.png $out/share/icons/hicolor/256x256/apps/ivan.png
+ cp $src/Graphics/icons/shadowless.iconset/icon_512x512.png $out/share/icons/hicolor/512x512/apps/ivan.png
+ cp ${ivanDesktop}/share/applications/* $out/share/applications
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Graphical roguelike game";
+ longDescription = ''
+ Iter Vehemens ad Necem (IVAN) is a graphical roguelike game, which currently
+ runs in Windows, DOS, Linux, and OS X. It features advanced bodypart and
+ material handling, multi-colored lighting and, above all, deep gameplay.
+
+ This is a fan continuation of IVAN by members of Attnam.com
+ '';
+ homepage = "https://attnam.com/";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [freepotion];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/Cargo.lock b/infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/Cargo.lock
new file mode 100644
index 000000000000..d017e93e4dba
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/Cargo.lock
@@ -0,0 +1,291 @@
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "dtoa"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "fuchsia-zircon"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "fuchsia-zircon-sys"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "getopts"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "itoa"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "quote"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "rand"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "remove_dir_all"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "serde_derive"
+version = "1.0.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "syn 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "itoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "shell32-sys"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "stracciatella"
+version = "0.1.0"
+dependencies = [
+ "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)",
+ "shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "syn"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "tempdir"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "unicode-width"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "unicode-xid"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "user32-sys"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789"
+"checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd"
+"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
+"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
+"checksum getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797"
+"checksum itoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5adb58558dcd1d786b5f0bd15f3226ee23486e24b7b58304b60f64dc68e62606"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)" = "b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum proc-macro2 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "effdb53b25cdad54f8f48843d67398f7ef2e14f12c1b4cb4effc549a6462a4d6"
+"checksum quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e44651a0dc4cdd99f71c83b561e221f714912d11af1a4dff0631f923d53af035"
+"checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5"
+"checksum serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)" = "0c3adf19c07af6d186d91dae8927b83b0553d07ca56cbf7f2f32560455c91920"
+"checksum serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)" = "3525a779832b08693031b8ecfb0de81cd71cfd3812088fafe9a7496789572124"
+"checksum serde_json 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "84b8035cabe9b35878adec8ac5fe03d5f6bc97ff6edd7ccb96b44c1276ba390e"
+"checksum shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c"
+"checksum syn 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2beff8ebc3658f07512a413866875adddd20f4fd47b2a4e6c9da65cd281baaea"
+"checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
+"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
+"checksum user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ef4711d107b21b410a3a974b1204d9accc8b10dad75d8324b5d755de1617d47"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "773ef9dcc5f24b7d850d0ff101e542ff24c3b090a9768e03ff889fdef41f00fd"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
+"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/default.nix
new file mode 100644
index 000000000000..89d75dd837fa
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, cmake, SDL2, boost, fltk, rustPlatform }:
+let
+ version = "0.16.1";
+ src = fetchFromGitHub {
+ owner = "ja2-stracciatella";
+ repo = "ja2-stracciatella";
+ rev = "v${version}";
+ sha256 = "1pyn23syg70kiyfbs3pdlq0ixd2bxhncbamnic43rym3dmd52m29";
+ };
+ lockfile = ./Cargo.lock;
+ libstracciatellaSrc = stdenv.mkDerivation {
+ name = "libstracciatella-${version}-src";
+ src = "${src}/rust";
+ installPhase = ''
+ mkdir -p $out
+ cp -R ./* $out/
+ cp ${lockfile} $out/Cargo.lock
+ '';
+ };
+ libstracciatella = rustPlatform.buildRustPackage {
+ pname = "libstracciatella";
+ inherit version;
+ src = libstracciatellaSrc;
+ cargoSha256 = "15djs4xaz4y1hpfyfqxdgdasxr0b5idy9i5a7c8cmh0jkxjv8bqc";
+ doCheck = false;
+ };
+in
+stdenv.mkDerivation {
+ pname = "ja2-stracciatella";
+ inherit src;
+ inherit version;
+
+ buildInputs = [ cmake SDL2 fltk boost ];
+
+ patches = [
+ ./remove-rust-buildstep.patch
+ ];
+
+ preConfigure = ''
+ sed -i -e 's|rust-stracciatella|${libstracciatella}/lib/libstracciatella.so|g' CMakeLists.txt
+ cmakeFlagsArray+=("-DEXTRA_DATA_DIR=$out/share/ja2")
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = {
+ description = "Jagged Alliance 2, with community fixes";
+ license = "SFI Source Code license agreement";
+ homepage = "https://ja2-stracciatella.github.io/";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/remove-rust-buildstep.patch b/infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/remove-rust-buildstep.patch
new file mode 100644
index 000000000000..b86589fc6716
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ja2-stracciatella/remove-rust-buildstep.patch
@@ -0,0 +1,21 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f354370e0..c9fa23c6d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -159,7 +159,6 @@ add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/externalized")
+ add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/game")
+ add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/sgp")
+ add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/slog")
+-add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/rust")
+ add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/dependencies/lib-smacker")
+
+ if(BUILD_LAUNCHER)
+@@ -235,8 +234,6 @@ copy_assets_dir_to_ja2_binary_after_build("externalized")
+ copy_assets_dir_to_ja2_binary_after_build("unittests")
+ copy_assets_dir_to_ja2_binary_after_build("mods")
+
+-get_property(STRACCIATELLA_SHARED_LIB TARGET rust-stracciatella PROPERTY IMPORTED_LOCATION)
+-
+ if (MSVC OR APPLE)
+ add_custom_command(TARGET ${JA2_BINARY} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy
diff --git a/infra/libkookie/nixpkgs/pkgs/games/julius/default.nix b/infra/libkookie/nixpkgs/pkgs/games/julius/default.nix
new file mode 100644
index 000000000000..435db5772ba0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/julius/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, cmake, SDL2, SDL2_mixer, libpng }:
+
+stdenv.mkDerivation rec {
+ pname = "julius";
+ version = "1.5.1";
+
+ src = fetchFromGitHub {
+ owner = "bvschaik";
+ repo = "julius";
+ rev = "v${version}";
+ sha256 = "10d6py1cmkq8lnb5h3w8rdpp4fmpd1wgqkgiabdghqxi7b2s0g4b";
+ };
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ SDL2 SDL2_mixer libpng ];
+
+ meta = with stdenv.lib; {
+ description = "An open source re-implementation of Caesar III";
+ homepage = "https://github.com/bvschaik/julius";
+ license = licenses.agpl3;
+ platforms = platforms.all;
+ broken = stdenv.isDarwin;
+ maintainers = with maintainers; [ Thra11 ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/katago/default.nix b/infra/libkookie/nixpkgs/pkgs/games/katago/default.nix
new file mode 100644
index 000000000000..0f9e4b8d67a8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/katago/default.nix
@@ -0,0 +1,115 @@
+{ stdenv
+, gcc8Stdenv
+, lib
+, libzip
+, boost
+, cmake
+, makeWrapper
+, fetchFromGitHub
+, fetchpatch
+, cudnn ? null
+, cudatoolkit ? null
+, mesa ? null
+, opencl-headers ? null
+, ocl-icd ? null
+, gperftools ? null
+, eigen ? null
+, enableAVX2 ? false
+, enableBigBoards ? false
+, enableCuda ? false
+, enableGPU ? true
+, enableTcmalloc ? true}:
+
+assert !enableGPU -> (
+ eigen != null &&
+ !enableCuda);
+
+assert enableCuda -> (
+ mesa != null &&
+ cudatoolkit != null &&
+ cudnn != null);
+
+assert !enableCuda -> (
+ !enableGPU || (
+ opencl-headers != null &&
+ ocl-icd != null));
+
+assert enableTcmalloc -> (
+ gperftools != null);
+
+let
+ env = if enableCuda
+ then gcc8Stdenv
+ else stdenv;
+
+in env.mkDerivation rec {
+ pname = "katago";
+ version = "1.6.1";
+
+ src = fetchFromGitHub {
+ owner = "lightvector";
+ repo = "katago";
+ rev = "v${version}";
+ sha256 = "030ff9prnvpadgcb4x4hx6b6ggg10bwqcj8vd8nwrdz9sjq67yf7";
+ };
+
+ nativeBuildInputs = [
+ cmake
+ makeWrapper
+ ];
+
+ buildInputs = [
+ libzip
+ boost
+ ] ++ lib.optionals (!enableGPU) [
+ eigen
+ ] ++ lib.optionals (enableGPU && enableCuda) [
+ cudnn
+ mesa.drivers
+ ] ++ lib.optionals (enableGPU && !enableCuda) [
+ opencl-headers
+ ocl-icd
+ ] ++ lib.optionals enableTcmalloc [
+ gperftools
+ ];
+
+ cmakeFlags = [
+ "-DNO_GIT_REVISION=ON"
+ ] ++ lib.optionals (!enableGPU) [
+ "-DUSE_BACKEND=EIGEN"
+ ] ++ lib.optionals enableAVX2 [
+ "-DUSE_AVX2=ON"
+ ] ++ lib.optionals (enableGPU && enableCuda) [
+ "-DUSE_BACKEND=CUDA"
+ ] ++ lib.optionals (enableGPU && !enableCuda) [
+ "-DUSE_BACKEND=OPENCL"
+ ] ++ lib.optionals enableTcmalloc [
+ "-DUSE_TCMALLOC=ON"
+ ] ++ lib.optionals enableBigBoards [
+ "-DUSE_BIGGER_BOARDS_EXPENSIVE=ON"
+ ];
+
+ preConfigure = ''
+ cd cpp/
+ '' + lib.optionalString enableCuda ''
+ export CUDA_PATH="${cudatoolkit}"
+ export EXTRA_LDFLAGS="-L/run/opengl-driver/lib"
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin; cp katago $out/bin;
+ '' + lib.optionalString enableCuda ''
+ wrapProgram $out/bin/katago \
+ --prefix LD_LIBRARY_PATH : "/run/opengl-driver/lib"
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Go engine modeled after AlphaGo Zero";
+ homepage = "https://github.com/lightvector/katago";
+ license = licenses.mit;
+ maintainers = [ maintainers.omnipotententity ];
+ platforms = [ "x86_64-linux" ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/keen4/builder.sh b/infra/libkookie/nixpkgs/pkgs/games/keen4/builder.sh
new file mode 100644
index 000000000000..b5864b8392f5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/keen4/builder.sh
@@ -0,0 +1,31 @@
+source $stdenv/setup
+
+mkdir -p $out/share/keen4
+unzip -j $dist -d $out/share/keen4
+
+mkdir -p $out/bin
+cat > $out/bin/keen4 <<EOF
+#! $SHELL -e
+if test -z "\$HOME"; then
+ echo "HOME directory not set"
+ exit 1
+fi
+
+# Game wants to write in the current directory, but of course we can't
+# let it write in the Nix store. So create symlinks to the game files
+# in ~/.keen4 and execute game from there.
+mkdir -p \$HOME/.keen4
+cd \$HOME/.keen4
+
+ln -sf $out/share/keen4/* .
+
+$dosbox/bin/dosbox ./KEEN4E.EXE -fullscreen -exit || true
+
+# Cleanup the symlinks.
+for i in *; do
+ if test -L "\$i"; then
+ rm "\$i"
+ fi
+done
+EOF
+chmod +x $out/bin/keen4
diff --git a/infra/libkookie/nixpkgs/pkgs/games/keen4/default.nix b/infra/libkookie/nixpkgs/pkgs/games/keen4/default.nix
new file mode 100644
index 000000000000..c91cc486118f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/keen4/default.nix
@@ -0,0 +1,21 @@
+{ lib, stdenv, fetchurl, dosbox, unzip }:
+
+stdenv.mkDerivation {
+ name = "keen4";
+ builder = ./builder.sh;
+
+ dist = fetchurl {
+ url = "http://tarballs.nixos.org/keen4.zip";
+ sha256 = "12rnc9ksl7v6l8wsxvr26ylkafzq80dbsa7yafzw9pqc8pafkhx1";
+ };
+
+ buildInputs = [unzip];
+
+ inherit dosbox;
+
+ meta = {
+ description = "Commander Keen Episode 4: Secret of the Oracle";
+ license = lib.licenses.unfree;
+ maintainers = [ lib.maintainers.eelco ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/keeperrl/default.nix b/infra/libkookie/nixpkgs/pkgs/games/keeperrl/default.nix
new file mode 100644
index 000000000000..68426a4aedfd
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/keeperrl/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, fetchFromGitHub, requireFile
+, openal, curl, libogg, libvorbis
+, SDL2, SDL2_image, zlib
+, unfree_assets ? false }:
+
+stdenv.mkDerivation rec {
+ pname = "keeperrl";
+ version = "alpha28";
+
+ free-src = fetchFromGitHub {
+ owner = "miki151";
+ repo = "keeperrl";
+ rev = version;
+ sha256 = "0isj8ijn5a89m2r5cxk4lcsq0cydx7c0h87vgr8v5cndm3rd27cy";
+ };
+
+ assets = if unfree_assets then requireFile rec {
+ name = "keeperrl_data_${version}.tar.gz";
+ message = ''
+ This nix expression requires that the KeeperRL art assets are already
+ part of the store. These can be obtained from a purchased copy of the game
+ and found in the "data" directory. Make a tar archive of this directory
+ with
+
+ "tar czf ${name} data"
+
+ Then add this archive to the nix store with
+
+ "nix-prefetch-url file://\$PWD/${name}".
+ '';
+ sha256 = "0115pxdzdyma2vicxgr0j21pp82gxdyrlj090s8ihp0b50f0nk53";
+ } else null;
+
+ sourceRoot = "source";
+
+ srcs = [ free-src ] ++ stdenv.lib.optional unfree_assets assets;
+
+ postUnpack = stdenv.lib.optionalString unfree_assets ''
+ mv data $sourceRoot
+ '';
+
+ buildInputs = [
+ openal curl libogg libvorbis SDL2 SDL2_image zlib
+ ];
+
+ NIX_CFLAGS_COMPILE = [
+ "-I${SDL2.dev}/include/SDL2"
+ ];
+
+ enableParallelBuilding = true;
+
+ makeFlags = [ "OPT=true"
+ "RELEASE=true"
+ "DATA_DIR=$(out)/share"
+ "ENABLE_LOCAL_USER_DIR=true"
+ ];
+
+ installPhase = ''
+ install -Dm755 keeper $out/bin/keeper
+ install -Dm755 appconfig.txt $out/share/appconfig.txt
+
+ cp -r data_free $out/share
+ cp -r data_contrib $out/share
+ ${stdenv.lib.optionalString unfree_assets "cp -r data $out/share"}
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A dungeon management rogue-like";
+ homepage = "https://keeperrl.com/";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ chattered ];
+ # TODO: Add OS X
+ platforms = with platforms; [ "i686-linux" "x86_64-linux" ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/klavaro/default.nix b/infra/libkookie/nixpkgs/pkgs/games/klavaro/default.nix
new file mode 100644
index 000000000000..ac2c787d3ff2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/klavaro/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, fetchurl
+, makeWrapper
+, curl
+, file
+, gtk3
+, intltool
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+ pname = "klavaro";
+ version = "3.11";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/klavaro/${pname}-${version}.tar.bz2";
+ sha256 = "1rkxaqb62w4mv86fcnmr32lq6y0h4hh92wmsy5ddb9a8jnzx6r7w";
+ };
+
+ nativeBuildInputs = [ intltool makeWrapper pkgconfig ];
+ buildInputs = [ curl gtk3 ];
+
+ postInstall = ''
+ wrapProgram $out/bin/klavaro \
+ --prefix LD_LIBRARY_PATH : $out/lib
+ '';
+
+ # Fixes /usr/bin/file: No such file or directory
+ preConfigure = ''
+ substituteInPlace configure \
+ --replace "/usr/bin/file" "${file}/bin/file"
+ '';
+
+ # Hack to avoid TMPDIR in RPATHs.
+ preFixup = ''rm -rf "$(pwd)" '';
+
+ meta = with stdenv.lib; {
+ description = "Free touch typing tutor program";
+ homepage = "http://klavaro.sourceforge.net/";
+ changelog = "https://sourceforge.net/p/klavaro/code/HEAD/tree/trunk/ChangeLog";
+ license = licenses.gpl3Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ mimame davidak ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/kobodeluxe/default.nix b/infra/libkookie/nixpkgs/pkgs/games/kobodeluxe/default.nix
new file mode 100644
index 000000000000..5620cee185d8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/kobodeluxe/default.nix
@@ -0,0 +1,24 @@
+{stdenv, fetchurl, SDL, SDL_image, libGLU, libGL} :
+
+stdenv.mkDerivation {
+ name = "kobodeluxe-0.5.1";
+ src = fetchurl {
+ url = "http://olofson.net/kobodl/download/KoboDeluxe-0.5.1.tar.bz2";
+ sha256 = "0f7b910a399d985437564af8c5d81d6dcf22b96b26b01488d72baa6a6fdb5c2c";
+ };
+
+ buildInputs = [ SDL SDL_image libGLU libGL ];
+
+ prePatch = ''
+ sed -e 's/char \*tok/const char \*tok/' -i graphics/window.cpp
+ '';
+
+ patches = [ ./glibc29.patch ];
+
+ meta = {
+ homepage = "http://olofson.net/kobodl/";
+ description = "Enhanced version of Akira Higuchi's game XKobo for Un*x systems with X11";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/kobodeluxe/glibc29.patch b/infra/libkookie/nixpkgs/pkgs/games/kobodeluxe/glibc29.patch
new file mode 100644
index 000000000000..7a9ef355a821
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/kobodeluxe/glibc29.patch
@@ -0,0 +1,83 @@
+--- a/enemies.h
++++ b/enemies.h
+@@ -70,9 +70,9 @@
+ extern const enemy_kind bomb2;
+ extern const enemy_kind bombdeto;
+ extern const enemy_kind cannon;
+-extern const enemy_kind pipe1;
++extern const enemy_kind pipeone;
+ extern const enemy_kind core;
+-extern const enemy_kind pipe2;
++extern const enemy_kind pipetwo;
+ extern const enemy_kind rock;
+ extern const enemy_kind ring;
+ extern const enemy_kind enemy_m1;
+@@ -430,7 +430,7 @@
+
+ inline int _enemy::is_pipe()
+ {
+- return ((_state != notuse) && ((ek == &pipe1) || (ek == &pipe2)));
++ return ((_state != notuse) && ((ek == &pipeone) || (ek == &pipetwo)));
+ }
+
+
+--- a/enemy.cpp
++++ b/enemy.cpp
+@@ -713,7 +713,7 @@
+
+ void _enemy::kill_cannon()
+ {
+- enemies.make(&pipe1, CS2PIXEL(x), CS2PIXEL(y));
++ enemies.make(&pipeone, CS2PIXEL(x), CS2PIXEL(y));
+ sound.g_base_node_explo(x, y);
+ release();
+ }
+@@ -755,10 +755,10 @@
+
+ void _enemy::kill_core()
+ {
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
+ enemies.make(&explosion4, CS2PIXEL(x), CS2PIXEL(y));
+ sound.g_base_core_explo(x, y);
+ release();
+@@ -851,7 +851,7 @@
+ screen.set_map(x1, y1, m ^ a);
+ release();
+ }
+-const enemy_kind pipe1 = {
++const enemy_kind pipeone = {
+ 0,
+ &_enemy::make_pipe1,
+ &_enemy::move_pipe1,
+@@ -978,19 +978,19 @@
+ }
+ p ^= a;
+ if(p & U_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
+ if(p & R_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
+ if(p & D_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
+ if(p & L_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
+ manage.add_score(10);
+ release();
+ }
+
+
+-const enemy_kind pipe2 = {
++const enemy_kind pipetwo = {
+ 0,
+ &_enemy::make_pipe2,
+ &_enemy::move_pipe2,
diff --git a/infra/libkookie/nixpkgs/pkgs/games/koboredux/default.nix b/infra/libkookie/nixpkgs/pkgs/games/koboredux/default.nix
new file mode 100644
index 000000000000..746e9d6bbef0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/koboredux/default.nix
@@ -0,0 +1,87 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+, requireFile
+, cmake
+, pkg-config
+, SDL2
+, SDL2_image
+, audiality2
+, useProprietaryAssets ? true
+}:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+ pname = "koboredux";
+ version = "0.7.5.1";
+
+ src =
+ [(fetchFromGitHub {
+ owner = "olofson";
+ repo = "koboredux";
+ rev = "v${version}";
+ sha256 = "09h9r65z8bar2z89s09j6px0gdq355kjf38rmd85xb2aqwnm6xig";
+ })]
+ ++
+ (optional useProprietaryAssets (requireFile {
+ name = "koboredux-${version}-Linux.tar.bz2";
+ sha256 = "11bmicx9i11m4c3dp19jsql0zy4rjf5a28x4hd2wl8h3bf8cdgav";
+ message = ''
+ Please purchase the game on https://olofson.itch.io/kobo-redux
+ and download the Linux build.
+
+ Once you have downloaded the file, please use the following command
+ and re-run the installation:
+
+ nix-prefetch-url file://\$PWD/koboredux-${version}-Linux.tar.bz2
+
+ Alternatively, install the "koboredux-free" package, which replaces the
+ proprietary assets with a placeholder theme.
+ '';
+ }));
+
+ sourceRoot = "source"; # needed when we have the assets source
+
+ # Fix clang build
+ patches = [(fetchpatch {
+ url = "https://github.com/olofson/koboredux/commit/cf92b8a61d002ccaa9fbcda7a96dab08a681dee4.patch";
+ sha256 = "0dwhvis7ghf3mgzjd2rwn8hk3ndlgfwwcqaq581yc5rwd73v6vw4";
+ })];
+
+ postPatch = optionalString useProprietaryAssets ''
+ cp -r ../koboredux-${version}-Linux/sfx/redux data/sfx/
+ cp -r ../koboredux-${version}-Linux/gfx/redux data/gfx/
+ cp -r ../koboredux-${version}-Linux/gfx/redux_fullscreen data/gfx/
+ '';
+
+ nativeBuildInputs = [
+ cmake
+ pkg-config
+ ];
+
+ buildInputs = [
+ SDL2
+ SDL2_image
+ audiality2
+ ];
+
+ meta = {
+ description = "A frantic 80's style 2D shooter, similar to XKobo and Kobo Deluxe" +
+ optionalString (!useProprietaryAssets) " (built without proprietary assets)";
+ longDescription = ''
+ Kobo Redux is a frantic 80's style 2D shooter, inspired by the look and
+ feel of 90's arcade cabinets. The gameplay is fast and unforgiving,
+ although with less of the frustrating quirkiness of the actual games
+ of the 80's. A true challenge in the spirit of the arcade era!
+ '' + optionalString (!useProprietaryAssets) ''
+
+ This version replaces the official proprietary assets with placeholders.
+ For the full experience, consider installing "koboredux" instead.
+ '';
+ homepage = "https://olofson.itch.io/kobo-redux";
+ license = with licenses; if useProprietaryAssets then unfree else gpl2;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ fgaz ];
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/lbreakout2/default.nix b/infra/libkookie/nixpkgs/pkgs/games/lbreakout2/default.nix
new file mode 100644
index 000000000000..ddd7e454efba
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/lbreakout2/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, SDL, SDL_mixer, zlib, libpng, libintl }:
+
+stdenv.mkDerivation rec {
+ pname = "lbreakout2";
+ version = "2.6.5";
+ buildInputs = [ SDL SDL_mixer zlib libpng libintl ];
+
+ src = fetchurl {
+ url = "mirror://sourceforge/lgames/${pname}-${version}.tar.gz";
+ sha256 = "0vwdlyvh7c4y80q5vp7fyfpzbqk9lq3w8pvavi139njkalbxc14i";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Breakout clone from the LGames series";
+ homepage = "http://lgames.sourceforge.net/LBreakout2/";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.ciil ];
+ platforms = platforms.unix;
+ hydraPlatforms = stdenv.lib.platforms.linux; # sdl-config times out on darwin
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/leela-zero/default.nix b/infra/libkookie/nixpkgs/pkgs/games/leela-zero/default.nix
new file mode 100644
index 000000000000..7ade06393bb6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/leela-zero/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, cmake, boost
+, opencl-headers, ocl-icd, qtbase , zlib }:
+
+stdenv.mkDerivation rec {
+ pname = "leela-zero";
+ version = "0.17";
+
+ src = fetchFromGitHub {
+ owner = "gcp";
+ repo = "leela-zero";
+ rev = "v${version}";
+ sha256 = "1k04ld1ysabxb8ivci3ji5by9vb3yvnflkf2fscs1x0bp7d6j101";
+ fetchSubmodules = true;
+ };
+
+ buildInputs = [ boost opencl-headers ocl-icd qtbase zlib ];
+
+ nativeBuildInputs = [ cmake ];
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Go engine modeled after AlphaGo Zero";
+ homepage = "https://github.com/gcp/leela-zero";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.averelld maintainers.omnipotententity ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/left4gore/default.nix b/infra/libkookie/nixpkgs/pkgs/games/left4gore/default.nix
new file mode 100644
index 000000000000..597f7da2b3d2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/left4gore/default.nix
@@ -0,0 +1,48 @@
+{ stdenvNoCC, lib, fetchurl, buildFHSUserEnv }:
+
+let
+ version = "2.3";
+
+ # Unwrapped package, for putting into the FHS env
+ left4gore-unwrapped = stdenvNoCC.mkDerivation {
+ pname = "left4gore-unwrapped";
+ inherit version;
+
+ src = fetchurl {
+ url = "http://www.left4gore.com/dist/left4gore-${version}-linux.tar.gz";
+ sha256 = "1n57nh32ybn6kirn8djh0nsjx6m84c0jfi1x8r4w2qr0qky3z7p0";
+ };
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp left4gore $out/bin
+ '';
+ };
+
+ # FHS env, as patchelf will not work
+ env = buildFHSUserEnv {
+ name = "left4gore-env-${version}";
+ targetPkgs = _: [ left4gore-unwrapped ];
+ runScript = "left4gore";
+ };
+
+in stdenvNoCC.mkDerivation {
+ pname = "left4gore";
+ inherit version;
+
+ dontUnpack = true;
+ dontConfigure = true;
+ dontBuild = true;
+
+ installPhase = ''
+ mkdir -p $out/bin
+ ln -s ${env}/bin/* $out/bin/left4gore
+ '';
+
+ meta = with lib; {
+ homepage = "http://www.left4gore.com";
+ description = "Memory patcher which adds the gore back into Left 4 Dead 2";
+ license = licenses.unfree; # Probably the best choice
+ maintainers = with maintainers; [ das_j ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/legendary-gl/default.nix b/infra/libkookie/nixpkgs/pkgs/games/legendary-gl/default.nix
new file mode 100644
index 000000000000..edf8b853c3c6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/legendary-gl/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, fetchFromGitHub
+, buildPythonApplication
+, pythonOlder
+, requests
+}:
+
+buildPythonApplication rec {
+ pname = "legendary-gl"; # Name in pypi
+ version = "0.20.1";
+
+ src = fetchFromGitHub {
+ owner = "derrod";
+ repo = "legendary";
+ rev = version;
+ sha256 = "0kdrhdvh9gxq1zinh5w852f5fjls9902pcrkhkhm2c0vvq7jfass";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ disabled = pythonOlder "3.8";
+
+ meta = with lib; {
+ description = "A free and open-source Epic Games Launcher alternative";
+ homepage = "https://github.com/derrod/legendary";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ wchresta ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/lgogdownloader/default.nix b/infra/libkookie/nixpkgs/pkgs/games/lgogdownloader/default.nix
new file mode 100644
index 000000000000..6fba4da3a0e4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/lgogdownloader/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, pkgconfig
+, curl
+, boost
+, liboauth
+, jsoncpp
+, htmlcxx
+, rhash
+, tinyxml-2
+, help2man
+}:
+
+stdenv.mkDerivation rec {
+ pname = "lgogdownloader";
+ version = "3.7";
+
+ src = fetchFromGitHub {
+ owner = "Sude-";
+ repo = "lgogdownloader";
+ rev = "v${version}";
+ sha256 = "sha256-3xFlFokqdD1Nstu7TSUCaHUxvSodIb12QNVjmNgn9gs=";
+ };
+
+ nativeBuildInputs = [ cmake pkgconfig help2man ];
+
+ buildInputs = [ boost curl htmlcxx jsoncpp liboauth rhash tinyxml-2 ];
+
+ meta = with stdenv.lib; {
+ description = "Unofficial downloader to GOG.com for Linux users. It uses the same API as the official GOGDownloader";
+ homepage = "https://github.com/Sude-/lgogdownloader";
+ license = licenses.wtfpl;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/liberal-crime-squad/default.nix b/infra/libkookie/nixpkgs/pkgs/games/liberal-crime-squad/default.nix
new file mode 100644
index 000000000000..25d8bf3eae53
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/liberal-crime-squad/default.nix
@@ -0,0 +1,29 @@
+{ fetchFromGitHub, stdenv, autoreconfHook, libiconv, ncurses, SDL2, SDL2_mixer }:
+
+stdenv.mkDerivation {
+ version = "2016-07-06";
+ pname = "liberal-crime-squad";
+
+ src = fetchFromGitHub {
+ owner = "Kamal-Sadek";
+ repo = "Liberal-Crime-Squad";
+ rev = "2ace84e";
+ sha256 = "0mcldn8ivlfyjfx22ygzcbbw3bzl0j6vi3g6jyj8jmcrni61mgmb";
+ };
+
+ nativeBuildInputs = [ autoreconfHook ];
+ buildInputs = [ libiconv ncurses SDL2 SDL2_mixer ];
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "A humorous politically themed ncurses game";
+ longDescription = ''
+ Welcome to Liberal Crime Squad! The Conservatives have taken the Executive, Legislative, and Judicial branches of government. Over time, the Liberal laws of this nation will erode and turn the country into a BACKWOODS YET CORPORATE NIGHTMARE. To prevent this from happening, the Liberal Crime Squad was established. The mood of the country is shifting, and we need to turn things around. Go out on the streets and indoctrinate Conservative automatons. That is, let them see their True Liberal Nature. Then arm them and send them forth to Stop Evil.
+ '';
+ homepage = "https://github.com/Kamal-Sadek/Liberal-Crime-Squad";
+ maintainers = [ maintainers.rardiol ];
+ license = licenses.gpl2;
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/liberation-circuit/default.nix b/infra/libkookie/nixpkgs/pkgs/games/liberation-circuit/default.nix
new file mode 100644
index 000000000000..38d0a76139a1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/liberation-circuit/default.nix
@@ -0,0 +1,23 @@
+{ lib, stdenv, fetchFromGitHub,
+ allegro5, gcc, gnumake, mesa_glu, pkg-config, ... }:
+
+stdenv.mkDerivation rec {
+ pname = "liberation-circuit";
+ version = "1.3";
+ src = fetchFromGitHub {
+ owner = "melvinzhang";
+ repo = "liberation-circuit";
+ rev = "v${version}";
+ sha256 = "028h2154vi2x0i5xc7mlzd9v5shxiysxazimxsxr5qkh8b0g82q4";
+ };
+
+ nativeBuildInputs = [ allegro5 gcc gnumake mesa_glu pkg-config ];
+
+ hardeningDisable = [ "format" ];
+
+ installPhase = ''
+ mkdir -p $out/{bin,share}
+ cp -r bin/* $out/share/
+ ln -s $out/share/lc $out/bin/lc
+ '';
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/lincity/default.nix b/infra/libkookie/nixpkgs/pkgs/games/lincity/default.nix
new file mode 100644
index 000000000000..574b8ead0950
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/lincity/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, fetchpatch, libX11, libXext, xorgproto, libICE, libSM, libpng12, zlib }:
+
+stdenv.mkDerivation rec {
+ pname = "lincity";
+ version = "1.13.1";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/lincity/${pname}-${version}.tar.gz";
+ sha256 = "0p81wl7labyfb6rgp0hi42l2akn3n7r2bnxal1wyvjylzw8vsk3v";
+ };
+
+ buildInputs = [
+ libICE libpng12 libSM libX11 libXext
+ xorgproto zlib
+ ];
+
+ patches = [
+ (fetchpatch {
+ url = "https://sources.debian.net/data/main/l/lincity/1.13.1-13/debian/patches/extern-inline-functions-777982";
+ sha256 = "06dp3zwk0z5wr5a3xaaj2my75vcjcy98vc22hsag7ggd9jwrkcp0";
+ })
+ (fetchpatch {
+ url = "https://sources.debian.net/data/main/l/lincity/1.13.1-13/debian/patches/clang-ftbfs-757859";
+ sha256 = "098rnywcsyc0m11x4a5m3dza8i0jmfh6pacfgma1vvxpsfkb6ngp";
+ })
+ ];
+
+ meta = with stdenv.lib; {
+ description = "City simulation game";
+ license = licenses.gpl2Plus;
+ homepage = "https://sourceforge.net/projects/lincity";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/lincity/ng.nix b/infra/libkookie/nixpkgs/pkgs/games/lincity/ng.nix
new file mode 100644
index 000000000000..67f15be1ed3e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/lincity/ng.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, jam, pkgconfig
+, zlib, libxml2, libxslt, xorgproto, libX11, libGLU, libGL, SDL
+, SDL_mixer, SDL_image, SDL_ttf, SDL_gfx, physfs
+}:
+
+stdenv.mkDerivation {
+ pname = "lincity-ng";
+ version = "2.9beta.20170715";
+
+ src = fetchFromGitHub {
+ owner = "lincity-ng";
+ repo = "lincity-ng";
+ rev = "0c19714b811225238f310633e59f428934185e6b";
+ sha256 = "1gaj9fq97zmb0jsdw4rzrw34pimkmkwbfqps0glpqij4w3srz5f3";
+ };
+
+ hardeningDisable = [ "format" ];
+
+ nativeBuildInputs = [
+ autoreconfHook jam pkgconfig
+ ];
+
+ buildInputs = [
+ zlib libxml2 libxslt xorgproto libX11 libGLU libGL SDL SDL_mixer SDL_image
+ SDL_ttf SDL_gfx physfs
+ ];
+
+ autoreconfPhase = ''
+ ./autogen.sh
+ '';
+
+ buildPhase = ''
+ runHook preBuild
+
+ AR='ar r' jam -j $NIX_BUILD_CORES
+
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ touch CREDITS
+ AR='ar r' jam install
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ description = "City building game";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ raskin ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/liquidwar/5.nix b/infra/libkookie/nixpkgs/pkgs/games/liquidwar/5.nix
new file mode 100644
index 000000000000..3d8cf3840f8b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/liquidwar/5.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, allegro }:
+stdenv.mkDerivation rec {
+ version = "5.6.5";
+ pname = "liquidwar5";
+ src = fetchurl {
+ url = "http://www.ufoot.org/download/liquidwar/v5/${version}/liquidwar-${version}.tar.gz";
+ sha256 = "2tCqhN1BbK0FVCHtm0DfOe+ueNPfdZwFg8ZMVPfy/18=";
+ };
+
+ buildInputs = [ allegro ];
+
+ configureFlags = stdenv.lib.optional stdenv.isx86_64 "--disable-asm";
+
+ hardeningDisable = [ "format" ];
+
+ NIX_CFLAGS_COMPILE = [ "-lm" ];
+
+ meta = with stdenv.lib; {
+ description = ''The classic version of a quick tactics game LiquidWar'';
+ maintainers = [ maintainers.raskin ];
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/liquidwar/default.nix b/infra/libkookie/nixpkgs/pkgs/games/liquidwar/default.nix
new file mode 100644
index 000000000000..341d077879c2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/liquidwar/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, xorgproto, libX11, libXrender
+, gmp, libjpeg, libpng
+, expat, gettext, perl, guile
+, SDL, SDL_image, SDL_mixer, SDL_ttf
+, curl, sqlite, libtool, readline
+, libogg, libvorbis, libcaca, csound, cunit } :
+
+stdenv.mkDerivation rec {
+ pname = "liquidwar6";
+ version = "0.6.3902";
+
+ src = fetchurl {
+ url = "mirror://gnu/liquidwar6/${pname}-${version}.tar.gz";
+ sha256 = "1976nnl83d8wspjhb5d5ivdvdxgb8lp34wp54jal60z4zad581fn";
+ };
+
+ buildInputs = [
+ xorgproto libX11 gmp guile
+ libjpeg libpng
+ expat gettext perl
+ SDL SDL_image SDL_mixer SDL_ttf
+ curl sqlite
+ libogg libvorbis csound
+ libXrender libcaca cunit
+ libtool readline
+ ];
+
+ hardeningDisable = [ "format" ];
+
+ NIX_CFLAGS_COMPILE =
+ "-Wno-error=deprecated-declarations" +
+ # Avoid GL_GLEXT_VERSION double definition
+ " -DNO_SDL_GLEXT"
+ ;
+
+ # To avoid problems finding SDL_types.h.
+ configureFlags = [ "CFLAGS=-I${SDL.dev}/include/SDL" ];
+
+ meta = with stdenv.lib; {
+ description = "Quick tactics game";
+ homepage = "https://www.gnu.org/software/liquidwar6/";
+ maintainers = [ maintainers.raskin ];
+ license = licenses.gpl3Plus;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ltris/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ltris/default.nix
new file mode 100644
index 000000000000..0ea4143bc3d2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ltris/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, SDL, SDL_mixer }:
+
+stdenv.mkDerivation rec {
+ pname = "ltris";
+ version = "1.0.19";
+ buildInputs = [ SDL SDL_mixer ];
+
+ src = fetchurl {
+ url = "mirror://sourceforge/lgames/${pname}-${version}.tar.gz";
+ sha256 = "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg";
+ };
+
+ patchPhase = "patch -p0 < ${./gcc5_compliance.diff}";
+
+ meta = with stdenv.lib; {
+ description = "Tetris clone from the LGames series";
+ homepage = "http://lgames.sourceforge.net/LBreakout2/";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.ciil ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ltris/gcc5_compliance.diff b/infra/libkookie/nixpkgs/pkgs/games/ltris/gcc5_compliance.diff
new file mode 100644
index 000000000000..bf53fcf8467b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ltris/gcc5_compliance.diff
@@ -0,0 +1,299 @@
+Index: ChangeLog
+===================================================================
+--- ChangeLog (revision 163)
++++ ChangeLog (revision 164)
+@@ -1,3 +1,5 @@
++- removed all inline keywords to work with GCC 5 (2015/05/16 MS)
++
+ 1.0.19:
+ - removed link to lib math as not needed (2013/10/29 MS)
+ - reset key states when unpausing to prevent unwanted movement (2013/10/29 MS)
+Index: src/bowl.c
+===================================================================
+--- src/bowl.c (revision 163)
++++ src/bowl.c (revision 164)
+@@ -333,7 +333,7 @@
+ Set a tile contents and pixel contents.
+ ====================================================================
+ */
+-inline void bowl_set_tile( Bowl *bowl, int x, int y, int tile_id )
++void bowl_set_tile( Bowl *bowl, int x, int y, int tile_id )
+ {
+ int i, j = y * bowl->block_size;
+ bowl->contents[x][y] = tile_id;
+Index: src/sdl.c
+===================================================================
+--- src/sdl.c (revision 163)
++++ src/sdl.c (revision 164)
+@@ -244,7 +244,7 @@
+ #endif
+
+ /* return full path of bitmap */
+-inline void get_full_bmp_path( char *full_path, char *file_name )
++void get_full_bmp_path( char *full_path, char *file_name )
+ {
+ sprintf(full_path, "%s/gfx/%s", SRC_DIR, file_name );
+ }
+@@ -330,7 +330,7 @@
+ /*
+ lock surface
+ */
+-inline void lock_surf(SDL_Surface *sur)
++void lock_surf(SDL_Surface *sur)
+ {
+ if (SDL_MUSTLOCK(sur))
+ SDL_LockSurface(sur);
+@@ -339,7 +339,7 @@
+ /*
+ unlock surface
+ */
+-inline void unlock_surf(SDL_Surface *sur)
++void unlock_surf(SDL_Surface *sur)
+ {
+ if (SDL_MUSTLOCK(sur))
+ SDL_UnlockSurface(sur);
+@@ -666,7 +666,7 @@
+ /*
+ lock font surface
+ */
+-inline void lock_font(Font *fnt)
++void lock_font(Font *fnt)
+ {
+ if (SDL_MUSTLOCK(fnt->pic))
+ SDL_LockSurface(fnt->pic);
+@@ -675,7 +675,7 @@
+ /*
+ unlock font surface
+ */
+-inline void unlock_font(Font *fnt)
++void unlock_font(Font *fnt)
+ {
+ if (SDL_MUSTLOCK(fnt->pic))
+ SDL_UnlockSurface(fnt->pic);
+@@ -905,7 +905,7 @@
+ /*
+ update rectangle (0,0,0,0)->fullscreen
+ */
+-inline void refresh_screen(int x, int y, int w, int h)
++void refresh_screen(int x, int y, int w, int h)
+ {
+ SDL_UpdateRect(sdl.screen, x, y, w, h);
+ }
+@@ -1055,7 +1055,7 @@
+ /*
+ lock surface
+ */
+-inline void lock_screen()
++void lock_screen()
+ {
+ if (SDL_MUSTLOCK(sdl.screen))
+ SDL_LockSurface(sdl.screen);
+@@ -1064,7 +1064,7 @@
+ /*
+ unlock surface
+ */
+-inline void unlock_screen()
++void unlock_screen()
+ {
+ if (SDL_MUSTLOCK(sdl.screen))
+ SDL_UnlockSurface(sdl.screen);
+@@ -1073,7 +1073,7 @@
+ /*
+ flip hardware screens (double buffer)
+ */
+-inline void flip_screen()
++void flip_screen()
+ {
+ SDL_Flip(sdl.screen);
+ }
+@@ -1132,7 +1132,7 @@
+ /*
+ get milliseconds since last call
+ */
+-inline int get_time()
++int get_time()
+ {
+ int ms;
+ cur_time = SDL_GetTicks();
+@@ -1148,7 +1148,7 @@
+ /*
+ reset timer
+ */
+-inline void reset_timer()
++void reset_timer()
+ {
+ last_time = SDL_GetTicks();
+ }
+Index: src/sdl.h
+===================================================================
+--- src/sdl.h (revision 163)
++++ src/sdl.h (revision 164)
+@@ -41,8 +41,8 @@
+ SDL_Surface* load_surf(char *fname, int f);
+ SDL_Surface* create_surf(int w, int h, int f);
+ void free_surf( SDL_Surface **surf );
+-inline void lock_surf(SDL_Surface *sur);
+-inline void unlock_surf(SDL_Surface *sur);
++void lock_surf(SDL_Surface *sur);
++void unlock_surf(SDL_Surface *sur);
+ void blit_surf(void);
+ void alpha_blit_surf(int alpha);
+ void fill_surf(int c);
+@@ -86,8 +86,8 @@
+ Font* load_fixed_font(char *fname, int off, int len, int w);
+ void free_font(Font **sfnt);
+ int write_text(Font *sfnt, SDL_Surface *dest, int x, int y, char *str, int alpha);
+-inline void lock_font(Font *sfnt);
+-inline void unlock_font(Font *sfnt);
++void lock_font(Font *sfnt);
++void unlock_font(Font *sfnt);
+ SDL_Rect last_write_rect(Font *fnt);
+ int text_width(Font *fnt, char *str);
+
+@@ -132,14 +132,14 @@
+ char** get_mode_names( int *count );
+ int set_video_mode( Video_Mode mode );
+ void hardware_cap();
+-inline void refresh_screen( int x, int y, int w, int h );
++void refresh_screen( int x, int y, int w, int h );
+ void refresh_rects();
+ void add_refresh_rect(int x, int y, int w, int h);
+ int wait_for_key();
+ void wait_for_click();
+-inline void lock_screen();
+-inline void unlock_screen();
+-inline void flip_screen();
++void lock_screen();
++void unlock_screen();
++void flip_screen();
+ void fade_screen( int type, int ms );
+ void take_screenshot( int i );
+
+@@ -148,8 +148,8 @@
+ SDL_Cursor* create_cursor( int width, int height, int hot_x, int hot_y, char *source );
+
+ /* timer */
+-inline int get_time();
+-inline void reset_timer();
++int get_time();
++void reset_timer();
+
+ #ifdef __cplusplus
+ };
+Index: src/tools.c
+===================================================================
+--- src/tools.c (revision 163)
++++ src/tools.c (revision 164)
+@@ -23,7 +23,7 @@
+ #include "ltris.h"
+
+ /* compares to strings and returns true if their first strlen(str1) chars are equal */
+-inline int strequal( char *str1, char *str2 )
++int strequal( char *str1, char *str2 )
+ {
+ if ( strlen( str1 ) != strlen( str2 ) ) return 0;
+ return ( !strncmp( str1, str2, strlen( str1 ) ) );
+@@ -30,7 +30,7 @@
+ }
+
+ /* set delay to ms milliseconds */
+-inline void delay_set( Delay *delay, int ms )
++void delay_set( Delay *delay, int ms )
+ {
+ delay->limit = ms;
+ delay->cur = 0;
+@@ -37,13 +37,13 @@
+ }
+
+ /* reset delay ( cur = 0 )*/
+-inline void delay_reset( Delay *delay )
++void delay_reset( Delay *delay )
+ {
+ delay->cur = 0;
+ }
+
+ /* check if times out and reset */
+-inline int delay_timed_out( Delay *delay, int ms )
++int delay_timed_out( Delay *delay, int ms )
+ {
+ delay->cur += ms;
+ if ( delay->cur >= delay->limit ) {
+@@ -56,12 +56,12 @@
+ }
+
+ /* set timer so that we have a time out next call of delay_timed_out() */
+-inline void delay_force_time_out( Delay *delay )
++void delay_force_time_out( Delay *delay )
+ {
+ delay->cur = delay->limit;
+ }
+
+-inline void goto_tile( int *x, int *y, int d )
++void goto_tile( int *x, int *y, int d )
+ {
+ /* 0 -up, clockwise, 5 - left up */
+ switch ( d ) {
+@@ -326,24 +326,24 @@
+ the target value until reached when counter_update() is called.
+ ====================================================================
+ */
+-inline void counter_set( Counter *counter, double value )
++void counter_set( Counter *counter, double value )
+ {
+ counter->value = value;
+ counter->approach = value;
+ }
+-inline void counter_add( Counter *counter, double add )
++void counter_add( Counter *counter, double add )
+ {
+ counter->value += add;
+ }
+-inline double counter_get_approach( Counter counter )
++double counter_get_approach( Counter counter )
+ {
+ return counter.approach;
+ }
+-inline double counter_get( Counter counter )
++double counter_get( Counter counter )
+ {
+ return counter.value;
+ }
+-inline void counter_update( Counter *counter, int ms )
++void counter_update( Counter *counter, int ms )
+ {
+ double change;
+ if ( counter->approach == counter->value ) return;
+Index: src/tools.h
+===================================================================
+--- src/tools.h (revision 163)
++++ src/tools.h (revision 164)
+@@ -33,7 +33,7 @@
+ #define VEC_DIST( vec1, vec2 ) ( sqrt( ( vec1.x - vec2.x ) * ( vec1.x - vec2.x ) + ( vec1.y - vec2.y ) * ( vec1.y - vec2.y ) ) )
+
+ /* compares to strings and returns true if their first strlen(str1) chars are equal */
+-inline int strequal( char *str1, char *str2 );
++int strequal( char *str1, char *str2 );
+
+ /* delete lines */
+ void delete_lines( char **lines, int line_number );
+@@ -45,16 +45,16 @@
+ } Delay;
+
+ /* set delay to ms milliseconds */
+-inline void delay_set( Delay *delay, int ms );
++void delay_set( Delay *delay, int ms );
+
+ /* reset delay ( cur = 0 )*/
+-inline void delay_reset( Delay *delay );
++void delay_reset( Delay *delay );
+
+ /* check if time's out ( add ms milliseconds )and reset */
+-inline int delay_timed_out( Delay *delay, int ms );
++int delay_timed_out( Delay *delay, int ms );
+
+ /* set timer so that we have a time out next call of delay_timed_out() */
+-inline void delay_force_time_out( Delay *delay );
++void delay_force_time_out( Delay *delay );
+
+ /* return distance betwteen to map positions */
+ int get_dist( int x1, int y1, int x2, int y2 );
diff --git a/infra/libkookie/nixpkgs/pkgs/games/lugaru/default.nix b/infra/libkookie/nixpkgs/pkgs/games/lugaru/default.nix
new file mode 100644
index 000000000000..877a3880a00e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/lugaru/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitLab, cmake, openal, pkgconfig, libogg,
+ libvorbis, SDL2, makeWrapper, libpng, libjpeg_turbo, libGLU }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+
+ pname = "lugaru";
+ version = "1.2";
+
+ src = fetchFromGitLab {
+ owner = "osslugaru";
+ repo = "lugaru";
+ rev = version;
+ sha256 = "089rblf8xw3c6dq96vnfla6zl8gxcpcbc1bj5jysfpq63hhdpypz";
+ };
+
+ nativeBuildInputs = [ makeWrapper cmake pkgconfig ];
+
+ buildInputs = [ libGLU openal SDL2 libogg libvorbis libpng libjpeg_turbo ];
+
+ cmakeFlags = [ "-DSYSTEM_INSTALL=ON" ];
+
+ meta = {
+ description = "Third person ninja rabbit fighting game";
+ homepage = "https://osslugaru.gitlab.io";
+ maintainers = [ ];
+ platforms = platforms.linux;
+ license = stdenv.lib.licenses.gpl2Plus;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/lunar-client/default.nix b/infra/libkookie/nixpkgs/pkgs/games/lunar-client/default.nix
new file mode 100644
index 000000000000..f5c0e3faf77a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/lunar-client/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, appimageTools, lib, fetchurl, makeDesktopItem }:
+let
+ name = "lunar-client";
+ version = "2.4.0";
+
+ desktopItem = makeDesktopItem {
+ name = "Lunar Client";
+ exec = "lunar-client";
+ icon = "lunarclient";
+ comment = "Optimized Minecraft Client for 1.7.10 and 1.8.9";
+ desktopName = "Lunar Client";
+ genericName = "Minecraft Client";
+ categories = "Game;";
+ };
+
+ appimageContents = appimageTools.extract {
+ inherit name src;
+ };
+
+ src = fetchurl {
+ url = "https://launcherupdates.lunarclientcdn.com/Lunar%20Client-${version}.AppImage";
+ name = "lunar-client.AppImage";
+ sha256 = "bb85a62127a9b3848cc60796c20ac75655794f1d3cd17cb6b5499bbf19d16019";
+ };
+in appimageTools.wrapType1 rec {
+ inherit name src;
+
+ extraInstallCommands = ''
+ mkdir -p $out/share/applications
+ cp ${desktopItem}/share/applications/* $out/share/applications
+ cp -r ${appimageContents}/usr/share/icons/ $out/share/
+ '';
+
+ meta = with lib; {
+ description = "Minecraft 1.7.10 & 1.8.9 PVP Client";
+ homepage = "https://www.lunarclient.com/";
+ license = with licenses; [ unfree ];
+ maintainers = with maintainers; [ zyansheep ];
+ platforms = [ "x86_64-linux" ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/macopix/default.nix b/infra/libkookie/nixpkgs/pkgs/games/macopix/default.nix
new file mode 100644
index 000000000000..f88b763aaf86
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/macopix/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, gtk, openssl }:
+
+stdenv.mkDerivation rec {
+ name = "macopix-1.7.4";
+
+ src = fetchurl {
+ url = "http://rosegray.sakura.ne.jp/macopix/${name}.tar.bz2";
+ sha256 = "0sgnr0wrw3hglcnsyvipll7icfv69ssmyw584zfhk1rgramlkzyb";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ gtk openssl ];
+
+ preConfigure = ''
+ # Build fails on Linux with windres.
+ export ac_cv_prog_WINDRES=
+ '';
+
+ enableParallelBuilding = true;
+
+ NIX_LDFLAGS = "-lX11";
+
+ meta = {
+ description = "Mascot Constructive Pilot for X";
+ homepage = "http://rosegray.sakura.ne.jp/macopix/index-e.html";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/mar1d/default.nix b/infra/libkookie/nixpkgs/pkgs/games/mar1d/default.nix
new file mode 100644
index 000000000000..9fe99bff2f92
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/mar1d/default.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, libGLU
+, xlibsWrapper
+, xorg
+, xinput_calibrator
+, doxygen
+, libpthreadstubs
+, alsaLib
+, alsaOss
+, libao
+, width ? 30
+, mute ? false
+, effects ? false
+, sensitivity ? 5
+, reverseY ? false
+}:
+
+stdenv.mkDerivation rec {
+ pname = "MAR1D";
+ version = "0.2.0";
+ options = "-w${toString width}"
+ + " -s${toString sensitivity}"
+ + (if mute then " -m" else "")
+ + (if effects then " -f" else "")
+ + (if reverseY then " -r" else "");
+
+ src = fetchFromGitHub {
+ sha256 = "152w5dnlxzv60cl24r5cmrj2q5ar0jiimrmxnp87kf4d2dpbnaq7";
+ rev = "v${version}";
+ repo = "fp_mario";
+ owner = "olynch";
+ };
+
+ buildInputs =
+ [
+ alsaLib
+ alsaOss
+ cmake
+ doxygen
+ libao
+ libpthreadstubs
+ libGLU
+ xlibsWrapper
+ xinput_calibrator
+ xorg.libXrandr
+ xorg.libXi
+ xorg.xinput
+ xorg.libXxf86vm
+ ];
+
+ preConfigure = ''
+ cd src
+ '';
+
+ meta = with stdenv.lib; {
+ description = "First person Super Mario Bros";
+ longDescription = ''
+ The original Super Mario Bros as you've never seen it. Step into Mario's
+ shoes in this first person clone of the classic Mario game. True to the
+ original, however, the game still takes place in a two dimensional world.
+ You must view the world as mario does, as a one dimensional line.
+ '';
+ homepage = "https://github.com/olynch/fp_mario";
+ license = licenses.agpl3;
+ maintainers = with maintainers; [ taeer ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/mari0/default.nix b/infra/libkookie/nixpkgs/pkgs/games/mari0/default.nix
new file mode 100644
index 000000000000..c3fb66208b80
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/mari0/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, zip, love_11, lua, makeWrapper, makeDesktopItem }:
+
+let
+ pname = "mari0";
+ version = "1.6.2";
+
+ desktopItem = makeDesktopItem {
+ name = "mari0";
+ exec = pname;
+ comment = "Crossover between Super Mario Bros. and Portal";
+ desktopName = "mari0";
+ genericName = "mari0";
+ categories = "Game";
+ };
+
+in
+
+stdenv.mkDerivation {
+ inherit pname version;
+
+ src = fetchFromGitHub {
+ owner = "Stabyourself";
+ repo = pname;
+ rev = version;
+ sha256 = "1zqaq4w599scsjvy1rsb21fd2r8j3srx9vym4ir9bh666dp36gxa";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+ buildInputs = [ lua love_11 zip ];
+
+ phases = [ "unpackPhase" "installPhase" ];
+
+ installPhase =
+ ''
+ mkdir -p $out/bin $out/share/games/lovegames $out/share/applications
+ zip -9 -r ${pname}.love ./*
+ mv ${pname}.love $out/share/games/lovegames/${pname}.love
+ makeWrapper ${love_11}/bin/love $out/bin/${pname} --add-flags $out/share/games/lovegames/${pname}.love
+ ln -s ${desktopItem}/share/applications/* $out/share/applications/
+ chmod +x $out/bin/${pname}
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Crossover between Super Mario Bros. and Portal";
+ platforms = platforms.linux;
+ license = licenses.mit;
+ downloadPage = "https://stabyourself.net/mari0/";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/mars/default.nix b/infra/libkookie/nixpkgs/pkgs/games/mars/default.nix
new file mode 100644
index 000000000000..53ffb4e4b2d0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/mars/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchgit, cmake, libGLU, libGL, sfml, fribidi, taglib }:
+stdenv.mkDerivation rec {
+ name = "mars-${version}-${rev}";
+ version = "0.7.5";
+ rev = "c855d04409";
+ src = fetchgit {
+ url = "https://github.com/thelaui/M.A.R.S..git";
+ inherit rev;
+ sha256 = "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh";
+ };
+ buildInputs = [ cmake libGLU libGL sfml fribidi taglib ];
+ patches = [
+ ./unbind_fix.patch
+ ./fix-gluortho2d.patch
+ ];
+ installPhase = ''
+ cd ..
+ find -name '*.svn' -exec rm -rf {} \;
+ mkdir -p "$out/share/mars/"
+ mkdir -p "$out/bin/"
+ cp -rv data resources credits.txt license.txt "$out/share/mars/"
+ cp -v mars "$out/bin/mars.bin"
+ cat << EOF > "$out/bin/mars"
+ #! ${stdenv.shell}
+ cd "$out/share/mars/"
+ exec "$out/bin/mars.bin" "\$@"
+ EOF
+ chmod +x "$out/bin/mars"
+ '';
+ meta = with stdenv.lib; {
+ homepage = "http://mars-game.sourceforge.net/";
+ description = "A game about fighting with ships in a 2D space setting";
+ license = licenses.gpl3Plus;
+ maintainers = [ maintainers.astsmtl ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/mars/fix-gluortho2d.patch b/infra/libkookie/nixpkgs/pkgs/games/mars/fix-gluortho2d.patch
new file mode 100644
index 000000000000..15a5c07060e2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/mars/fix-gluortho2d.patch
@@ -0,0 +1,113 @@
+From 33d5affabf8ff84f2c028b9303c6a9e83cc824ad Mon Sep 17 00:00:00 2001
+From: James Cowgill <james410@cowgill.org.uk>
+Date: Sat, 9 May 2015 01:54:14 +0100
+Subject: [PATCH] Remove dependency on GLU - fixes build with SFML 2.3
+
+---
+ premake4.lua | 8 ++++----
+ src/Shaders/postFX.cpp | 2 +-
+ src/System/window.cpp | 12 ++++++------
+ 3 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/premake4.lua b/premake4.lua
+index 023dddd..5af4495 100755
+--- a/premake4.lua
++++ b/premake4.lua
+@@ -11,11 +11,11 @@ project "mars"
+ defines { "NDEBUG" }
+ flags { "Optimize" }
+ if os.get() == "windows" then
+- links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "glu32", "opengl32", "fribidi-0", "tag" }
++ links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "opengl32", "fribidi-0", "tag" }
+ elseif os.get() == "macosx" then
+ links { "sfml-graphics.framework", "sfml-audio.framework", "sfml-system.framework", "sfml-window.framework", "opengl.framework", "fribidi", "tag" }
+ else
+- links { "GLU", "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "fribidi", "tag" }
++ links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "fribidi", "tag" }
+ libdirs { "/usr/lib", "/usr/local/lib" }
+ end
+
+@@ -23,10 +23,10 @@ project "mars"
+ defines { "_DEBUG", "DEBUG" }
+ flags { "Symbols" }
+ if os.get() == "windows" then
+- links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "glu32", "opengl32", "fribidi-0", "tag" }
++ links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "opengl32", "fribidi-0", "tag" }
+ elseif os.get() == "macosx" then
+ links { "sfml-graphics.framework", "sfml-audio.framework", "sfml-system.framework", "sfml-window.framework", "opengl.framework", "fribidi", "tag" }
+ else
+- links { "GLU", "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "fribidi", "tag" }
++ links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "fribidi", "tag" }
+ libdirs { "/usr/lib", "/usr/local/lib" }
+ end
+diff --git a/src/Shaders/postFX.cpp b/src/Shaders/postFX.cpp
+index 987f411..f767a47 100644
+--- a/src/Shaders/postFX.cpp
++++ b/src/Shaders/postFX.cpp
+@@ -78,7 +78,7 @@ namespace postFX {
+ postFX_.loadFromFile(settings::C_dataPath + "shaders/bump.frag", sf::Shader::Fragment);
+ bumpMap_.create(SPACE_X_RESOLUTION*0.5f, SPACE_Y_RESOLUTION*0.5f);
+ glViewport(0,0,SPACE_X_RESOLUTION*0.5f,SPACE_Y_RESOLUTION*0.5f);
+- gluOrtho2D(0, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0);
++ glOrtho(0, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0, -1, 1);
+ glEnable(GL_BLEND);
+ glMatrixMode(GL_MODELVIEW);
+ postFX_.setParameter("BumpMap", bumpMap_.getTexture());
+diff --git a/src/System/window.cpp b/src/System/window.cpp
+index e9a099a..8e12dcc 100644
+--- a/src/System/window.cpp
++++ b/src/System/window.cpp
+@@ -222,7 +222,7 @@ namespace window {
+ glLoadIdentity();
+
+ // Setup translation (according to left-upper corner)
+- gluOrtho2D(0.f, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0.f);
++ glOrtho(0.f, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0.f, -1, 1);
+
+ // probably improves performance...
+ glDisable(GL_LIGHTING);
+@@ -247,7 +247,7 @@ namespace window {
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+- gluOrtho2D(0.f, viewPort_.x_, viewPort_.y_, 0.f);
++ glOrtho(0.f, viewPort_.x_, viewPort_.y_, 0.f, -1, 1);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+@@ -255,7 +255,7 @@ namespace window {
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+- gluOrtho2D(0.f, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0.f);
++ glOrtho(0.f, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0.f, -1, 1);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ }
+@@ -270,7 +270,7 @@ namespace window {
+ glLoadIdentity();
+ setViewPort();
+
+- gluOrtho2D(0.f, viewPort_.x_, viewPort_.y_, 0.f);
++ glOrtho(0.f, viewPort_.x_, viewPort_.y_, 0.f, -1, 1);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+@@ -284,7 +284,7 @@ namespace window {
+ glLoadIdentity();
+ setViewPort();
+
+- gluOrtho2D(0.f, viewPort_.x_, viewPort_.y_, 0.f);
++ glOrtho(0.f, viewPort_.x_, viewPort_.y_, 0.f, -1, 1);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+@@ -294,7 +294,7 @@ namespace window {
+ else {
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+- gluOrtho2D(0.f, viewPort_.x_, viewPort_.y_, 0.f);
++ glOrtho(0.f, viewPort_.x_, viewPort_.y_, 0.f, -1, 1);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ }
diff --git a/infra/libkookie/nixpkgs/pkgs/games/mars/unbind_fix.patch b/infra/libkookie/nixpkgs/pkgs/games/mars/unbind_fix.patch
new file mode 100644
index 000000000000..2aef6eb5cf66
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/mars/unbind_fix.patch
@@ -0,0 +1,19 @@
+diff --git a/src/System/window.cpp b/src/System/window.cpp
+index e9a099a..e3f6de9 100644
+--- a/src/System/window.cpp
++++ b/src/System/window.cpp
+@@ -308,12 +308,12 @@ namespace window {
+ glEnable(GL_TEXTURE_2D);
+
+ if (shader)
+- shader->bind();
++ sf::Shader::bind(shader);
+
+ window_.draw(toBeDrawn, states);
+
+ if (shader)
+- shader->unbind();
++ sf::Shader::bind(NULL);
+
+ window_.popGLStates();
+ glPopMatrix();
diff --git a/infra/libkookie/nixpkgs/pkgs/games/megaglest/default.nix b/infra/libkookie/nixpkgs/pkgs/games/megaglest/default.nix
new file mode 100644
index 000000000000..b7ab42ed7307
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/megaglest/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, cmake, pkgconfig, git, curl, SDL2, xercesc, openal, lua, libvlc
+, libjpeg, wxGTK, cppunit, ftgl, glew, libogg, libvorbis, buildEnv, libpng
+, fontconfig, freetype, xorg, makeWrapper, bash, which, gnome3, libGLU, glib
+, fetchFromGitHub
+}:
+let
+ version = "3.13.0";
+ lib-env = buildEnv {
+ name = "megaglest-lib-env";
+ paths = [ SDL2 xorg.libSM xorg.libICE xorg.libX11 xorg.libXext
+ xercesc openal libvorbis lua libjpeg libpng curl fontconfig ftgl freetype
+ stdenv.cc.cc glew libGLU wxGTK ];
+ };
+ path-env = buildEnv {
+ name = "megaglest-path-env";
+ paths = [ bash which gnome3.zenity ];
+ };
+in
+stdenv.mkDerivation {
+ pname = "megaglest";
+ inherit version;
+
+ src = fetchFromGitHub {
+ owner = "MegaGlest";
+ repo = "megaglest-source";
+ rev = version;
+ fetchSubmodules = true;
+ sha256 = "0fb58a706nic14ss89zrigphvdiwy5s9dwvhscvvgrfvjpahpcws";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ cmake git curl SDL2 xercesc openal lua libpng libjpeg libvlc wxGTK
+ glib cppunit fontconfig freetype ftgl glew libogg libvorbis makeWrapper libGLU ];
+
+ configurePhase = ''
+ cmake -DCMAKE_INSTALL_PREFIX=$out \
+ -DBUILD_MEGAGLEST=On \
+ -DBUILD_MEGAGLEST_MAP_EDITOR=On \
+ -DBUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS=On \
+ -DBUILD_MEGAGLEST_MODEL_VIEWER=On
+ '';
+
+ postInstall = ''
+ for i in $out/bin/*; do
+ wrapProgram $i \
+ --prefix LD_LIBRARY_PATH ":" "${lib-env}/lib" \
+ --prefix PATH ":" "${path-env}/bin"
+ done
+ '';
+
+ meta = {
+ description = "An entertaining free (freeware and free software) and open source cross-platform 3D real-time strategy (RTS) game";
+ license = stdenv.lib.licenses.gpl3;
+ homepage = "http://megaglest.org/";
+ maintainers = [ stdenv.lib.maintainers.matejc ];
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/meritous/default.nix b/infra/libkookie/nixpkgs/pkgs/games/meritous/default.nix
new file mode 100644
index 000000000000..2958c6a9210f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/meritous/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitLab, SDL, SDL_image, SDL_mixer, zlib }:
+
+stdenv.mkDerivation {
+ pname = "meritous";
+ version = "1.4";
+
+ src = fetchFromGitLab {
+ owner = "meritous";
+ repo = "meritous";
+ rev = "314af46d84d2746eec4c30a0f63cbc2e651d5303";
+ sha256 = "1hrwm65isg5nwzydyd8gvgl3p36sbj09rsn228sppr8g5p9sm10x";
+ };
+
+ prePatch = ''
+ substituteInPlace Makefile \
+ --replace "CPPFLAGS +=" "CPPFLAGS += -DSAVES_IN_HOME -DDATADIR=\\\"$out/share/meritous\\\"" \
+ --replace sld-config ${SDL.dev}/bin/sdl-config
+ substituteInPlace src/audio.c \
+ --replace "filename[64]" "filename[256]"
+ '';
+
+ buildInputs = [ SDL SDL_image SDL_mixer zlib ];
+
+ installPhase = ''
+ install -m 555 -D meritous $out/bin/meritous
+ mkdir -p $out/share/meritous
+ cp -r dat/* $out/share/meritous/
+ '';
+
+ hardeningDisable = [ "stackprotector" "fortify" ];
+
+ meta = with stdenv.lib; {
+ description = "Action-adventure dungeon crawl game";
+ homepage = "http://www.asceai.net/meritous/";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.alexvorobiev ];
+ platforms = platforms.linux;
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/mindustry/default.nix b/infra/libkookie/nixpkgs/pkgs/games/mindustry/default.nix
new file mode 100644
index 000000000000..89ff37458af9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/mindustry/default.nix
@@ -0,0 +1,135 @@
+{ stdenv
+, makeWrapper
+, makeDesktopItem
+, fetchFromGitHub
+, gradleGen
+, jdk14
+, perl
+, jre
+, alsaLib
+
+# Make the build version easily overridable.
+# Server and client build versions must match, and an empty build version means
+# any build is allowed, so this parameter acts as a simple whitelist.
+# Takes the package version and returns the build version.
+, makeBuildVersion ? (v: v)
+, enableClient ? true
+, enableServer ? true
+}:
+
+let
+ pname = "mindustry";
+ # Note: when raising the version, ensure that all SNAPSHOT versions in
+ # build.gradle are replaced by a fixed version
+ # (the current one at the time of release) (see postPatch).
+ version = "120.2";
+ buildVersion = makeBuildVersion version;
+
+ src = fetchFromGitHub {
+ owner = "Anuken";
+ repo = "Mindustry";
+ rev = "v${version}";
+ sha256 = "01a7qpwfr1n540fk0k65kl03biix0gmg66z7qn22mb2703laq1xc";
+ };
+
+ desktopItem = makeDesktopItem {
+ type = "Application";
+ name = "Mindustry";
+ desktopName = "Mindustry";
+ exec = "mindustry";
+ icon = "mindustry";
+ };
+
+ postPatch = ''
+ # Remove unbuildable iOS stuff
+ sed -i '/^project(":ios"){/,/^}/d' build.gradle
+ sed -i '/robo(vm|VM)/d' build.gradle
+ rm ios/build.gradle
+
+ # Pin 'SNAPSHOT' versions
+ sed -i 's/com.github.anuken:packr:-SNAPSHOT/com.github.anuken:packr:034efe51781d2d8faa90370492133241bfb0283c/' build.gradle
+ '';
+
+ # The default one still uses jdk8 (#89731)
+ gradle_6 = (gradleGen.override (old: { java = jdk14; })).gradle_6_7;
+
+ # fake build to pre-download deps into fixed-output derivation
+ deps = stdenv.mkDerivation {
+ pname = "${pname}-deps";
+ inherit version src postPatch;
+ nativeBuildInputs = [ gradle_6 perl ];
+ # Here we build both the server and the client so we only have to specify
+ # one hash for 'deps'. Deps can be garbage collected after the build,
+ # so this is not really an issue.
+ buildPhase = ''
+ export GRADLE_USER_HOME=$(mktemp -d)
+ gradle --no-daemon desktop:dist -Pbuildversion=${buildVersion}
+ gradle --no-daemon server:dist -Pbuildversion=${buildVersion}
+ '';
+ # perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
+ installPhase = ''
+ find $GRADLE_USER_HOME/caches/modules-2 -type f -regex '.*\.\(jar\|pom\)' \
+ | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
+ | sh
+ '';
+ outputHashAlgo = "sha256";
+ outputHashMode = "recursive";
+ outputHash = "1yv9l8zdml6drmvlgv45w3qas9qmb654x4kja3an4d16k020khr7";
+ };
+
+ # Separate commands for building and installing the server and the client
+ buildClient = ''
+ gradle --offline --no-daemon desktop:dist -Pbuildversion=${buildVersion}
+ '';
+ buildServer = ''
+ gradle --offline --no-daemon server:dist -Pbuildversion=${buildVersion}
+ '';
+ installClient = ''
+ install -Dm644 desktop/build/libs/Mindustry.jar $out/share/mindustry.jar
+ mkdir -p $out/bin
+ makeWrapper ${jre}/bin/java $out/bin/mindustry \
+ ${stdenv.lib.optionalString stdenv.isLinux "--prefix LD_LIBRARY_PATH : ${alsaLib}/lib"} \
+ --add-flags "-jar $out/share/mindustry.jar"
+ install -Dm644 core/assets/icons/icon_64.png $out/share/icons/hicolor/64x64/apps/mindustry.png
+ install -Dm644 ${desktopItem}/share/applications/Mindustry.desktop $out/share/applications/Mindustry.desktop
+ '';
+ installServer = ''
+ install -Dm644 server/build/libs/server-release.jar $out/share/mindustry-server.jar
+ mkdir -p $out/bin
+ makeWrapper ${jre}/bin/java $out/bin/mindustry-server \
+ --add-flags "-jar $out/share/mindustry-server.jar"
+ '';
+
+in
+assert stdenv.lib.assertMsg (enableClient || enableServer)
+ "mindustry: at least one of 'enableClient' and 'enableServer' must be true";
+stdenv.mkDerivation rec {
+ inherit pname version src postPatch;
+
+ nativeBuildInputs = [ gradle_6 makeWrapper ];
+
+ buildPhase = with stdenv.lib; ''
+ export GRADLE_USER_HOME=$(mktemp -d)
+ # point to offline repo
+ sed -ie "s#mavenLocal()#mavenLocal(); maven { url '${deps}' }#g" build.gradle
+ ${optionalString enableClient buildClient}
+ ${optionalString enableServer buildServer}
+ '';
+
+ installPhase = with stdenv.lib; ''
+ ${optionalString enableClient installClient}
+ ${optionalString enableServer installServer}
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://mindustrygame.github.io/";
+ downloadPage = "https://github.com/Anuken/Mindustry/releases";
+ description = "A sandbox tower defense game";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ fgaz ];
+ platforms = platforms.all;
+ # Hash mismatch on darwin:
+ # https://github.com/NixOS/nixpkgs/pull/105590#issuecomment-737120293
+ broken = stdenv.isDarwin;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/minecraft-server/default.nix b/infra/libkookie/nixpkgs/pkgs/games/minecraft-server/default.nix
new file mode 100644
index 000000000000..77181692ec22
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/minecraft-server/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, nixosTests, jre_headless }:
+stdenv.mkDerivation {
+ pname = "minecraft-server";
+ version = "1.16.4";
+
+ src = fetchurl {
+ url = "https://launcher.mojang.com/v1/objects/35139deedbd5182953cf1caa23835da59ca3d7cd/server.jar";
+ # sha1 because that comes from mojang via api
+ sha1 = "35139deedbd5182953cf1caa23835da59ca3d7cd";
+ };
+
+ preferLocalBuild = true;
+
+ installPhase = ''
+ mkdir -p $out/bin $out/lib/minecraft
+ cp -v $src $out/lib/minecraft/server.jar
+
+ cat > $out/bin/minecraft-server << EOF
+ #!/bin/sh
+ exec ${jre_headless}/bin/java \$@ -jar $out/lib/minecraft/server.jar nogui
+ EOF
+
+ chmod +x $out/bin/minecraft-server
+ '';
+
+ phases = "installPhase";
+
+ passthru = {
+ tests = { inherit (nixosTests) minecraft-server; };
+ updateScript = ./update.sh;
+ };
+
+ meta = with stdenv.lib; {
+ description = "Minecraft Server";
+ homepage = "https://minecraft.net";
+ license = licenses.unfreeRedistributable;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ thoughtpolice tomberek costrouc ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/minecraft-server/update.sh b/infra/libkookie/nixpkgs/pkgs/games/minecraft-server/update.sh
new file mode 100755
index 000000000000..433a12a9caf6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/minecraft-server/update.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl jq common-updater-scripts
+
+BASEDIR="$(dirname "$0")"
+
+# get current release version
+versions=$(curl -s 'https://launchermeta.mojang.com/mc/game/version_manifest.json')
+version=$(echo $versions | jq .latest.release)
+url=$(echo $versions | jq -r ".versions[] | select(.id == $version) | .url")
+
+# get current server.jar
+versions=$(curl -s $url | jq .downloads.server)
+sha1=$(echo $versions | jq .sha1)
+url=$(echo $versions | jq .url)
+
+echo $version: $url:$sha1
+
+# change default.nix
+sed -i "s/version = \"[0-9.]*\";/version = ${version};/g" "$BASEDIR/default.nix"
+sed -i "s+url = \"[a-zA-Z0-9/:.]*/server.jar\";+url = $url;+g" "$BASEDIR/default.nix"
+sed -i "s/sha1 = \"[a-zA-Z0-9]*\";/sha1 = ${sha1};/g" "$BASEDIR/default.nix"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/minecraft/default.nix b/infra/libkookie/nixpkgs/pkgs/games/minecraft/default.nix
new file mode 100644
index 000000000000..03abcb151bc1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/minecraft/default.nix
@@ -0,0 +1,160 @@
+{ stdenv
+, fetchurl
+, nixosTests
+, copyDesktopItems
+, makeDesktopItem
+, makeWrapper
+, wrapGAppsHook
+, gobject-introspection
+, jre # old or modded versions of the game may require Java 8 (https://aur.archlinux.org/packages/minecraft-launcher/#pinned-674960)
+, xorg
+, zlib
+, nss
+, nspr
+, fontconfig
+, pango
+, cairo
+, expat
+, alsaLib
+, cups
+, dbus
+, atk
+, gtk3-x11
+, gtk2-x11
+, gdk-pixbuf
+, glib
+, curl
+, freetype
+, libpulseaudio
+, libuuid
+, systemd
+, flite ? null
+, libXxf86vm ? null
+}:
+let
+ desktopItem = makeDesktopItem {
+ name = "minecraft-launcher";
+ exec = "minecraft-launcher";
+ icon = "minecraft-launcher";
+ comment = "Official launcher for Minecraft, a sandbox-building game";
+ desktopName = "Minecraft Launcher";
+ categories = "Game;";
+ };
+
+ envLibPath = stdenv.lib.makeLibraryPath [
+ curl
+ libpulseaudio
+ systemd
+ alsaLib # needed for narrator
+ flite # needed for narrator
+ libXxf86vm # needed only for versions <1.13
+ ];
+
+ libPath = stdenv.lib.makeLibraryPath ([
+ alsaLib
+ atk
+ cairo
+ cups
+ dbus
+ expat
+ fontconfig
+ freetype
+ gdk-pixbuf
+ glib
+ pango
+ gtk3-x11
+ gtk2-x11
+ nspr
+ nss
+ stdenv.cc.cc
+ zlib
+ libuuid
+ ] ++
+ (with xorg; [
+ libX11
+ libxcb
+ libXcomposite
+ libXcursor
+ libXdamage
+ libXext
+ libXfixes
+ libXi
+ libXrandr
+ libXrender
+ libXtst
+ libXScrnSaver
+ ]));
+in
+stdenv.mkDerivation rec {
+ pname = "minecraft-launcher";
+
+ version = "2.2.741";
+
+ src = fetchurl {
+ url = "https://launcher.mojang.com/download/linux/x86_64/minecraft-launcher_${version}.tar.gz";
+ sha256 = "0bm78ybn91ihibxgmlpk7dl2zxy4a57k86qmb08cif3ifbflzkvw";
+ };
+
+ icon = fetchurl {
+ url = "https://launcher.mojang.com/download/minecraft-launcher.svg";
+ sha256 = "0w8z21ml79kblv20wh5lz037g130pxkgs8ll9s3bi94zn2pbrhim";
+ };
+
+ nativeBuildInputs = [ makeWrapper wrapGAppsHook copyDesktopItems ];
+ buildInputs = [ gobject-introspection ];
+
+ sourceRoot = ".";
+
+ dontWrapGApps = true;
+ dontConfigure = true;
+ dontBuild = true;
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/opt
+ mv minecraft-launcher $out/opt
+
+ install -D $icon $out/share/icons/hicolor/symbolic/apps/minecraft-launcher.svg
+
+ runHook postInstall
+ '';
+
+ preFixup = ''
+ patchelf \
+ --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
+ --set-rpath '$ORIGIN/'":${libPath}" \
+ $out/opt/minecraft-launcher/minecraft-launcher
+ patchelf \
+ --set-rpath '$ORIGIN/'":${libPath}" \
+ $out/opt/minecraft-launcher/libcef.so
+ patchelf \
+ --set-rpath '$ORIGIN/'":${libPath}" \
+ $out/opt/minecraft-launcher/liblauncher.so
+ '';
+
+ postFixup = ''
+ # Do not create `GPUCache` in current directory
+ makeWrapper $out/opt/minecraft-launcher/minecraft-launcher $out/bin/minecraft-launcher \
+ --prefix LD_LIBRARY_PATH : ${envLibPath} \
+ --prefix PATH : ${stdenv.lib.makeBinPath [ jre ]} \
+ --set JAVA_HOME ${stdenv.lib.makeBinPath [ jre ]} \
+ --run "cd /tmp" \
+ "''${gappsWrapperArgs[@]}"
+ '';
+
+ desktopItems = [ desktopItem ];
+
+ meta = with stdenv.lib; {
+ description = "Official launcher for Minecraft, a sandbox-building game";
+ homepage = "https://minecraft.net";
+ maintainers = with maintainers; [ cpages ryantm infinisil ];
+ license = licenses.unfree;
+ platforms = [ "x86_64-linux" ];
+ };
+
+ passthru = {
+ tests = { inherit (nixosTests) minecraft; };
+ updateScript = ./update.sh;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/minecraft/update.sh b/infra/libkookie/nixpkgs/pkgs/games/minecraft/update.sh
new file mode 100755
index 000000000000..02b362e839be
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/minecraft/update.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl jq gnugrep common-updater-scripts
+
+set -eu -o pipefail
+
+version=$(curl -s 'https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=minecraft-launcher' | jq '.results[0].Version' | grep -Po '[.\d]*(?=-)')
+update-source-version minecraft "$version"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/minetest/default.nix b/infra/libkookie/nixpkgs/pkgs/games/minetest/default.nix
new file mode 100644
index 000000000000..f49ec1f4a826
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/minetest/default.nix
@@ -0,0 +1,90 @@
+{ stdenv, fetchFromGitHub, cmake, irrlicht, libpng, bzip2, curl, libogg, jsoncpp
+, libjpeg, libXxf86vm, libGLU, libGL, openal, libvorbis, sqlite, luajit
+, freetype, gettext, doxygen, ncurses, graphviz, xorg, gmp, libspatialindex
+, leveldb, postgresql, hiredis, libiconv, OpenGL, OpenAL ? openal, Carbon, Cocoa
+}:
+
+with stdenv.lib;
+
+let
+ boolToCMake = b: if b then "ON" else "OFF";
+
+ generic = { version, rev ? version, sha256, dataRev ? version, dataSha256, buildClient ? true, buildServer ? false }: let
+ sources = {
+ src = fetchFromGitHub {
+ owner = "minetest";
+ repo = "minetest";
+ inherit rev sha256;
+ };
+ data = fetchFromGitHub {
+ owner = "minetest";
+ repo = "minetest_game";
+ rev = dataRev;
+ sha256 = dataSha256;
+ };
+ };
+ in stdenv.mkDerivation {
+ pname = "minetest";
+ inherit version;
+
+ src = sources.src;
+
+ cmakeFlags = [
+ "-DBUILD_CLIENT=${boolToCMake buildClient}"
+ "-DBUILD_SERVER=${boolToCMake buildServer}"
+ "-DENABLE_FREETYPE=1"
+ "-DENABLE_GETTEXT=1"
+ "-DENABLE_SYSTEM_JSONCPP=1"
+ "-DIRRLICHT_INCLUDE_DIR=${irrlicht}/include/irrlicht"
+ ] ++ optionals buildClient [
+ "-DOpenGL_GL_PREFERENCE=GLVND"
+ ];
+
+ NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3
+
+ nativeBuildInputs = [ cmake doxygen graphviz ];
+
+ buildInputs = [
+ irrlicht luajit jsoncpp gettext freetype sqlite curl bzip2 ncurses
+ gmp libspatialindex
+ ] ++ optionals stdenv.isDarwin [
+ libiconv OpenGL OpenAL Carbon Cocoa
+ ] ++ optionals buildClient [
+ libpng libjpeg libGLU libGL openal libogg libvorbis xorg.libX11 libXxf86vm
+ ] ++ optionals buildServer [
+ leveldb postgresql hiredis
+ ];
+
+ postInstall = ''
+ mkdir -pv $out/share/minetest/games/minetest_game/
+ cp -rv ${sources.data}/* $out/share/minetest/games/minetest_game/
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "http://minetest.net/";
+ description = "Infinite-world block sandbox game";
+ license = licenses.lgpl21Plus;
+ platforms = platforms.linux ++ platforms.darwin;
+ maintainers = with maintainers; [ pyrolagus fpletz ];
+ };
+ };
+
+ v4 = {
+ version = "0.4.17.1";
+ sha256 = "19sfblgh9mchkgw32n7gdvm7a8a9jxsl9cdlgmxn9bk9m939a2sg";
+ dataSha256 = "1g8iw2pya32ifljbdx6z6rpcinmzm81i9minhi2bi1d500ailn7s";
+ };
+
+ v5 = {
+ version = "5.3.0";
+ sha256 = "03ga3j3cg38w4lg4d4qxasmnjdl8n3lbizidrinanvyfdyvznyh6";
+ dataSha256 = "1liciwlh013z5h08ib0psjbwn5wkvlr937ir7kslfk4vly984cjx";
+ };
+
+in {
+ minetestclient_4 = generic (v4 // { buildClient = true; buildServer = false; });
+ minetestserver_4 = generic (v4 // { buildClient = false; buildServer = true; });
+
+ minetestclient_5 = generic (v5 // { buildClient = true; buildServer = false; });
+ minetestserver_5 = generic (v5 // { buildClient = false; buildServer = true; });
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/minetest/disable_fixup.patch b/infra/libkookie/nixpkgs/pkgs/games/minetest/disable_fixup.patch
new file mode 100644
index 000000000000..1c378d7f83fc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/minetest/disable_fixup.patch
@@ -0,0 +1,10 @@
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -802,7 +802,6 @@
+ install(CODE "
+ set(BU_CHMOD_BUNDLE_ITEMS ON)
+ include(BundleUtilities)
+- fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/${BUNDLE_PATH}\" \"\" \"\${CMAKE_INSTALL_PREFIX}/${BINDIR}\")
+ " COMPONENT Runtime)
+ endif()
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/minetest/fix_wordsize_confusion.patch b/infra/libkookie/nixpkgs/pkgs/games/minetest/fix_wordsize_confusion.patch
new file mode 100644
index 000000000000..9540a434dafe
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/minetest/fix_wordsize_confusion.patch
@@ -0,0 +1,10 @@
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -17,6 +17,7 @@
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
++#include <cstdint>
+ #include "irrlicht.h" // createDevice
+ #include "irrlichttypes_extrabloated.h"
+ #include "chat_interface.h"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/mnemosyne/default.nix b/infra/libkookie/nixpkgs/pkgs/games/mnemosyne/default.nix
new file mode 100644
index 000000000000..4a92b8c1014a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/mnemosyne/default.nix
@@ -0,0 +1,81 @@
+{ fetchurl
+, python
+, anki
+}:
+
+python.pkgs.buildPythonApplication rec {
+ pname = "mnemosyne";
+ version = "2.7.2";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/mnemosyne-proj/mnemosyne/mnemosyne-${version}/Mnemosyne-${version}.tar.gz";
+ sha256 = "09yp9zc00xrc9dmjbsscnkb3hsv3yj46sxikc0r6s9cbghn3nypy";
+ };
+
+ nativeBuildInputs = with python.pkgs; [ pyqtwebengine.wrapQtAppsHook ];
+
+ buildInputs = [ anki ];
+
+ propagatedBuildInputs = with python.pkgs; [
+ cheroot
+ cherrypy
+ googletrans
+ gtts
+ matplotlib
+ pyopengl
+ pyqt5
+ pyqtwebengine
+ webob
+ ];
+
+ prePatch = ''
+ substituteInPlace setup.py --replace /usr $out
+ find . -type f -exec grep -H sys.exec_prefix {} ';' | cut -d: -f1 | xargs sed -i s,sys.exec_prefix,\"$out\",
+ '';
+
+ # No tests/ directrory in tarball
+ doCheck = false;
+
+ postInstall = ''
+ mkdir -p $out/share/applications
+ mv $out/${python.sitePackages}/$out/share/locale $out/share
+ mv mnemosyne.desktop $out/share/applications
+ rm -r $out/${python.sitePackages}/nix
+ '';
+
+ dontWrapQtApps = true;
+
+ makeWrapperArgs = [
+ "\${qtWrapperArgs[@]}"
+ ];
+
+ meta = {
+ homepage = "https://mnemosyne-proj.org/";
+ description = "Spaced-repetition software";
+ longDescription = ''
+ The Mnemosyne Project has two aspects:
+
+ * It's a free flash-card tool which optimizes your learning process.
+ * It's a research project into the nature of long-term memory.
+
+ We strive to provide a clear, uncluttered piece of software, easy to use
+ and to understand for newbies, but still infinitely customisable through
+ plugins and scripts for power users.
+
+ ## Efficient learning
+
+ Mnemosyne uses a sophisticated algorithm to schedule the best time for
+ a card to come up for review. Difficult cards that you tend to forget
+ quickly will be scheduled more often, while Mnemosyne won't waste your
+ time on things you remember well.
+
+ ## Memory research
+
+ If you want, anonymous statistics on your learning process can be
+ uploaded to a central server for analysis. This data will be valuable to
+ study the behaviour of our memory over a very long time period. The
+ results will be used to improve the scheduling algorithms behind the
+ software even further.
+ '';
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/moon-buggy/default.nix b/infra/libkookie/nixpkgs/pkgs/games/moon-buggy/default.nix
new file mode 100644
index 000000000000..9de24c1ae9dc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/moon-buggy/default.nix
@@ -0,0 +1,24 @@
+{stdenv, fetchurl, ncurses}:
+
+stdenv.mkDerivation rec {
+ baseName = "moon-buggy";
+ version = "1.0.51";
+ name = "${baseName}-${version}";
+
+ buildInputs = [
+ ncurses
+ ];
+
+ src = fetchurl {
+ url = "http://m.seehuhn.de/programs/${name}.tar.gz";
+ sha256 = "0gyjwlpx0sd728dwwi7pwks4zfdy9rm1w1xbhwg6zip4r9nc2b9m";
+ };
+
+ meta = {
+ description = ''A simple character graphics game where you drive some kind of car across the moon's surface'';
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = [stdenv.lib.maintainers.rybern];
+ platforms = stdenv.lib.platforms.linux;
+ homepage = "https://www.seehuhn.de/pages/moon-buggy";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/mrrescue/default.nix b/infra/libkookie/nixpkgs/pkgs/games/mrrescue/default.nix
new file mode 100644
index 000000000000..367a7a5c5e61
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/mrrescue/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchurl, love, lua, makeWrapper, makeDesktopItem }:
+
+let
+ pname = "mrrescue";
+ version = "1.02d";
+
+ icon = fetchurl {
+ url = "http://tangramgames.dk/img/thumb/mrrescue.png";
+ sha256 = "1y5ahf0m01i1ch03axhvp2kqc6lc1yvh59zgvgxw4w7y3jryw20k";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "mrrescue";
+ exec = pname;
+ icon = icon;
+ comment = "Arcade-style fire fighting game";
+ desktopName = "Mr. Rescue";
+ genericName = "mrrescue";
+ categories = "Game;";
+ };
+
+in
+
+stdenv.mkDerivation {
+ name = "${pname}-${version}";
+
+ src = fetchurl {
+ url = "https://github.com/SimonLarsen/${pname}/releases/download/v${version}/${pname}-${version}.love";
+ sha256 = "0kzahxrgpb4vsk9yavy7f8nc34d62d1jqjrpsxslmy9ywax4yfpi";
+ };
+
+ nativeBuildInputs = [ lua love ];
+ buildInputs = [ makeWrapper ];
+
+ phases = "installPhase";
+
+ installPhase =
+ ''
+ mkdir -p $out/bin
+ mkdir -p $out/share/games/lovegames
+
+ cp -v $src $out/share/${pname}.love
+
+ makeWrapper ${love}/bin/love $out/bin/${pname} --add-flags $out/share/games/lovegames/${pname}.love
+
+ chmod +x $out/bin/${pname}
+ mkdir -p $out/share/applications
+ ln -s ${desktopItem}/share/applications/* $out/share/applications/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Arcade-style fire fighting game";
+ maintainers = with maintainers; [ ];
+ platforms = platforms.linux;
+ license = licenses.zlib;
+ downloadPage = "http://tangramgames.dk/games/mrrescue";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/mudlet/default.nix b/infra/libkookie/nixpkgs/pkgs/games/mudlet/default.nix
new file mode 100644
index 000000000000..b73af4515d3c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/mudlet/default.nix
@@ -0,0 +1,57 @@
+{ fetchFromGitHub, fetchpatch, stdenv, wrapQtAppsHook, git, pcre, pugixml, qtbase, libsForQt5, qtmultimedia, qttools, yajl, libzip, hunspell
+, boost, libGLU, lua, cmake, which, }:
+
+let
+ luaEnv = lua.withPackages(ps: with ps; [ luazip luafilesystem lrexlib-pcre luasql-sqlite3 lua-yajl luautf8 ]);
+in
+stdenv.mkDerivation rec {
+ pname = "mudlet";
+ version = "4.9.1";
+
+ src = fetchFromGitHub {
+ owner = "Mudlet";
+ repo = "Mudlet";
+ rev = "Mudlet-${version}";
+ fetchSubmodules = true;
+ sha256 = "0i022qcmlq4xwl2yh4xd5qdc0ag52605qmqqz6bim0h8f3dp8cx1";
+ };
+
+ nativeBuildInputs = [ cmake wrapQtAppsHook git qttools which ];
+ buildInputs = [
+ pcre pugixml qtbase libsForQt5.qtkeychain qtmultimedia luaEnv libzip libGLU yajl boost hunspell
+ ];
+
+ WITH_FONTS = "NO";
+ WITH_UPDATER = "NO";
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ mkdir -pv $out/lib
+ cp 3rdparty/edbee-lib/edbee-lib/qslog/lib/libQsLog.so $out/lib
+ mkdir -pv $out/bin
+ cp src/mudlet $out
+ mkdir -pv $out/share/mudlet
+ cp -r ../src/mudlet-lua/lua $out/share/mudlet/
+
+ mkdir -pv $out/share/applications
+ cp ../mudlet.desktop $out/share/applications/
+
+ mkdir -pv $out/share/pixmaps
+ cp -r ../mudlet.png $out/share/pixmaps/
+
+ makeQtWrapper $out/mudlet $out/bin/mudlet \
+ --set LUA_CPATH "${luaEnv}/lib/lua/${lua.luaversion}/?.so" \
+ --prefix LUA_PATH : "$NIX_LUA_PATH" \
+ --prefix LD_LIBRARY_PATH : "${libsForQt5.qtkeychain}/lib/" \
+ --run "cd $out";
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Crossplatform mud client";
+ homepage = "http://mudlet.org/";
+ maintainers = [ maintainers.wyvie maintainers.pstn ];
+ platforms = platforms.linux;
+ license = licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/multimc/default.nix b/infra/libkookie/nixpkgs/pkgs/games/multimc/default.nix
new file mode 100644
index 000000000000..c114afe9a8e3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/multimc/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, mkDerivation, fetchFromGitHub, cmake, jdk8, zlib, file, makeWrapper, xorg, libpulseaudio, qtbase }:
+
+let
+ jdk = jdk8;
+ libpath = with xorg; stdenv.lib.makeLibraryPath [ libX11 libXext libXcursor libXrandr libXxf86vm libpulseaudio ];
+in mkDerivation rec {
+ pname = "multimc";
+ version = "0.6.11";
+ src = fetchFromGitHub {
+ owner = "MultiMC";
+ repo = "MultiMC5";
+ rev = version;
+ sha256 = "1jkbmb4sgfk8d93f5l1vd9pkpvhq9sxacc61w0rvf5xmz0wnszmz";
+ fetchSubmodules = true;
+ };
+ nativeBuildInputs = [ cmake file makeWrapper ];
+ buildInputs = [ qtbase jdk zlib ];
+
+ enableParallelBuilding = true;
+
+ cmakeFlags = [ "-DMultiMC_LAYOUT=lin-system" ];
+
+ postInstall = ''
+ install -Dm644 ../application/resources/multimc/scalable/multimc.svg $out/share/pixmaps/multimc.svg
+ install -Dm755 ../application/package/linux/multimc.desktop $out/share/applications/multimc.desktop
+
+ # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
+ wrapProgram $out/bin/multimc --set GAME_LIBRARY_PATH /run/opengl-driver/lib:${libpath} --prefix PATH : ${jdk}/bin/:${xorg.xrandr}/bin/
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://multimc.org/";
+ description = "A free, open source launcher for Minecraft";
+ longDescription = ''
+ Allows you to have multiple, separate instances of Minecraft (each with their own mods, texture packs, saves, etc) and helps you manage them and their associated options with a simple interface.
+ '';
+ platforms = platforms.linux;
+ license = licenses.lgpl21Plus;
+ maintainers = [ maintainers.cleverca22 ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/n2048/default.nix b/infra/libkookie/nixpkgs/pkgs/games/n2048/default.nix
new file mode 100644
index 000000000000..f5ff0b4690e9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/n2048/default.nix
@@ -0,0 +1,35 @@
+{stdenv, fetchurl, ncurses}:
+let
+ s =
+ rec {
+ baseName = "n2048";
+ version = "0.1";
+ name = "${baseName}-${version}";
+ url = "http://www.dettus.net/n2048/${baseName}_v${version}.tar.gz";
+ sha256 = "184z2rr0rnj4p740qb4mzqr6kgd76ynb5gw9bj8hrfshcxdcg1kk";
+ };
+ buildInputs = [
+ ncurses
+ ];
+in
+stdenv.mkDerivation {
+ inherit (s) name version;
+ inherit buildInputs;
+ src = fetchurl {
+ inherit (s) url sha256;
+ };
+ makeFlags = [
+ ''DESTDIR=$(out)''
+ ];
+ preInstall = ''
+ mkdir -p "$out"/{share/man,bin}
+ '';
+ meta = {
+ inherit (s) version;
+ description = ''Console implementation of 2048 game'';
+ license = stdenv.lib.licenses.bsd2;
+ maintainers = [stdenv.lib.maintainers.raskin];
+ platforms = stdenv.lib.platforms.linux;
+ homepage = "http://www.dettus.net/n2048/";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/naev/default.nix b/infra/libkookie/nixpkgs/pkgs/games/naev/default.nix
new file mode 100644
index 000000000000..c328199b377c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/naev/default.nix
@@ -0,0 +1,42 @@
+{ fetchurl, stdenv, SDL, openal, SDL_mixer, libxml2, pkgconfig, libvorbis
+, libpng, libGLU, libGL, makeWrapper, zlib, freetype }:
+
+let
+ pname = "naev";
+ version = "0.5.0";
+ name = "${pname}-${version}";
+in
+stdenv.mkDerivation {
+ inherit name;
+
+ srcData = fetchurl {
+ url = "mirror://sourceforge/naev/ndata-${version}";
+ sha256 = "0l05xxbbys3j5h6anvann2vylhp6hnxnzwpcaydaff8fpbbyi6r6";
+ };
+
+ src = fetchurl {
+ url = "mirror://sourceforge/naev/${name}.tar.bz2";
+ sha256 = "0gahi91lmpra0wvxsz49zwwb28q9w2v1s3y7r70252hq6v80kanb";
+ };
+
+ buildInputs = [ SDL SDL_mixer openal libxml2 libvorbis libpng libGLU libGL zlib freetype ];
+
+ nativeBuildInputs = [ pkgconfig makeWrapper ];
+
+ NIX_CFLAGS_COMPILE="-include ${zlib.dev}/include/zlib.h";
+
+ postInstall = ''
+ mkdir -p $out/share/naev
+ cp -v $srcData $out/share/naev/ndata
+ wrapProgram $out/bin/naev --add-flags $out/share/naev/ndata
+ '';
+
+ meta = {
+ description = "2D action/rpg space game";
+ homepage = "http://www.naev.org";
+ license = stdenv.lib.licenses.gpl3Plus;
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = stdenv.lib.platforms.linux;
+ hydraPlatforms = [];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/nethack/default.nix b/infra/libkookie/nixpkgs/pkgs/games/nethack/default.nix
new file mode 100644
index 000000000000..1b082537148b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/nethack/default.nix
@@ -0,0 +1,151 @@
+{ stdenv, lib, fetchurl, coreutils, ncurses, gzip, flex, bison
+, less
+, buildPackages
+, x11Mode ? false, qtMode ? false, libXaw, libXext, libXpm, bdftopcf, mkfontdir, pkgconfig, qt5
+}:
+
+let
+ platform =
+ if stdenv.hostPlatform.isUnix then "unix"
+ else throw "Unknown platform for NetHack: ${stdenv.hostPlatform.system}";
+ unixHint =
+ if x11Mode then "linux-x11"
+ else if qtMode then "linux-qt4"
+ else if stdenv.hostPlatform.isLinux then "linux"
+ else if stdenv.hostPlatform.isDarwin then "macosx10.10"
+ # We probably want something different for Darwin
+ else "unix";
+ userDir = "~/.config/nethack";
+ binPath = lib.makeBinPath [ coreutils less ];
+
+in stdenv.mkDerivation rec {
+ version = "3.6.6";
+ name = if x11Mode then "nethack-x11-${version}"
+ else if qtMode then "nethack-qt-${version}"
+ else "nethack-${version}";
+
+ src = fetchurl {
+ url = "https://nethack.org/download/${version}/nethack-${lib.replaceStrings ["."] [""] version}-src.tgz";
+ sha256 = "1liyckjp34j354qnxc1zn9730lh1p2dabrg1hap24z6xnqx0rpng";
+ };
+
+ buildInputs = [ ncurses ]
+ ++ lib.optionals x11Mode [ libXaw libXext libXpm ]
+ ++ lib.optionals qtMode [ gzip qt5.qtbase.bin qt5.qtmultimedia.bin ];
+
+ nativeBuildInputs = [ flex bison ]
+ ++ lib.optionals x11Mode [ mkfontdir bdftopcf ]
+ ++ lib.optionals qtMode [
+ pkgconfig mkfontdir qt5.qtbase.dev
+ qt5.qtmultimedia.dev qt5.wrapQtAppsHook
+ bdftopcf
+ ];
+
+ makeFlags = [ "PREFIX=$(out)" ];
+
+ postPatch = ''
+ sed -e '/^ *cd /d' -i sys/unix/nethack.sh
+ sed \
+ -e 's/^YACC *=.*/YACC = bison -y/' \
+ -e 's/^LEX *=.*/LEX = flex/' \
+ -i sys/unix/Makefile.utl
+ sed \
+ -e 's,^WINQT4LIB =.*,WINQT4LIB = `pkg-config Qt5Gui --libs` \\\
+ `pkg-config Qt5Widgets --libs` \\\
+ `pkg-config Qt5Multimedia --libs`,' \
+ -i sys/unix/Makefile.src
+ sed \
+ -e 's,^CFLAGS=-g,CFLAGS=,' \
+ -e 's,/bin/gzip,${gzip}/bin/gzip,g' \
+ -e 's,^WINTTYLIB=.*,WINTTYLIB=-lncurses,' \
+ -i sys/unix/hints/linux
+ sed \
+ -e 's,^CC=.*$,CC=cc,' \
+ -e 's,^HACKDIR=.*$,HACKDIR=\$(PREFIX)/games/lib/\$(GAME)dir,' \
+ -e 's,^SHELLDIR=.*$,SHELLDIR=\$(PREFIX)/games,' \
+ -e 's,^CFLAGS=-g,CFLAGS=,' \
+ -i sys/unix/hints/macosx10.10
+ sed -e '/define CHDIR/d' -i include/config.h
+ ${lib.optionalString qtMode ''
+ sed \
+ -e 's,^QTDIR *=.*,QTDIR=${qt5.qtbase.dev},' \
+ -e 's,CFLAGS.*QtGui.*,CFLAGS += `pkg-config Qt5Gui --cflags`,' \
+ -e 's,CFLAGS+=-DCOMPRESS.*,CFLAGS+=-DCOMPRESS=\\"${gzip}/bin/gzip\\" \\\
+ -DCOMPRESS_EXTENSION=\\".gz\\",' \
+ -e 's,moc-qt4,moc,' \
+ -i sys/unix/hints/linux-qt4
+ ''}
+ ${lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform)
+ # If we're cross-compiling, replace the paths to the data generation tools
+ # with the ones from the build platform's nethack package, since we can't
+ # run the ones we've built here.
+ ''
+ ${buildPackages.perl}/bin/perl -p \
+ -e 's,[a-z./]+/(makedefs|dgn_comp|lev_comp|dlb)(?!\.),${buildPackages.nethack}/libexec/nethack/\1,g' \
+ -i sys/unix/Makefile.*
+ ''}
+ sed -i -e '/rm -f $(MAKEDEFS)/d' sys/unix/Makefile.src
+ '';
+
+ configurePhase = ''
+ pushd sys/${platform}
+ ${lib.optionalString (platform == "unix") ''
+ sh setup.sh hints/${unixHint}
+ ''}
+ popd
+ '';
+
+ enableParallelBuilding = true;
+
+ preFixup = stdenv.lib.optionalString qtMode ''
+ wrapQtApp "$out/games/nethack"
+ '';
+
+ postInstall = ''
+ mkdir -p $out/games/lib/nethackuserdir
+ for i in xlogfile logfile perm record save; do
+ mv $out/games/lib/nethackdir/$i $out/games/lib/nethackuserdir
+ done
+
+ mkdir -p $out/bin
+ cat <<EOF >$out/bin/nethack
+ #! ${stdenv.shell} -e
+ PATH=${binPath}:\$PATH
+
+ if [ ! -d ${userDir} ]; then
+ mkdir -p ${userDir}
+ cp -r $out/games/lib/nethackuserdir/* ${userDir}
+ chmod -R +w ${userDir}
+ fi
+
+ RUNDIR=\$(mktemp -d)
+
+ cleanup() {
+ rm -rf \$RUNDIR
+ }
+ trap cleanup EXIT
+
+ cd \$RUNDIR
+ for i in ${userDir}/*; do
+ ln -s \$i \$(basename \$i)
+ done
+ for i in $out/games/lib/nethackdir/*; do
+ ln -s \$i \$(basename \$i)
+ done
+ $out/games/nethack
+ EOF
+ chmod +x $out/bin/nethack
+ ${lib.optionalString x11Mode "mv $out/bin/nethack $out/bin/nethack-x11"}
+ ${lib.optionalString qtMode "mv $out/bin/nethack $out/bin/nethack-qt"}
+ install -Dm 555 util/{makedefs,dgn_comp,lev_comp} -t $out/libexec/nethack/
+ ${lib.optionalString (!(x11Mode || qtMode)) "install -Dm 555 util/dlb -t $out/libexec/nethack/"}
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Rogue-like game";
+ homepage = "http://nethack.org/";
+ license = "nethack";
+ platforms = if x11Mode then platforms.linux else platforms.unix;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/netris/default.nix b/infra/libkookie/nixpkgs/pkgs/games/netris/default.nix
new file mode 100644
index 000000000000..994db4e67f8a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/netris/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, ncurses }:
+
+stdenv.mkDerivation {
+ pname = "netris";
+ version = "0.52";
+
+ src = fetchFromGitHub {
+ owner = "naclander";
+ repo = "netris";
+ rev = "6773c9b2d39a70481a5d6eb5368e9ced6229ad2b";
+ sha256 = "0gmxbpn50pnffidwjchkzph9rh2jm4wfq7hj8msp5vhdq5h0z9hm";
+ };
+
+ buildInputs = [
+ ncurses
+ ];
+
+ configureScript = "./Configure";
+ dontAddPrefix = true;
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp ./netris $out/bin
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A free networked version of T*tris";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ patryk27 ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/neverball/default.nix b/infra/libkookie/nixpkgs/pkgs/games/neverball/default.nix
new file mode 100644
index 000000000000..99ce818d04d1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/neverball/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, SDL2, libGL, libpng, libjpeg, SDL2_ttf, libvorbis, gettext
+, physfs }:
+
+stdenv.mkDerivation rec {
+ name = "neverball-1.6.0";
+ src = fetchurl {
+ url = "https://neverball.org/${name}.tar.gz";
+ sha256 = "184gm36c6p6vaa6gwrfzmfh86klhnb03pl40ahsjsvprlk667zkk";
+ };
+
+ buildInputs = [ libpng SDL2 libGL libjpeg SDL2_ttf libvorbis gettext physfs ];
+
+ dontPatchELF = true;
+
+ patchPhase = ''
+ sed -i -e 's@\./data@'$out/share/neverball/data@ share/base_config.h Makefile
+ sed -i -e 's@\./locale@'$out/share/neverball/locale@ share/base_config.h Makefile
+ sed -i -e 's@-lvorbisfile@-lvorbisfile -lX11 -lgcc_s@' Makefile
+ '';
+
+ # The map generation code requires a writable HOME
+ preConfigure = "export HOME=$TMPDIR";
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/neverball
+ cp -R data locale $out/share/neverball
+ cp neverball $out/bin
+ cp neverputt $out/bin
+ cp mapc $out/bin
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = {
+ homepage = "https://neverball.org/";
+ description = "Tilt the floor to roll a ball";
+ license = "GPL";
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/newtonwars/default.nix b/infra/libkookie/nixpkgs/pkgs/games/newtonwars/default.nix
new file mode 100644
index 000000000000..093f071c7233
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/newtonwars/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, makeWrapper, freeglut, libGLU, libGL }:
+
+stdenv.mkDerivation {
+ pname = "newtonwars";
+ version = "20150609";
+
+ src = fetchFromGitHub {
+ owner = "Draradech";
+ repo = "NewtonWars";
+ rev = "98bb99a1797fd0073e0fd25ef9218468d3a9f7cb";
+ sha256 = "0g63fwfcdxxlnqlagj1fb8ngm385gmv8f7p8b4r1z5cny2znxdvs";
+ };
+
+ buildInputs = [ makeWrapper freeglut libGL libGLU ];
+
+ patchPhase = ''
+ sed -i "s;font24.raw;$out/share/font24.raw;g" display.c
+ '';
+
+ buildPhase = "sh build-linux.sh";
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share
+ cp nw $out/bin
+ cp font24.raw $out/share
+
+ wrapProgram $out/bin/nw \
+ --prefix LD_LIBRARY_PATH ":" ${freeglut}/lib \
+ --prefix LD_LIBRARY_PATH ":" ${libGLU}/lib \
+ --prefix LD_LIBRARY_PATH ":" ${libGL}/lib
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A space battle game with gravity as the main theme";
+ maintainers = with maintainers; [ pSub ];
+ platforms = platforms.linux;
+ license = licenses.mit;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/nexuiz/default.nix b/infra/libkookie/nixpkgs/pkgs/games/nexuiz/default.nix
new file mode 100644
index 000000000000..e055e27d2cdb
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/nexuiz/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, fetchurl
+, # required for both
+ unzip, zlib, curl, libjpeg, libpng, libvorbis, libtheora
+, libogg, libmodplug
+, # glx
+ libX11, libGLU, libGL, libXpm, libXext, libXxf86vm, libXxf86dga, alsaLib
+, # sdl
+ SDL
+}:
+
+let
+ version = "2.5.2";
+
+ version_short = stdenv.lib.replaceChars [ "." ] [ "" ] version;
+in stdenv.mkDerivation {
+ pname = "nexuiz";
+ inherit version;
+
+ src = fetchurl {
+ url = "mirror://sourceforge/nexuiz/nexuiz-${version_short}.zip";
+ sha256 = "0010jrxc68qqinkvdh1qn2b8z3sa5v1kcd8d1m4llp3pr6y7xqm5";
+ };
+
+ buildInputs = [
+ # required for both
+ unzip
+ # glx
+ libX11 libGLU libGL libXpm libXext libXxf86vm libXxf86dga alsaLib
+ # sdl
+ SDL
+ ];
+
+ postUnpack = ''
+ cd Nexuiz/sources/
+ unzip enginesource*.zip
+ cd ../../
+ '';
+
+ NIX_LDFLAGS = ''
+ -rpath ${zlib.out}/lib
+ -rpath ${curl.out}/lib
+ -rpath ${libjpeg.out}/lib
+ -rpath ${libpng.out}/lib
+ -rpath ${libvorbis.out}/lib
+ -rpath ${libtheora.out}/lib
+ -rpath ${libogg.out}/lib
+ -rpath ${libmodplug.out}/lib
+ '';
+
+ buildPhase = ''
+ cd sources/darkplaces/
+ DP_FS_BASEDIR="$out/share/nexuiz"
+ make DP_FS_BASEDIR=$DP_FS_BASEDIR cl-release
+ make DP_FS_BASEDIR=$DP_FS_BASEDIR sdl-release
+ make DP_FS_BASEDIR=$DP_FS_BASEDIR sv-release
+ cd ../../
+ '';
+
+ installPhase = ''
+ mkdir -pv "$out/bin/"
+ cp -v sources/darkplaces/darkplaces-glx "$out/bin/nexuiz-glx"
+ cp -v sources/darkplaces/darkplaces-sdl "$out/bin/nexuiz-sdl"
+ cp -v sources/darkplaces/darkplaces-dedicated "$out/bin/nexuiz-dedicated"
+ mkdir -pv "$out/share/nexuiz/"
+ cp -rv data/ "$out/share/nexuiz/"
+ ln -s "$out/bin/nexuiz-sdl" "$out/bin/nexuiz"
+ '';
+
+ dontPatchELF = true;
+
+ meta = {
+ description = "A free fast-paced first-person shooter";
+ homepage = "http://www.alientrap.org/games/nexuiz";
+ license = stdenv.lib.licenses.gpl2;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ninvaders/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ninvaders/default.nix
new file mode 100644
index 000000000000..26462c1eef5c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ninvaders/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, cmake, ncurses }:
+
+stdenv.mkDerivation rec {
+ pname = "ninvaders";
+ version = "0.1.2";
+
+ src = fetchFromGitHub {
+ owner = "sf-refugees";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1wmwws1zsap4bfc2439p25vnja0hnsf57k293rdxw626gly06whi";
+ };
+
+ buildInputs = [ cmake ncurses ];
+
+ meta = with stdenv.lib; {
+ description = "Space Invaders clone based on ncurses";
+ homepage = "http://ninvaders.sourceforge.net/";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ _1000101 ];
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/njam/default.nix b/infra/libkookie/nixpkgs/pkgs/games/njam/default.nix
new file mode 100644
index 000000000000..5022a92a7cd1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/njam/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchurl, SDL, SDL_image, SDL_mixer, SDL_net }:
+
+stdenv.mkDerivation {
+ name = "njam-1.25";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/njam/njam-1.25-src.tar.gz";
+ sha256 = "0ysvqw017xkvddj957pdfmbmji7qi20nyr7f0zxvcvm6c7d3cc7s";
+ };
+
+ preBuild = ''
+ rm src/*.o
+ '';
+
+ buildInputs = [ SDL SDL_image SDL_mixer SDL_net ];
+
+ hardeningDisable = [ "format" ];
+
+ patches = [ ./logfile.patch ];
+
+ meta = {
+ homepage = "http://trackballs.sourceforge.net/";
+ description = "Cross-platform pacman-like game";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/njam/logfile.patch b/infra/libkookie/nixpkgs/pkgs/games/njam/logfile.patch
new file mode 100644
index 000000000000..45fd82a0845b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/njam/logfile.patch
@@ -0,0 +1,22 @@
+diff --git a/src/njamedit.cpp b/src/njamedit.cpp
+index a895ca9..38477db 100644
+--- a/src/njamedit.cpp
++++ b/src/njamedit.cpp
+@@ -114,7 +114,7 @@ void NjamEngine::LevelEditor()
+ key = SDLK_a;
+ else if (CheckForSave())
+ {
+- LogFile::LogFile("Saving maps");
++ LogFile("Saving maps");
+ m_Maps.Save(filename);
+ level_type_was = level_type;
+ changed = false;
+@@ -139,7 +139,7 @@ void NjamEngine::LevelEditor()
+ "levels/%s.%s",
+ #endif
+ filename, types[level_type]);
+- LogFile::LogFile("Saving maps");
++ LogFile("Saving maps");
+ m_Maps.Save(buf);
+ level_type_was = level_type;
+ changed = false;
diff --git a/infra/libkookie/nixpkgs/pkgs/games/nottetris2/default.nix b/infra/libkookie/nixpkgs/pkgs/games/nottetris2/default.nix
new file mode 100644
index 000000000000..dde35e4fe320
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/nottetris2/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, zip, love_0_7, makeWrapper, makeDesktopItem }:
+
+let
+ pname = "nottetris2";
+ version = "2.0";
+
+ desktopItem = makeDesktopItem {
+ name = "nottetris2";
+ exec = pname;
+ comment = "It's like tetris, but it's not";
+ desktopName = "nottetris2";
+ genericName = "nottetris2";
+ categories = "Game";
+ };
+
+in
+
+stdenv.mkDerivation {
+ inherit pname version;
+
+ src = fetchFromGitHub {
+ owner = "Stabyourself";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "17iabh6rr8jim70n96rbhif4xq02g2kppscm8l339yqx6mhb64hs";
+ };
+
+ nativeBuildInputs = [ zip ];
+ buildInputs = [ love_0_7 makeWrapper ];
+
+ phases = [ "unpackPhase" "installPhase" ];
+
+ installPhase =
+ ''
+ mkdir -p $out/bin $out/share/games/lovegames $out/share/applications
+ zip -9 -r ${pname}.love ./*
+ mv ${pname}.love $out/share/games/lovegames/${pname}.love
+ makeWrapper ${love_0_7}/bin/love $out/bin/${pname} --add-flags $out/share/games/lovegames/${pname}.love
+ ln -s ${desktopItem}/share/applications/* $out/share/applications/
+ chmod +x $out/bin/${pname}
+ '';
+
+ meta = with stdenv.lib; {
+ description = "It's like Tetris, but it's not";
+ platforms = platforms.linux;
+ license = licenses.wtfpl;
+ maintainers = with maintainers; [ yorickvp ];
+ downloadPage = "https://stabyourself.net/nottetris2/";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/nudoku/default.nix b/infra/libkookie/nixpkgs/pkgs/games/nudoku/default.nix
new file mode 100644
index 000000000000..0e1bd9eb4a9d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/nudoku/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, gettext, ncurses }:
+
+stdenv.mkDerivation rec {
+ pname = "nudoku";
+ version = "2.1.0";
+
+ src = fetchFromGitHub {
+ owner = "jubalh";
+ repo = pname;
+ rev = version;
+ sha256 = "12v00z3p0ymi8f3w4b4bgl4c76irawn3kmd147r0ap6s9ssx2q6m";
+ };
+
+ # Allow gettext 0.20
+ postPatch = ''
+ substituteInPlace configure.ac --replace 0.19 0.20
+ '';
+
+ nativeBuildInputs = [ autoreconfHook pkgconfig gettext ];
+ buildInputs = [ ncurses ];
+
+ configureFlags = stdenv.lib.optional stdenv.hostPlatform.isMusl "--disable-nls";
+
+ meta = with stdenv.lib; {
+ description = "An ncurses based sudoku game";
+ homepage = "http://jubalh.github.io/nudoku/";
+ license = licenses.gpl3;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ dtzWill ];
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/nxengine-evo/default.nix b/infra/libkookie/nixpkgs/pkgs/games/nxengine-evo/default.nix
new file mode 100644
index 000000000000..909737a68049
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/nxengine-evo/default.nix
@@ -0,0 +1,65 @@
+{ stdenv
+, fetchpatch
+, fetchurl
+, cmake
+, libpng
+, SDL2
+, SDL2_mixer
+}:
+
+stdenv.mkDerivation rec {
+ pname = "nxengine-evo";
+ version = "2.6.4";
+ src = fetchurl {
+ url = "https://github.com/nxengine/nxengine-evo/archive/v${version}.tar.gz";
+ sha256 = "1xir74l0vrzrpyl7sfqfxp083dakbix26hd0arwf2y57w1mbjas8";
+ };
+ assets = fetchurl {
+ url = "https://github.com/nxengine/nxengine-evo/releases/download/v${version}/NXEngine-v${version}-Linux.tar.xz";
+ sha256 = "1b5hkmsrrhnjjf825ri6n62kb3fldwl7v5f1cqvqyv47zv15g5gy";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/nxengine/nxengine-evo/commit/1890127ec4b4b5f8d6cb0fb30a41868e95659840.patch";
+ sha256 = "18j22vzkikcwqd42vlhzd6rjp26dq0zslxw5yyl07flivms0hny2";
+ })
+ (fetchpatch {
+ url = "https://github.com/nxengine/nxengine-evo/commit/75b8b8e3b067fd354baa903332f2a3254d1cc017.patch";
+ sha256 = "0sjr7z63gp7nfxifxisvp2w664mxxk3xi4a3d86mm0470dj5m5bx";
+ })
+ ];
+
+ nativeBuildInputs = [ cmake ];
+
+ buildInputs = [
+ libpng
+ SDL2
+ SDL2_mixer
+ ];
+
+ # Allow finding game assets.
+ postPatch = ''
+ sed -i -e "s,/usr/share/,$out/share/," src/ResourceManager.cpp
+ '';
+
+ installPhase = ''
+ cd ..
+ unpackFile ${assets}
+ mkdir -p $out/bin/ $out/share/nxengine/
+ install bin/* $out/bin/
+ cp -r NXEngine-evo-${version}-Linux/data/ $out/share/nxengine/data
+ chmod -R a=r,a+X $out/share/nxengine/data
+ '';
+
+ meta = {
+ description = "A complete open-source clone/rewrite of the masterpiece jump-and-run platformer Doukutsu Monogatari (also known as Cave Story)";
+ license = with stdenv.lib.licenses; [
+ gpl3 # Game engine
+ unfreeRedistributable # Game assets, freeware
+ ];
+ maintainers = [ stdenv.lib.maintainers.scubed2 ];
+ homepage = "https://github.com/nxengine/nxengine-evo";
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/odamex/default.nix b/infra/libkookie/nixpkgs/pkgs/games/odamex/default.nix
new file mode 100644
index 000000000000..af9bccadeb3e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/odamex/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, cmake, fetchurl, pkgconfig, SDL, SDL_mixer, SDL_net, wxGTK30 }:
+
+stdenv.mkDerivation rec {
+ pname = "odamex";
+ version = "0.8.2";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/${pname}/${pname}-src-${version}.tar.bz2";
+ sha256 = "0d4v1l7kghkz1xz92jxlx50x3iy94z7ix1i3209m5j5545qzxrqq";
+ };
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+ buildInputs = [ SDL SDL_mixer SDL_net wxGTK30 ];
+
+ enableParallelBuilding = true;
+
+ meta = {
+ homepage = "http://odamex.net/";
+ description = "A client/server port for playing old-school Doom online";
+ license = stdenv.lib.licenses.gpl2;
+ platforms = stdenv.lib.platforms.linux;
+ maintainers = with stdenv.lib.maintainers; [ MP2E ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/oilrush/default.nix b/infra/libkookie/nixpkgs/pkgs/games/oilrush/default.nix
new file mode 100644
index 000000000000..6a05a566524d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/oilrush/default.nix
@@ -0,0 +1,78 @@
+{ stdenv, config, fetchurl, libX11, libXext, libXinerama, libXrandr
+, libXrender, fontconfig, freetype, openal, runtimeShell }:
+
+let inherit (stdenv.lib) makeLibraryPath; in
+
+stdenv.mkDerivation {
+ name = "oilrush";
+ src =
+ let
+ url = config.oilrush.url or null;
+ sha256 = config.oilrush.sha256 or null;
+ in
+ assert url != null && sha256 != null;
+ fetchurl { inherit url sha256; };
+ shell = stdenv.shell;
+ arch = if stdenv.hostPlatform.system == "x86_64-linux" then "x64"
+ else if stdenv.hostPlatform.system == "i686-linux" then "x86"
+ else "";
+ unpackPhase = ''
+ mkdir oilrush
+ cd oilrush
+ "$shell" "$src" --tar xf
+ '';
+ patchPhase = ''
+ cd bin
+ for f in launcher_$arch libQtCoreUnigine_$arch.so.4 OilRush_$arch
+ do
+ patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $f
+ done
+ patchelf --set-rpath ${stdenv.cc.cc.lib}/lib64:${makeLibraryPath [ stdenv.cc.cc libX11 libXext libXrender fontconfig freetype ]}\
+ launcher_$arch
+ patchelf --set-rpath ${stdenv.cc.cc.lib}/lib64:${stdenv.cc.cc.lib}/lib\
+ libNetwork_$arch.so
+ patchelf --set-rpath ${stdenv.cc.cc.lib}/lib64:${stdenv.cc.cc.lib}/lib\
+ libQtCoreUnigine_$arch.so.4
+ patchelf --set-rpath ${stdenv.cc.cc.lib}/lib64:${makeLibraryPath [ stdenv.cc.cc libX11 libXext libXrender fontconfig freetype ]}\
+ libQtGuiUnigine_$arch.so.4
+ patchelf --set-rpath ${stdenv.cc.cc.lib}/lib64:${stdenv.cc.cc.lib}/lib\
+ libQtNetworkUnigine_$arch.so.4
+ patchelf --set-rpath ${stdenv.cc.cc.lib}/lib64:${makeLibraryPath [ stdenv.cc.cc libX11 libXext libXrender fontconfig freetype ]}\
+ libQtWebKitUnigine_$arch.so.4
+ patchelf --set-rpath ${stdenv.cc.cc.lib}/lib64:${stdenv.cc.cc.lib}/lib\
+ libQtXmlUnigine_$arch.so.4
+ patchelf --set-rpath ${stdenv.cc.cc.lib}/lib64:${stdenv.cc.cc.lib}/lib\
+ libRakNet_$arch.so
+ patchelf --set-rpath ${stdenv.cc.cc.lib}/lib64:${makeLibraryPath [ stdenv.cc.cc libX11 libXext libXinerama libXrandr ]}\
+ libUnigine_$arch.so
+ patchelf --set-rpath ${stdenv.cc.cc.lib}/lib64:${makeLibraryPath [ stdenv.cc.cc libX11 libXext libXinerama libXrandr ]}\
+ OilRush_$arch
+ '';
+ installPhase = ''
+ cd ..
+ mkdir -p "$out/opt/oilrush"
+ cp -r * "$out/opt/oilrush"
+ mkdir -p "$out/bin"
+ cat << EOF > "$out/bin/oilrush"
+ #!${runtimeShell}
+ LD_LIBRARY_PATH=.:${makeLibraryPath [ openal ]}:\$LD_LIBRARY_PATH
+ cd "$out/opt/oilrush"
+ exec ./launcher_$arch.sh "\$@"
+ EOF
+ chmod +x "$out/bin/oilrush"
+ '';
+ meta = {
+ description = "A naval strategy game";
+ longDescription = ''
+ Oil Rush is a real-time naval strategy game based on group control. It
+ combines the strategic challenge of a classical RTS with the sheer fun
+ of Tower Defense.
+ '';
+ homepage = "http://oilrush-game.com/";
+ license = stdenv.lib.licenses.unfree;
+ #maintainers = with stdenv.lib.maintainers; [ astsmtl ];
+ platforms = stdenv.lib.platforms.linux;
+ hydraPlatforms = [];
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/onscripter-en/default.nix b/infra/libkookie/nixpkgs/pkgs/games/onscripter-en/default.nix
new file mode 100644
index 000000000000..ebcf755780d3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/onscripter-en/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl
+, libpng, libjpeg, libogg, libvorbis, freetype, smpeg
+, SDL, SDL_image, SDL_mixer, SDL_ttf }:
+
+
+stdenv.mkDerivation {
+ name = "onscripter-en-20110930";
+
+ src = fetchurl {
+ # The website is not available now.
+ url = "https://www.dropbox.com/s/ag21owy9poyr2oy/onscripter-en-20110930-src.tar.bz2";
+ sha256 = "1kzm6d894c0ihgkwhd03x3kaqqz0sb6kf0r86xrrz12y309zfam6";
+ };
+
+ buildInputs = [ libpng libjpeg libogg libvorbis freetype smpeg
+ SDL SDL_image SDL_mixer SDL_ttf
+ ];
+
+ configureFlags = [ "--no-werror" ];
+
+ # Without this libvorbisfile.so is not getting linked properly for some reason.
+ NIX_CFLAGS_LINK = "-lvorbisfile";
+
+ preBuild = ''
+ sed -i 's/.dll//g' Makefile
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Japanese visual novel scripting engine";
+ homepage = "http://unclemion.com/onscripter/";
+ license = licenses.gpl2;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openarena/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openarena/default.nix
new file mode 100644
index 000000000000..577eafb6a8ca
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openarena/default.nix
@@ -0,0 +1,43 @@
+{ fetchurl, makeWrapper, patchelf, pkgs, stdenv, SDL, libglvnd, libogg, libvorbis, curl, openal }:
+
+stdenv.mkDerivation {
+ pname = "openarena";
+ version = "0.8.8";
+
+ src = fetchurl {
+ name = "openarena.zip";
+ url = "http://openarena.ws/request.php?4";
+ sha256 = "0jmc1cmdz1rcvqc9ilzib1kilpwap6v0d331l6q53wsibdzsz3ss";
+ };
+
+ nativeBuildInputs = [ pkgs.unzip patchelf makeWrapper];
+
+ installPhase = let
+ gameDir = "$out/openarena-$version";
+ interpreter = "$(< \"$NIX_CC/nix-support/dynamic-linker\")";
+ libPath = stdenv.lib.makeLibraryPath [ SDL libglvnd libogg libvorbis curl openal ];
+ arch = {
+ "x86_64-linux" = "x86_64";
+ "i386-linux" = "i386";
+ }.${stdenv.hostPlatform.system};
+ in ''
+ mkdir -pv $out/bin
+ cd $out
+ unzip $src
+
+ patchelf --set-interpreter "${interpreter}" "${gameDir}/openarena.${arch}"
+ patchelf --set-interpreter "${interpreter}" "${gameDir}/oa_ded.${arch}"
+
+ makeWrapper "${gameDir}/openarena.${arch}" "$out/bin/openarena" \
+ --prefix LD_LIBRARY_PATH : "${libPath}"
+ makeWrapper "${gameDir}/oa_ded.${arch}" "$out/bin/oa_ded"
+ '';
+
+ meta = {
+ description = "Crossplatform openarena client";
+ homepage = "http://openarena.ws/";
+ maintainers = [ stdenv.lib.maintainers.wyvie ];
+ platforms = [ "i386-linux" "x86_64-linux" ];
+ license = stdenv.lib.licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openclonk/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openclonk/default.nix
new file mode 100644
index 000000000000..18147c896bf4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openclonk/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, cmake, pkgconfig
+, SDL2, libvorbis, libogg, libjpeg, libpng, freetype, glew, tinyxml, openal
+, freealut, readline, gcc-unwrapped
+, enableSoundtrack ? false # Enable the "Open Clonk Soundtrack - Explorers Journey" by David Oerther
+}:
+
+let
+ soundtrack_src = fetchurl {
+ url = "http://www.openclonk.org/download/Music.ocg";
+ sha256 = "1ckj0dlpp5zsnkbb5qxxfxpkiq76jj2fgj91fyf3ll7n0gbwcgw5";
+ };
+in stdenv.mkDerivation rec {
+ version = "8.1";
+ pname = "openclonk";
+
+ src = fetchurl {
+ url = "https://www.openclonk.org/builds/release/8.1/openclonk-${version}-src.tar.bz2";
+ sha256 = "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik";
+ };
+
+ postInstall = ''
+ mv -v $out/games/openclonk $out/bin/
+ '' + stdenv.lib.optionalString enableSoundtrack ''
+ ln -sv ${soundtrack_src} $out/share/games/openclonk/Music.ocg
+ '';
+
+ enableParallelBuilding = true;
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+
+ buildInputs = [
+ SDL2 libvorbis libogg libjpeg libpng freetype glew tinyxml openal freealut
+ readline
+ ];
+
+ cmakeFlags = [ "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar" "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib" ];
+
+ cmakeBuildType = "RelWithDebInfo";
+
+ meta = with stdenv.lib; {
+ description = "Free multiplayer action game in which you control clonks, small but witty and nimble humanoid beings";
+ homepage = "https://www.openclonk.org";
+ license = if enableSoundtrack then licenses.unfreeRedistributable else licenses.isc;
+ maintainers = with maintainers; [ lheckemann ];
+ platforms = [ "x86_64-linux" "i686-linux" ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/opendune/default.nix b/infra/libkookie/nixpkgs/pkgs/games/opendune/default.nix
new file mode 100644
index 000000000000..591bea12297d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/opendune/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, lib, fetchFromGitHub, pkgconfig
+, alsaLib, libpulseaudio, SDL2, SDL2_image, SDL2_mixer }:
+
+# - set the opendune configuration at ~/.config/opendune/opendune.ini:
+# [opendune]
+# datadir=/path/to/opendune-data
+# - download dune2 into [datadir] http://www.bestoldgames.net/eng/old-games/dune-2.php
+
+stdenv.mkDerivation rec {
+ pname = "opendune";
+ version = "0.9";
+
+ src = fetchFromGitHub {
+ owner = "OpenDUNE";
+ repo = "OpenDUNE";
+ rev = version;
+ sha256 = "15rvrnszdy3db8s0dmb696l4isb3x2cpj7wcl4j09pdi59pc8p37";
+ };
+
+ configureFlags = [
+ "--with-alsa=${lib.getLib alsaLib}/lib/libasound.so"
+ "--with-pulse=${lib.getLib libpulseaudio}/lib/libpulse.so"
+ ];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ buildInputs = [ alsaLib libpulseaudio SDL2 SDL2_image SDL2_mixer ];
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ runHook preInstall
+
+ install -Dm555 -t $out/bin bin/opendune
+ install -Dm444 -t $out/share/doc/opendune enhancement.txt README.txt
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Dune, Reinvented";
+ homepage = "https://github.com/OpenDUNE/OpenDUNE";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ nand0p ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/opendungeons/cmakepaths.patch b/infra/libkookie/nixpkgs/pkgs/games/opendungeons/cmakepaths.patch
new file mode 100644
index 000000000000..bcffd7a22bcf
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/opendungeons/cmakepaths.patch
@@ -0,0 +1,17 @@
+--- ../CMakeLists.txt
++++ ../CMakeLists.txt
+@@ -31,12 +31,12 @@
+ set(OD_PLUGINS_CFG_PATH ".")
+ else()
+ # Set binary and data install locations if we want to use the installer
+- set(OD_BIN_PATH ${CMAKE_INSTALL_PREFIX}/games CACHE PATH "Absolute path to the game binary directory")
++ set(OD_BIN_PATH ${CMAKE_INSTALL_PREFIX}/bin CACHE PATH "Absolute path to the game binary directory")
+ set(OD_DATA_PATH ${CMAKE_INSTALL_PREFIX}/share/games/${PROJECT_NAME} CACHE PATH "Absolute path to the game data directory")
+ set(OD_SHARE_PATH ${CMAKE_INSTALL_PREFIX}/share CACHE PATH "Absolute path to the shared data directory (desktop file, icons, etc.)")
+ # Set the plugins.cfg file path to a common but architecture-dependent location.
+ # Because the plugins.cfg Ogre plugins path path may vary depending on the architecture used.
+- set(OD_PLUGINS_CFG_PATH /etc/${PROJECT_NAME} CACHE PATH "Absolute path to the Ogre plugins.cfg file")
++ set(OD_PLUGINS_CFG_PATH ${CMAKE_INSTALL_PREFIX}/etc/${PROJECT_NAME} CACHE PATH "Absolute path to the Ogre plugins.cfg file")
+ endif()
+
+ if(NOT MSVC)
diff --git a/infra/libkookie/nixpkgs/pkgs/games/opendungeons/default.nix b/infra/libkookie/nixpkgs/pkgs/games/opendungeons/default.nix
new file mode 100644
index 000000000000..64b6c07f4a2a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/opendungeons/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, ogre, cegui, boost, sfml, openal, cmake, ois, pkgconfig }:
+
+stdenv.mkDerivation rec {
+ pname = "opendungeons";
+ version = "0.7.1";
+
+ src = fetchFromGitHub {
+ owner = "OpenDungeons";
+ repo = "OpenDungeons";
+ rev = version;
+ sha256 = "0nipb2h0gn628yxlahjgnfhmpfqa19mjdbj3aqabimdfqds9pryh";
+ };
+
+ patches = [ ./cmakepaths.patch ];
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ cmake ogre cegui boost sfml openal ois ];
+ NIX_LDFLAGS = "-lpthread";
+
+ meta = with stdenv.lib; {
+ description = "An open source, real time strategy game sharing game elements with the Dungeon Keeper series and Evil Genius";
+ homepage = "https://opendungeons.github.io";
+ license = [ licenses.gpl3Plus licenses.zlib licenses.mit licenses.cc-by-sa-30 licenses.cc0 licenses.ofl licenses.cc-by-30 ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openjk/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openjk/default.nix
new file mode 100644
index 000000000000..0fe327b308e9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openjk/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, fetchFromGitHub, makeDesktopItem, makeWrapper, cmake, libjpeg, zlib, libpng, libGL, SDL2 }:
+
+let
+ jamp = makeDesktopItem rec {
+ name = "jamp";
+ exec = name;
+ icon = "OpenJK_Icon_128";
+ comment = "Open Source Jedi Academy game released by Raven Software";
+ desktopName = "Jedi Academy (Multi Player)";
+ genericName = "Jedi Academy";
+ categories = "Game;";
+ };
+ jasp = makeDesktopItem rec {
+ name = "jasp";
+ exec = name;
+ icon = "OpenJK_Icon_128";
+ comment = "Open Source Jedi Academy game released by Raven Software";
+ desktopName = "Jedi Academy (Single Player)";
+ genericName = "Jedi Academy";
+ categories = "Game;";
+ };
+in stdenv.mkDerivation {
+ pname = "OpenJK";
+ version = "2020-07-03";
+
+ src = fetchFromGitHub {
+ owner = "JACoders";
+ repo = "OpenJK";
+ rev = "0a336ce4dffe6505e3f754b59732402a1db95752";
+ sha256 = "1xagbz42hi3ivs208mnay2dbgh90pmwwbar2p1yfhj3zl3cghcs8";
+ };
+
+ dontAddPrefix = true;
+ enableParallelBuilding = true;
+
+ nativeBuildInputs = [ makeWrapper cmake ];
+ buildInputs = [ libjpeg zlib libpng libGL SDL2 ];
+
+ # move from $out/JediAcademy to $out/opt/JediAcademy
+ preConfigure = ''
+ cmakeFlagsArray=("-DCMAKE_INSTALL_PREFIX=$out/opt")
+ '';
+
+ postInstall = ''
+ mkdir -p $out/bin $out/share/applications $out/share/icons/hicolor/128x128/apps
+ prefix=$out/opt/JediAcademy
+
+ makeWrapper $prefix/openjk.* $out/bin/jamp --run "cd $prefix"
+ makeWrapper $prefix/openjk_sp.* $out/bin/jasp --run "cd $prefix"
+ makeWrapper $prefix/openjkded.* $out/bin/openjkded --run "cd $prefix"
+
+ cp $src/shared/icons/OpenJK_Icon_128.png $out/share/icons/hicolor/128x128/apps
+ ln -s ${jamp}/share/applications/* $out/share/applications
+ ln -s ${jasp}/share/applications/* $out/share/applications
+ '';
+
+ meta = with stdenv.lib; {
+ description = "An open-source engine for Star Wars Jedi Academy game";
+ homepage = "https://github.com/JACoders/OpenJK";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ gnidorah ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openlierox/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openlierox/default.nix
new file mode 100644
index 000000000000..66c9420591d5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openlierox/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, libX11, xorgproto, gd, SDL, SDL_image, SDL_mixer, zlib
+, libxml2, pkgconfig, curl, cmake, libzip }:
+
+stdenv.mkDerivation {
+ name = "openlierox-0.58rc3";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/openlierox/OpenLieroX_0.58_rc3.src.tar.bz2";
+ sha256 = "1k35xppfqi3qfysv81xq3hj4qdy9j2ciinbkfdcmwclcsf3nh94z";
+ };
+
+ NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2 -std=c++98 -Wno-error";
+
+ # The breakpad fails to build on x86_64, and it's only to report bugs upstream
+ cmakeFlags = [ "-DBREAKPAD=0" ];
+
+ preConfigure = ''
+ cmakeFlags="$cmakeFlags -DSYSTEM_DATA_DIR=$out/share"
+ '';
+
+ patchPhase = ''
+ sed -i s,curl/types.h,curl/curl.h, include/HTTP.h src/common/HTTP.cpp
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/OpenLieroX
+ cp bin/* $out/bin
+ cp -R ../share/gamedir/* $out/share/OpenLieroX
+ '';
+
+ buildInputs = [ libX11 xorgproto gd SDL SDL_image SDL_mixer zlib libxml2
+ pkgconfig curl cmake libzip ];
+
+ meta = {
+ homepage = "http://openlierox.net";
+ description = "Real-time game with Worms-like shooting";
+ license = stdenv.lib.licenses.lgpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openmw/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openmw/default.nix
new file mode 100644
index 000000000000..22f3ea8d6ad3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openmw/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, mkDerivationWith, fetchFromGitHub, qtbase, openscenegraph, mygui, bullet, ffmpeg_3
+, boost, cmake, SDL2, unshield, openal, libXt, pkgconfig }:
+
+let
+ openscenegraph_ = openscenegraph.overrideDerivation (self: {
+ src = fetchFromGitHub {
+ owner = "OpenMW";
+ repo = "osg";
+ rev = "1556cd7966ebc1c80b6626988d2b25fb43a744cf";
+ sha256 = "0d74hijzmj82nx3jkv5qmr3pkgvplra0b8fbjx1y3vmzxamb0axd";
+ };
+ });
+in mkDerivationWith stdenv.mkDerivation rec {
+ version = "0.46.0";
+ pname = "openmw";
+
+ src = fetchFromGitHub {
+ owner = "OpenMW";
+ repo = "openmw";
+ rev = "${pname}-${version}";
+ sha256 = "0rm32zsmxvr6b0jjihfj543skhicbw5kg6shjx312clhlm035w2x";
+ };
+
+ enableParallelBuilding = true;
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ cmake boost ffmpeg_3 bullet mygui openscenegraph_ SDL2 unshield openal libXt qtbase ];
+
+ cmakeFlags = [
+ "-DDESIRED_QT_VERSION:INT=5"
+ ];
+
+ meta = with stdenv.lib; {
+ description = "An unofficial open source engine reimplementation of the game Morrowind";
+ homepage = "http://openmw.org";
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openmw/tes3mp.nix b/infra/libkookie/nixpkgs/pkgs/games/openmw/tes3mp.nix
new file mode 100644
index 000000000000..df332c0e5bf3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openmw/tes3mp.nix
@@ -0,0 +1,94 @@
+{ stdenv, cmake, openmw, fetchFromGitHub, luajit, makeWrapper, mygui }:
+
+# revisions are taken from https://github.com/GrimKriegor/TES3MP-deploy
+
+let
+ # TES3MP_STABLE_VERSION_FILE
+ compatHash = "292536439eeda58becdb7e441fe2e61ebb74529e";
+ rakNet = fetchFromGitHub {
+ owner = "TES3MP";
+ repo = "CrabNet";
+ # usually fixed:
+ # https://github.com/GrimKriegor/TES3MP-deploy/blob/d2a4a5d3acb64b16d9b8ca85906780aeea8d311b/tes3mp-deploy.sh#L589
+ rev = "4eeeaad2f6c11aeb82070df35169694b4fb7b04b";
+ sha256 = "0p0li9l1i5lcliswm5w9jql0zff9i6fwhiq0bl130m4i7vpr4cr3";
+ };
+ rakNetLibrary = stdenv.mkDerivation {
+ name = "RakNetLibrary";
+ src = rakNet;
+ nativeBuildInputs = [ cmake ];
+ installPhase = ''
+ install -Dm755 lib/libRakNetLibStatic.a $out/lib/libRakNetLibStatic.a
+ '';
+ };
+ coreScripts = fetchFromGitHub {
+ owner = "TES3MP";
+ repo = "CoreScripts";
+ # usually latest in stable branch (e.g. 0.7.0)
+ rev = "24aae91d9ddad38cdb3b0e0a13af59f142803e94";
+ sha256 = "1rfmxxr9ircfagdpbdrzl26msdhx1i3g974cblbv69078cradfh3";
+ };
+ # https://github.com/TES3MP/openmw-tes3mp/issues/555
+ mygui_ = mygui.overrideAttrs (oldAttrs: rec {
+ version = "3.2.2";
+
+ src = fetchFromGitHub {
+ owner = "MyGUI";
+ repo = "mygui";
+ rev = "MyGUI${version}";
+ sha256 = "1wk7jmwm55rhlqqcyvqsxdmwvl70bysl9azh4kd9n57qlmgk3zmw";
+ };
+ });
+in openmw.overrideAttrs (oldAttrs: rec {
+ version = "2019-11-19";
+ name = "openmw-tes3mp-${version}";
+
+ src = fetchFromGitHub {
+ owner = "TES3MP";
+ repo = "openmw-tes3mp";
+ # usually latest in stable branch (e.g. 0.7.0)
+ rev = "ad9ee80641a3e22d0780daca051df7f4e90f3615";
+ sha256 = "03a1vldiv5lk7yq6lhicx3qz8hjfxhind2dj0w9lg5839ljyk6jv";
+ };
+
+ nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ makeWrapper ];
+ buildInputs = [ luajit mygui_ ] ++ oldAttrs.buildInputs;
+
+ cmakeFlags = oldAttrs.cmakeFlags ++ [
+ "-DBUILD_OPENCS=OFF"
+ "-DRakNet_INCLUDES=${rakNet}/include"
+ "-DRakNet_LIBRARY_RELEASE=${rakNetLibrary}/lib/libRakNetLibStatic.a"
+ "-DRakNet_LIBRARY_DEBUG=${rakNetLibrary}/lib/libRakNetLibStatic.a"
+ ];
+
+ # https://github.com/TES3MP/openmw-tes3mp/issues/552
+ patches = [
+ ./tes3mp.patch
+ ];
+ NIX_CFLAGS_COMPILE = "-fpermissive";
+
+ preConfigure = ''
+ substituteInPlace files/version.in \
+ --subst-var-by OPENMW_VERSION_COMMITHASH ${compatHash}
+ '';
+
+ postInstall = ''
+ # components/process/processinvoker.cpp: path.prepend(QLatin1String("./"))
+ wrapProgram $out/bin/tes3mp-browser \
+ --run "cd $out/bin"
+ wrapProgram $out/bin/tes3mp-server \
+ --run "mkdir -p ~/.config/openmw" \
+ --run "cd ~/.config/openmw" \
+ --run "[ -d CoreScripts ] || cp --no-preserve=mode -r ${coreScripts} CoreScripts" \
+ --run "[ -f tes3mp-server.cfg ] || echo \"[Plugins] home = \$HOME/.config/openmw/CoreScripts\" > tes3mp-server.cfg" \
+ --run "cd $out/bin"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Multiplayer for TES3:Morrowind based on OpenMW";
+ homepage = "https://tes3mp.com/";
+ license = licenses.gpl3;
+ platforms = [ "x86_64-linux" "i686-linux" ];
+ maintainers = with maintainers; [ gnidorah ];
+ };
+})
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openmw/tes3mp.patch b/infra/libkookie/nixpkgs/pkgs/games/openmw/tes3mp.patch
new file mode 100644
index 000000000000..c2a78f9db9b0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openmw/tes3mp.patch
@@ -0,0 +1,13 @@
+diff --git a/apps/openmw-mp/Script/Types.hpp b/apps/openmw-mp/Script/Types.hpp
+index be365cfb8..204dcdc7b 100644
+--- a/apps/openmw-mp/Script/Types.hpp
++++ b/apps/openmw-mp/Script/Types.hpp
+@@ -105,7 +105,7 @@ struct ScriptFunctionPointer : public ScriptIdentity
+ void *addr;
+ #if (!defined(__clang__) && defined(__GNUC__))
+ template<typename R, typename... Types>
+- constexpr ScriptFunctionPointer(Function<R, Types...> addr) : ScriptIdentity(addr), addr((void*)(addr)) {}
++ constexpr ScriptFunctionPointer(Function<R, Types...> addr) : ScriptIdentity(addr), addr(addr) {}
+ #else
+ template<typename R, typename... Types>
+ constexpr ScriptFunctionPointer(Function<R, Types...> addr) : ScriptIdentity(addr), addr(addr) {}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/common.nix b/infra/libkookie/nixpkgs/pkgs/games/openra/common.nix
new file mode 100644
index 000000000000..51f941771777
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/common.nix
@@ -0,0 +1,84 @@
+/* The reusable code, and package attributes, between OpenRA engine packages (engine.nix)
+ and out-of-tree mod packages (mod.nix).
+*/
+{ stdenv, makeSetupHook, curl, unzip, dos2unix, pkgconfig, makeWrapper
+, lua, mono, dotnetPackages, python
+, libGL, freetype, openal, SDL2
+, zenity
+}:
+
+with stdenv.lib;
+
+let
+ path = makeBinPath ([ mono python ] ++ optional (zenity != null) zenity);
+ rpath = makeLibraryPath [ lua freetype openal SDL2 ];
+ mkdirp = makeSetupHook { } ./mkdirp.sh;
+
+in {
+ patchEngine = dir: version: ''
+ sed -i \
+ -e 's/^VERSION.*/VERSION = ${version}/g' \
+ -e '/fetch-geoip-db/d' \
+ -e '/GeoLite2-Country.mmdb.gz/d' \
+ ${dir}/Makefile
+
+ sed -i 's|locations=.*|locations=${lua}/lib|' ${dir}/thirdparty/configure-native-deps.sh
+ '';
+
+ wrapLaunchGame = openraSuffix: ''
+ # Setting TERM=xterm fixes an issue with terminfo in mono: System.Exception: Magic number is wrong: 542
+ # https://github.com/mono/mono/issues/6752#issuecomment-365212655
+ wrapProgram $out/lib/openra${openraSuffix}/launch-game.sh \
+ --prefix PATH : "${path}" \
+ --prefix LD_LIBRARY_PATH : "${rpath}" \
+ --set TERM xterm
+
+ makeWrapper $out/lib/openra${openraSuffix}/launch-game.sh $(mkdirp $out/bin)/openra${openraSuffix} \
+ --run "cd $out/lib/openra${openraSuffix}"
+ '';
+
+ packageAttrs = {
+ buildInputs = with dotnetPackages; [
+ FuzzyLogicLibrary
+ MaxMindDb
+ MaxMindGeoIP2
+ MonoNat
+ NewtonsoftJson
+ NUnit3
+ NUnitConsole
+ OpenNAT
+ RestSharp
+ SharpFont
+ SharpZipLib
+ SmartIrc4net
+ StyleCopMSBuild
+ StyleCopPlusMSBuild
+ ] ++ [
+ libGL
+ ];
+
+ # TODO: Test if this is correct.
+ nativeBuildInputs = [
+ curl
+ unzip
+ dos2unix
+ pkgconfig
+ makeWrapper
+ mkdirp
+ mono
+ python
+ ];
+
+ makeFlags = [ "prefix=$(out)" ];
+
+ doCheck = true;
+
+ dontStrip = true;
+
+ meta = {
+ maintainers = with maintainers; [ fusion809 msteen rardiol ];
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ };
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openra/default.nix
new file mode 100644
index 000000000000..2e8533f7816e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/default.nix
@@ -0,0 +1,71 @@
+/* This file defines all OpenRA packages under `openraPackages`,
+ e.g. the OpenRA release engine can be found at `openraPackages.engines.release` (see `engines.nix`),
+ or the out-of-tree mod "Combined Arms" can be found at `openraPackages.mods.ca` (see `mods.nix`).
+ The `openra` package is just an alias to `openraPackages.engines.release`,
+ and just provides the mods included in the source code of the engine.
+ Additional engines or mods can be added with `openraPackages.buildOpenRAEngine` (function around `engine.nix`)
+ and `openraPackages.buildOpenRAMod` (function around `mod.nix`), respectively.
+*/
+pkgs:
+
+with pkgs.lib;
+
+let
+ /* Building an engine or out-of-tree mod is very similar,
+ but different enough not to be able to build them with the same package definition,
+ so instaed we define what is common between them in a seperate file.
+
+ Although `callPackage` could be used, it would require undoing `makeOverridable`,
+ because `common.nix` does not define a package, but just an attribute set,
+ which is directly passed as part of the argument to the engines and mods `callPackage`,
+ so either the attributes added by `makeOverridable` have to be removed
+ or the engine and mod package definitions will need to add `...` to the argument list.
+ */
+ common = let f = import ./common.nix; in f (builtins.intersectAttrs (functionArgs f) pkgs // {
+ lua = pkgs.lua5_1;
+ # It is not necessary to run the game, but it is nicer to be given an error dialog in the case of failure,
+ # rather than having to look to the logs why it is not starting.
+ inherit (pkgs.gnome3) zenity;
+ });
+
+ /* Building a set of engines or mods requires some dependencies as well,
+ so the sets will actually be defined as a function instead,
+ requiring the dependencies and returning the actual set.
+
+ Not all dependencies for defining a engine or mod set are shared,
+ so additional arguments can be passed as well.
+
+ The builders for engines and mods allow to delay specifying the name,
+ by returning a function that expects a name, which we use, in this case,
+ to base the name on the attribute name instead, preventing the need to specify the name twice
+ if the attribute name and engine/mod name are equal.
+ */
+ callWithName = name: value: if isFunction value then value name else value;
+ buildOpenRASet = f: args: pkgs.recurseIntoAttrs (mapAttrs callWithName (f ({
+ inherit (pkgs) fetchFromGitHub;
+ extraPostFetch = ''
+ sed -i 's/curl/curl --insecure/g' $out/thirdparty/{fetch-thirdparty-deps,noget}.sh
+ $out/thirdparty/fetch-thirdparty-deps.sh
+ '';
+ } // args)));
+
+in pkgs.recurseIntoAttrs rec {
+ # The whole attribute set is destructered to ensure those (and only those) attributes are given
+ # and to provide defaults for those that are optional.
+ buildOpenRAEngine = { name ? null, version, description, homepage, mods, src }@engine:
+ # Allow specifying the name at a later point if no name has been given.
+ let builder = name: pkgs.callPackage ./engine.nix (common // {
+ engine = engine // { inherit name; };
+ }); in if name == null then builder else builder name;
+
+ # See `buildOpenRAEngine`.
+ buildOpenRAMod = { name ? null, version, title, description, homepage, src, engine, assetsError ? "" }@mod: ({ version, mods ? [], src }@engine:
+ let builder = name: pkgs.callPackage ./mod.nix (common // {
+ mod = mod // { inherit name assetsError; };
+ engine = engine // { inherit mods; };
+ }); in if name == null then builder else builder name) engine;
+
+ # See `buildOpenRASet`.
+ engines = buildOpenRASet (import ./engines.nix) { inherit buildOpenRAEngine; };
+ mods = buildOpenRASet (import ./mods.nix) { inherit buildOpenRAMod; };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/engine.nix b/infra/libkookie/nixpkgs/pkgs/games/openra/engine.nix
new file mode 100644
index 000000000000..7d2d007d0758
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/engine.nix
@@ -0,0 +1,60 @@
+/* The package defintion for an OpenRA engine.
+ It shares code with `mod.nix` by what is defined in `common.nix`.
+ Similar to `mod.nix` it is a generic package definition,
+ in order to make it easy to define multiple variants of the OpenRA engine.
+ For each mod provided by the engine, a wrapper script is created,
+ matching the naming convention used by `mod.nix`.
+ This package could be seen as providing a set of in-tree mods,
+ while the `mod.nix` pacakges provide a single out-of-tree mod.
+*/
+{ stdenv
+, packageAttrs
+, patchEngine
+, wrapLaunchGame
+, engine
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation (recursiveUpdate packageAttrs rec {
+ name = "${pname}-${version}";
+ pname = "openra";
+ version = "${engine.name}-${engine.version}";
+
+ src = engine.src;
+
+ postPatch = patchEngine "." version;
+
+ configurePhase = ''
+ runHook preConfigure
+
+ make version VERSION=${escapeShellArg version}
+
+ runHook postConfigure
+ '';
+
+ buildFlags = [ "DEBUG=false" "default" "man-page" ];
+
+ checkTarget = "nunit test";
+
+ installTargets = [
+ "install"
+ "install-linux-icons"
+ "install-linux-desktop"
+ "install-linux-appdata"
+ "install-linux-mime"
+ "install-man-page"
+ ];
+
+ postInstall = ''
+ ${wrapLaunchGame ""}
+
+ ${concatStrings (map (mod: ''
+ makeWrapper $out/bin/openra $out/bin/openra-${mod} --add-flags Game.Mod=${mod}
+ '') engine.mods)}
+ '';
+
+ meta = {
+ inherit (engine) description homepage;
+ };
+})
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/engines.nix b/infra/libkookie/nixpkgs/pkgs/games/openra/engines.nix
new file mode 100644
index 000000000000..933f8411f75a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/engines.nix
@@ -0,0 +1,41 @@
+{ buildOpenRAEngine, fetchFromGitHub, extraPostFetch }:
+
+let
+ buildUpstreamOpenRAEngine = { version, rev, sha256 }: name: (buildOpenRAEngine {
+ inherit version;
+ description = "Open-source re-implementation of Westwood Studios' 2D Command and Conquer games";
+ homepage = "https://www.openra.net/";
+ mods = [ "cnc" "d2k" "ra" "ts" ];
+ src = fetchFromGitHub {
+ owner = "OpenRA";
+ repo = "OpenRA" ;
+ inherit rev sha256 extraPostFetch;
+ };
+ } name).overrideAttrs (origAttrs: {
+ postInstall = ''
+ ${origAttrs.postInstall}
+ cp -r mods/ts $out/lib/openra/mods/
+ cp mods/ts/icon.png $(mkdirp $out/share/pixmaps)/openra-ts.png
+ ( cd $out/share/applications; sed -e 's/Dawn/Sun/g' -e 's/cnc/ts/g' openra-cnc.desktop > openra-ts.desktop )
+ '';
+ });
+
+in {
+ release = name: (buildUpstreamOpenRAEngine rec {
+ version = "20190314";
+ rev = "${name}-${version}";
+ sha256 = "15pvn5cx3g0nzbrgpsfz8dngad5wkzp5dz25ydzn8bmxafiijvcr";
+ } name);
+
+ playtest = name: (buildUpstreamOpenRAEngine rec {
+ version = "20190302";
+ rev = "${name}-${version}";
+ sha256 = "1vqvfk2p2lpk3m0d3rpvj34i8cmk3mfc7w4cn4llqd9zp4kk9pya";
+ } name);
+
+ bleed = buildUpstreamOpenRAEngine {
+ version = "8ee1102";
+ rev = "8ee11028d72cde7556b31d45f556b40be65b4b70";
+ sha256 = "0f1fpf37ms8d7fhlh3rjzsxsk9w23iyi3phs2i7g561292d5rk3l";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/mkdirp.sh b/infra/libkookie/nixpkgs/pkgs/games/openra/mkdirp.sh
new file mode 100644
index 000000000000..7b2cf0b89c0e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/mkdirp.sh
@@ -0,0 +1,4 @@
+mkdirp() {
+ mkdir -p "$@"
+ echo "$@"
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/mod-launch-game.sh b/infra/libkookie/nixpkgs/pkgs/games/openra/mod-launch-game.sh
new file mode 100644
index 000000000000..88b53e71e1bc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/mod-launch-game.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+show_error() {
+ if command -v zenity > /dev/null; then
+ zenity --no-wrap --no-markup --error --title "OpenRA - @title@" --text "$1" 2>/dev/null
+ else
+ printf "$1\n" >&2
+ fi
+ exit 1
+}
+
+cd "@out@/lib/openra-@name@"
+
+# Check for missing assets
+assetsError='@assetsError@'
+if [[ -n "$assetsError" && ! -d "$HOME/.openra/Content/@name@" ]]; then
+ show_error "$assetsError"
+fi
+
+# Run the game
+mono --debug OpenRA.Game.exe Game.Mod=@name@ Engine.LaunchPath="@out@/bin/openra-@name@" Engine.ModSearchPaths="@out@/lib/openra-@name@/mods" "$@"
+
+# Show a crash dialog if something went wrong
+if (( $? != 0 && $? != 1 )); then
+ show_error $'OpenRA - @title@ has encountered a fatal error.\nPlease refer to the crash logs for more information.\n\nLog files are located in ~/.openra/Logs'
+fi
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/mod-update.sh b/infra/libkookie/nixpkgs/pkgs/games/openra/mod-update.sh
new file mode 100755
index 000000000000..8489d5a97a7c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/mod-update.sh
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+# shellcheck disable=SC2034
+
+# for mod in $(nix eval --raw '(
+# with import <nixpkgs> { };
+# with lib;
+# let mods = attrNames (removeAttrs openraPackages.mods [ "recurseForDerivations" ]);
+# in concatStringsSep " " mods
+# )'); do
+# ./mod-update.sh "$mod"
+# done
+
+# Uses: https://github.com/msteen/nix-upfetch
+
+mod=$1
+commit_count=$2
+token=
+nixpkgs='<nixpkgs>'
+
+die() {
+ local ret=$?
+ echo "$*" >&2
+ exit $ret
+}
+
+curl() {
+ command curl --silent --show-error "$@"
+}
+
+get_sha1() {
+ local owner=$1 repo=$2 ref=$3
+ # https://developer.github.com/v3/#authentication
+ curl -H "Authorization: token $token" -H 'Accept: application/vnd.github.VERSION.sha' "https://api.github.com/repos/$owner/$repo/commits/$ref"
+}
+
+[[ -n $mod ]] || die "The first argument of this script has to be a mod identifier."
+
+[[ -n $token ]] || die "Please edit this script to include a GitHub API access token, which is required for API v4:
+https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"
+
+# Get current mod_owner and mod_repo.
+vars=$(nix-prefetch --file "$nixpkgs" "openraPackages.mods.$mod" --index 0 --quiet --output json --no-compute-hash > >(
+ jq --raw-output 'with_entries(select(.value | contains("\n") | not)) | to_entries | .[] | .key + "=" + .value')) || exit
+
+mod_owner=; mod_repo=; mod_rev=
+while IFS='=' read -r key val; do
+ declare "mod_${key}=${val}"
+done <<< "$vars"
+
+if [[ -n $commit_count ]]; then
+ query_on_commit='{
+ history(first: 10) {
+ nodes {
+ abbreviatedOid
+ oid
+ }
+ totalCount
+ }
+}'
+else
+ query_on_commit='{
+ history(first: 0) {
+ totalCount
+ }
+ abbreviatedOid
+ oid
+}'
+fi
+
+# shellcheck disable=SC2089
+query='{
+ repository(owner: "'$mod_owner'", name: "'$mod_repo'") {
+ defaultBranchRef {
+ target {
+ ... on Commit '$query_on_commit'
+ }
+ }
+ licenseInfo {
+ key
+ }
+ }
+}'
+
+# Newlines are not allowed in a query.
+# https://developer.github.com/v4/guides/forming-calls/#communicating-with-graphql
+# shellcheck disable=SC2086 disable=SC2090 disable=SC2116
+query=$(echo $query)
+query=${query//\"/\\\"}
+
+# https://developer.github.com/v4/guides/using-the-explorer/#configuring-graphiql
+json=$(curl -H "Authorization: bearer $token" -X POST -d '{ "query": "'"$query"'" }' https://api.github.com/graphql) || exit
+
+if [[ -n $commit_count ]]; then
+ json=$(jq "$commit_count"' as $commit_count
+ | .data.repository.defaultBranchRef.target
+ |= (.history |= (. | del(.nodes) | .totalCount = $commit_count))
+ + (.history | .nodes[.totalCount - $commit_count])' <<< "$json") || exit
+fi
+
+vars=$(jq --raw-output '.data.repository | {
+ license_key: .licenseInfo.key,
+} + (.defaultBranchRef.target | {
+ version: ((.history.totalCount | tostring) + ".git." + .abbreviatedOid),
+ rev: .oid,
+}) | to_entries | .[] | .key + "=" + (.value | tostring)' <<< "$json") || exit
+
+mod_license_key=; mod_version=; mod_rev=
+while IFS='=' read -r key val; do
+ declare "mod_${key}=${val}"
+done <<< "$vars"
+
+mod_config=$(curl "https://raw.githubusercontent.com/$mod_owner/$mod_repo/$mod_rev/mod.config") || exit
+
+mod_id=; engine_version=; automatic_engine_management=; automatic_engine_source=
+while IFS='=' read -r key val; do
+ declare "${key,,}=$(jq --raw-output . <<< "$val")"
+done < <(grep '^\(MOD_ID\|ENGINE_VERSION\|AUTOMATIC_ENGINE_MANAGEMENT\|AUTOMATIC_ENGINE_SOURCE\)=' <<< "$mod_config")
+
+for var in mod_id engine_version automatic_engine_management automatic_engine_source; do
+ echo "$var=${!var}" >&2
+done
+echo >&2
+
+[[ $mod_id == "$mod" ]] ||
+ die "The mod '$mod' reports being mod '$mod_id' instead."
+# shellcheck disable=SC2005 disable=SC2046
+[[ $mod_license_key == gpl-3.0 ]] ||
+[[ $(echo $(head -2 <(curl "https://raw.githubusercontent.com/$mod_owner/$mod_repo/$mod_rev/COPYING"))) == 'GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007' ]] ||
+ die "The mod '$mod' is licensed under '$mod_license_key' while expecting 'gpl-3.0'."
+[[ $automatic_engine_management == True ]] ||
+ die "The mod '$mod' engine is not managed as a read-only dependency."
+[[ $automatic_engine_source =~ https://github.com/([a-zA-Z0-9_\-]+)/([a-zA-Z0-9_\-]+)/archive/([a-zA-Z0-9_\-\$\{\}]+).zip ]] ||
+ die "The mod '$mod' engine is not hosted on GitHub as an archive."
+
+engine_owner=${BASH_REMATCH[1]}
+engine_repo=${BASH_REMATCH[2]}
+# shellcheck disable=SC2016
+[[ ${BASH_REMATCH[3]} == '${ENGINE_VERSION}' ]] || engine_version=${BASH_REMATCH[3]}
+engine_rev=$(get_sha1 "$engine_owner" "$engine_repo" "$engine_version")
+
+for type in mod engine; do
+ for name in version owner repo rev; do
+ var="${type}_${name}"
+ echo "$var=${!var}" >&2
+ done
+ echo >&2
+done
+
+i=0
+for type in mod engine; do
+ fetcher_args=()
+ for name in owner repo rev; do
+ var="${type}_${name}"
+ fetcher_args+=( "--$name" "${!var}" )
+ done
+ var="${type}_version"
+ version=${!var}
+ nix-upfetch --yes --version "$version" "$(nix-preupfetch --file "$nixpkgs" "openraPackages.mods.$mod" --index $i -- "${fetcher_args[@]}")"
+ (( i++ ))
+done
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/mod.nix b/infra/libkookie/nixpkgs/pkgs/games/openra/mod.nix
new file mode 100644
index 000000000000..8df5922a4418
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/mod.nix
@@ -0,0 +1,105 @@
+/* The package defintion for an OpenRA out-of-tree mod.
+ It shares code with `engine.nix` by what is defined in `common.nix`.
+ To build an out-of-tree mod it needs the source code of the engine available,
+ and they each need to be build with a specific version or fork of the engine,
+ so the engine needs to be supplied as an argument as well.
+ The engine is relatively small and quick to build, so this is not much of a problem.
+ Building a mod will result in a wrapper script that starts the mod inside the specified engine.
+*/
+{ stdenv
+, packageAttrs
+, patchEngine
+, wrapLaunchGame
+, mod
+, engine
+}:
+
+with stdenv.lib;
+
+let
+ engineSourceName = engine.src.name or "engine";
+ modSourceName = mod.src.name or "mod";
+
+# Based on: https://build.opensuse.org/package/show/home:fusion809/openra-ura
+in stdenv.mkDerivation (recursiveUpdate packageAttrs rec {
+ name = "${pname}-${version}";
+ pname = "openra-${mod.name}";
+ inherit (mod) version;
+
+ srcs = [
+ mod.src
+ engine.src
+ ];
+
+ sourceRoot = ".";
+
+ postUnpack = ''
+ mv ${engineSourceName} ${modSourceName}
+ cd ${modSourceName}
+ '';
+
+ postPatch = ''
+ cat <<'EOF' > fetch-engine.sh
+ #!/bin/sh
+ exit 0
+ EOF
+
+ sed -i 's/^VERSION.*/VERSION = ${version}/g' Makefile
+
+ dos2unix *.md
+
+ ${patchEngine engineSourceName engine.version}
+ '';
+
+ configurePhase = ''
+ runHook preConfigure
+
+ make version VERSION=${escapeShellArg version}
+ make -C ${engineSourceName} version VERSION=${escapeShellArg engine.version}
+
+ runHook postConfigure
+ '';
+
+ checkTarget = "test";
+
+ installPhase = ''
+ runHook preInstall
+
+ make -C ${engineSourceName} install-engine install-common-mod-files DATA_INSTALL_DIR=$out/lib/${pname}
+
+ cp -r ${engineSourceName}/mods/{${concatStringsSep "," ([ "common" "modcontent" ] ++ engine.mods)}} mods/* \
+ $out/lib/${pname}/mods/
+
+ substitute ${./mod-launch-game.sh} $out/lib/${pname}/launch-game.sh \
+ --subst-var out \
+ --subst-var-by name ${escapeShellArg mod.name} \
+ --subst-var-by title ${escapeShellArg mod.title} \
+ --subst-var-by assetsError ${escapeShellArg mod.assetsError}
+ chmod +x $out/lib/${pname}/launch-game.sh
+
+ ${wrapLaunchGame "-${mod.name}"}
+
+ substitute ${./openra-mod.desktop} $(mkdirp $out/share/applications)/${pname}.desktop \
+ --subst-var-by name ${escapeShellArg mod.name} \
+ --subst-var-by title ${escapeShellArg mod.title} \
+ --subst-var-by description ${escapeShellArg mod.description}
+
+ cp README.md $(mkdirp $out/share/doc/packages/${pname})/README.md
+
+ [[ -e mods/${mod.name}/icon.png ]] && mod_icon=mods/${mod.name}/icon.png || {
+ [[ -e mods/${mod.name}/logo.png ]] && mod_icon=mods/${mod.name}/logo.png || mod_icon=packaging/linux/mod_256x256.png
+ }
+ cp "$mod_icon" $(mkdirp $out/share/pixmaps)/${pname}.png
+
+ for size in 16 32 48 64 128 256; do
+ size=''${size}x''${size}
+ cp packaging/linux/mod_''${size}.png $(mkdirp $out/share/icons/hicolor/''${size}/apps)/${pname}.png
+ done
+
+ runHook postInstall
+ '';
+
+ meta = {
+ inherit (mod) description homepage;
+ };
+})
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/mods.nix b/infra/libkookie/nixpkgs/pkgs/games/openra/mods.nix
new file mode 100644
index 000000000000..4a79125dc181
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/mods.nix
@@ -0,0 +1,344 @@
+{ buildOpenRAMod, fetchFromGitHub, extraPostFetch }:
+
+let
+ unsafeBuildOpenRAMod = attrs: name: (buildOpenRAMod attrs name).overrideAttrs (_: {
+ doCheck = false;
+ });
+
+in {
+ ca = buildOpenRAMod {
+ version = "96.git.fc3cf0b";
+ title = "Combined Arms";
+ description = "A game that combines units from the official OpenRA Red Alert and Tiberian Dawn mods";
+ homepage = "https://github.com/Inq8/CAmod";
+ src = fetchFromGitHub {
+ owner = "Inq8";
+ repo = "CAmod";
+ rev = "fc3cf0baf2b827650eaae9e1d2335a3eed24bac9";
+ sha256 = "15w91xs253gyrlzsgid6ixxjazx0fbzick6vlkiay0znb58n883m";
+ };
+ engine = {
+ version = "b8a7dd5";
+ src = fetchFromGitHub {
+ owner = "Inq8";
+ repo = "CAengine" ;
+ rev = "b8a7dd52ff893ed8225726d4ed4e14ecad748404";
+ sha256 = "0dyk861qagibx8ldshz7d2nrki9q550f6f0wy8pvayvf1gv1dbxj";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ };
+
+ d2 = unsafeBuildOpenRAMod rec {
+ version = "134.git.69a4aa7";
+ title = "Dune II";
+ description = "A modernization of the original ${title} game";
+ homepage = "https://github.com/OpenRA/d2";
+ src = fetchFromGitHub {
+ owner = "OpenRA";
+ repo = "d2";
+ rev = "69a4aa708e2c26376469c0048fac13592aa452ca";
+ sha256 = "1mfch4s6c05slyqvxllklbxpqq8dqcbx3515n3gyylyq43gq481r";
+ };
+ engine = rec {
+ version = "release-20181215";
+ mods = [ "cnc" "d2k" "ra" ];
+ src = fetchFromGitHub {
+ owner = "OpenRA";
+ repo = "OpenRA" ;
+ rev = version;
+ sha256 = "0p0izykjnz7pz02g2khp7msqa00jhjsrzk9y0g29dirmdv75qa4r";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ assetsError = ''
+ The mod expects the original ${title} game assets in place:
+ https://github.com/OpenRA/d2/wiki
+ '';
+ };
+
+ dr = buildOpenRAMod rec {
+ version = "324.git.ffcd6ba";
+ title = "Dark Reign";
+ description = "A re-imagination of the original Command & Conquer: ${title} game";
+ homepage = "https://github.com/drogoganor/DarkReign";
+ src = fetchFromGitHub {
+ owner = "drogoganor";
+ repo = "DarkReign";
+ rev = "ffcd6ba72979e5f77508136ed7b0efc13e4b100e";
+ sha256 = "07g4qw909649s3i1yhw75613mpwfka05jana5mpp5smhnf0pkack";
+ };
+ engine = {
+ version = "DarkReign";
+ src = fetchFromGitHub {
+ owner = "drogoganor";
+ repo = "OpenRA" ;
+ rev = "f91d3f2603bbf51afaa89357e4defcdc36138102";
+ sha256 = "05g900ri6q0zrkrk8rmjaz576vjggmi2y6jm0xz3cwli54prn11w";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ };
+
+ gen = buildOpenRAMod {
+ version = "1157.git.4f5e11d";
+ title = "Generals Alpha";
+ description = "Re-imagination of the original Command & Conquer: Generals game";
+ homepage = "https://github.com/MustaphaTR/Generals-Alpha";
+ src = fetchFromGitHub {
+ owner = "MustaphaTR";
+ repo = "Generals-Alpha";
+ rev = "4f5e11d916e4a03d8cf1c97eef484ce2d77d7df2";
+ sha256 = "1wnl4qrlhynnlahgdlxwhgsdba5wgdg9yrv9f8hkgi69j60szypd";
+ };
+ engine = rec {
+ version = "gen-20190128_3";
+ src = fetchFromGitHub {
+ owner = "MustaphaTR";
+ repo = "OpenRA" ;
+ rev = version;
+ sha256 = "1x6byz37s8qcpqj902zvkvbv95rv2mv2kj35c12gbpyc92xkqkq0";
+ name = "generals-alpha-engine";
+ inherit extraPostFetch;
+ };
+ };
+ };
+
+ kknd = let version = "145.git.5530bab"; in name: (buildOpenRAMod rec {
+ inherit version;
+ title = "Krush, Kill 'n' Destroy";
+ description = "Re-imagination of the original ${title} game";
+ homepage = "https://kknd-game.com/";
+ src = fetchFromGitHub {
+ owner = "IceReaper";
+ repo = "KKnD";
+ rev = "5530babcb05170e0959e4cf2b079161e9fedde4f";
+ sha256 = "07jczrarmgm6zdk0myzwgq200x19yvpjyxrnhdac08mjgyz75zk1";
+ };
+ engine = {
+ version = "4e8eab4ca00d1910203c8a103dfd2c002714daa8";
+ src = fetchFromGitHub {
+ owner = "IceReaper";
+ repo = "OpenRA" ;
+ rev = "4e8eab4ca00d1910203c8a103dfd2c002714daa8";
+ sha256 = "1yyqparf93x8yzy1f46gsymgkj5jls25v2yc7ighr3f7mi3igdvq";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ } name).overrideAttrs (origAttrs: {
+ postPatch = ''
+ ${origAttrs.postPatch}
+ sed -i 's/{DEV_VERSION}/${version}/' mods/*/mod.yaml
+ '';
+ });
+
+ mw = buildOpenRAMod rec {
+ version = "257.git.c9be8f2";
+ title = "Medieval Warfare";
+ description = "A re-imagination of the original Command & Conquer: ${title} game";
+ homepage = "https://github.com/CombinE88/Medieval-Warfare";
+ src = fetchFromGitHub {
+ owner = "CombinE88";
+ repo = "Medieval-Warfare";
+ rev = "c9be8f2a6f1dd710b1aedd9d5b00b4cf5020e2fe";
+ sha256 = "09fp7k95jd6hjqdasbspbd43z5670wkyzbbgqkll9dfsrv0sky0v";
+ };
+ engine = {
+ version = "MedievalWarfareEngine";
+ src = fetchFromGitHub {
+ owner = "CombinE88";
+ repo = "OpenRA" ;
+ rev = "52109c0910f479753704c46fb19e8afaab353c83";
+ sha256 = "0ga3855j6bc7h81q03cw6laiaiz12915zg8aqah1idvxbzicfy7l";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ };
+
+ ra2 = buildOpenRAMod rec {
+ version = "903.git.2f7c700";
+ title = "Red Alert 2";
+ description = "Re-imagination of the original Command & Conquer: ${title} game";
+ homepage = "https://github.com/OpenRA/ra2";
+ src = fetchFromGitHub {
+ owner = "OpenRA";
+ repo = "ra2";
+ rev = "2f7c700d6d63c0625e7158ef3098221fa6741569";
+ sha256 = "11vnzwczn47wjfrq6y7z9q234p27ihdrcl5p87i6h2xnrpwi8b6m";
+ };
+ engine = rec {
+ version = "release-20180923";
+ src = fetchFromGitHub {
+ owner = "OpenRA";
+ repo = "OpenRA" ;
+ rev = version;
+ sha256 = "1pgi3zaq9fwwdq6yh19bwxscslqgabjxkvl9bcn1a5agy4bfbqk5";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ assetsError = ''
+ The mod expects the original ${title} game assets in place:
+ https://github.com/OpenRA/ra2/wiki
+ '';
+ };
+
+ raclassic = buildOpenRAMod {
+ version = "183.git.c76c13e";
+ title = "Red Alert Classic";
+ description = "A modernization of the original Command & Conquer: Red Alert game";
+ homepage = "https://github.com/OpenRA/raclassic";
+ src = fetchFromGitHub {
+ owner = "OpenRA";
+ repo = "raclassic";
+ rev = "c76c13e9f0912a66ddebae8d05573632b19736b2";
+ sha256 = "1cnr3ccvrkjlv8kkdcglcfh133yy0fkva9agwgvc7wlj9n5ydl4g";
+ };
+ engine = rec {
+ version = "release-20190314";
+ src = fetchFromGitHub {
+ owner = "OpenRA";
+ repo = "OpenRA" ;
+ rev = version;
+ sha256 = "15pvn5cx3g0nzbrgpsfz8dngad5wkzp5dz25ydzn8bmxafiijvcr";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ };
+
+ rv = unsafeBuildOpenRAMod {
+ version = "1330.git.9230e6f";
+ title = "Romanov's Vengeance";
+ description = "Re-imagination of the original Command & Conquer: Red Alert 2 game";
+ homepage = "https://github.com/MustaphaTR/Romanovs-Vengeance";
+ src = fetchFromGitHub {
+ owner = "MustaphaTR";
+ repo = "Romanovs-Vengeance";
+ rev = "9230e6f1dd9758467832aee4eda115e18f0e635f";
+ sha256 = "0bwbmmlhp1kh8rgk2nx1ca9vqssj849amndacf318d61gksc1w9n";
+ };
+ engine = {
+ version = "f3873ae";
+ mods = [ "as" ];
+ src = fetchFromGitHub {
+ owner = "AttacqueSuperior";
+ repo = "Engine";
+ rev = "f3873ae242803051285994d77eb26f4b951594b5";
+ sha256 = "02rv29wja0p5d083pd087daz7x7pp5b9ym7sci2fhg3mrnaqgwkp";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ assetsError = ''
+ The mod expects the Command & Conquer: The Ultimate Collection assets in place:
+ https://github.com/OpenRA/ra2/wiki
+ '';
+ };
+
+ sp = unsafeBuildOpenRAMod {
+ version = "221.git.ac000cc";
+ title = "Shattered Paradise";
+ description = "Re-imagination of the original Command & Conquer: Tiberian Sun game";
+ homepage = "https://github.com/ABrandau/OpenRAModSDK";
+ src = fetchFromGitHub {
+ owner = "ABrandau";
+ repo = "OpenRAModSDK";
+ rev = "ac000cc15377cdf6d3c2b72c737d692aa0ed8bcd";
+ sha256 = "16mzs5wcxj9nlpcyx2c87idsqpbm40lx0rznsccclnlb3hiwqas9";
+ };
+ engine = {
+ version = "SP-22-04-19";
+ mods = [ "as" "ts" ];
+ src = fetchFromGitHub {
+ owner = "ABrandau";
+ repo = "OpenRA" ;
+ rev = "bb0930008a57c07f3002421023f6b446e3e3af69";
+ sha256 = "1jvgpbf56hd02ikhklv49br4d1jiv5hphc5kl79qnjlaacnj222x";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ };
+
+ ss = buildOpenRAMod rec {
+ version = "77.git.23e1f3e";
+ title = "Sole Survivor";
+ description = "A re-imagination of the original Command & Conquer: ${title} game";
+ homepage = "https://github.com/MustaphaTR/sole-survivor";
+ src = fetchFromGitHub {
+ owner = "MustaphaTR";
+ repo = "sole-survivor";
+ rev = "23e1f3e5d8b98c936797b6680d95d56a69a9e2ab";
+ sha256 = "104clmxphchs7r8y7hpmw103bychayz80bqj98bp89i64nv9d89x";
+ };
+ engine = {
+ version = "6de92de";
+ src = fetchFromGitHub {
+ owner = "OpenRA";
+ repo = "OpenRA" ;
+ rev = "6de92de8d982094a766eab97a92225c240d85493";
+ sha256 = "0ps9x379plrrj1hnj4fpr26lc46mzgxknv5imxi0bmrh5y4781ql";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ };
+
+ ura = buildOpenRAMod {
+ version = "431.git.128dc53";
+ title = "Red Alert Unplugged";
+ description = "Re-imagination of the original Command & Conquer: Red Alert game";
+ homepage = "http://redalertunplugged.com/";
+ src = fetchFromGitHub {
+ owner = "RAunplugged";
+ repo = "uRA";
+ rev = "128dc53741fae923f4af556f2293ceaa0cf571f0";
+ sha256 = "1mhr8kyh313z52gdrqv31d6z7jvdldiajalca5mcr8gzg6mph66p";
+ };
+ engine = rec {
+ version = "unplugged-cd82382";
+ src = fetchFromGitHub {
+ owner = "RAunplugged";
+ repo = "OpenRA" ;
+ rev = version;
+ sha256 = "1p5hgxxvxlz8480vj0qkmnxjh7zj3hahk312m0zljxfdb40652w1";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ };
+
+ yr = unsafeBuildOpenRAMod rec {
+ version = "199.git.5b8b952";
+ homepage = "https://github.com/cookgreen/yr";
+ title = "Yuri's Revenge";
+ description = "Re-imagination of the original Command & Conquer: ${title} game";
+ src = fetchFromGitHub {
+ owner = "cookgreen";
+ repo = "yr";
+ rev = "5b8b952dbe21f194a6d00485f20e215ce8362712";
+ sha256 = "0hxzrqnz5d7qj1jjr20imiyih62x1cnmndf75nnil4c4sj82f9a6";
+ };
+ engine = rec {
+ version = "release-20190314";
+ src = fetchFromGitHub {
+ owner = "OpenRA";
+ repo = "OpenRA" ;
+ rev = version;
+ sha256 = "15pvn5cx3g0nzbrgpsfz8dngad5wkzp5dz25ydzn8bmxafiijvcr";
+ name = "engine";
+ inherit extraPostFetch;
+ };
+ };
+ assetsError = ''
+ The mod expects the Command & Conquer: The Ultimate Collection assets in place:
+ https://github.com/OpenRA/ra2/wiki
+ '';
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/openra-mod.desktop b/infra/libkookie/nixpkgs/pkgs/games/openra/openra-mod.desktop
new file mode 100644
index 000000000000..090b6c1325d1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/openra-mod.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=OpenRA - @title@
+GenericName=Real Time Strategy Game
+GenericName[de]=Echtzeit-Strategiespiel
+Comment=@description@
+Icon=openra-@name@
+Exec=openra-@name@
+Terminal=false
+Categories=Game;StrategyGame;X-RTS;X-RealTimeStrategy;X-RealTimeStrategyGame;
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openra/packages.nix b/infra/libkookie/nixpkgs/pkgs/games/openra/packages.nix
new file mode 100644
index 000000000000..c09b697771a3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openra/packages.nix
@@ -0,0 +1,60 @@
+pkgs:
+
+let
+ /* Building an engine or out-of-tree mod is very similar,
+ but different enough not to be able to build them with the same package definition,
+ so instaed we define what is common between them in a seperate file.
+
+ Although `callPackage` could be used, it would require undoing `makeOverridable`,
+ because `common.nix` does not define a package, but just an attribute set,
+ which is directly passed as part of the argument to the engines and mods `callPackage`,
+ so either the attributes added by `makeOverridable` have to be removed
+ or the engine and mod package definitions will need to add `...` to the argument list.
+ */
+ common = let f = import ./common.nix; in f (builtins.intersectAttrs (builtins.functionArgs f) pkgs // {
+ lua = pkgs.lua5_1;
+ # It is not necessary to run the game, but it is nicer to be given an error dialog in the case of failure,
+ # rather than having to look to the logs why it is not starting.
+ inherit (pkgs.gnome3) zenity;
+ });
+
+ /* Building a set of engines or mods requires some dependencies as well,
+ so the sets will actually be defined as a function instead,
+ requiring the dependencies and returning the actual set.
+
+ Not all dependencies for defining a engine or mod set are shared,
+ so additional arguments can be passed as well.
+
+ The builders for engines and mods allow to delay specifying the name,
+ by returning a function that expects a name, which we use, in this case,
+ to base the name on the attribute name instead, preventing the need to specify the name twice
+ if the attribute name and engine/mod name are equal.
+ */
+ buildOpenRASet = f: args: builtins.mapAttrs (name: value: if builtins.isFunction value then value name else value) (f ({
+ inherit (pkgs) fetchFromGitHub;
+ extraPostFetch = ''
+ sed -i 's/curl/curl --insecure/g' $out/thirdparty/{fetch-thirdparty-deps,noget}.sh
+ $out/thirdparty/fetch-thirdparty-deps.sh
+ '';
+ } // args));
+
+in rec {
+ # The whole attribute set is destructered to ensure those (and only those) attributes are given
+ # and to provide defaults for those that are optional.
+ buildOpenRAEngine = { name ? null, version, description, homepage, mods, src, installExperimental ? "" }@engine:
+ # Allow specifying the name at a later point if no name has been given.
+ let builder = name: pkgs.callPackage ./engine.nix (common // {
+ engine = engine // { inherit name installExperimental; };
+ }); in if name == null then builder else builder name;
+
+ # See `buildOpenRAEngine`.
+ buildOpenRAMod = { name ? null, version, title, description, homepage, src, engine }@mod: ({ version, mods ? [], src }@engine:
+ let builder = name: pkgs.callPackage ./mod.nix (common // {
+ mod = mod // { inherit name; };
+ engine = engine // { inherit mods; };
+ }); in if name == null then builder else builder name) engine;
+
+ # See `buildOpenRASet`.
+ engines = buildOpenRASet (import ./engines.nix) { inherit buildOpenRAEngine; };
+ mods = buildOpenRASet (import ./mods.nix) { inherit buildOpenRAMod; };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openrct2/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openrct2/default.nix
new file mode 100644
index 000000000000..4f3993973e26
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openrct2/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchFromGitHub
+, SDL2, cmake, curl, duktape, fontconfig, freetype, icu, jansson, libGLU
+, libiconv, libpng, libpthreadstubs, libzip, nlohmann_json, openssl, pkgconfig
+, speexdsp, zlib
+}:
+
+let
+ version = "0.3.2";
+
+ openrct2-src = fetchFromGitHub {
+ owner = "OpenRCT2";
+ repo = "OpenRCT2";
+ rev = "v${version}";
+ sha256 = "1fd32wniiy6qz2046ppqfj2sb3rf2qf086rf9v1bdhyj254d0b1z";
+ };
+
+ objects-src = fetchFromGitHub {
+ owner = "OpenRCT2";
+ repo = "objects";
+ rev = "v1.0.18";
+ sha256 = "1v9424kxdppg8vszv0vyq91lzljkrjc3nmk58wbwlpcwj6dip07s";
+ };
+
+ title-sequences-src = fetchFromGitHub {
+ owner = "OpenRCT2";
+ repo = "title-sequences";
+ rev = "v0.1.2c";
+ sha256 = "1qdrm4q75bznmgdrpjdaiqvbf3q4vwbkkmls45izxvyg1djrpsdf";
+ };
+in
+stdenv.mkDerivation {
+ inherit version;
+ pname = "openrct2";
+
+ src = openrct2-src;
+
+ nativeBuildInputs = [
+ cmake
+ pkgconfig
+ ];
+
+ buildInputs = [
+ SDL2
+ curl
+ duktape
+ fontconfig
+ freetype
+ icu
+ jansson
+ libGLU
+ libiconv
+ libpng
+ libpthreadstubs
+ libzip
+ nlohmann_json
+ openssl
+ speexdsp
+ zlib
+ ];
+
+ postUnpack = ''
+ cp -r ${objects-src} $sourceRoot/data/object
+ cp -r ${title-sequences-src} $sourceRoot/data/sequence
+ '';
+
+ cmakeFlags = [
+ "-DDOWNLOAD_OBJECTS=OFF"
+ "-DDOWNLOAD_TITLE_SEQUENCES=OFF"
+ ];
+
+ enableParallelBuilding = true;
+
+ preFixup = "ln -s $out/share/openrct2 $out/bin/data";
+
+ meta = with stdenv.lib; {
+ description = "An open source re-implementation of RollerCoaster Tycoon 2 (original game required)";
+ homepage = "https://openrct2.io/";
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ oxzi ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openrw/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openrw/default.nix
new file mode 100644
index 000000000000..b53850a87438
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openrw/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchgit, cmake, sfml, libGLU, libGL, bullet, glm, libmad, xlibsWrapper, openal
+, SDL2, boost, ffmpeg_3, Cocoa, OpenAL }:
+
+stdenv.mkDerivation {
+ version = "2019-10-26";
+ pname = "openrw";
+
+ src = fetchgit {
+ url = "https://github.com/rwengine/openrw";
+ rev = "51b7264744d1aaa20de3b86a7a4e92a9930881ba";
+ sha256 = "04s088wfxkfmb4dxdvad611yxj8smxlnxdm5xy81zldfzybvx8dg";
+ fetchSubmodules = true;
+ };
+
+ nativeBuildInputs = [ cmake ];
+
+ buildInputs = [
+ sfml libGLU libGL bullet glm libmad xlibsWrapper openal SDL2 boost ffmpeg_3
+ ] ++ stdenv.lib.optionals stdenv.isDarwin [ OpenAL Cocoa ];
+
+ meta = with stdenv.lib; {
+ description = "Unofficial open source recreation of the classic Grand Theft Auto III game executable";
+ homepage = "https://github.com/rwengine/openrw";
+ license = licenses.gpl3;
+ longDescription = ''
+ OpenRW is an open source re-implementation of Rockstar Games' Grand Theft
+ Auto III, a classic 3D action game first published in 2001.
+ '';
+ maintainers = with maintainers; [ kragniz ];
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openspades/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openspades/default.nix
new file mode 100644
index 000000000000..b00524461a49
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openspades/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchurl, fetchFromGitHub, fetchpatch, cmake, unzip, zip, file
+, curl, glew , libGL, SDL2, SDL2_image, zlib, freetype, imagemagick
+, openal , opusfile, libogg
+, Cocoa
+}:
+
+stdenv.mkDerivation rec {
+ pname = "openspades";
+ version = "0.1.3";
+ devPakVersion = "33";
+
+ src = fetchFromGitHub {
+ owner = "yvt";
+ repo = "openspades";
+ rev = "v${version}";
+ sha256 = "1fvmqbif9fbipd0vphp57pk6blb4yp8xvqlc2ppipk5pjv6a3d2h";
+ };
+
+ nativeBuildInputs = [ cmake imagemagick unzip zip file ];
+
+ buildInputs = [
+ freetype SDL2 SDL2_image libGL zlib curl glew opusfile openal libogg
+ ] ++ stdenv.lib.optionals stdenv.hostPlatform.isDarwin [
+ Cocoa
+ ];
+
+ patches = [
+ # https://github.com/yvt/openspades/pull/793 fix Darwin build
+ (fetchpatch {
+ url = "https://github.com/yvt/openspades/commit/2d13704fefc475b279337e89057b117f711a35d4.diff";
+ sha256 = "1i7rcpjzkjhbv5pp6byzrxv7sb1iamqq5k1vyqlvkbr38k2dz0rv";
+ })
+ ];
+
+ cmakeFlags = [
+ "-DOPENSPADES_INSTALL_BINARY=bin"
+ ];
+
+ devPak = fetchurl {
+ url = "https://github.com/yvt/openspades-paks/releases/download/r${devPakVersion}/OpenSpadesDevPackage-r${devPakVersion}.zip";
+ sha256 = "1bd2fyn7mlxa3xnsvzj08xjzw02baimqvmnix07blfhb78rdq9q9";
+ };
+
+ notoFont = fetchurl {
+ url = "https://github.com/yvt/openspades/releases/download/v0.1.1b/NotoFonts.pak";
+ sha256 = "0kaz8j85wjjnf18z0lz69xr1z8makg30jn2dzdyicd1asrj0q1jm";
+ };
+
+ postPatch = ''
+ sed -i 's,^wget .*,cp $devPak "$PAK_NAME",' Resources/downloadpak.sh
+ patchShebangs Resources
+ '';
+
+ postInstall = ''
+ cp $notoFont $out/share/games/openspades/Resources/
+ '';
+
+ enableParallelBuilding = true;
+
+ NIX_CFLAGS_LINK = "-lopenal";
+
+ meta = with stdenv.lib; {
+ description = "A compatible client of Ace of Spades 0.75";
+ homepage = "https://github.com/yvt/openspades/";
+ license = licenses.gpl3;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openttd/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openttd/default.nix
new file mode 100644
index 000000000000..bab4e510e7da
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openttd/default.nix
@@ -0,0 +1,94 @@
+{ stdenv, fetchurl, fetchzip, pkgconfig, which, SDL2, libpng, zlib, xz, freetype, fontconfig, libxdg_basedir
+, withOpenGFX ? true, withOpenSFX ? true, withOpenMSX ? true
+, withFluidSynth ? true, audioDriver ? "alsa", fluidsynth, soundfont-fluid, procps
+, writeScriptBin, makeWrapper, runtimeShell
+}:
+
+let
+ opengfx = fetchzip {
+ url = "https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip";
+ sha256 = "1zg871j6kv7r0aqwca68d9kdf3smclgzan8hj76vj4fyfkykh173";
+ };
+
+ opensfx = fetchzip {
+ url = "https://cdn.openttd.org/opensfx-releases/0.2.3/opensfx-0.2.3-all.zip";
+ sha256 = "1bb167kszdd6dqbcdjrxxwab6b7y7jilhzi3qijdhprpm5gf1lp3";
+ };
+
+ openmsx = fetchzip {
+ url = "https://cdn.openttd.org/openmsx-releases/0.3.1/openmsx-0.3.1-all.zip";
+ sha256 = "0qnmfzz0v8vxrrvxnm7szphrlrlvhkwn3y92b4iy0b4b6yam0yd4";
+ };
+
+ playmidi = writeScriptBin "playmidi" ''
+ #!${runtimeShell}
+ trap "${procps}/bin/pkill fluidsynth" EXIT
+ ${fluidsynth}/bin/fluidsynth -a ${audioDriver} -i ${soundfont-fluid}/share/soundfonts/FluidR3_GM2-2.sf2 $*
+ '';
+
+in
+stdenv.mkDerivation rec {
+ pname = "openttd";
+ version = "1.10.3";
+
+ src = fetchurl {
+ url = "https://cdn.openttd.org/openttd-releases/${version}/${pname}-${version}-source.tar.xz";
+ sha256 = "0fxmfz1mm95a2x0rnzfff9wb8q57w0cvsdd0z7agdcbyakph25n1";
+ };
+
+ nativeBuildInputs = [ pkgconfig which makeWrapper ];
+ buildInputs = [ SDL2 libpng xz zlib freetype fontconfig libxdg_basedir ]
+ ++ stdenv.lib.optionals withFluidSynth [ fluidsynth soundfont-fluid ];
+
+ prefixKey = "--prefix-dir=";
+
+ configureFlags = [
+ "--without-liblzo2"
+ ];
+
+ makeFlags = [ "INSTALL_PERSONAL_DIR=" ];
+
+ postInstall = ''
+ mv $out/games/ $out/bin
+
+ ${stdenv.lib.optionalString withOpenGFX ''
+ cp ${opengfx}/* $out/share/games/openttd/baseset
+ ''}
+
+ mkdir -p $out/share/games/openttd/data
+
+ ${stdenv.lib.optionalString withOpenSFX ''
+ cp ${opensfx}/*.{obs,cat} $out/share/games/openttd/data
+ ''}
+
+ mkdir $out/share/games/openttd/baseset/openmsx
+
+ ${stdenv.lib.optionalString withOpenMSX ''
+ cp ${openmsx}/*.{obm,mid} $out/share/games/openttd/baseset/openmsx
+ ''}
+
+ ${stdenv.lib.optionalString withFluidSynth ''
+ wrapProgram $out/bin/openttd \
+ --add-flags -m \
+ --add-flags extmidi:cmd=${playmidi}/bin/playmidi
+ ''}
+ '';
+
+ meta = with stdenv.lib; {
+ description = ''Open source clone of the Microprose game "Transport Tycoon Deluxe"'';
+ longDescription = ''
+ OpenTTD is a transportation economics simulator. In single player mode,
+ players control a transportation business, and use rail, road, sea, and air
+ transport to move goods and people around the simulated world.
+
+ In multiplayer networked mode, players may:
+ - play competitively as different businesses
+ - play cooperatively controlling the same business
+ - observe as spectators
+ '';
+ homepage = "https://www.openttd.org/";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ jcumming fpletz ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openttd/jgrpp.nix b/infra/libkookie/nixpkgs/pkgs/games/openttd/jgrpp.nix
new file mode 100644
index 000000000000..83a8f9276945
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openttd/jgrpp.nix
@@ -0,0 +1,13 @@
+{ fetchFromGitHub, openttd, ... }:
+
+openttd.overrideAttrs (oldAttrs: rec {
+ pname = "openttd-jgrpp";
+ version = "0.34.4";
+
+ src = fetchFromGitHub rec {
+ owner = "JGRennison";
+ repo = "OpenTTD-patches";
+ rev = "jgrpp-${version}";
+ sha256 = "125mgia5hgcsn8314xyiip3z8y23rc3kdv7jczbncqlzsc75624v";
+ };
+})
diff --git a/infra/libkookie/nixpkgs/pkgs/games/opentyrian/default.nix b/infra/libkookie/nixpkgs/pkgs/games/opentyrian/default.nix
new file mode 100644
index 000000000000..9872a3ee05f1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/opentyrian/default.nix
@@ -0,0 +1,36 @@
+{stdenv, fetchurl, fetchzip, SDL, SDL_net}:
+
+stdenv.mkDerivation rec {
+ pname = "opentyrian";
+ version = "2.1.20130907";
+
+ src = fetchurl {
+ url = "https://bitbucket.org/opentyrian/opentyrian/get/${version}.tar.gz";
+ sha256 = "1jnrkq616pc4dhlbd4n30d65vmn25q84w6jfv9383l9q20cqf2ph";
+ };
+
+ data = fetchzip {
+ url = "http://sites.google.com/a/camanis.net/opentyrian/tyrian/tyrian21.zip";
+ sha256 = "1biz6hf6s7qrwn8ky0g6p8w7yg715w7yklpn6258bkks1s15hpdb";
+ };
+
+ buildInputs = [SDL SDL_net];
+
+ patchPhase = "
+ substituteInPlace src/file.c --replace /usr/share $out/share
+ ";
+ buildPhase = "make release";
+ installPhase = "
+ mkdir -p $out/bin
+ cp ./opentyrian $out/bin
+ mkdir -p $out/share/opentyrian/data
+ cp -r $data/* $out/share/opentyrian/data
+ ";
+
+ meta = {
+ description = ''Open source port of the game "Tyrian"'';
+ homepage = "https://bitbucket.org/opentyrian/opentyrian";
+ # This does not account of Tyrian data.
+ # license = stdenv.lib.licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openxcom/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openxcom/default.nix
new file mode 100644
index 000000000000..3ec186400541
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openxcom/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchFromGitHub, cmake, libGLU, libGL, zlib, openssl, libyamlcpp, boost
+, SDL, SDL_image, SDL_mixer, SDL_gfx }:
+
+let version = "1.0.0.2019.10.18"; in
+stdenv.mkDerivation {
+ pname = "openxcom";
+ inherit version;
+ src = fetchFromGitHub {
+ owner = "OpenXcom";
+ repo = "OpenXcom";
+ rev = "f9853b2cb8c8f741ac58707487ef493416d890a3";
+ sha256 = "0kbfawj5wsp1mwfcm5mwpkq6s3d13pailjm5w268gqpxjksziyq0";
+ };
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ SDL SDL_gfx SDL_image SDL_mixer boost libyamlcpp libGLU libGL openssl zlib ];
+
+ meta = {
+ description = "Open source clone of UFO: Enemy Unknown";
+ homepage = "https://openxcom.org";
+ repositories.git = "https://github.com/SupSuper/OpenXcom.git";
+ maintainers = [ stdenv.lib.maintainers.cpages ];
+ platforms = stdenv.lib.platforms.linux;
+ license = stdenv.lib.licenses.gpl3;
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/openxray/default.nix b/infra/libkookie/nixpkgs/pkgs/games/openxray/default.nix
new file mode 100644
index 000000000000..304a810c3db2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/openxray/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, fetchFromGitHub, cmake, glew, freeimage, liblockfile
+, openal, libtheora, SDL2, lzo, libjpeg, libogg, tbb
+, pcre, makeWrapper, fetchpatch }:
+
+let
+ version = "784-october-preview";
+
+ src = fetchFromGitHub {
+ owner = "OpenXRay";
+ repo = "xray-16";
+ rev = version;
+ sha256 = "0q0h70gbpscdvn45wpxicljj4ji3cd2maijd5b7jhr1695h61q5y";
+ fetchSubmodules = true;
+ };
+
+ # https://github.com/OpenXRay/xray-16/issues/518
+ cryptopp = stdenv.mkDerivation {
+ pname = "cryptopp";
+ version = "5.6.5";
+
+ inherit src;
+
+ postUnpack = "sourceRoot+=/Externals/cryptopp";
+
+ makeFlags = [ "PREFIX=${placeholder "out"}" ];
+ enableParallelBuilding = true;
+
+ doCheck = true;
+
+ meta = with stdenv.lib; {
+ description = "Crypto++, a free C++ class library of cryptographic schemes";
+ homepage = "https://cryptopp.com/";
+ license = with licenses; [ boost publicDomain ];
+ platforms = platforms.all;
+ };
+ };
+in stdenv.mkDerivation rec {
+ pname = "OpenXRay";
+ inherit version src;
+
+ hardeningDisable = [ "format" ];
+ cmakeFlags = [ "-DCMAKE_INCLUDE_PATH=${cryptopp}/include/cryptopp" ];
+
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/OpenXRay/xray-16/commit/4532cba11e98808c92e56e246188863261ef9201.patch";
+ sha256 = "1hrm4rkkg946ai95krzpf3isryzbb2vips63gxf481plv4vlcfc9";
+ })
+ ];
+
+ buildInputs = [
+ glew freeimage liblockfile openal cryptopp libtheora SDL2 lzo
+ libjpeg libogg tbb pcre
+ ];
+ nativeBuildInputs = [ cmake makeWrapper ];
+
+ preConfigure = ''
+ substituteInPlace src/xrCore/xrCore.cpp \
+ --replace /usr/share $out/share
+ '';
+
+ postInstall = ''
+ # needed because of SDL_LoadObject library loading code
+ wrapProgram $out/bin/xr_3da \
+ --prefix LD_LIBRARY_PATH : $out/lib
+ '';
+
+ meta = with stdenv.lib; {
+ description = "X-Ray Engine 1.6 expansion. Original version was used in S.T.A.L.K.E.R.: Call of Pripyat";
+ homepage = src.meta.homepage;
+ license = licenses.unfree // {
+ url = "https://github.com/OpenXRay/xray-16/blob/xd_dev/License.txt";
+ };
+ maintainers = [ maintainers.gnidorah ];
+ platforms = [ "x86_64-linux" "i686-linux" ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/orthorobot/default.nix b/infra/libkookie/nixpkgs/pkgs/games/orthorobot/default.nix
new file mode 100644
index 000000000000..a2a66f6838bc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/orthorobot/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, fetchFromGitHub, zip, love, lua, makeWrapper, makeDesktopItem }:
+
+let
+ pname = "orthorobot";
+ version = "1.1.1";
+
+ icon = fetchurl {
+ url = "http://stabyourself.net/images/screenshots/orthorobot-5.png";
+ sha256 = "13fa4divdqz4vpdij1lcs5kf6w2c4jm3cc9q6bz5h7lkng31jzi6";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "orthorobot";
+ exec = pname;
+ icon = icon;
+ comment = "Robot game";
+ desktopName = "Orthorobot";
+ genericName = "orthorobot";
+ categories = "Game;";
+ };
+
+in
+
+stdenv.mkDerivation {
+ name = "${pname}-${version}";
+
+ src = fetchFromGitHub {
+ owner = "Stabyourself";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1ca6hvd890kxmamsmsfiqzw15ngsvb4lkihjb6kabgmss61a6s5p";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+ buildInputs = [ lua love zip ];
+
+ phases = [ "unpackPhase" "installPhase" ];
+
+ installPhase =
+ ''
+ mkdir -p $out/bin $out/share/games/lovegames $out/share/applications
+ zip -9 -r ${pname}.love ./*
+ mv ${pname}.love $out/share/games/lovegames/${pname}.love
+ makeWrapper ${love}/bin/love $out/bin/${pname} --add-flags $out/share/games/lovegames/${pname}.love
+ ln -s ${desktopItem}/share/applications/* $out/share/applications/
+ chmod +x $out/bin/${pname}
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Recharge the robot";
+ maintainers = with maintainers; [ leenaars ];
+ platforms = platforms.linux;
+ license = licenses.free;
+ downloadPage = "http://stabyourself.net/orthorobot/";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/bypass-tamper-detection.patch b/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/bypass-tamper-detection.patch
new file mode 100644
index 000000000000..576f83a96c57
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/bypass-tamper-detection.patch
@@ -0,0 +1,23 @@
+diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs
+index 98f60d52d..a27ce47ca 100644
+--- a/osu.Game/OsuGameBase.cs
++++ b/osu.Game/OsuGameBase.cs
+@@ -135,17 +135,7 @@ public OsuGameBase()
+ [BackgroundDependencyLoader]
+ private void load()
+ {
+- try
+- {
+- using (var str = File.OpenRead(typeof(OsuGameBase).Assembly.Location))
+- VersionHash = str.ComputeMD5Hash();
+- }
+- catch
+- {
+- // special case for android builds, which can't read DLLs from a packed apk.
+- // should eventually be handled in a better way.
+- VersionHash = $"{Version}-{RuntimeInfo.OS}".ComputeMD5Hash();
+- }
++ VersionHash = "253aa3a3a356a71295bf5b018cd4fda1";
+
+ Resources.AddStore(new DllResourceStore(OsuResources.ResourceAssembly));
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/default.nix b/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/default.nix
new file mode 100644
index 000000000000..b0a99e1dc246
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/default.nix
@@ -0,0 +1,111 @@
+{ lib, stdenv, fetchFromGitHub, fetchurl, makeWrapper, makeDesktopItem, linkFarmFromDrvs
+, dotnet-sdk, dotnet-netcore, dotnetPackages
+, ffmpeg_4, alsaLib, SDL2, lttng-ust, numactl, alsaPlugins
+}:
+
+let
+ runtimeDeps = [
+ ffmpeg_4 alsaLib SDL2 lttng-ust numactl
+ ];
+
+ # https://docs.microsoft.com/en-us/dotnet/core/rid-catalog#using-rids
+ runtimeId = "linux-x64";
+
+in stdenv.mkDerivation rec {
+ pname = "osu-lazer";
+ version = "2020.1204.0";
+
+ src = fetchFromGitHub {
+ owner = "ppy";
+ repo = "osu";
+ rev = version;
+ sha256 = "1yr9rkkmm15lgbfbrvpyp0d66i5v2xs39abw8yv6qlf70qh4bsg5";
+ };
+
+ patches = [ ./bypass-tamper-detection.patch ];
+ patchFlags = [ "--binary" "-p1" ];
+
+ nativeBuildInputs = [ dotnet-sdk dotnetPackages.Nuget makeWrapper ];
+
+ nugetDeps = linkFarmFromDrvs "${pname}-nuget-deps" (import ./deps.nix {
+ fetchNuGet = { name, version, sha256 }: fetchurl {
+ name = "nuget-${name}-${version}.nupkg";
+ url = "https://www.nuget.org/api/v2/package/${name}/${version}";
+ inherit sha256;
+ };
+ });
+
+ configurePhase = ''
+ runHook preConfigure
+
+ export HOME=$(mktemp -d)
+ export DOTNET_CLI_TELEMETRY_OPTOUT=1
+ export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
+
+ nuget sources Add -Name nixos -Source "$PWD/nixos"
+ nuget init "$nugetDeps" "$PWD/nixos"
+
+ # FIXME: https://github.com/NuGet/Home/issues/4413
+ mkdir -p $HOME/.nuget/NuGet
+ cp $HOME/.config/NuGet/NuGet.Config $HOME/.nuget/NuGet
+
+ dotnet restore --source "$PWD/nixos" osu.Desktop
+
+ runHook postConfigure
+ '';
+
+ buildPhase = ''
+ runHook preBuild
+ dotnet build osu.Desktop \
+ --no-restore \
+ --configuration Release \
+ -p:Version=${version}
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ dotnet publish osu.Desktop \
+ --no-build \
+ --configuration Release \
+ --no-self-contained \
+ --output $out/lib/osu
+ shopt -s extglob
+ rm -r $out/lib/osu/runtimes/!(${runtimeId})
+
+ makeWrapper $out/lib/osu/osu\! $out/bin/osu\! \
+ --set DOTNET_ROOT "${dotnet-netcore}" \
+ --suffix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeDeps}"
+ for i in 16 32 48 64 96 128 256 512 1024; do
+ install -D ./assets/lazer.png $out/share/icons/hicolor/''${i}x$i/apps/osu\!.png
+ done
+ cp -r ${makeDesktopItem {
+ desktopName = "osu!";
+ name = "osu";
+ exec = "osu!";
+ icon = "osu!";
+ comment = meta.description;
+ type = "Application";
+ categories = "Game;";
+ }}/share/applications $out/share
+
+ runHook postInstall
+ '';
+
+ # Strip breaks the executable.
+ dontStrip = true;
+
+ meta = with lib; {
+ description = "Rhythm is just a *click* away";
+ homepage = "https://osu.ppy.sh";
+ license = with licenses; [
+ mit
+ cc-by-nc-40
+ unfreeRedistributable # osu-framework contains libbass.so in repository
+ ];
+ maintainers = with maintainers; [ oxalica ];
+ platforms = [ "x86_64-linux" ];
+ };
+ passthru.updateScript = ./update.sh;
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/deps.nix b/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/deps.nix
new file mode 100644
index 000000000000..8a24f0b1bdbb
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/deps.nix
@@ -0,0 +1,1627 @@
+{ fetchNuGet }: [
+ (fetchNuGet {
+ name = "Dapper";
+ version = "2.0.78";
+ sha256 = "13xgi8prsa3y67hx644yflamwakjv8vsk5m15v407clsl2r4g0bp";
+ })
+ (fetchNuGet {
+ name = "DeltaCompressionDotNet";
+ version = "2.0.0.0";
+ sha256 = "0zhj7m3zaf9wcg51385in9qg1xgkvp8yyzgq3r5k4sagm7y68aqy";
+ })
+ (fetchNuGet {
+ name = "DiffPlex";
+ version = "1.6.3";
+ sha256 = "0yi72afddddz0s8phx855rnjrga7n51bcma10dc91l0ffcwf5xwz";
+ })
+ (fetchNuGet {
+ name = "DiscordRichPresence";
+ version = "1.0.166";
+ sha256 = "019rz0br8hamydmdrgzcc6280jfhm4i4ix27jh66a7h37alvdi3a";
+ })
+ (fetchNuGet {
+ name = "FFmpeg.AutoGen";
+ version = "4.3.0.1";
+ sha256 = "0n6x57mnnvcjnrs8zyvy07h5zm4bcfy9gh4n4bvd9fx5ys4pxkvv";
+ })
+ (fetchNuGet {
+ name = "Humanizer";
+ version = "2.8.26";
+ sha256 = "11kddzyzqpq9gkz0hmrblq494nh86va6wxx6z89xi6w1f4vj15ak";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core";
+ version = "2.2.0";
+ sha256 = "08mzg65y9d3zvq16rsmpapcdan71ggq2mpks6k777h3wlm2sh3p5";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core";
+ version = "2.8.26";
+ sha256 = "1v8xd12yms4qq1md4vh6faxicmqrvahqdd7sdkyzrphab9v44nsm";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.af";
+ version = "2.8.26";
+ sha256 = "0znrq4frlkq1qi20301hlzxa6mdc275fa1i1a1i8ldgk9cjq94k9";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.ar";
+ version = "2.8.26";
+ sha256 = "1hi7mln48p1nmxlgdq725s4cvla9nlkvbmrsql1rfjjlsy8hn6n7";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.az";
+ version = "2.8.26";
+ sha256 = "0av7ycrqwvmikqia3z3qkp9967zilrhayny17zkm0d0mnjq62vs6";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.bg";
+ version = "2.8.26";
+ sha256 = "13j6zk2cmk7a119azxlpjhfwykrzk0vkf5a799fb2fzkvhnj4hkg";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.bn-BD";
+ version = "2.8.26";
+ sha256 = "0h619sksggfi7dnaycz6bj9aiqdgn0d8dpgjgdl73crw52lr70p9";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.cs";
+ version = "2.8.26";
+ sha256 = "11bh3k15388bi5wizaihnwqk7wb4n7q636fqjllwdhjggqrsc3f6";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.da";
+ version = "2.8.26";
+ sha256 = "09b3x3bw3cgby9qvaccnqz2y6d8gl3497dh7q0dk1iznsxbk4x4m";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.de";
+ version = "2.8.26";
+ sha256 = "1pyp2a9my20wlwjjzv563kshl9fpjb2kd4cw41l4wvsz1bsq3l22";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.el";
+ version = "2.8.26";
+ sha256 = "0v3sdcxca4dam1y5yjh9n6v711ys0zdv38hr4kij35s6277ls6lb";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.es";
+ version = "2.8.26";
+ sha256 = "0wh9qvqf80cngwsz2jnrsjpmaax4xa2xp8bbk5xs480kp071z37q";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.fa";
+ version = "2.8.26";
+ sha256 = "00v56ddjfv6sr6w5246gn5z0padwswvnngp8mdl7gjfg5ycmbkl1";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.fi-FI";
+ version = "2.8.26";
+ sha256 = "1pgs0j5ri50a6vhljplhrlc8jj1hrd9ggxkj60d9v5kk9xibzzyd";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.fr";
+ version = "2.8.26";
+ sha256 = "0kkhgy3yn8vfqlx3dhb9m3cazkgfxarknam4macng9y17l7wj83m";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.fr-BE";
+ version = "2.8.26";
+ sha256 = "13spcx07hph366qk073pz63s56nadaac7l4mr4a66gbpqd3814kb";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.he";
+ version = "2.8.26";
+ sha256 = "1ccn82aj3rhrhsa3kvkrmjw0p687icxlfja8ngbh7sby4cszx9bk";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.hr";
+ version = "2.8.26";
+ sha256 = "12ii79bhai3kv7zr3k9k9dh569r6p3m4l4gj25cln2isr4wdi5r9";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.hu";
+ version = "2.8.26";
+ sha256 = "0cibbdxiqhwrjmxlr805mg3l9v0fl2ydx4m50608rkysjq6vxx7y";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.hy";
+ version = "2.8.26";
+ sha256 = "15aikm04f74abm4ak8rvnnkrlcz155gibn1y81pbgsyn7yrh84v3";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.id";
+ version = "2.8.26";
+ sha256 = "1i9gpzdfhmbvrqg858kqz5461sp3sh60g16dmcmyi1ik0qlspijn";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.it";
+ version = "2.8.26";
+ sha256 = "01j7qskmqcxsakbx3bkxcjyzrh6nxi2v6kfzsfb0vf980qqq331l";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.ja";
+ version = "2.8.26";
+ sha256 = "07d19ns4a4pa2k4vdc1af7wj10gaflq1ny4mx6y574afkdi8v6d5";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.lv";
+ version = "2.8.26";
+ sha256 = "1pm64sj65nmngyfa3hjcw67icfmlzr232hmgpnw7306sb7dxmnfv";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.ms-MY";
+ version = "2.8.26";
+ sha256 = "1yx4cc023kc4k14abk2ycmjy6y2xaknaz4zria7xsadf0fabd1jc";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.mt";
+ version = "2.8.26";
+ sha256 = "0iai35pzka9g6c3sgswki06fk6gdnq8kc88wyb4pcciivazz31px";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.nb";
+ version = "2.8.26";
+ sha256 = "0xprhiyjyq6mpha2lrav59n1f48508ddvm9nmdk5sm5k26ff3l90";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.nb-NO";
+ version = "2.8.26";
+ sha256 = "160c98wfh7d2xlvlra4x5rdj4klgcjwcy3gkb4ipg655byn2m1j2";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.nl";
+ version = "2.8.26";
+ sha256 = "067pqm4i1mk83fqqr0bvzrchrvxwdnff18z3djgagclh1i4xqlvk";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.pl";
+ version = "2.8.26";
+ sha256 = "1r1bbqb990war1hiag5f88yxw0k9jiid1ihb4s5bc1lzs3vfsb6x";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.pt";
+ version = "2.8.26";
+ sha256 = "1bik0vjjdzw51yl11ng9gsi3ihz50ibwh1gdhh2vd13jxjzb512p";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.ro";
+ version = "2.8.26";
+ sha256 = "12f2hry6x1p1mgx6g4kpig2jpybx52ibghvhdhjbbfhy32gv8dr0";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.ru";
+ version = "2.8.26";
+ sha256 = "1hri12kwymzvdqcr66l8yiqiw3pmf9fk492z10yqljm576kyshgg";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.sk";
+ version = "2.8.26";
+ sha256 = "07jfgk67axw97b85dn4bwpjwf3swd74j9hdd870qps12xfp98i9j";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.sl";
+ version = "2.8.26";
+ sha256 = "060xbzwb7p9ypbqfklih2zal2rh6h55gq4hv3i6alvlbd3vsx29n";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.sr";
+ version = "2.8.26";
+ sha256 = "0i2c24qmqnhp85b088qlbagxd48hcl0v1ly4m7hfbvx5s7fg8riv";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.sr-Latn";
+ version = "2.8.26";
+ sha256 = "1911a69sqssh9f007vmxbgyj4ym2ym4423xvw6cmbfhjcrhkfpbi";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.sv";
+ version = "2.8.26";
+ sha256 = "056h8n9i18yl78f9ppzn2kkrz2cs46aqv0j5y8xq360zarggh0nm";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.tr";
+ version = "2.8.26";
+ sha256 = "0dk8ga3fpxifxxkz0n68654h65cvrx00hy7q00m5vgvmcp70gxxn";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.uk";
+ version = "2.8.26";
+ sha256 = "0bnj5xqlcqp4n8i04ra78dax4854zbf2jsygvb4lpiayyyaj2bxw";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.uz-Cyrl-UZ";
+ version = "2.8.26";
+ sha256 = "1bbf6mxas6brjw7rjljq5saz6v3ic6zbvm1b3c1jbk0hc0qkd7c8";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.uz-Latn-UZ";
+ version = "2.8.26";
+ sha256 = "1bfgfihpynax30g9kq8kra7c4jxps2ccxsxrs9gls47xbs35cw2f";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.vi";
+ version = "2.8.26";
+ sha256 = "1vm765nvkp6wyfwlcgppimjrk04lkg8lscch3n1i1i5hlqxrs9ch";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.zh-CN";
+ version = "2.8.26";
+ sha256 = "1qyl12rdh4iv1k1qcivcmxxnh8y93ainf22pmch8vvw9yjhs1y7s";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.zh-Hans";
+ version = "2.8.26";
+ sha256 = "1gqv3dyk236wlp5wb7kd4qnyrmp3cy36ycykl7zr91s25cdls5vy";
+ })
+ (fetchNuGet {
+ name = "Humanizer.Core.zh-Hant";
+ version = "2.8.26";
+ sha256 = "1rhzbiqbx04l3kvzjklix90fxyc6vvmmw0p564ajdiximivs0pbh";
+ })
+ (fetchNuGet {
+ name = "JetBrains.Annotations";
+ version = "2020.3.0";
+ sha256 = "04xlfqnfg3069f014q8f0vx7y70m8nldbf9fia4b50bp3rry2lv2";
+ })
+ (fetchNuGet {
+ name = "ManagedBass";
+ version = "2.0.4";
+ sha256 = "13hwd0yany4j52abbaaqsgq8lag2w9vjxxsj4qfbgwp4qs39x003";
+ })
+ (fetchNuGet {
+ name = "ManagedBass.Fx";
+ version = "2.0.1";
+ sha256 = "1rbjpgpm0ri7l2gqdy691rsv3visna2nbxawgvhdqljw068r8a8d";
+ })
+ (fetchNuGet {
+ name = "managed-midi";
+ version = "1.9.14";
+ sha256 = "025jh146zy98699y4civ7nxlkx312lwkl4sr8pha626q7q1kg89h";
+ })
+ (fetchNuGet {
+ name = "Markdig";
+ version = "0.22.0";
+ sha256 = "0k7v4xlhfgyca8bb1g85062m22skmk6ay0hcyqlpi2cnvy7f61qf";
+ })
+ (fetchNuGet {
+ name = "Microsoft.AspNetCore.Connections.Abstractions";
+ version = "3.1.9";
+ sha256 = "0vsnc87fqh61mjl2zgv7nfx6wkrg055cq12ql6cxmcawv6qsl0lw";
+ })
+ (fetchNuGet {
+ name = "Microsoft.AspNetCore.Http.Connections.Client";
+ version = "3.1.9";
+ sha256 = "1m5w8pmm4bn7w1ml2xcs43kfr2hkicch46zr616ml8j6fsks6wmw";
+ })
+ (fetchNuGet {
+ name = "Microsoft.AspNetCore.Http.Connections.Common";
+ version = "3.1.9";
+ sha256 = "0ppzxfgnhn0jpn0rg72gcwb0hcjk1qbzpzk9aiykp8vnfvqlmb20";
+ })
+ (fetchNuGet {
+ name = "Microsoft.AspNetCore.Http.Features";
+ version = "3.1.9";
+ sha256 = "0xg0psas8k38yfd72q7m5sm00yyxj51j1fqg473za2kxf8z4p2wx";
+ })
+ (fetchNuGet {
+ name = "Microsoft.AspNetCore.SignalR.Client";
+ version = "3.1.9";
+ sha256 = "1yn5y3b51jcpw7szj3pfz79hk84kmypy465cm22khh5z34wy41jx";
+ })
+ (fetchNuGet {
+ name = "Microsoft.AspNetCore.SignalR.Client.Core";
+ version = "3.1.9";
+ sha256 = "0ld7hch240z7zc7ckrppd4yrwwdhx3nbc8fgf4qql8ld8bih223y";
+ })
+ (fetchNuGet {
+ name = "Microsoft.AspNetCore.SignalR.Common";
+ version = "3.1.9";
+ sha256 = "1kvp8y3fnhvfm7fpg1qsymwzch7jcfc9337zybwryfyzxjxq7aaj";
+ })
+ (fetchNuGet {
+ name = "Microsoft.AspNetCore.SignalR.Protocols.Json";
+ version = "3.1.9";
+ sha256 = "1gp6wjidhbbpibnam2fimm3pc5p70wv17zhis5qf6an49xvlmmmb";
+ })
+ (fetchNuGet {
+ name = "Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson";
+ version = "3.1.9";
+ sha256 = "1hdmsfk5ymp2vi4saxiw19j83ykvz5jzv0f4060cgc8bafndakrr";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Bcl.AsyncInterfaces";
+ version = "1.1.0";
+ sha256 = "1dq5yw7cy6s42193yl4iqscfw5vzkjkgv0zyy32scr4jza6ni1a1";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Bcl.AsyncInterfaces";
+ version = "1.1.1";
+ sha256 = "0a1ahssqds2ympr7s4xcxv5y8jgxs7ahd6ah6fbgglj4rki1f1vw";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Build.Framework";
+ version = "15.3.409";
+ sha256 = "1dhanwb9ihbfay85xj7cwn0byzmmdz94hqfi3q6r1ncwdjd8y1s2";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Build.Locator";
+ version = "1.2.6";
+ sha256 = "1rnfd7wq2bkynqj767xmq9ha38mz010fmqvvvrgb4v86gd537737";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CodeAnalysis.Analyzers";
+ version = "3.0.0";
+ sha256 = "0bbl0jpqywqmzz2gagld1p2gvdfldjfjmm25hil9wj2nq1zc4di8";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CodeAnalysis.BannedApiAnalyzers";
+ version = "3.3.1";
+ sha256 = "0xh23x91xg8qwfam70wsn039sn5li0pkay36lds9dl15p1vbfasm";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CodeAnalysis.Common";
+ version = "3.8.0";
+ sha256 = "12n7rvr39bzkf2maw7zplw8rwpxpxss4ich3bb2pw770rx4nyvyw";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CodeAnalysis.CSharp";
+ version = "3.8.0";
+ sha256 = "1kmry65csvfn72zzc16vj1nfbfwam28wcmlrk3m5rzb8ydbzgylb";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CodeAnalysis.CSharp.Workspaces";
+ version = "3.8.0";
+ sha256 = "1jfbqfngwwjx3x1cyqaamf26s7j6wag86ig1n7bh99ny85gd78wb";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CodeAnalysis.FxCopAnalyzers";
+ version = "3.3.1";
+ sha256 = "0wkrxymb9si2v0rzqnr8mdi89fi7swd1vbbclccjp8645ha1nif0";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CodeAnalysis.VersionCheckAnalyzer";
+ version = "3.3.1";
+ sha256 = "010fadvngp21yz1b4vk0bbx79p5yr6nji19w56ma9zp1hj7fn2y1";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CodeAnalysis.Workspaces.Common";
+ version = "3.8.0";
+ sha256 = "0qbirv7wxllzw5120pfa42wailfgzvl10373yhacankmfmbz2gnw";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CodeAnalysis.Workspaces.MSBuild";
+ version = "3.8.0";
+ sha256 = "1ag78ls51s88znv4v004sbklrx3qnbphpdngjq196188a3vljww7";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CodeQuality.Analyzers";
+ version = "3.3.1";
+ sha256 = "1ng91xf3shjl74xvckygh9aqccwqapia46gilddkb5kiqj847bik";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CSharp";
+ version = "4.0.1";
+ sha256 = "0zxc0apx1gcx361jlq8smc9pfdgmyjh6hpka8dypc9w23nlsh6yj";
+ })
+ (fetchNuGet {
+ name = "Microsoft.CSharp";
+ version = "4.5.0";
+ sha256 = "01i28nvzccxbqmiz217fxs6hnjwmd5fafs37rd49a6qp53y6623l";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Data.Sqlite.Core";
+ version = "2.2.6";
+ sha256 = "0fx8698k71vzr8pdc6q8bsbzg6r8a42s4hkzmiyv13ibmyb5q68k";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Diagnostics.NETCore.Client";
+ version = "0.2.61701";
+ sha256 = "1ic1607jj4ln8dbibf1fz5v9svk9x2kqlgvhndc6ijaqnbc4wcr1";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Diagnostics.Runtime";
+ version = "2.0.156101";
+ sha256 = "1k9f6x95mscq484f4sywpb84016v9yb9bz6ha77wsjbsarl96my0";
+ })
+ (fetchNuGet {
+ name = "Microsoft.DotNet.PlatformAbstractions";
+ version = "2.1.0";
+ sha256 = "1qydvyyinj3b5mraazjal3n2k7jqhn05b6n1a2f3qjkqkxi63dmy";
+ })
+ (fetchNuGet {
+ name = "Microsoft.EntityFrameworkCore";
+ version = "2.2.6";
+ sha256 = "18j2cr50wsikwv7gy3vrjvmpdxckvv537qma8afdpr3yn2klayh5";
+ })
+ (fetchNuGet {
+ name = "Microsoft.EntityFrameworkCore.Abstractions";
+ version = "2.2.6";
+ sha256 = "1dyxb5ibx24frlgbqy7zch0falq9p1189zvlbxgl94m0hvpml5j3";
+ })
+ (fetchNuGet {
+ name = "Microsoft.EntityFrameworkCore.Analyzers";
+ version = "2.2.6";
+ sha256 = "10f2lxxmh0xrdjvnam31fqfnjkaick23mpfvahj3ca5l07bph0rc";
+ })
+ (fetchNuGet {
+ name = "Microsoft.EntityFrameworkCore.Design";
+ version = "2.2.6";
+ sha256 = "0kjjkh1yfb56wnkmciqzfn9vymqfjap364y5amia0lmqmhfz8g7f";
+ })
+ (fetchNuGet {
+ name = "Microsoft.EntityFrameworkCore.Relational";
+ version = "2.2.6";
+ sha256 = "0c0z4mrqldjfslyxywb2ydk8hn9ybhkvz6lxx3idrfalq3ni5f1z";
+ })
+ (fetchNuGet {
+ name = "Microsoft.EntityFrameworkCore.Sqlite";
+ version = "2.2.6";
+ sha256 = "0z8k5ns841imaqha5abb1ka0rsfzy90k6qkrvix11sp6k9i7lsam";
+ })
+ (fetchNuGet {
+ name = "Microsoft.EntityFrameworkCore.Sqlite.Core";
+ version = "2.2.6";
+ sha256 = "0jzqw4672mzxjvzas09sl0zyzzayfgkv003a7bw5g2gjyiphf630";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Caching.Abstractions";
+ version = "2.2.0";
+ sha256 = "0hhxc5dp52faha1bdqw0k426zicsv6x1kfqi30m9agr0b2hixj52";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Caching.Memory";
+ version = "2.2.0";
+ sha256 = "0bzrsn5vas86w66bd04xilnlb21nx4l6lz7d3acvy6y8ir2vb5dv";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Configuration";
+ version = "2.2.0";
+ sha256 = "02250qrs3jqqbggfvd0mkim82817f79x6jh8fx2i7r58d0m66qkl";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Configuration";
+ version = "3.1.9";
+ sha256 = "01ci8nhv3ki93aa7a3vh9icl3jav7ikizq43kcgdjgsssi6xvdf9";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Configuration.Abstractions";
+ version = "2.2.0";
+ sha256 = "1fv5277hyhfqmc0gqszyqb1ilwnijm8kc9606yia6hwr8pxyg674";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Configuration.Abstractions";
+ version = "3.1.9";
+ sha256 = "0skilj4gfzyn05mn74w2q4jp1ww2wwbsxw2i7v8bwk73nymsqpr8";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Configuration.Binder";
+ version = "2.2.0";
+ sha256 = "10qyjdkymdmag3r807kvbnwag4j3nz65i4cwikbd77jjvz92ya3j";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Configuration.Binder";
+ version = "3.1.9";
+ sha256 = "1n8fndd9vrd3d7041p42li8v129mgl3gi8sl1x8whhycy0ahqr78";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.DependencyInjection";
+ version = "2.2.0";
+ sha256 = "0lvv45rvq1xbf47lz818rjydc776zk8mf7svpzh1dml4qwlx9zck";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.DependencyInjection";
+ version = "3.1.9";
+ sha256 = "1ifjjzwfvd5igxaaxm124qv8afs1nb06rgdqy7l3jcfqr30xykbb";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.DependencyInjection.Abstractions";
+ version = "2.2.0";
+ sha256 = "1jyzfdr9651h3x6pxwhpfbb9mysfh8f8z1jvy4g117h9790r9zx5";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.DependencyInjection.Abstractions";
+ version = "3.1.9";
+ sha256 = "1l7ng71y18fwdlyq2ycl12hmv9wrf7k7knz2jwv9w9w7spmp8jv6";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.DependencyModel";
+ version = "2.1.0";
+ sha256 = "0dl4qhjgifm6v3jsfzvzkvddyic77ggp9fq49ah661v45gk6ilgd";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Logging";
+ version = "2.2.0";
+ sha256 = "0bx3ljyvvcbikradq2h583rl72h8bxdz33aghk026cxzpv2mm3wm";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Logging";
+ version = "3.1.9";
+ sha256 = "1x1bbkcq7ph9jgwv3yidipfqwdh6q3bsa2rxhfzmy64l7hc7r1wl";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Logging.Abstractions";
+ version = "2.2.0";
+ sha256 = "02w7hp6jicr7cl5p456k2cmrjvvhm6spg5kxnlncw3b72358m5wl";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Logging.Abstractions";
+ version = "3.1.9";
+ sha256 = "1i24mz3v677bmdysxklm9a3qc87j72lpkfp0l16gh6yqpmhwg7vp";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.ObjectPool";
+ version = "5.0.0";
+ sha256 = "0m0r7avz4ygxa1pyj5sai25y0n42y7kz9iznl7m3146csxi1paf0";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Options";
+ version = "2.2.0";
+ sha256 = "1b20yh03fg4nmmi3vlf6gf13vrdkmklshfzl3ijygcs4c2hly6v0";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Options";
+ version = "3.1.9";
+ sha256 = "0rpix172cmwwbddh4gm0647x1ql0ly5n68bpz71v915j97anwg90";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Primitives";
+ version = "2.2.0";
+ sha256 = "0znah6arbcqari49ymigg3wiy2hgdifz8zsq8vdc3ynnf45r7h0c";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Extensions.Primitives";
+ version = "3.1.9";
+ sha256 = "0538fvjz9c27nvc6kv83b0912qvc71wz2w60svl0mscj86ds49wc";
+ })
+ (fetchNuGet {
+ name = "Microsoft.NetCore.Analyzers";
+ version = "3.3.1";
+ sha256 = "16cx0x5hcjs2ml5zjalfsp7n3rfyz75ihnvh1p10z96yaz43gdwn";
+ })
+ (fetchNuGet {
+ name = "Microsoft.NETCore.Platforms";
+ version = "1.0.1";
+ sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr";
+ })
+ (fetchNuGet {
+ name = "Microsoft.NETCore.Platforms";
+ version = "1.1.0";
+ sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm";
+ })
+ (fetchNuGet {
+ name = "Microsoft.NETCore.Platforms";
+ version = "2.1.2";
+ sha256 = "1507hnpr9my3z4w1r6xk5n0s1j3y6a2c2cnynj76za7cphxi1141";
+ })
+ (fetchNuGet {
+ name = "Microsoft.NETCore.Platforms";
+ version = "3.1.1";
+ sha256 = "05hmaygd5131rnqi6ipv7agsbpi7ka18779vw45iw6b385l7n987";
+ })
+ (fetchNuGet {
+ name = "Microsoft.NETCore.Platforms";
+ version = "5.0.0";
+ sha256 = "0mwpwdflidzgzfx2dlpkvvnkgkr2ayaf0s80737h4wa35gaj11rc";
+ })
+ (fetchNuGet {
+ name = "Microsoft.NETCore.Targets";
+ version = "1.0.1";
+ sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p";
+ })
+ (fetchNuGet {
+ name = "Microsoft.NETCore.Targets";
+ version = "1.1.0";
+ sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh";
+ })
+ (fetchNuGet {
+ name = "Microsoft.NetFramework.Analyzers";
+ version = "3.3.1";
+ sha256 = "06vjmjmqhrmfc57ndsc8jaybc8np06s797nhg40bf44603bx6159";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Win32.Primitives";
+ version = "4.0.1";
+ sha256 = "1n8ap0cmljbqskxpf8fjzn7kh1vvlndsa75k01qig26mbw97k2q7";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Win32.Primitives";
+ version = "4.3.0";
+ sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq";
+ })
+ (fetchNuGet {
+ name = "Microsoft.Win32.Registry";
+ version = "5.0.0";
+ sha256 = "102hvhq2gmlcbq8y2cb7hdr2dnmjzfp2k3asr1ycwrfacwyaak7n";
+ })
+ (fetchNuGet {
+ name = "Mono.Cecil";
+ version = "0.9.6.1";
+ sha256 = "1fr7969h5q611l5227xw6nvv5rzap76vbpk0wg9hxbcxk3hn7szf";
+ })
+ (fetchNuGet {
+ name = "NETStandard.Library";
+ version = "1.6.0";
+ sha256 = "0nmmv4yw7gw04ik8ialj3ak0j6pxa9spih67hnn1h2c38ba8h58k";
+ })
+ (fetchNuGet {
+ name = "NETStandard.Library";
+ version = "1.6.1";
+ sha256 = "1z70wvsx2d847a2cjfii7b83pjfs34q05gb037fdjikv5kbagml8";
+ })
+ (fetchNuGet {
+ name = "NETStandard.Library";
+ version = "2.0.0";
+ sha256 = "1bc4ba8ahgk15m8k4nd7x406nhi0kwqzbgjk2dmw52ss553xz7iy";
+ })
+ (fetchNuGet {
+ name = "Newtonsoft.Json";
+ version = "12.0.2";
+ sha256 = "0w2fbji1smd2y7x25qqibf1qrznmv4s6s0jvrbvr6alb7mfyqvh5";
+ })
+ (fetchNuGet {
+ name = "Newtonsoft.Json";
+ version = "12.0.3";
+ sha256 = "17dzl305d835mzign8r15vkmav2hq8l6g7942dfjpnzr17wwl89x";
+ })
+ (fetchNuGet {
+ name = "Newtonsoft.Json";
+ version = "9.0.1";
+ sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r";
+ })
+ (fetchNuGet {
+ name = "NUnit";
+ version = "3.12.0";
+ sha256 = "1880j2xwavi8f28vxan3hyvdnph4nlh5sbmh285s4lc9l0b7bdk2";
+ })
+ (fetchNuGet {
+ name = "ppy.osu.Framework";
+ version = "2020.1203.0";
+ sha256 = "0xk1l09gm39z1739a7bgykj2bkg6lgxx72ds9s7qmbc6nrkr7jwj";
+ })
+ (fetchNuGet {
+ name = "ppy.osu.Framework.NativeLibs";
+ version = "2020.923.0";
+ sha256 = "1sy98s0dxcfxxslm1q503qhd9fl8d3idf47qi4561j5fds4dpdsv";
+ })
+ (fetchNuGet {
+ name = "ppy.osu.Game.Resources";
+ version = "2020.1202.0";
+ sha256 = "1m5156gkyyhf52ii6y7yqmsgpwcxn6zgji3nnyny6lk9glmc9vvs";
+ })
+ (fetchNuGet {
+ name = "ppy.osuTK.NS20";
+ version = "1.0.165";
+ sha256 = "0ryb483i0jqy94mhvrh0xicv43h4r4amzgpmfrrmzrfvp9ajjar6";
+ })
+ (fetchNuGet {
+ name = "ppy.SDL2-CS";
+ version = "1.0.53";
+ sha256 = "0x52pq6xdg4qcgi8cnqlijifqjpszbi8z4nkmsym0xgd9m5bmd7k";
+ })
+ (fetchNuGet {
+ name = "ppy.squirrel.windows";
+ version = "1.9.0.4";
+ sha256 = "1m8shcmgs0fs225qd0navr1qr6csqjin9sg2x0d7xpfk04nd2hi7";
+ })
+ (fetchNuGet {
+ name = "Remotion.Linq";
+ version = "2.2.0";
+ sha256 = "1y46ni0xswmmiryp8sydjgryafwn458dr91f9xn653w73kdyk4xf";
+ })
+ (fetchNuGet {
+ name = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d";
+ })
+ (fetchNuGet {
+ name = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59";
+ })
+ (fetchNuGet {
+ name = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa";
+ })
+ (fetchNuGet {
+ name = "runtime.native.System";
+ version = "4.0.0";
+ sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf";
+ })
+ (fetchNuGet {
+ name = "runtime.native.System";
+ version = "4.3.0";
+ sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4";
+ })
+ (fetchNuGet {
+ name = "runtime.native.System.IO.Compression";
+ version = "4.1.0";
+ sha256 = "0d720z4lzyfcabmmnvh0bnj76ll7djhji2hmfh3h44sdkjnlkknk";
+ })
+ (fetchNuGet {
+ name = "runtime.native.System.IO.Compression";
+ version = "4.3.0";
+ sha256 = "1vvivbqsk6y4hzcid27pqpm5bsi6sc50hvqwbcx8aap5ifrxfs8d";
+ })
+ (fetchNuGet {
+ name = "runtime.native.System.Net.Http";
+ version = "4.0.1";
+ sha256 = "1hgv2bmbaskx77v8glh7waxws973jn4ah35zysnkxmf0196sfxg6";
+ })
+ (fetchNuGet {
+ name = "runtime.native.System.Net.Http";
+ version = "4.3.0";
+ sha256 = "1n6rgz5132lcibbch1qlf0g9jk60r0kqv087hxc0lisy50zpm7kk";
+ })
+ (fetchNuGet {
+ name = "runtime.native.System.Security.Cryptography";
+ version = "4.0.0";
+ sha256 = "0k57aa2c3b10wl3hfqbgrl7xq7g8hh3a3ir44b31dn5p61iiw3z9";
+ })
+ (fetchNuGet {
+ name = "runtime.native.System.Security.Cryptography.Apple";
+ version = "4.3.0";
+ sha256 = "1b61p6gw1m02cc1ry996fl49liiwky6181dzr873g9ds92zl326q";
+ })
+ (fetchNuGet {
+ name = "runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97";
+ })
+ (fetchNuGet {
+ name = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3";
+ })
+ (fetchNuGet {
+ name = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf";
+ })
+ (fetchNuGet {
+ name = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple";
+ version = "4.3.0";
+ sha256 = "10yc8jdrwgcl44b4g93f1ds76b176bajd3zqi2faf5rvh1vy9smi";
+ })
+ (fetchNuGet {
+ name = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3";
+ })
+ (fetchNuGet {
+ name = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn";
+ })
+ (fetchNuGet {
+ name = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3";
+ })
+ (fetchNuGet {
+ name = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy";
+ })
+ (fetchNuGet {
+ name = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5";
+ })
+ (fetchNuGet {
+ name = "Sentry";
+ version = "2.1.8";
+ sha256 = "1ii62ynihr4j2v2agjizk38kfz3m9bdijkks9k7ydhcq1bcz7jbn";
+ })
+ (fetchNuGet {
+ name = "Sentry.PlatformAbstractions";
+ version = "1.1.1";
+ sha256 = "10mxyxmyjpr0y1ik2j55pp7ifn101sw319cbpf28i2xbfp0cvcaj";
+ })
+ (fetchNuGet {
+ name = "Sentry.Protocol";
+ version = "2.1.8";
+ sha256 = "04baw4yxc5lbcl83sfcdyjg5225719bf3sxpa3kjmhf58bjr143l";
+ })
+ (fetchNuGet {
+ name = "SharpCompress";
+ version = "0.17.1";
+ sha256 = "1ffiacghbcnr3fkgvdcad7b1nky54nhmmn2sm43sks9zm8grvva4";
+ })
+ (fetchNuGet {
+ name = "SharpCompress";
+ version = "0.26.0";
+ sha256 = "03cygf8p44j1bfn6z9cn2xrw6zhvhq17xac1sph5rgq7vq2m5iq5";
+ })
+ (fetchNuGet {
+ name = "SharpFNT";
+ version = "2.0.0";
+ sha256 = "1bgacgh9hbck0qvji6frbb50sdiqfdng2fvvfgfw8b9qaql91mx0";
+ })
+ (fetchNuGet {
+ name = "SixLabors.ImageSharp";
+ version = "1.0.2";
+ sha256 = "0fhk9sn8k18slfb26wz8mal0j699f7djwhxgv97snz6b10wynfaj";
+ })
+ (fetchNuGet {
+ name = "Splat";
+ version = "1.6.2";
+ sha256 = "154w9q0z8697rcpqs4x233crx5ap1z4pl4xc21hsd3csbhw13ykf";
+ })
+ (fetchNuGet {
+ name = "SQLitePCLRaw.bundle_green";
+ version = "1.1.12";
+ sha256 = "0jbyd25ag15fyn9nawjikv0v5ylk2zh5pxgr6gm4kpbpqys86sq9";
+ })
+ (fetchNuGet {
+ name = "SQLitePCLRaw.core";
+ version = "1.1.12";
+ sha256 = "03gflsn2wl6v0a8zvh6y5xdhx0xxmfrn6jfldiy829x3fx74zgdl";
+ })
+ (fetchNuGet {
+ name = "SQLitePCLRaw.lib.e_sqlite3.linux";
+ version = "1.1.12";
+ sha256 = "10mlq914d3zggdjf4bv27w6jx0gqqjf6f91y5ri6pbvaqyhi28h5";
+ })
+ (fetchNuGet {
+ name = "SQLitePCLRaw.lib.e_sqlite3.osx";
+ version = "1.1.12";
+ sha256 = "1hixg6n9sqllfrcihj145lh1l38inv827808difvazd4zr3mi0z1";
+ })
+ (fetchNuGet {
+ name = "SQLitePCLRaw.lib.e_sqlite3.v110_xp";
+ version = "1.1.12";
+ sha256 = "107sivk5p38dg1kyvqrxgp67dj89s8l6brf9l52k6s4vrn4hrrk7";
+ })
+ (fetchNuGet {
+ name = "SQLitePCLRaw.provider.e_sqlite3.netstandard11";
+ version = "1.1.12";
+ sha256 = "0qr2d7ka6f5c7bybdhiyq7nl90c9575szmi0nfpknd9c0w024if4";
+ })
+ (fetchNuGet {
+ name = "StbiSharp";
+ version = "1.0.13";
+ sha256 = "0yaspwlh4x93d7xnqj5w5pxlwzlv9lixvksyvdh176krfa4mjw3q";
+ })
+ (fetchNuGet {
+ name = "System.AppContext";
+ version = "4.1.0";
+ sha256 = "0fv3cma1jp4vgj7a8hqc9n7hr1f1kjp541s6z0q1r6nazb4iz9mz";
+ })
+ (fetchNuGet {
+ name = "System.AppContext";
+ version = "4.3.0";
+ sha256 = "1649qvy3dar900z3g817h17nl8jp4ka5vcfmsr05kh0fshn7j3ya";
+ })
+ (fetchNuGet {
+ name = "System.Buffers";
+ version = "4.0.0";
+ sha256 = "13s659bcmg9nwb6z78971z1lr6bmh2wghxi1ayqyzl4jijd351gr";
+ })
+ (fetchNuGet {
+ name = "System.Buffers";
+ version = "4.3.0";
+ sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy";
+ })
+ (fetchNuGet {
+ name = "System.Buffers";
+ version = "4.4.0";
+ sha256 = "183f8063w8zqn99pv0ni0nnwh7fgx46qzxamwnans55hhs2l0g19";
+ })
+ (fetchNuGet {
+ name = "System.Buffers";
+ version = "4.5.1";
+ sha256 = "04kb1mdrlcixj9zh1xdi5as0k0qi8byr5mi3p3jcxx72qz93s2y3";
+ })
+ (fetchNuGet {
+ name = "System.Collections";
+ version = "4.0.11";
+ sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6";
+ })
+ (fetchNuGet {
+ name = "System.Collections";
+ version = "4.3.0";
+ sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9";
+ })
+ (fetchNuGet {
+ name = "System.Collections.Concurrent";
+ version = "4.0.12";
+ sha256 = "07y08kvrzpak873pmyxs129g1ch8l27zmg51pcyj2jvq03n0r0fc";
+ })
+ (fetchNuGet {
+ name = "System.Collections.Concurrent";
+ version = "4.3.0";
+ sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8";
+ })
+ (fetchNuGet {
+ name = "System.Collections.Immutable";
+ version = "1.5.0";
+ sha256 = "1d5gjn5afnrf461jlxzawcvihz195gayqpcfbv6dd7pxa9ialn06";
+ })
+ (fetchNuGet {
+ name = "System.Collections.Immutable";
+ version = "1.7.1";
+ sha256 = "1nh4nlxfc7lbnbl86wwk1a3jwl6myz5j6hvgh5sp4krim9901hsq";
+ })
+ (fetchNuGet {
+ name = "System.Collections.Immutable";
+ version = "5.0.0";
+ sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r";
+ })
+ (fetchNuGet {
+ name = "System.ComponentModel.Annotations";
+ version = "4.5.0";
+ sha256 = "1jj6f6g87k0iwsgmg3xmnn67a14mq88np0l1ys5zkxhkvbc8976p";
+ })
+ (fetchNuGet {
+ name = "System.ComponentModel.Annotations";
+ version = "5.0.0";
+ sha256 = "021h7x98lblq9avm1bgpa4i31c2kgsa7zn4sqhxf39g087ar756j";
+ })
+ (fetchNuGet {
+ name = "System.Composition";
+ version = "1.0.31";
+ sha256 = "0aa27jz73qb0xm6dyxv22qhfrmyyqjyn2dvvsd9asi82lcdh9i61";
+ })
+ (fetchNuGet {
+ name = "System.Composition.AttributedModel";
+ version = "1.0.31";
+ sha256 = "1ipyb86hvw754kmk47vjmzyilvj5hymg9nqabz70sbgsz1fygrdv";
+ })
+ (fetchNuGet {
+ name = "System.Composition.Convention";
+ version = "1.0.31";
+ sha256 = "00gqcdrql7vhynxh4xq0s9j5nw27kghmn2n773v7lhzjh3ash18r";
+ })
+ (fetchNuGet {
+ name = "System.Composition.Hosting";
+ version = "1.0.31";
+ sha256 = "1f1bnk3j7ndx9r7zpzibmrhw78clys1pspl20j2dhnmkiwhl23vy";
+ })
+ (fetchNuGet {
+ name = "System.Composition.Runtime";
+ version = "1.0.31";
+ sha256 = "1shfybfzsn4g6aim4pggb5ha31g0fz2kkk0519c4vj6m166g39ws";
+ })
+ (fetchNuGet {
+ name = "System.Composition.TypedParts";
+ version = "1.0.31";
+ sha256 = "1m4j19zx50lbbdx1xxbgpsd1dai2r3kzkyapw47kdvkb89qjkl63";
+ })
+ (fetchNuGet {
+ name = "System.Console";
+ version = "4.0.0";
+ sha256 = "0ynxqbc3z1nwbrc11hkkpw9skw116z4y9wjzn7id49p9yi7mzmlf";
+ })
+ (fetchNuGet {
+ name = "System.Console";
+ version = "4.3.0";
+ sha256 = "1flr7a9x920mr5cjsqmsy9wgnv3lvd0h1g521pdr1lkb2qycy7ay";
+ })
+ (fetchNuGet {
+ name = "System.Diagnostics.Debug";
+ version = "4.0.11";
+ sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz";
+ })
+ (fetchNuGet {
+ name = "System.Diagnostics.Debug";
+ version = "4.3.0";
+ sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y";
+ })
+ (fetchNuGet {
+ name = "System.Diagnostics.DiagnosticSource";
+ version = "4.0.0";
+ sha256 = "1n6c3fbz7v8d3pn77h4v5wvsfrfg7v1c57lg3nff3cjyh597v23m";
+ })
+ (fetchNuGet {
+ name = "System.Diagnostics.DiagnosticSource";
+ version = "4.3.0";
+ sha256 = "0z6m3pbiy0qw6rn3n209rrzf9x1k4002zh90vwcrsym09ipm2liq";
+ })
+ (fetchNuGet {
+ name = "System.Diagnostics.DiagnosticSource";
+ version = "4.5.0";
+ sha256 = "1y8m0p3127nak5yspapfnz25qc9x53gqpvwr3hdpsvrcd2r1pgyj";
+ })
+ (fetchNuGet {
+ name = "System.Diagnostics.Tools";
+ version = "4.0.1";
+ sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x";
+ })
+ (fetchNuGet {
+ name = "System.Diagnostics.Tools";
+ version = "4.3.0";
+ sha256 = "0in3pic3s2ddyibi8cvgl102zmvp9r9mchh82ns9f0ms4basylw1";
+ })
+ (fetchNuGet {
+ name = "System.Diagnostics.Tracing";
+ version = "4.1.0";
+ sha256 = "1d2r76v1x610x61ahfpigda89gd13qydz6vbwzhpqlyvq8jj6394";
+ })
+ (fetchNuGet {
+ name = "System.Diagnostics.Tracing";
+ version = "4.3.0";
+ sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4";
+ })
+ (fetchNuGet {
+ name = "System.Dynamic.Runtime";
+ version = "4.0.11";
+ sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9";
+ })
+ (fetchNuGet {
+ name = "System.Globalization";
+ version = "4.0.11";
+ sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d";
+ })
+ (fetchNuGet {
+ name = "System.Globalization";
+ version = "4.3.0";
+ sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki";
+ })
+ (fetchNuGet {
+ name = "System.Globalization.Calendars";
+ version = "4.0.1";
+ sha256 = "0bv0alrm2ck2zk3rz25lfyk9h42f3ywq77mx1syl6vvyncnpg4qh";
+ })
+ (fetchNuGet {
+ name = "System.Globalization.Calendars";
+ version = "4.3.0";
+ sha256 = "1xwl230bkakzzkrggy1l1lxmm3xlhk4bq2pkv790j5lm8g887lxq";
+ })
+ (fetchNuGet {
+ name = "System.Globalization.Extensions";
+ version = "4.0.1";
+ sha256 = "0hjhdb5ri8z9l93bw04s7ynwrjrhx2n0p34sf33a9hl9phz69fyc";
+ })
+ (fetchNuGet {
+ name = "System.Globalization.Extensions";
+ version = "4.3.0";
+ sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls";
+ })
+ (fetchNuGet {
+ name = "System.Interactive.Async";
+ version = "3.2.0";
+ sha256 = "0y5r5y7dlccjpgg17rjrrzi3jya4ysyydamxs33qckkv4jb3534d";
+ })
+ (fetchNuGet {
+ name = "System.IO";
+ version = "4.1.0";
+ sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp";
+ })
+ (fetchNuGet {
+ name = "System.IO";
+ version = "4.3.0";
+ sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f";
+ })
+ (fetchNuGet {
+ name = "System.IO.Compression";
+ version = "4.1.0";
+ sha256 = "0iym7s3jkl8n0vzm3jd6xqg9zjjjqni05x45dwxyjr2dy88hlgji";
+ })
+ (fetchNuGet {
+ name = "System.IO.Compression";
+ version = "4.3.0";
+ sha256 = "084zc82yi6yllgda0zkgl2ys48sypiswbiwrv7irb3r0ai1fp4vz";
+ })
+ (fetchNuGet {
+ name = "System.IO.Compression.ZipFile";
+ version = "4.0.1";
+ sha256 = "0h72znbagmgvswzr46mihn7xm7chfk2fhrp5krzkjf29pz0i6z82";
+ })
+ (fetchNuGet {
+ name = "System.IO.Compression.ZipFile";
+ version = "4.3.0";
+ sha256 = "1yxy5pq4dnsm9hlkg9ysh5f6bf3fahqqb6p8668ndy5c0lk7w2ar";
+ })
+ (fetchNuGet {
+ name = "System.IO.FileSystem";
+ version = "4.0.1";
+ sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1";
+ })
+ (fetchNuGet {
+ name = "System.IO.FileSystem";
+ version = "4.3.0";
+ sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw";
+ })
+ (fetchNuGet {
+ name = "System.IO.FileSystem.Primitives";
+ version = "4.0.1";
+ sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612";
+ })
+ (fetchNuGet {
+ name = "System.IO.FileSystem.Primitives";
+ version = "4.3.0";
+ sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c";
+ })
+ (fetchNuGet {
+ name = "System.IO.Packaging";
+ version = "5.0.0";
+ sha256 = "08l85pi8jy65las973szqdnir2awxp0r16h21c0bgrz19gxhs11n";
+ })
+ (fetchNuGet {
+ name = "System.IO.Pipelines";
+ version = "4.7.3";
+ sha256 = "0djp59x56klidi04xx8p5jc1nchv5zvd1d59diphqxwvgny3aawy";
+ })
+ (fetchNuGet {
+ name = "System.Linq";
+ version = "4.1.0";
+ sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5";
+ })
+ (fetchNuGet {
+ name = "System.Linq";
+ version = "4.3.0";
+ sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7";
+ })
+ (fetchNuGet {
+ name = "System.Linq.Expressions";
+ version = "4.1.0";
+ sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg";
+ })
+ (fetchNuGet {
+ name = "System.Linq.Expressions";
+ version = "4.3.0";
+ sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv";
+ })
+ (fetchNuGet {
+ name = "System.Linq.Queryable";
+ version = "4.0.1";
+ sha256 = "11jn9k34g245yyf260gr3ldzvaqa9477w2c5nhb1p8vjx4xm3qaw";
+ })
+ (fetchNuGet {
+ name = "System.Memory";
+ version = "4.5.1";
+ sha256 = "0f07d7hny38lq9w69wx4lxkn4wszrqf9m9js6fh9is645csm167c";
+ })
+ (fetchNuGet {
+ name = "System.Memory";
+ version = "4.5.2";
+ sha256 = "1g24dwqfcmf4gpbgbhaw1j49xmpsz389l6bw2xxbsmnzvsf860ld";
+ })
+ (fetchNuGet {
+ name = "System.Memory";
+ version = "4.5.3";
+ sha256 = "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a";
+ })
+ (fetchNuGet {
+ name = "System.Memory";
+ version = "4.5.4";
+ sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y";
+ })
+ (fetchNuGet {
+ name = "System.Net.Http";
+ version = "4.1.0";
+ sha256 = "1i5rqij1icg05j8rrkw4gd4pgia1978mqhjzhsjg69lvwcdfg8yb";
+ })
+ (fetchNuGet {
+ name = "System.Net.Http";
+ version = "4.3.0";
+ sha256 = "1i4gc757xqrzflbk7kc5ksn20kwwfjhw9w7pgdkn19y3cgnl302j";
+ })
+ (fetchNuGet {
+ name = "System.Net.Primitives";
+ version = "4.0.11";
+ sha256 = "10xzzaynkzkakp7jai1ik3r805zrqjxiz7vcagchyxs2v26a516r";
+ })
+ (fetchNuGet {
+ name = "System.Net.Primitives";
+ version = "4.3.0";
+ sha256 = "0c87k50rmdgmxx7df2khd9qj7q35j9rzdmm2572cc55dygmdk3ii";
+ })
+ (fetchNuGet {
+ name = "System.Net.Sockets";
+ version = "4.1.0";
+ sha256 = "1385fvh8h29da5hh58jm1v78fzi9fi5vj93vhlm2kvqpfahvpqls";
+ })
+ (fetchNuGet {
+ name = "System.Net.Sockets";
+ version = "4.3.0";
+ sha256 = "1ssa65k6chcgi6mfmzrznvqaxk8jp0gvl77xhf1hbzakjnpxspla";
+ })
+ (fetchNuGet {
+ name = "System.Numerics.Vectors";
+ version = "4.4.0";
+ sha256 = "0rdvma399070b0i46c4qq1h2yvjj3k013sqzkilz4bz5cwmx1rba";
+ })
+ (fetchNuGet {
+ name = "System.Numerics.Vectors";
+ version = "4.5.0";
+ sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59";
+ })
+ (fetchNuGet {
+ name = "System.ObjectModel";
+ version = "4.0.12";
+ sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj";
+ })
+ (fetchNuGet {
+ name = "System.ObjectModel";
+ version = "4.3.0";
+ sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2";
+ })
+ (fetchNuGet {
+ name = "System.Reflection";
+ version = "4.1.0";
+ sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9";
+ })
+ (fetchNuGet {
+ name = "System.Reflection";
+ version = "4.3.0";
+ sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Emit";
+ version = "4.0.1";
+ sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Emit";
+ version = "4.3.0";
+ sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Emit.ILGeneration";
+ version = "4.0.1";
+ sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Emit.ILGeneration";
+ version = "4.3.0";
+ sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Emit.Lightweight";
+ version = "4.0.1";
+ sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Emit.Lightweight";
+ version = "4.3.0";
+ sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Emit.Lightweight";
+ version = "4.7.0";
+ sha256 = "0mbjfajmafkca47zr8v36brvknzks5a7pgb49kfq2d188pyv6iap";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Extensions";
+ version = "4.0.1";
+ sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Extensions";
+ version = "4.3.0";
+ sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Metadata";
+ version = "1.8.1";
+ sha256 = "17xxl3m99wa4hcpqy42vl8qb1jk2jfq32rj3sfjc1a46hi2si5jj";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Metadata";
+ version = "5.0.0";
+ sha256 = "17qsl5nanlqk9iz0l5wijdn6ka632fs1m1fvx18dfgswm258r3ss";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Primitives";
+ version = "4.0.1";
+ sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.Primitives";
+ version = "4.3.0";
+ sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.TypeExtensions";
+ version = "4.1.0";
+ sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7";
+ })
+ (fetchNuGet {
+ name = "System.Reflection.TypeExtensions";
+ version = "4.3.0";
+ sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1";
+ })
+ (fetchNuGet {
+ name = "System.Resources.ResourceManager";
+ version = "4.0.1";
+ sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi";
+ })
+ (fetchNuGet {
+ name = "System.Resources.ResourceManager";
+ version = "4.3.0";
+ sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49";
+ })
+ (fetchNuGet {
+ name = "System.Runtime";
+ version = "4.1.0";
+ sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m";
+ })
+ (fetchNuGet {
+ name = "System.Runtime";
+ version = "4.3.0";
+ sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.CompilerServices.Unsafe";
+ version = "4.5.1";
+ sha256 = "1xcrjx5fwg284qdnxyi2d0lzdm5q4frlpkp0nf6vvkx1kdz2prrf";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.CompilerServices.Unsafe";
+ version = "4.5.2";
+ sha256 = "1vz4275fjij8inf31np78hw50al8nqkngk04p3xv5n4fcmf1grgi";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.CompilerServices.Unsafe";
+ version = "4.5.3";
+ sha256 = "1afi6s2r1mh1kygbjmfba6l4f87pi5sg13p4a48idqafli94qxln";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.CompilerServices.Unsafe";
+ version = "4.7.1";
+ sha256 = "119br3pd85lq8zcgh4f60jzmv1g976q1kdgi3hvqdlhfbw6siz2j";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.Extensions";
+ version = "4.1.0";
+ sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.Extensions";
+ version = "4.3.0";
+ sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.Handles";
+ version = "4.0.1";
+ sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.Handles";
+ version = "4.3.0";
+ sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.InteropServices";
+ version = "4.1.0";
+ sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.InteropServices";
+ version = "4.3.0";
+ sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.InteropServices.RuntimeInformation";
+ version = "4.0.0";
+ sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.InteropServices.RuntimeInformation";
+ version = "4.3.0";
+ sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.Numerics";
+ version = "4.0.1";
+ sha256 = "1y308zfvy0l5nrn46mqqr4wb4z1xk758pkk8svbz8b5ij7jnv4nn";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.Numerics";
+ version = "4.3.0";
+ sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z";
+ })
+ (fetchNuGet {
+ name = "System.Runtime.Serialization.Primitives";
+ version = "4.1.1";
+ sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k";
+ })
+ (fetchNuGet {
+ name = "System.Security.AccessControl";
+ version = "5.0.0";
+ sha256 = "17n3lrrl6vahkqmhlpn3w20afgz09n7i6rv0r3qypngwi7wqdr5r";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.Algorithms";
+ version = "4.2.0";
+ sha256 = "148s9g5dgm33ri7dnh19s4lgnlxbpwvrw2jnzllq2kijj4i4vs85";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.Algorithms";
+ version = "4.3.0";
+ sha256 = "03sq183pfl5kp7gkvq77myv7kbpdnq3y0xj7vi4q1kaw54sny0ml";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.Cng";
+ version = "4.2.0";
+ sha256 = "118jijz446kix20blxip0f0q8mhsh9bz118mwc2ch1p6g7facpzc";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.Cng";
+ version = "4.3.0";
+ sha256 = "1k468aswafdgf56ab6yrn7649kfqx2wm9aslywjam1hdmk5yypmv";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.Csp";
+ version = "4.0.0";
+ sha256 = "1cwv8lqj8r15q81d2pz2jwzzbaji0l28xfrpw29kdpsaypm92z2q";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.Csp";
+ version = "4.3.0";
+ sha256 = "1x5wcrddf2s3hb8j78cry7yalca4lb5vfnkrysagbn6r9x6xvrx1";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.Encoding";
+ version = "4.0.0";
+ sha256 = "0a8y1a5wkmpawc787gfmnrnbzdgxmx1a14ax43jf3rj9gxmy3vk4";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.Encoding";
+ version = "4.3.0";
+ sha256 = "1jr6w70igqn07k5zs1ph6xja97hxnb3mqbspdrff6cvssgrixs32";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.OpenSsl";
+ version = "4.0.0";
+ sha256 = "16sx3cig3d0ilvzl8xxgffmxbiqx87zdi8fc73i3i7zjih1a7f4q";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.OpenSsl";
+ version = "4.3.0";
+ sha256 = "0givpvvj8yc7gv4lhb6s1prq6p2c4147204a0wib89inqzd87gqc";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.Primitives";
+ version = "4.0.0";
+ sha256 = "0i7cfnwph9a10bm26m538h5xcr8b36jscp9sy1zhgifksxz4yixh";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.Primitives";
+ version = "4.3.0";
+ sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.X509Certificates";
+ version = "4.1.0";
+ sha256 = "0clg1bv55mfv5dq00m19cp634zx6inm31kf8ppbq1jgyjf2185dh";
+ })
+ (fetchNuGet {
+ name = "System.Security.Cryptography.X509Certificates";
+ version = "4.3.0";
+ sha256 = "0valjcz5wksbvijylxijjxb1mp38mdhv03r533vnx1q3ikzdav9h";
+ })
+ (fetchNuGet {
+ name = "System.Security.Principal.Windows";
+ version = "5.0.0";
+ sha256 = "1mpk7xj76lxgz97a5yg93wi8lj0l8p157a5d50mmjy3gbz1904q8";
+ })
+ (fetchNuGet {
+ name = "System.Text.Encoding";
+ version = "4.0.11";
+ sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw";
+ })
+ (fetchNuGet {
+ name = "System.Text.Encoding";
+ version = "4.3.0";
+ sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr";
+ })
+ (fetchNuGet {
+ name = "System.Text.Encoding.CodePages";
+ version = "4.5.1";
+ sha256 = "1z21qyfs6sg76rp68qdx0c9iy57naan89pg7p6i3qpj8kyzn921w";
+ })
+ (fetchNuGet {
+ name = "System.Text.Encoding.CodePages";
+ version = "4.7.1";
+ sha256 = "1y1hdap9qbl7vp74j8s9zcbh3v1rnrrvcc55wj1hl6has2v3qh1r";
+ })
+ (fetchNuGet {
+ name = "System.Text.Encoding.Extensions";
+ version = "4.0.11";
+ sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs";
+ })
+ (fetchNuGet {
+ name = "System.Text.Encoding.Extensions";
+ version = "4.3.0";
+ sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy";
+ })
+ (fetchNuGet {
+ name = "System.Text.Encodings.Web";
+ version = "4.7.1";
+ sha256 = "1wj7r07mjwbf9a79kapy2l9m8mcq8b3nbhg0zaprlsav09k85fmb";
+ })
+ (fetchNuGet {
+ name = "System.Text.Json";
+ version = "4.7.2";
+ sha256 = "10xj1pw2dgd42anikvj9qm23ccssrcp7dpznpj4j7xjp1ikhy3y4";
+ })
+ (fetchNuGet {
+ name = "System.Text.RegularExpressions";
+ version = "4.1.0";
+ sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7";
+ })
+ (fetchNuGet {
+ name = "System.Text.RegularExpressions";
+ version = "4.3.0";
+ sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l";
+ })
+ (fetchNuGet {
+ name = "System.Threading";
+ version = "4.0.11";
+ sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls";
+ })
+ (fetchNuGet {
+ name = "System.Threading";
+ version = "4.3.0";
+ sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34";
+ })
+ (fetchNuGet {
+ name = "System.Threading.Channels";
+ version = "4.7.1";
+ sha256 = "038fyrriypwzsj5fwgnkw79hm5ya0x63r724yizgahbxf512chr2";
+ })
+ (fetchNuGet {
+ name = "System.Threading.Tasks";
+ version = "4.0.11";
+ sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5";
+ })
+ (fetchNuGet {
+ name = "System.Threading.Tasks";
+ version = "4.3.0";
+ sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7";
+ })
+ (fetchNuGet {
+ name = "System.Threading.Tasks.Extensions";
+ version = "4.0.0";
+ sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr";
+ })
+ (fetchNuGet {
+ name = "System.Threading.Tasks.Extensions";
+ version = "4.3.0";
+ sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z";
+ })
+ (fetchNuGet {
+ name = "System.Threading.Tasks.Extensions";
+ version = "4.5.4";
+ sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153";
+ })
+ (fetchNuGet {
+ name = "System.Threading.Thread";
+ version = "4.0.0";
+ sha256 = "1gxxm5fl36pjjpnx1k688dcw8m9l7nmf802nxis6swdaw8k54jzc";
+ })
+ (fetchNuGet {
+ name = "System.Threading.Timer";
+ version = "4.0.1";
+ sha256 = "15n54f1f8nn3mjcjrlzdg6q3520571y012mx7v991x2fvp73lmg6";
+ })
+ (fetchNuGet {
+ name = "System.Threading.Timer";
+ version = "4.3.0";
+ sha256 = "1nx773nsx6z5whv8kaa1wjh037id2f1cxhb69pvgv12hd2b6qs56";
+ })
+ (fetchNuGet {
+ name = "System.Xml.ReaderWriter";
+ version = "4.0.11";
+ sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5";
+ })
+ (fetchNuGet {
+ name = "System.Xml.ReaderWriter";
+ version = "4.3.0";
+ sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1";
+ })
+ (fetchNuGet {
+ name = "System.Xml.XDocument";
+ version = "4.0.11";
+ sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18";
+ })
+ (fetchNuGet {
+ name = "System.Xml.XDocument";
+ version = "4.3.0";
+ sha256 = "08h8fm4l77n0nd4i4fk2386y809bfbwqb7ih9d7564ifcxr5ssxd";
+ })
+]
diff --git a/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/update.sh b/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/update.sh
new file mode 100755
index 000000000000..be8fa3fe7168
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/osu-lazer/update.sh
@@ -0,0 +1,58 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl jq common-updater-scripts dotnet-sdk_3
+set -eo pipefail
+cd "$(dirname "${BASH_SOURCE[0]}")"
+
+deps_file="$(realpath "./deps.nix")"
+
+new_version="$(curl -s "https://api.github.com/repos/ppy/osu/releases" | jq -r '.[0].name')"
+old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
+if [[ "$new_version" == "$old_version" ]]; then
+ echo "Up to date"
+ exit 0
+fi
+
+cd ../../..
+update-source-version osu-lazer "$new_version"
+store_src="$(nix-build . -A osu-lazer.src --no-out-link)"
+src="$(mktemp -d /tmp/osu-src.XXX)"
+echo "Temp src dir: $src"
+cp -rT "$store_src" "$src"
+chmod -R +w "$src"
+
+pushd "$src"
+
+# Setup empty nuget package folder to force reinstall.
+mkdir ./nuget_tmp.packages
+cat >./nuget_tmp.config <<EOF
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <packageSources>
+ <add key="nuget" value="https://api.nuget.org/v3/index.json" />
+ </packageSources>
+ <config>
+ <add key="globalPackagesFolder" value="$(realpath ./nuget_tmp.packages)" />
+ </config>
+</configuration>
+EOF
+
+dotnet restore osu.Desktop --configfile ./nuget_tmp.config
+
+echo "{ fetchNuGet }: [" >"$deps_file"
+while read pkg_spec; do
+ { read pkg_name; read pkg_version; } < <(
+ # Build version part should be ignored: `3.0.0-beta2.20059.3+77df2220` -> `3.0.0-beta2.20059.3`
+ sed -nE 's/.*<id>([^<]*).*/\1/p; s/.*<version>([^<+]*).*/\1/p' "$pkg_spec")
+ pkg_sha256="$(nix-hash --type sha256 --flat --base32 "$(dirname "$pkg_spec")"/*.nupkg)"
+ cat >>"$deps_file" <<EOF
+ (fetchNuGet {
+ name = "$pkg_name";
+ version = "$pkg_version";
+ sha256 = "$pkg_sha256";
+ })
+EOF
+done < <(find ./nuget_tmp.packages -name '*.nuspec' | sort)
+echo "]" >>"$deps_file"
+
+popd
+rm -r "$src"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/pacvim/default.nix b/infra/libkookie/nixpkgs/pkgs/games/pacvim/default.nix
new file mode 100644
index 000000000000..6e28753b4f31
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/pacvim/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, ncurses }:
+
+stdenv.mkDerivation {
+ pname = "pacvim";
+ version = "2018-05-16";
+ src = fetchFromGitHub {
+ owner = "jmoon018";
+ repo = "PacVim";
+ rev = "ca7c8833c22c5fe97974ba5247ef1fcc00cedb8e";
+ sha256 = "1kq6j7xmsl5qfl1246lyglkb2rs9mnb2rhsdrp18965dpbj2mhx2";
+ };
+
+ buildInputs = [ ncurses ];
+ makeFlags = [ "PREFIX=$(out)" ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/jmoon018/PacVim";
+ description = "A game that teaches you vim commands";
+ maintainers = with maintainers; [ infinisil ];
+ license = licenses.lgpl3;
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/papermc/default.nix b/infra/libkookie/nixpkgs/pkgs/games/papermc/default.nix
new file mode 100644
index 000000000000..15b05b56d843
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/papermc/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, bash, jre }:
+let
+ mcVersion = "1.16.4";
+ buildNum = "296";
+ jar = fetchurl {
+ url = "https://papermc.io/api/v1/paper/${mcVersion}/${buildNum}/download";
+ sha256 = "0885417w7qahk2fwlzvggbwrhvwgpd7xas8lzzb7ar469vyvd9dz";
+ };
+in stdenv.mkDerivation {
+ pname = "papermc";
+ version = "${mcVersion}r${buildNum}";
+
+ preferLocalBuild = true;
+
+ dontUnpack = true;
+ dontConfigure = true;
+
+ buildPhase = ''
+ cat > minecraft-server << EOF
+ #!${bash}/bin/sh
+ exec ${jre}/bin/java \$@ -jar $out/share/papermc/papermc.jar nogui
+ '';
+
+ installPhase = ''
+ install -Dm444 ${jar} $out/share/papermc/papermc.jar
+ install -Dm555 -t $out/bin minecraft-server
+ '';
+
+ meta = {
+ description = "High-performance Minecraft Server";
+ homepage = "https://papermc.io/";
+ license = stdenv.lib.licenses.gpl3Only;
+ platforms = stdenv.lib.platforms.unix;
+ maintainers = with stdenv.lib.maintainers; [ aaronjanse ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/pentobi/default.nix b/infra/libkookie/nixpkgs/pkgs/games/pentobi/default.nix
new file mode 100644
index 000000000000..656bde2ac743
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/pentobi/default.nix
@@ -0,0 +1,38 @@
+{ lib, mkDerivation, appstream, fetchFromGitHub, cmake, gettext, libxslt, librsvg, itstool
+, qtbase, qtquickcontrols2, qtsvg, qttools, qtwebview, docbook_xsl
+}:
+
+mkDerivation rec {
+ version = "18.4";
+ pname = "pentobi";
+
+ src = fetchFromGitHub {
+ owner = "enz";
+ repo = "pentobi";
+ rev = "v${version}";
+ sha256 = "1wawy6s3i4pcc6n6kfspn5b4g957ds0728mgwzw19agp5yyid73b";
+ };
+
+ nativeBuildInputs = [ cmake docbook_xsl qttools ];
+ buildInputs = [ appstream qtbase qtsvg qtquickcontrols2 qtwebview itstool librsvg ];
+
+ patchPhase = ''
+ substituteInPlace pentobi_thumbnailer/CMakeLists.txt --replace "/manpages" "/share/xml/docbook-xsl/manpages/"
+ substituteInPlace pentobi/unix/CMakeLists.txt --replace "/manpages" "/share/xml/docbook-xsl/manpages/"
+ substituteInPlace pentobi/docbook/CMakeLists.txt --replace "/html" "/share/xml/docbook-xsl/html"
+ '';
+
+ cmakeFlags = [
+ "-DCMAKE_VERBOSE_MAKEFILE=1"
+ "-DDOCBOOKXSL_DIR=${docbook_xsl}"
+ "-DMETAINFO_ITS=${appstream}/share/gettext/its/metainfo.its"
+ ];
+
+ meta = with lib; {
+ description = "A computer opponent for the board game Blokus";
+ homepage = "https://pentobi.sourceforge.io";
+ license = licenses.gpl3;
+ maintainers = [ ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/performous/default.nix b/infra/libkookie/nixpkgs/pkgs/games/performous/default.nix
new file mode 100644
index 000000000000..96b07e9787e8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/performous/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, gettext
+, glibmm, libxmlxx, pango, librsvg
+, SDL2, glew, boost, libav, portaudio, epoxy
+}:
+
+stdenv.mkDerivation rec {
+ pname = "performous";
+ version = "1.1";
+
+ meta = with stdenv.lib; {
+ description = "Karaoke, band and dancing game";
+ homepage = "http://performous.org/";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ };
+
+ src = fetchFromGitHub {
+ owner = "performous";
+ repo = "performous";
+ rev = version;
+ sha256 = "08j0qhr65l7qnd5vxl4l07523qpvdwi31h4vzl3lfiinx1zcgr4x";
+ };
+
+ patches = [ ./performous-cmake.patch ];
+
+ nativeBuildInputs = [ cmake pkgconfig gettext ];
+
+ buildInputs = [
+ glibmm libxmlxx pango librsvg
+ SDL2 glew boost libav portaudio epoxy
+ ];
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/performous/performous-cmake.patch b/infra/libkookie/nixpkgs/pkgs/games/performous/performous-cmake.patch
new file mode 100644
index 000000000000..59d2cc9a927c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/performous/performous-cmake.patch
@@ -0,0 +1,86 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 2.8)
++cmake_minimum_required(VERSION 3.6)
+ project(Performous CXX C)
+
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
+--- a/cmake/Modules/FindPango.cmake
++++ b/cmake/Modules/FindPango.cmake
+@@ -2,31 +2,10 @@
+ # Once done, this will define
+ #
+ # Pango_FOUND - system has Pango
+-# Pango_INCLUDE_DIRS - the Pango include directories
+ # Pango_LIBRARIES - link these to use Pango
+
+ include(LibFindMacros)
+
+-# Dependencies
+-libfind_package(Pango Freetype)
+-libfind_package(Pango Glib)
+-libfind_package(Pango GObject)
+-
+-# Use pkg-config to get hints about paths
+-libfind_pkg_check_modules(Pango_PKGCONF pango)
+-
+-# Include dir
+-find_path(Pango_INCLUDE_DIR
+- NAMES pango/pango.h
+- HINTS ${Pango_PKGCONF_INCLUDE_DIRS}
+- PATH_SUFFIXES pango-1.0
+-)
+-
+-# Finally the library itself
+-find_library(Pango_LIBRARY
+- NAMES pango-1.0
+- HINTS ${Pango_PKGCONF_LIBRARY_DIRS}
+-)
+-
++libfind_pkg_check_modules(Pango_PKGCONF IMPORTED_TARGET pango)
++set(Pango_LIBRARY PkgConfig::Pango_PKGCONF)
+ libfind_process(Pango)
+-
+--- a/cmake/Modules/FindPangoCairo.cmake
++++ b/cmake/Modules/FindPangoCairo.cmake
+@@ -1,35 +1,11 @@
+ # - Try to find PangoCairo
+ # Once done, this will define
+ #
+-# PangoCairo_FOUND - system has Pango
+-# PangoCairo_INCLUDE_DIRS - the Pango include directories
+-# PangoCairo_LIBRARIES - link these to use Pango
++# PangoCairo_FOUND - system has PangoCairo
++# PangoCairo_LIBRARIES - link these to use PangoCairo
+
+ include(LibFindMacros)
+
+-# Dependencies
+-libfind_package(PangoCairo Pango)
+-libfind_package(PangoCairo Cairo)
+-
+-# Use pkg-config to get hints about paths
+-libfind_pkg_check_modules(PangoCairo_PKGCONF pangocairo)
+-
+-# Include dir
+-find_path(PangoCairo_INCLUDE_DIR
+- NAMES pango/pangocairo.h
+- HINTS ${PangoCairo_PKGCONF_INCLUDE_DIRS}
+- PATH_SUFFIXES pango-1.0
+-)
+-
+-# Finally the library itself
+-find_library(PangoCairo_LIBRARY
+- NAMES pangocairo-1.0
+- HINTS ${PangoCairo_PKGCONF_LIBRARY_DIRS}
+-)
+-
+-# Set the include dir variables and the libraries and let libfind_process do the rest.
+-# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
+-set(PangoCairo_PROCESS_INCLUDES PangoCairo_INCLUDE_DIR Pango_INCLUDE_DIR Cairo_INCLUDE_DIR)
+-set(PangoCairo_PROCESS_LIBS PangoCairo_LIBRARY Pango_LIBRARY Cairo_LIBRARY)
++libfind_pkg_check_modules(PangoCairo_PKGCONF IMPORTED_TARGET pangocairo)
++set(PangoCairo_LIBRARY PkgConfig::PangoCairo_PKGCONF)
+ libfind_process(PangoCairo)
+-
diff --git a/infra/libkookie/nixpkgs/pkgs/games/pingus/default.nix b/infra/libkookie/nixpkgs/pkgs/games/pingus/default.nix
new file mode 100644
index 000000000000..81e22b90e97f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/pingus/default.nix
@@ -0,0 +1,22 @@
+{stdenv, fetchgit, cmake, SDL2, SDL2_image, boost, libpng, SDL2_mixer
+, pkgconfig, libGLU, libGL, git, jsoncpp }:
+stdenv.mkDerivation rec {
+ pname = "pingus";
+ version = "unstable-0.7.6.0.20191104";
+
+ nativeBuildInputs = [ cmake pkgconfig git ];
+ buildInputs = [ SDL2 SDL2_image boost libpng SDL2_mixer libGLU libGL jsoncpp ];
+ src = fetchgit {
+ url = "https://gitlab.com/pingus/pingus/";
+ rev = "709546d9b9c4d6d5f45fc9112b45ac10c7f9417d";
+ sha256 = "11mmzk0766riaw5qyd1r5i7s7vczbbzfccm92bvgrm99iy1sj022";
+ fetchSubmodules = true;
+ };
+
+ meta = {
+ description = ''A puzzle game with mechanics similar to Lemmings'';
+ platforms = stdenv.lib.platforms.linux;
+ maintainers = [stdenv.lib.maintainers.raskin];
+ license = stdenv.lib.licenses.gpl3;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/pioneer/default.nix b/infra/libkookie/nixpkgs/pkgs/games/pioneer/default.nix
new file mode 100644
index 000000000000..3f3a2dd363d4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/pioneer/default.nix
@@ -0,0 +1,36 @@
+{ fetchFromGitHub, stdenv, cmake, pkgconfig, curl, libsigcxx, SDL2
+, SDL2_image, freetype, libvorbis, libpng, assimp, libGLU, libGL
+, glew
+}:
+
+stdenv.mkDerivation rec {
+ pname = "pioneer";
+ version = "20200203";
+
+ src = fetchFromGitHub{
+ owner = "pioneerspacesim";
+ repo = "pioneer";
+ rev = version;
+ sha256 = "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8";
+ };
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+
+ buildInputs = [
+ curl libsigcxx SDL2 SDL2_image freetype libvorbis libpng
+ assimp libGLU libGL glew
+ ];
+
+ preConfigure = ''
+ export PIONEER_DATA_DIR="$out/share/pioneer/data";
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A space adventure game set in the Milky Way galaxy at the turn of the 31st century";
+ homepage = "https://pioneerspacesim.net";
+ license = with licenses; [
+ gpl3 cc-by-sa-30
+ ];
+ platforms = [ "x86_64-linux" "i686-linux" ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/pioneers/default.nix b/infra/libkookie/nixpkgs/pkgs/games/pioneers/default.nix
new file mode 100644
index 000000000000..882303ab0232
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/pioneers/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, fetchurl
+, pkg-config
+, intltool
+, itstool
+, gtk3
+, libxml2
+}:
+
+stdenv.mkDerivation rec {
+ pname = "pioneers";
+ version = "15.6";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/pio/${pname}-${version}.tar.gz";
+ sha256 = "07b3xdd81n8ybsb4fzc5lx0813y9crzp1hj69khncf4faj48sdcs";
+ };
+
+ nativeBuildInputs = [ pkg-config intltool itstool ];
+
+ buildInputs = [ gtk3 libxml2 ];
+
+ meta = with stdenv.lib; {
+ description = "Addicting game based on The Settlers of Catan";
+ homepage = "http://pio.sourceforge.net/"; # https does not work
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ viric ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/planetaryannihilation/default.nix b/infra/libkookie/nixpkgs/pkgs/games/planetaryannihilation/default.nix
new file mode 100644
index 000000000000..a42eb672e62e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/planetaryannihilation/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, config, fetchurl, patchelf, makeWrapper, gtk2, glib, udev, alsaLib, atk
+, nspr, fontconfig, cairo, pango, nss, freetype, gnome2, gdk-pixbuf, curl, systemd, xorg }:
+
+# TODO: use dynamic attributes once Nix 1.7 is out
+assert ((config.planetary_annihilation or null).url or null) != null;
+assert ((config.planetary_annihilation or null).sha256 or null) != null;
+
+/* to setup:
+ $ cat ~/.config/nixpkgs/config.nix
+ {
+ planetary_annihilation = {
+ url = "file:///home/user/PA_Linux_62857.tar.bz2";
+ sha256 = "0imi3k5144dsn3ka9khx3dj76klkw46ga7m6rddqjk4yslwabh3k";
+ };
+}
+*/
+
+stdenv.mkDerivation {
+ name = "planetary-annihalation";
+
+ src = fetchurl {
+ inherit (config.planetary_annihilation) url sha256;
+ };
+
+ nativeBuildInputs = [ patchelf makeWrapper ];
+
+ installPhase = ''
+ mkdir -p $out/{bin,lib}
+
+ cp -R * $out/
+ mv $out/*.so $out/lib
+ ln -s $out/PA $out/bin/PA
+
+ ln -s ${systemd}/lib/libudev.so.1 $out/lib/libudev.so.0
+
+ patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$out/PA"
+ patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc.lib xorg.libXdamage xorg.libXfixes gtk2 glib stdenv.glibc.out "$out" xorg.libXext pango udev xorg.libX11 xorg.libXcomposite alsaLib atk nspr fontconfig cairo pango nss freetype gnome2.GConf gdk-pixbuf xorg.libXrender ]}:{stdenv.cc.cc.lib}/lib64:${stdenv.glibc.out}/lib64" "$out/host/CoherentUI_Host"
+
+ wrapProgram $out/PA --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc.lib stdenv.glibc.out xorg.libX11 xorg.libXcursor gtk2 glib curl "$out" ]}:${stdenv.cc.cc.lib}/lib64:${stdenv.glibc.out}/lib64"
+
+ for f in $out/lib/*; do
+ patchelf --set-rpath "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc.lib curl xorg.libX11 stdenv.glibc.out xorg.libXcursor "$out" ]}:${stdenv.cc.cc.lib}/lib64:${stdenv.glibc.out}/lib64" $f
+ done
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "http://www.uberent.com/pa/";
+ description = "Next-generation RTS that takes the genre to a planetary scale";
+ license = stdenv.lib.licenses.unfree;
+ platforms = platforms.linux;
+ maintainers = [ maintainers.domenkozar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/pokerth/default.nix b/infra/libkookie/nixpkgs/pkgs/games/pokerth/default.nix
new file mode 100644
index 000000000000..00b1f68e1371
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/pokerth/default.nix
@@ -0,0 +1,75 @@
+{ mkDerivation, stdenv, fetchFromGitHub, runCommand, fetchpatch, patchutils, qmake, qtbase
+, SDL, SDL_mixer, boost, curl, gsasl, libgcrypt, libircclient, protobuf, sqlite
+, wrapQtAppsHook
+, tinyxml2, target ? "client" }:
+
+with stdenv.lib;
+
+let
+ hiDPI = fetchpatch {
+ url = "https://github.com/pokerth/pokerth/commit/ad8c9cabfb85d8293720d0f14840278d38b5feeb.patch";
+ sha256 = "192x3lqvd1fanasb95shdygn997qfrpk1k62k1f4j3s5chkwvjig";
+ };
+
+ revertPatch = patch: runCommand "revert-${patch.name}" {} ''
+ ${patchutils}/bin/interdiff ${patch} /dev/null > $out
+ '';
+in
+
+mkDerivation rec {
+ name = "pokerth-${target}-${version}";
+ version = "1.1.2";
+
+ src = fetchFromGitHub {
+ owner = "pokerth";
+ repo = "pokerth";
+ rev = "f5688e01b0efb37035e3b0e3a432200185b9a0c5";
+ sha256 = "0la8d036pbscjnbxf8lkrqjfq8a4ywsfwxil452fhlays6mr19h0";
+ };
+
+ patches = [
+ (revertPatch hiDPI)
+ ];
+
+ postPatch = ''
+ for f in *.pro; do
+ substituteInPlace $f \
+ --replace '$$'{PREFIX}/include/libircclient ${libircclient.dev}/include/libircclient \
+ --replace 'LIB_DIRS =' 'LIB_DIRS = ${boost.out}/lib' \
+ --replace /opt/gsasl ${gsasl}
+ done
+ '';
+
+ nativeBuildInputs = [ qmake wrapQtAppsHook ];
+
+ buildInputs = [
+ SDL
+ SDL_mixer
+ boost
+ curl
+ gsasl
+ libgcrypt
+ libircclient
+ protobuf
+ qtbase
+ sqlite
+ tinyxml2
+ ];
+
+ qmakeFlags = [
+ "CONFIG+=${target}"
+ "pokerth.pro"
+ ];
+
+ NIX_CFLAGS_COMPILE = "-I${SDL.dev}/include/SDL";
+
+ enableParallelBuilding = true;
+
+ meta = {
+ homepage = "https://www.pokerth.net";
+ description = "Poker game ${target}";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ obadz yegortimoshenko ];
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/pong3d/default.nix b/infra/libkookie/nixpkgs/pkgs/games/pong3d/default.nix
new file mode 100644
index 000000000000..c7817041f7a8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/pong3d/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchurl, libX11}:
+
+stdenv.mkDerivation {
+ name = "3dpong-0.5";
+ src = fetchurl {
+ url = "ftp://ftp.tuxpaint.org/unix/x/3dpong/src/3dpong-0.5.tar.gz";
+ sha256 = "1ibb79sbzlbn4ra3n0qk22gqr6fg7q0jy6cm0wg2qj4z64c7hmdi";
+ };
+
+ buildInputs = [ libX11 ];
+
+ preConfigure = ''
+ sed -i s,/usr/local,$out, Makefile
+ mkdir -p $out/bin
+ '';
+
+ meta = {
+ homepage = "http://www.newbreedsoftware.com/3dpong/";
+ description = "One or two player 3d sports game based on Pong from Atari";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/portmod/default.nix b/infra/libkookie/nixpkgs/pkgs/games/portmod/default.nix
new file mode 100644
index 000000000000..07451b8dc2a4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/portmod/default.nix
@@ -0,0 +1,98 @@
+{ lib, stdenv, callPackage, python3Packages, fetchFromGitLab, cacert,
+ rustPlatform, bubblewrap, git, perlPackages, imagemagick7, fetchurl, fetchzip,
+ jre, makeWrapper, tr-patcher, tes3cmd }:
+
+let
+ version = "2.0_beta9";
+
+ src = fetchFromGitLab {
+ owner = "portmod";
+ repo = "Portmod";
+ rev = "v${version}";
+ sha256 = "0a598rb0z6gsdyr4n0lc0yc583njjii07p6vxw75xsh7292vxksc";
+ };
+
+ portmod-rust = rustPlatform.buildRustPackage rec {
+ inherit src version;
+ pname = "portmod-rust";
+
+ cargoSha256 = "14p1aywwbkf2pk85sir5g9ni08zam2hid0kaz111718b006nrxh7";
+
+ nativeBuildInputs = [ python3Packages.python ];
+
+ doCheck = false;
+ };
+
+ bin-programs = [
+ bubblewrap
+ git
+ python3Packages.virtualenv
+ tr-patcher
+ tes3cmd
+ imagemagick7
+ ];
+
+in
+python3Packages.buildPythonApplication rec {
+ inherit src version;
+
+ pname = "portmod";
+
+ SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+ # build the rust library independantly
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace "from setuptools_rust import Binding, RustExtension" "" \
+ --replace "RustExtension(\"portmod.portmod\", binding=Binding.PyO3, strip=True)" ""
+ '';
+
+ propagatedBuildInputs = with python3Packages; [
+ setuptools_scm
+ setuptools
+ requests
+ chardet
+ colorama
+ restrictedpython
+ appdirs
+ GitPython
+ progressbar2
+ python-sat
+ redbaron
+ patool
+ packaging
+ ];
+
+ checkInputs = with python3Packages; [
+ pytestCheckHook
+ ] ++ bin-programs;
+
+ preCheck = ''
+ cp ${portmod-rust}/lib/libportmod.so portmod/portmod.so
+ export HOME=$(mktemp -d)
+ '';
+
+ # some test require network access
+ disabledTests = [
+ "test_masters_esp"
+ "test_logging"
+ "test_execute_network_permissions"
+ "test_execute_permissions_bleed"
+ "test_git"
+ ];
+
+ # for some reason, installPhase doesn't copy the compiled binary
+ postInstall = ''
+ cp ${portmod-rust}/lib/libportmod.so $out/${python3Packages.python.sitePackages}/portmod/portmod.so
+
+ makeWrapperArgs+=("--prefix" "GIT_SSL_CAINFO" ":" "${cacert}/etc/ssl/certs/ca-bundle.crt" \
+ "--prefix" "PATH" ":" "${lib.makeBinPath bin-programs }")
+ '';
+
+ meta = {
+ description = "mod manager for openMW based on portage";
+ homepage = "https://gitlab.com/portmod/portmod";
+ license = lib.licenses.gpl3;
+ maintainers = with lib.maintainers; [ marius851000 ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/prboom/default.nix b/infra/libkookie/nixpkgs/pkgs/games/prboom/default.nix
new file mode 100644
index 000000000000..278aa8a93eaa
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/prboom/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, SDL, SDL_mixer, SDL_net
+, libGLU ? null
+, libGL ? null
+, useOpenGL ? stdenv.hostPlatform == stdenv.buildPlatform
+}:
+
+assert useOpenGL -> libGL != null && libGLU != null;
+
+stdenv.mkDerivation rec {
+ name = "prboom-2.5.0";
+ src = fetchurl {
+ url = "mirror://sourceforge/prboom/prboom-2.5.0.tar.gz";
+ sha256 = "1bjb04q8dk232956k30qlpq6q0hxb904yh1nflr87jcc1x3iqv12";
+ };
+
+ buildInputs = [ SDL SDL_mixer SDL_net ]
+ ++ stdenv.lib.optionals useOpenGL [ libGL libGLU ];
+
+ doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
+
+ configureFlags = [
+ (stdenv.lib.enableFeature useOpenGL "gl")
+ (stdenv.lib.enableFeature doCheck "sdltest")
+ ] ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+ "--disable-cpu-opt"
+ "--without-x"
+ "ac_cv_type_uid_t=yes"
+ "ac_cv_type_gid_t=yes"
+ ];
+
+ postInstall = stdenv.lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+ mv $out/games/ $out/bin
+ '';
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/privateer/0001-fix-VSFile-constructor.patch b/infra/libkookie/nixpkgs/pkgs/games/privateer/0001-fix-VSFile-constructor.patch
new file mode 100644
index 000000000000..05b02fe5d73b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/privateer/0001-fix-VSFile-constructor.patch
@@ -0,0 +1,25 @@
+From e779a2b8d53e7e4721ce5ddb8e8b1caa753b66dd Mon Sep 17 00:00:00 2001
+From: Florian Friesdorf <flo@chaoflow.net>
+Date: Wed, 4 Jan 2012 23:32:19 +0100
+Subject: [PATCH] fix VSFile constructor
+
+---
+ src/vsfilesystem.h | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/vsfilesystem.h b/src/vsfilesystem.h
+index 4bb7a66..71bf9b9 100644
+--- a/src/vsfilesystem.h
++++ b/src/vsfilesystem.h
+@@ -291,7 +291,7 @@ namespace VSFileSystem
+ VSFile();
+ VSFile( const char * buffer, long size, VSFileType type=ZoneBuffer, VSFileMode=ReadOnly);
+ VSFile( const char * filename, VSFileType type=UnknownFile, VSFileMode=ReadOnly);
+- VSFile( const string &filename, VSFileType type=UnknownFile) { VSFile::VSFile( filename.c_str(), type); }
++ VSFile( const string &filename, VSFileType type=UnknownFile) { VSFile( filename.c_str(), type); }
+ ~VSFile();
+
+ FILE * GetFP() { return this->fp; } // This is still needed for special cases (when loading PNG files)
+--
+1.7.8
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/privateer/default.nix b/infra/libkookie/nixpkgs/pkgs/games/privateer/default.nix
new file mode 100644
index 000000000000..16d0036b6583
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/privateer/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchsvn, boost, cmake, ffmpeg_3, freeglut, glib,
+ gtk2, libjpeg, libpng, libpthreadstubs, libvorbis, libXau, libXdmcp,
+ libXmu, libGLU, libGL, openal, pixman, pkgconfig, python27, SDL }:
+
+stdenv.mkDerivation {
+ name = "privateer-1.03";
+
+ src = fetchsvn {
+ #url = "mirror://sourceforge/project/privateer/Wing%20Commander%20Privateer/Privateer%20Gemini%20Gold%201.03/PrivateerGold1.03.bz2.bin";
+ url = "https://privateer.svn.sourceforge.net/svnroot/privateer/privgold/trunk/engine";
+ rev = "294";
+ sha256 = "e1759087d4565d3fc95e5c87d0f6ddf36b2cd5befec5695ec56ed5f3cd144c63";
+ };
+
+ buildInputs =
+ [ boost cmake ffmpeg_3 freeglut glib gtk2 libjpeg libpng
+ libpthreadstubs libvorbis libXau libXdmcp libXmu libGLU libGL openal
+ pixman pkgconfig python27 SDL ];
+
+ patches = [ ./0001-fix-VSFile-constructor.patch ];
+
+ preConfigure = ''
+ NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags gtk+-2.0)"
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp vegastrike $out/bin
+ cp vegaserver $out/bin
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "http://privateer.sourceforge.net/";
+ description = "Adventure space flight simulation computer game";
+ license = licenses.gpl2Plus; # and a special license for art data
+ # https://sourceforge.net/p/privateer/code/HEAD/tree/privgold/trunk/data/art-license.txt
+
+ maintainers = with maintainers; [ ];
+ platforms = with platforms; linux ++ darwin;
+ hydraPlatforms = [];
+ broken = true; # it won't build
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/pro-office-calculator/default.nix b/infra/libkookie/nixpkgs/pkgs/games/pro-office-calculator/default.nix
new file mode 100644
index 000000000000..35571ff149ac
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/pro-office-calculator/default.nix
@@ -0,0 +1,24 @@
+{ mkDerivation, stdenv, fetchFromGitHub, tinyxml-2, cmake, qtbase, qtmultimedia }:
+mkDerivation rec {
+ version = "1.0.13";
+ pname = "pro-office-calculator";
+
+ src = fetchFromGitHub {
+ owner = "RobJinman";
+ repo = "pro_office_calc";
+ rev = "v${version}";
+ sha256 = "1v75cysargmp4fk7px5zgib1p6h5ya4w39rndbzk614fcnv0iipd";
+ };
+
+ buildInputs = [ qtbase qtmultimedia tinyxml-2 ];
+
+ nativeBuildInputs = [ cmake ];
+
+ meta = with stdenv.lib; {
+ description = "A completely normal office calculator";
+ homepage = "https://proofficecalculator.com/";
+ maintainers = [ maintainers.pmiddend ];
+ platforms = platforms.linux;
+ license = licenses.gpl3;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/pysolfc/default.nix b/infra/libkookie/nixpkgs/pkgs/games/pysolfc/default.nix
new file mode 100644
index 000000000000..31dbe7f6bbcc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/pysolfc/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchzip, buildPythonApplication, python3Packages
+ , desktop-file-utils, freecell-solver }:
+
+buildPythonApplication rec {
+ pname = "PySolFC";
+ version = "2.6.4";
+
+ src = fetchzip {
+ url = "https://versaweb.dl.sourceforge.net/project/pysolfc/PySolFC/PySolFC-${version}/PySolFC-${version}.tar.xz";
+ sha256 = "1bd84law5b1yga3pryggdvlfvm0l62gci2q8y3q79cysdk3z4w3z";
+ };
+
+ cardsets = fetchzip {
+ url = "https://versaweb.dl.sourceforge.net/project/pysolfc/PySolFC-Cardsets/PySolFC-Cardsets-2.0/PySolFC-Cardsets-2.0.tar.bz2";
+ sha256 = "0h0fibjv47j8lkc1bwnlbbvrx2nr3l2hzv717kcgagwhc7v2mrqh";
+ };
+
+ propagatedBuildInputs = with python3Packages; [
+ tkinter six random2
+ # optional :
+ pygame freecell-solver pillow
+ ];
+
+ patches = [
+ ./pysolfc-datadir.patch
+ ];
+
+ nativeBuildInputs = [ desktop-file-utils ];
+ postPatch = ''
+ desktop-file-edit --set-key Icon --set-value ${placeholder "out"}/share/icons/pysol01.png data/pysol.desktop
+ desktop-file-edit --set-key Comment --set-value "${meta.description}" data/pysol.desktop
+ '';
+
+ postInstall = ''
+ mkdir $out/share/PySolFC/cardsets
+ cp -r $cardsets/* $out/share/PySolFC/cardsets
+ '';
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A collection of more than 1000 solitaire card games";
+ homepage = "https://pysolfc.sourceforge.io";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ kierdavis ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/pysolfc/pysolfc-datadir.patch b/infra/libkookie/nixpkgs/pkgs/games/pysolfc/pysolfc-datadir.patch
new file mode 100644
index 000000000000..d9f1cf4e09f5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/pysolfc/pysolfc-datadir.patch
@@ -0,0 +1,19 @@
+diff --git a/pysollib/util.py b/pysollib/util.py
+index 8de3f00..26f4bc7 100644
+--- a/pysollib/util.py
++++ b/pysollib/util.py
+@@ -110,13 +110,7 @@ class DataLoader:
+ head, tail = os.path.split(argv0)
+ if not head:
+ head = os.curdir
+- # dir where placed startup script
+- path.append(head)
+- path.append(os.path.join(head, "data"))
+- path.append(os.path.join(head, os.pardir, "data"))
+- # dir where placed pysol package
+- path.append(os.path.join(sys.path[0], "data"))
+- path.append(os.path.join(sys.path[0], "pysollib", "data"))
++ path.append(os.path.join(head, "..", "share", "PySolFC"))
+ # from settings.py
+ path.extend(DATA_DIRS)
+ # check path for valid directories
diff --git a/infra/libkookie/nixpkgs/pkgs/games/qgo/default.nix b/infra/libkookie/nixpkgs/pkgs/games/qgo/default.nix
new file mode 100644
index 000000000000..ea8c8aaeac87
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/qgo/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, qmake
+, qtbase
+, qtmultimedia
+, qttranslations
+}:
+
+mkDerivation {
+ pname = "qgo";
+ version = "unstable-2017-12-18";
+
+ meta = with lib; {
+ description = "A Go client based on Qt5";
+ longDescription = ''
+ qGo is a Go Client based on Qt 5. It supports playing online at
+ IGS-compatible servers (including some special tweaks for WING and LGS,
+ also NNGS was reported to work) and locally against gnugo (or other
+ GTP-compliant engines). It also has rudimentary support for editing SGF
+ files and parital support for CyberORO/WBaduk, Tygem, Tom, and eWeiqi
+ (developers of these backends are currently inactive, everybody is welcome
+ to take them over).
+
+ Go is an ancient Chinese board game. It's called "åœæ£‹(Wei Qi)" in
+ Chinese, "囲ç¢(Yi Go)" in Japanese, "바둑(Baduk)" in Korean.
+ '';
+ homepage = "https://github.com/pzorin/qgo";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ zalakain ];
+ };
+
+ src = fetchFromGitHub {
+ owner = "pzorin";
+ repo = "qgo";
+ rev = "bef526dda4c79686edd95c88cc68de24f716703c";
+ sha256 = "1xzkayclmhsi07p9mnbf8185jw8n5ikxp2mik3x8qz1i6rmrfl5b";
+ };
+
+ patches = [ ./fix-paths.patch ];
+ postPatch = ''
+ sed -i 's|@out@|'"''${out}"'|g' src/src.pro src/defines.h
+ '';
+ nativeBuildInputs = [ qmake ];
+ buildInputs = [ qtbase qtmultimedia qttranslations ];
+ enableParallelBuilding = true;
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/qgo/fix-paths.patch b/infra/libkookie/nixpkgs/pkgs/games/qgo/fix-paths.patch
new file mode 100644
index 000000000000..c1d1e399ec1a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/qgo/fix-paths.patch
@@ -0,0 +1,50 @@
+diff --git a/src/defines.h b/src/defines.h
+index 5d40955..82d0627 100644
+--- a/src/defines.h
++++ b/src/defines.h
+@@ -48,7 +48,7 @@
+ * GNUgo default level
+ */
+ #define DEFAULT_ENGINE "gnugo"
+-#define DEFAULT_ENGINE_PATH "/usr/games/"
++#define DEFAULT_ENGINE_PATH ""
+ #define DEFAULT_ENGINE_OPTIONS "--mode gtp --quiet --level 10"
+
+
+@@ -220,8 +220,8 @@ extern QString applicationPath;
+ #define SOUND_PATH_PREFIX "qGo.app/Contents/Resources/Sounds/"
+ #define TRANSLATIONS_PATH "qGo.app/Contents/Resources/Translations/"
+ #else
+- #define SOUND_PATH_PREFIX "/usr/share/qgo/sounds/"
+- #define TRANSLATIONS_PATH "/usr/share/qgo/languages"
++ #define SOUND_PATH_PREFIX "/@out@/share/qgo/sounds/"
++ #define TRANSLATIONS_PATH "/@out@/share/qgo/languages"
+ #endif
+
+ #endif
+diff --git a/src/src.pro b/src/src.pro
+index f989ce7..b7d691f 100644
+--- a/src/src.pro
++++ b/src/src.pro
+@@ -165,17 +165,17 @@ SOURCES += displayboard.cpp \
+ newgamedialog.cpp
+
+ unix*:!macx-* {
+- QGO_INSTALL_PATH = /usr/share/qgo
+- QGO_INSTALL_BIN_PATH = /usr/bin
++ QGO_INSTALL_PATH = @out@/share/qgo
++ QGO_INSTALL_BIN_PATH = /@out@/bin
+
+- icon.path = /usr/share/pixmaps
++ icon.path = @out@/share/pixmaps
+ icon.files = resources/pics/qgo.png
+ icon.files += resources/pics/qgo_16x16.xpm
+ icon.files += resources/pics/qgo_32x32.xpm
+ icon.files += resources/pics/qgo_48x48.png
+ icon.files += resources/pics/qgo_48x48.xpm
+ INSTALLS += icon
+- desktopfile.path = /usr/share/applications
++ desktopfile.path = @out@/share/applications
+ desktopfile.files = qgo.desktop
+ INSTALLS += desktopfile
+ }
diff --git a/infra/libkookie/nixpkgs/pkgs/games/qqwing/default.nix b/infra/libkookie/nixpkgs/pkgs/games/qqwing/default.nix
new file mode 100644
index 000000000000..43fa45ca4325
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/qqwing/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, perl, autoconf, automake, libtool }:
+
+stdenv.mkDerivation rec {
+ pname = "qqwing";
+ version = "1.3.4";
+
+ src = fetchFromGitHub {
+ owner = "stephenostermiller";
+ repo = "qqwing";
+ rev = "v${version}";
+ sha256 = "1qq0vi4ch4y3a5fb1ncr0yzkj3mbvdiwa3d51qpabq94sh0cz09i";
+ };
+
+ postPatch = ''
+ for file in "src-first-comment.pl" "src_neaten.pl"; do
+ substituteInPlace "build/$file" \
+ --replace "#!/usr/bin/perl" "#!${perl}/bin/perl"
+ done
+
+ substituteInPlace "build/cpp_install.sh" \
+ --replace "sudo " ""
+ '';
+
+ buildInputs = [ perl autoconf automake libtool ];
+
+ makeFlags = [ "prefix=$(out)" "tgz" ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://qqwing.com";
+ description = "Sudoku generating and solving software";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/qtads/default.nix b/infra/libkookie/nixpkgs/pkgs/games/qtads/default.nix
new file mode 100644
index 000000000000..140cba2e9aea
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/qtads/default.nix
@@ -0,0 +1,27 @@
+{ lib, mkDerivation, fetchFromGitHub, fetchpatch, pkgconfig, qmake
+, SDL2, fluidsynth, libsndfile, libvorbis, mpg123, qtbase
+}:
+
+mkDerivation rec {
+ pname = "qtads";
+ version = "3.0.0";
+
+ src = fetchFromGitHub {
+ owner = "realnc";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "02kk2hs20h9ffhylwms9f8zikmmlrz1nvbrm97gis9iljkyx035c";
+ };
+
+ nativeBuildInputs = [ pkgconfig qmake ];
+
+ buildInputs = [ SDL2 fluidsynth libsndfile libvorbis mpg123 qtbase ];
+
+ meta = with lib; {
+ homepage = "https://realnc.github.io/qtads/";
+ description = "Multimedia interpreter for TADS games";
+ license = licenses.gpl3Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ orivej ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/default.nix b/infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/default.nix
new file mode 100644
index 000000000000..3af692d5bf96
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/default.nix
@@ -0,0 +1,95 @@
+{ stdenv, lib, fetchFromGitHub, buildEnv, cmake, makeWrapper
+, SDL2, libGL, curl
+, oggSupport ? true, libogg, libvorbis
+, openalSupport ? true, openal
+, zipSupport ? true, zlib
+, Cocoa, OpenAL
+}:
+
+let
+ mkFlag = b: if b then "ON" else "OFF";
+
+ games = import ./games.nix { inherit stdenv lib fetchFromGitHub cmake; };
+
+ wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2; };
+
+ yquake2 = stdenv.mkDerivation rec {
+ pname = "yquake2";
+ version = "7.43";
+
+ src = fetchFromGitHub {
+ owner = "yquake2";
+ repo = "yquake2";
+ rev = "QUAKE2_${builtins.replaceStrings ["."] ["_"] version}";
+ sha256 = "1dszbvxlh1npq4nv9s4wv4lcyfgb01k92ncxrrczsxy1dddg86pp";
+ };
+
+ enableParallelBuilding = true;
+
+ nativeBuildInputs = [ cmake ];
+
+ buildInputs = [ SDL2 libGL curl ]
+ ++ lib.optionals stdenv.isDarwin [ Cocoa OpenAL ]
+ ++ lib.optionals oggSupport [ libogg libvorbis ]
+ ++ lib.optional openalSupport openal
+ ++ lib.optional zipSupport zlib;
+
+ cmakeFlags = [
+ "-DCMAKE_BUILD_TYPE=Release"
+ "-DOGG_SUPPORT=${mkFlag oggSupport}"
+ "-DOPENAL_SUPPORT=${mkFlag openalSupport}"
+ "-DZIP_SUPPORT=${mkFlag zipSupport}"
+ "-DSYSTEMWIDE_SUPPORT=ON"
+ ];
+
+ preConfigure = ''
+ # Since we can't expand $out in `cmakeFlags`
+ cmakeFlags="$cmakeFlags -DSYSTEMDIR=$out/share/games/quake2"
+ '';
+
+ installPhase = ''
+ # Yamagi Quake II expects all binaries (executables and libs) to be in the
+ # same directory.
+ mkdir -p $out/bin $out/lib/yquake2 $out/share/games/quake2
+ cp -r release/* $out/lib/yquake2
+ ln -s $out/lib/yquake2/quake2 $out/bin/yquake2
+ ln -s $out/lib/yquake2/q2ded $out/bin/yq2ded
+ cp $src/stuff/yq2.cfg $out/share/games/quake2
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Yamagi Quake II client";
+ homepage = "https://www.yamagi.org/quake2/";
+ license = licenses.gpl2;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ tadfisher ];
+ };
+ };
+
+in {
+ inherit yquake2;
+
+ yquake2-ctf = wrapper {
+ games = [ games.ctf ];
+ name = "yquake2-ctf";
+ inherit (games.ctf) description;
+ };
+
+ yquake2-ground-zero = wrapper {
+ games = [ games.ground-zero ];
+ name = "yquake2-ground-zero";
+ inherit (games.ground-zero) description;
+ };
+
+ yquake2-the-reckoning = wrapper {
+ games = [ games.the-reckoning ];
+ name = "yquake2-the-reckoning";
+ inherit (games.the-reckoning) description;
+ };
+
+ yquake2-all-games = wrapper {
+ games = lib.attrValues games;
+ name = "yquake2-all-games";
+ description = "Yamagi Quake II with all add-on games";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/games.nix b/infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/games.nix
new file mode 100644
index 000000000000..98354a46d4a1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/games.nix
@@ -0,0 +1,59 @@
+{ stdenv, lib, fetchFromGitHub, cmake }:
+
+let
+ games = {
+ ctf = {
+ id = "ctf";
+ version = "1.07";
+ description = "'Capture The Flag' for Yamagi Quake II";
+ sha256 = "0i9bwhjvq6yhalrsbzjambh27fdzrzgswqz3jgfn9qw6k1kjvlin";
+ };
+
+ ground-zero = {
+ id = "rogue";
+ version = "2.07";
+ description = "'Ground Zero' for Yamagi Quake II";
+ sha256 = "1m2r4vgfdxpsi0lkf32liwf1433mdhhmjxiicjwzqjlkncjyfcb1";
+ };
+
+ the-reckoning = {
+ id = "xatrix";
+ version = "2.08";
+ description = "'The Reckoning' for Yamagi Quake II";
+ sha256 = "1wp9fg1q8nly2r9hh4394r1h4dxyni3lvdy7g419cz5s8hhn5msr";
+ };
+ };
+
+ toDrv = title: data: stdenv.mkDerivation rec {
+ inherit (data) id version description sha256;
+ inherit title;
+
+ name = "yquake2-${title}-${version}";
+
+ src = fetchFromGitHub {
+ inherit sha256;
+ owner = "yquake2";
+ repo = data.id;
+ rev = "${lib.toUpper id}_${builtins.replaceStrings ["."] ["_"] version}";
+ };
+
+ enableParallelBuilding = true;
+
+ nativeBuildInputs = [ cmake ];
+
+ installPhase = ''
+ mkdir -p $out/lib/yquake2/${id}
+ cp Release/* $out/lib/yquake2/${id}
+ '';
+
+ meta = with stdenv.lib; {
+ inherit (data) description;
+ homepage = "https://www.yamagi.org/quake2/";
+ license = licenses.unfree;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ tadfisher ];
+ };
+ };
+
+in
+ lib.mapAttrs toDrv games
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/wrapper.nix
new file mode 100644
index 000000000000..9ab086f96a21
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quake2/yquake2/wrapper.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, buildEnv, makeWrapper, yquake2 }:
+
+{ games
+, name
+, description
+}:
+
+let
+ env = buildEnv {
+ name = "${name}-env";
+ paths = [ yquake2 ] ++ games;
+ };
+
+in stdenv.mkDerivation {
+ name = "${name}-${stdenv.lib.getVersion yquake2}";
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ buildCommand = ''
+ mkdir -p $out/bin
+ '' + lib.concatMapStringsSep "\n" (game: ''
+ makeWrapper ${env}/bin/yquake2 $out/bin/yquake2-${game.title} \
+ --add-flags "+set game ${game.id}"
+ makeWrapper ${env}/bin/yq2ded $out/bin/yq2ded-${game.title} \
+ --add-flags "+set game ${game.id}"
+ '') games;
+
+ meta = {
+ inherit description;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quake3/content/demo.nix b/infra/libkookie/nixpkgs/pkgs/games/quake3/content/demo.nix
new file mode 100644
index 000000000000..0d8a64f14cdc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quake3/content/demo.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl }:
+
+let
+ version = "1.11-6";
+in stdenv.mkDerivation {
+ pname = "quake3-demodata";
+ inherit version;
+
+ src = fetchurl {
+ url = "https://ftp.gwdg.de/pub/misc/ftp.idsoftware.com/idstuff/quake3/linux/linuxq3ademo-${version}.x86.gz.sh";
+ sha256 = "1v54a1hx1bczk9hgn9qhx8vixsy7xn7wj2pylhfjsybfkgvf7pk4";
+ };
+
+ buildCommand = ''
+ tail -n +165 $src | tar xfz -
+
+ mkdir -p $out/baseq3
+ cp demoq3/*.pk3 $out/baseq3
+ '';
+
+ preferLocalBuild = true;
+
+ meta = with stdenv.lib; {
+ description = "Quake 3 Arena demo content";
+ license = licenses.unfreeRedistributable;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quake3/content/pointrelease.nix b/infra/libkookie/nixpkgs/pkgs/games/quake3/content/pointrelease.nix
new file mode 100644
index 000000000000..e34064d93b05
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quake3/content/pointrelease.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl }:
+
+let
+ version = "1.32b-3";
+in stdenv.mkDerivation {
+ pname = "quake3-pointrelease";
+ inherit version;
+
+ src = fetchurl {
+ url = "https://ftp.gwdg.de/pub/misc/ftp.idsoftware.com/idstuff/quake3/linux/linuxq3apoint-${version}.x86.run";
+ sha256 = "11piyksfqyxwl9mpgbc71w9sacsh4d3cdsgia0cy0dbbap2k4qf3";
+ };
+
+ buildCommand = ''
+ sh $src --tar xf
+
+ mkdir -p $out/baseq3
+ cp baseq3/*.pk3 $out/baseq3
+ '';
+
+ preferLocalBuild = true;
+
+ meta = with stdenv.lib; {
+ description = "Quake 3 Arena point release";
+ license = licenses.unfreeRedistributable;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quake3/ioquake/default.nix b/infra/libkookie/nixpkgs/pkgs/games/quake3/ioquake/default.nix
new file mode 100644
index 000000000000..285fb7e68840
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quake3/ioquake/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, which, pkgconfig, SDL2, libGL, openalSoft
+, curl, speex, opusfile, libogg, libvorbis, libopus, libjpeg, mumble, freetype
+}:
+
+stdenv.mkDerivation {
+ pname = "ioquake3-git";
+ version = "2019-05-29";
+
+ src = fetchFromGitHub {
+ owner = "ioquake";
+ repo = "ioq3";
+ rev = "350b8f9c7c88c002dccea4f0350f1919b86d3b4e";
+ sha256 = "17qkqi22f2fyh6bnfcf1zz2lycgv08d6aw52sf0hqw7r3qq86d08";
+ };
+
+ nativeBuildInputs = [ which pkgconfig ];
+ buildInputs = [
+ SDL2 libGL openalSoft curl speex opusfile libogg libvorbis libopus libjpeg
+ freetype mumble
+ ];
+
+ enableParallelBuilding = true;
+
+ makeFlags = [ "USE_INTERNAL_LIBS=0" "USE_FREETYPE=1" "USE_OPENAL_DLOPEN=0" "USE_CURL_DLOPEN=0" ];
+
+ installTargets = [ "copyfiles" ];
+
+ installFlags = [ "COPYDIR=$(out)" ];
+
+ preInstall = ''
+ mkdir -p $out/baseq3
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://ioquake3.org/";
+ description = "First person shooter engine based on the Quake 3: Arena and Quake 3: Team Arena";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ rvolosatovs eelco abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quake3/quake3e/default.nix b/infra/libkookie/nixpkgs/pkgs/games/quake3/quake3e/default.nix
new file mode 100644
index 000000000000..0e3e74ae7a73
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quake3/quake3e/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, curl, libGL, libX11, libXxf86dga, alsaLib, libXrandr, libXxf86vm, libXext, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+ pname = "Quake3e";
+ version = "2020-04-04";
+
+ src = fetchFromGitHub {
+ owner = "ec-";
+ repo = pname;
+ rev = version;
+ sha256 = "1jvk8qd0mi0x8lslknhkfd8h6ridwca34c6qahsbmmpcgsvdv16s";
+ };
+
+ buildInputs = [ curl libGL libX11 libXxf86dga alsaLib libXrandr libXxf86vm libXext ];
+ enableParallelBuilding = true;
+
+ postPatch = ''
+ sed -i -e 's#OpenGLLib = dlopen( dllname#OpenGLLib = dlopen( "${libGL}/lib/libGL.so"#' code/unix/linux_qgl.c
+ sed -i -e 's#Sys_LoadLibrary( "libasound.so.2" )#Sys_LoadLibrary( "${alsaLib}/lib/libasound.so.2" )#' code/unix/linux_snd.c
+ sed -i -e 's#Sys_LoadLibrary( "libXrandr.so.2" )#Sys_LoadLibrary( "${libXrandr}/lib/libXrandr.so.2" )#' code/unix/x11_randr.c
+ sed -i -e 's#Sys_LoadLibrary( "libXxf86vm.so.1" )#Sys_LoadLibrary( "${libXxf86vm}/lib/libXxf86vm.so.1" )#' code/unix/x11_randr.c
+ sed -i -e 's#Sys_LoadLibrary( "libXxf86dga.so.1" )#Sys_LoadLibrary( "${libXxf86dga}/lib/libXxf86dga.so.1" )#' code/unix/x11_dga.c
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp build/*/*x64 $out/bin
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/ec-/Quake3e";
+ description = "Improved Quake III Arena engine";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ pmiddend ];
+ badPlatforms = [ platforms.aarch64 ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quake3/wrapper/default.nix b/infra/libkookie/nixpkgs/pkgs/games/quake3/wrapper/default.nix
new file mode 100644
index 000000000000..4ab53d677324
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quake3/wrapper/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildEnv, lib, libGL, ioquake3, makeWrapper }:
+
+{ paks, name ? (stdenv.lib.head paks).name, description ? "" }:
+
+let
+ libPath = lib.makeLibraryPath [ libGL stdenv.cc.cc ];
+ env = buildEnv {
+ name = "quake3-env";
+ paths = [ ioquake3 ] ++ paks;
+ };
+
+in stdenv.mkDerivation {
+ name = "${name}-${ioquake3.name}";
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ buildCommand = ''
+ mkdir -p $out/bin
+
+ # We add Mesa to the end of $LD_LIBRARY_PATH to provide fallback
+ # software rendering. GCC is needed so that libgcc_s.so can be found
+ # when Mesa is used.
+ makeWrapper ${env}/ioquake3.* $out/bin/quake3 \
+ --suffix-each LD_LIBRARY_PATH ':' "${libPath}" \
+ --add-flags "+set fs_basepath ${env} +set r_allowSoftwareGL 1"
+
+ makeWrapper ${env}/ioq3ded.* $out/bin/quake3-server \
+ --add-flags "+set fs_basepath ${env}"
+ '';
+
+ meta = {
+ inherit description;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quakespasm/default.nix b/infra/libkookie/nixpkgs/pkgs/games/quakespasm/default.nix
new file mode 100644
index 000000000000..1e8de1a18f0c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quakespasm/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, SDL, fetchurl, gzip, libvorbis, libmad }:
+stdenv.mkDerivation rec {
+ pname = "quakespasm";
+ majorVersion = "0.93";
+ version = "${majorVersion}.1";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/quakespasm/quakespasm-${version}.tgz";
+ sha256 = "1bimv18f6rzhyjz78yvw2vqr5n0kdqbcqmq7cb3m951xgsxfcgpd";
+ };
+
+ sourceRoot = "${pname}-${version}/Quake";
+
+ buildInputs = [
+ gzip SDL libvorbis libmad
+ ];
+
+ buildFlags = [ "DO_USERDIRS=1" ];
+
+ preInstall = ''
+ mkdir -p "$out/bin"
+ substituteInPlace Makefile --replace "/usr/local/games" "$out/bin"
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = {
+ description = "An engine for iD software's Quake";
+ homepage = "http://quakespasm.sourceforge.net/";
+ longDescription = ''
+ QuakeSpasm is a modern, cross-platform Quake 1 engine based on FitzQuake.
+ It includes support for 64 bit CPUs and custom music playback, a new sound driver,
+ some graphical niceities, and numerous bug-fixes and other improvements.
+ Quakespasm utilizes either the SDL or SDL2 frameworks, so choose which one
+ works best for you. SDL is probably less buggy, but SDL2 has nicer features
+ and smoother mouse input - though no CD support.
+ '';
+
+ platforms = stdenv.lib.platforms.linux;
+ maintainers = [ stdenv.lib.maintainers.m3tti ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quakespasm/vulkan.nix b/infra/libkookie/nixpkgs/pkgs/games/quakespasm/vulkan.nix
new file mode 100644
index 000000000000..73639fd7553c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quakespasm/vulkan.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchFromGitHub, makeWrapper, SDL2, gzip, libvorbis, libmad, vulkan-headers, vulkan-loader }:
+
+stdenv.mkDerivation rec {
+ pname = "vkquake";
+ version = "1.05.1";
+
+ src = fetchFromGitHub {
+ owner = "Novum";
+ repo = "vkQuake";
+ rev = version;
+ sha256 = "03b2vxpakp6zizb0m65q9lq800z67b052k01q251b3f04kr1waih";
+ };
+
+ sourceRoot = "source/Quake";
+
+ nativeBuildInputs = [
+ makeWrapper
+ vulkan-headers
+ ];
+
+ buildInputs = [
+ gzip
+ SDL2
+ libvorbis
+ libmad
+ vulkan-loader
+ ];
+
+ buildFlags = [ "DO_USERDIRS=1" ];
+
+ preInstall = ''
+ mkdir -p "$out/bin"
+ '';
+
+ makeFlags = [ "prefix=$(out) bindir=$(out)/bin" ];
+
+ postFixup = ''
+ wrapProgram $out/bin/vkquake \
+ --prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Vulkan Quake port based on QuakeSpasm";
+ homepage = src.meta.homepage;
+ longDescription = ''
+ vkQuake is a Quake 1 port using Vulkan instead of OpenGL for rendering.
+ It is based on the popular QuakeSpasm port and runs all mods compatible with it
+ like Arcane Dimensions or In The Shadows. vkQuake also serves as a Vulkan demo
+ application that shows basic usage of the API. For example it demonstrates render
+ passes & sub passes, pipeline barriers & synchronization, compute shaders, push &
+ specialization constants, CPU/GPU parallelism and memory pooling.
+ '';
+
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ gnidorah ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quantumminigolf/default.nix b/infra/libkookie/nixpkgs/pkgs/games/quantumminigolf/default.nix
new file mode 100644
index 000000000000..1a8cbbea5f9c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quantumminigolf/default.nix
@@ -0,0 +1,40 @@
+{stdenv, fetchurl, fftwSinglePrec, freetype, SDL, SDL_ttf}:
+let
+ s = # Generated upstream information
+ rec {
+ baseName="quantumminigolf";
+ version="1.1.1";
+ name="${baseName}-${version}";
+ hash="16av7fk0irhi5nd7y9h9vhb0kf0dk12p6976ai3f60m99qdd8wk3";
+ url="mirror://sourceforge/project/quantumminigolf/quantumminigolf/1.1.1/quantumminigolf-1.1.1.src.tar.gz";
+ sha256="16av7fk0irhi5nd7y9h9vhb0kf0dk12p6976ai3f60m99qdd8wk3";
+ };
+ buildInputs = [
+ fftwSinglePrec freetype SDL SDL_ttf
+ ];
+in
+stdenv.mkDerivation {
+ inherit (s) name version;
+ inherit buildInputs;
+ src = fetchurl {
+ inherit (s) url sha256;
+ };
+ preBuild = ''
+ export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${SDL.dev}/include/SDL -I${SDL_ttf}/include/SDL"
+
+ sed -re 's@"(gfx|fonts|tracks)/@"'"$out"'/share/quantumminigolf/\1/@g' -i *.cpp
+ '';
+ installPhase = ''
+ mkdir -p "$out"/{share/doc,share/quantumminigolf,bin}
+ cp README THANKS LICENSE "$out/share/doc"
+ cp -r fonts gfx tracks "$out/share/quantumminigolf"
+ cp quantumminigolf "$out/bin"
+ '';
+ meta = {
+ inherit (s) version;
+ description = ''Quantum mechanics-based minigolf-like game'';
+ license = stdenv.lib.licenses.gpl2 ;
+ maintainers = [stdenv.lib.maintainers.raskin];
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/quantumminigolf/default.upstream b/infra/libkookie/nixpkgs/pkgs/games/quantumminigolf/default.upstream
new file mode 100644
index 000000000000..a994bb1a6cbe
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/quantumminigolf/default.upstream
@@ -0,0 +1,4 @@
+url https://sourceforge.net/projects/quantumminigolf/files/quantumminigolf/
+SF_version_dir
+version_link '[.]tar[.][^.]+/download$'
+SF_redirect
diff --git a/infra/libkookie/nixpkgs/pkgs/games/racer/default.nix b/infra/libkookie/nixpkgs/pkgs/games/racer/default.nix
new file mode 100644
index 000000000000..a5d9a911afaf
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/racer/default.nix
@@ -0,0 +1,31 @@
+{ fetchurl, stdenv, allegro, libjpeg, makeWrapper }:
+
+stdenv.mkDerivation {
+ name = "racer-1.1";
+
+ src = if stdenv.hostPlatform.system == "i686-linux" then fetchurl {
+ url = "http://hippo.nipax.cz/src/racer-1.1.tar.gz";
+ sha256 = "0fll1qkqfcjq87k0jzsilcw701z92lfxn2y5ga1n038772lymxl9";
+ } else if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl {
+ url = "https://hippo.nipax.cz/src/racer-1.1.64.tar.gz";
+ sha256 = "0rjy3gmlhwfkb9zs58j0mc0dar0livwpbc19r6zw5r2k6r7xdan0";
+ } else
+ throw "System not supported";
+
+
+ buildInputs = [ allegro libjpeg makeWrapper ];
+
+ prePatch = ''
+ sed -i s,/usr/local,$out, Makefile src/HGFX.cpp src/STDH.cpp
+ sed -i s,/usr/share,$out/share, src/HGFX.cpp src/STDH.cpp
+ '';
+
+ patches = [ ./mkdir.patch ];
+
+ meta = {
+ description = "Car racing game";
+ homepage = "http://hippo.nipax.cz/download.en.php";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/racer/mkdir.patch b/infra/libkookie/nixpkgs/pkgs/games/racer/mkdir.patch
new file mode 100644
index 000000000000..910eaf390f4c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/racer/mkdir.patch
@@ -0,0 +1,13 @@
+diff --git a/src/STDH.cpp b/src/STDH.cpp
+index 5f78473..47c3f8b 100644
+--- a/src/STDH.cpp
++++ b/src/STDH.cpp
+@@ -5,6 +5,8 @@
+ #include "player.h"
+ #include "drivers.h"
+ #include "cup.h"
++#include <sys/stat.h>
++#include <sys/types.h>
+
+ HScreen hscreen;
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/redeclipse/default.nix b/infra/libkookie/nixpkgs/pkgs/games/redeclipse/default.nix
new file mode 100644
index 000000000000..d99d7ccb1d90
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/redeclipse/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, fetchurl, fetchpatch
+, curl, ed, pkgconfig, freetype, zlib, libX11
+, SDL2, SDL2_image, SDL2_mixer
+}:
+
+stdenv.mkDerivation rec {
+ pname = "redeclipse";
+ version = "2.0.0";
+
+ src = fetchurl {
+ url = "https://github.com/redeclipse/base/releases/download/v${version}/redeclipse_${version}_nix.tar.bz2";
+ sha256 = "143i713ggbk607qr4n39pi0pn8d93x9x6fcbh8rc51jb9qhi8p5i";
+ };
+
+ buildInputs = [
+ libX11 freetype zlib
+ SDL2 SDL2_image SDL2_mixer
+ ];
+
+ nativeBuildInputs = [
+ curl ed pkgconfig
+ ];
+
+ makeFlags = [ "-C" "src/" "prefix=$(out)" ];
+
+ enableParallelBuilding = true;
+
+ installTargets = [ "system-install" ];
+
+ postInstall = ''
+ cp -R -t $out/share/redeclipse/data/ data/*
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A first person arena shooter, featuring parkour, impulse boosts, and more";
+ longDescription = ''
+ Red Eclipse is a fun-filled new take on the first person arena shooter,
+ featuring parkour, impulse boosts, and more. The development is geared
+ toward balanced gameplay, with a general theme of agility in a variety of
+ environments.
+ '';
+ homepage = "https://www.redeclipse.net";
+ license = with licenses; [ licenses.zlib cc-by-sa-30 ];
+ maintainers = with maintainers; [ lambda-11235 ];
+ platforms = platforms.linux;
+ hydraPlatforms = [];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/residualvm/default.nix b/infra/libkookie/nixpkgs/pkgs/games/residualvm/default.nix
new file mode 100644
index 000000000000..da003c3190ff
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/residualvm/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, SDL, zlib, libmpeg2, libmad, libogg, libvorbis, flac, alsaLib
+, libGLSupported ? stdenv.lib.elem stdenv.hostPlatform.system stdenv.lib.platforms.mesaPlatforms
+, openglSupport ? libGLSupported, libGLU, libGL ? null
+}:
+
+assert openglSupport -> libGL != null && libGLU != null;
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+ version = "0.1.1";
+ pname = "residualvm";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/residualvm/residualvm-${version}-sources.tar.bz2";
+ sha256 = "99c419b13885a49bdfc10a50a3a6000fd1ba9504f6aae04c74b840ec6f57a963";
+ };
+
+ buildInputs = [ stdenv SDL zlib libmpeg2 libmad libogg libvorbis flac alsaLib ]
+ ++ optionals openglSupport [ libGL libGLU ];
+
+ configureFlags = [ "--enable-all-engines" ];
+
+ meta = {
+ description = "Interpreter for LucasArts' Lua-based 3D adventure games";
+ homepage = "http://residualvm.org/";
+ repositories.git = "https://github.com/residualvm/residualvm.git";
+ license = licenses.gpl2;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/rftg/default.nix b/infra/libkookie/nixpkgs/pkgs/games/rftg/default.nix
new file mode 100644
index 000000000000..966f903888be
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/rftg/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, gtk2, pkgconfig }:
+
+stdenv.mkDerivation rec {
+
+ pname = "rftg";
+ version = "0.9.4";
+
+ src = fetchurl {
+ url = "http://keldon.net/rftg/rftg-${version}.tar.bz2";
+ sha256 = "0j2y6ggpwdlvyqhirp010aix2g6aacj3kvggvpwzxhig30x9vgq8";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ gtk2.dev ];
+
+ meta = {
+ homepage = "http://keldon.net/rftg/";
+ description = "Implementation of the card game Race for the Galaxy, including an AI";
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = [ stdenv.lib.maintainers.falsifian ];
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/rigsofrods/default.nix b/infra/libkookie/nixpkgs/pkgs/games/rigsofrods/default.nix
new file mode 100644
index 000000000000..9aa51bf344ee
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/rigsofrods/default.nix
@@ -0,0 +1,41 @@
+{ fetchFromGitHub, stdenv, wxGTK30, freeimage, cmake, zziplib, libGLU, libGL, boost,
+ pkgconfig, libuuid, openal, ogre, ois, curl, gtk2, mygui, unzip,
+ angelscript, ogrepaged, mysocketw, libxcb
+ }:
+
+stdenv.mkDerivation rec {
+ version = "0.4.7.0";
+ pname = "rigsofrods";
+
+ src = fetchFromGitHub {
+ owner = "RigsOfRods";
+ repo = "rigs-of-rods";
+ rev = version;
+ sha256 = "0cb1il7qm45kfhh6h6jwfpxvjlh2dmg8z1yz9kj4d6098myf2lg4";
+ };
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ sed -e "s@/usr/local/lib/OGRE@${ogre}/lib/OGRE@" -i ../tools/linux/binaries/plugins.cfg
+ mkdir -p $out/share/rigsofrods
+ cp -r bin/* $out/share/rigsofrods
+ cp ../tools/linux/binaries/plugins.cfg $out/share/rigsofrods
+ mkdir -p $out/bin
+ ln -s $out/share/rigsofrods/{RoR,RoRConfig} $out/bin
+ '';
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ wxGTK30 freeimage cmake zziplib libGLU libGL boost
+ libuuid openal ogre ois curl gtk2 mygui unzip angelscript
+ ogrepaged mysocketw libxcb ];
+
+ meta = {
+ description = "3D simulator game where you can drive, fly and sail various vehicles";
+ homepage = "http://rigsofrods.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl3;
+ maintainers = with stdenv.lib.maintainers; [raskin];
+ platforms = stdenv.lib.platforms.linux;
+ hydraPlatforms = [];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/riko4/default.nix b/infra/libkookie/nixpkgs/pkgs/games/riko4/default.nix
new file mode 100644
index 000000000000..5ea9b8f54162
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/riko4/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitHub, cmake, SDL2, libGLU, luajit, curl, curlpp }:
+
+let
+ # Newer versions of sdl-gpu don't work with Riko4 (corrupted graphics),
+ # and this library does not have a proper release version, so let the
+ # derivation for this stay next to the Riko4 derivation for now.
+ sdl-gpu = stdenv.mkDerivation {
+ pname = "sdl-gpu";
+ version = "2018-11-01";
+ src = fetchFromGitHub {
+ owner = "grimfang4";
+ repo = "sdl-gpu";
+ rev = "a4ff1ab02410f154b004c29ec46e07b22890fa1f";
+ sha256 = "1wdwg331s7r4dhq1l8w4dvlqf4iywskpdrscgbwrz9j0c6nqqi3v";
+ };
+ buildInputs = [ SDL2 libGLU ];
+ nativeBuildInputs = [ cmake ];
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/grimfang4/sdl-gpu";
+ description = "A library for high-performance, modern 2D graphics with SDL written in C";
+ license = licenses.mit;
+ maintainers = with maintainers; [ CrazedProgrammer ];
+ };
+ };
+in
+
+stdenv.mkDerivation rec {
+ pname = "riko4";
+ version = "0.1.0";
+ src = fetchFromGitHub {
+ owner = "incinirate";
+ repo = "Riko4";
+ rev = "v${version}";
+ sha256 = "008i9991sn616dji96jfwq6gszrspbx4x7cynxb1cjw66phyy5zp";
+ };
+
+ buildInputs = [ SDL2 luajit sdl-gpu curl curlpp ];
+ nativeBuildInputs = [ cmake ];
+
+ hardeningDisable = [ "fortify" ];
+ cmakeFlags = [ "-DSDL2_gpu_INCLUDE_DIR=\"${sdl-gpu}/include\"" ];
+
+ # Riko4 needs the data/ and scripts/ directories to be in its PWD.
+ installPhase = ''
+ install -Dm0755 riko4 $out/bin/.riko4-unwrapped
+ mkdir -p $out/lib/riko4
+ cp -r ../data $out/lib/riko4
+ cp -r ../scripts $out/lib/riko4
+ cat > $out/bin/riko4 <<EOF
+ #!/bin/sh
+ pushd $out/lib/riko4 > /dev/null
+ exec $out/bin/.riko4-unwrapped "\$@"
+ popd > /dev/null
+ EOF
+ chmod +x $out/bin/riko4
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/incinirate/Riko4";
+ description = "Fantasy console for pixel art game development";
+ license = licenses.mit;
+ maintainers = with maintainers; [ CrazedProgrammer ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/rili/default.nix b/infra/libkookie/nixpkgs/pkgs/games/rili/default.nix
new file mode 100644
index 000000000000..0b7fa118f80e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/rili/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, SDL_mixer, SDL, autoreconfHook }:
+
+stdenv.mkDerivation {
+ name = "ri_li-2.0.1";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/ri-li/Ri-li-2.0.1.tar.bz2";
+ sha256 = "f71ccc20c37c601358d963e087ac0d524de8c68e96df09c3aac1ae65edd38dbd";
+ };
+
+ patches = [ ./moderinze_cpp.patch ];
+
+ CPPFLAGS = "-I${SDL.dev}/include -I${SDL.dev}/include/SDL -I${SDL_mixer}/include";
+
+ nativeBuildInputs = [ autoreconfHook ];
+ buildInputs = [ SDL SDL_mixer ];
+
+ meta = {
+ homepage = "http://ri-li.sourceforge.net";
+ license = stdenv.lib.licenses.gpl2Plus;
+ description = "A children's train game";
+ longDescription = ''
+ Ri-li is an arcade game licensed under the GPL (General Public License).
+You drive a toy wood engine in many levels and you must collect all the coaches
+to win.
+ '';
+ maintainers = with stdenv.lib.maintainers; [ jcumming ];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/rili/moderinze_cpp.patch b/infra/libkookie/nixpkgs/pkgs/games/rili/moderinze_cpp.patch
new file mode 100644
index 000000000000..3d076afb39e3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/rili/moderinze_cpp.patch
@@ -0,0 +1,391 @@
+diff -r -u Ri-li-2.0.1.orig/src/audio.cc Ri-li-2.0.1/src/audio.cc
+--- Ri-li-2.0.1.orig/src/audio.cc 2012-01-22 00:40:56.928609371 -0800
++++ Ri-li-2.0.1/src/audio.cc 2012-01-22 00:28:33.360636539 -0800
+@@ -22,8 +22,8 @@
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ #include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
++#include <iostream>
++#include <string>
+
+ #include "audio.h"
+ #include "utils.h"
+@@ -57,7 +57,7 @@
+ char PathFile[512];
+
+ if(Mix_OpenAudio(22050,AUDIO_S16,1,1024)) {
+- cerr <<"Enable to init Sound card ! "<<SDL_GetError()<<endl;
++ std::cerr <<"Enable to init Sound card ! "<<SDL_GetError()<<std::endl;
+ return false;
+ }
+
+diff -r -u Ri-li-2.0.1.orig/src/ecran.cc Ri-li-2.0.1/src/ecran.cc
+--- Ri-li-2.0.1.orig/src/ecran.cc 2007-11-02 04:48:16.000000000 -0700
++++ Ri-li-2.0.1/src/ecran.cc 2012-01-22 00:13:54.422798653 -0800
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <math.h>
+diff -r -u Ri-li-2.0.1.orig/src/editeur.cc Ri-li-2.0.1/src/editeur.cc
+--- Ri-li-2.0.1.orig/src/editeur.cc 2007-11-02 04:48:17.000000000 -0700
++++ Ri-li-2.0.1/src/editeur.cc 2012-01-22 00:28:59.632635579 -0800
+@@ -25,10 +25,10 @@
+ #include <windows.h>
+ #endif
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include <SDL/SDL.h>
+
+@@ -374,7 +374,7 @@
+
+ // Sauve le niveau
+ if(Niveau.Save()==false) {
+- cerr <<"ERREUR Saving levels!"<<endl;
++ std::cerr <<"ERREUR Saving levels!"<<std::endl;
+ exit(-1);
+ }
+
+diff -r -u Ri-li-2.0.1.orig/src/jeux.cc Ri-li-2.0.1/src/jeux.cc
+--- Ri-li-2.0.1.orig/src/jeux.cc 2007-11-02 04:48:17.000000000 -0700
++++ Ri-li-2.0.1/src/jeux.cc 2012-01-22 00:14:08.422798143 -0800
+@@ -25,10 +25,10 @@
+ #include <windows.h>
+ #endif
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include <SDL/SDL.h>
+
+diff -r -u Ri-li-2.0.1.orig/src/loco.cc Ri-li-2.0.1/src/loco.cc
+--- Ri-li-2.0.1.orig/src/loco.cc 2007-11-02 04:48:18.000000000 -0700
++++ Ri-li-2.0.1/src/loco.cc 2012-01-22 00:14:17.878797797 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include "preference.h"
+ #include "loco.h"
+diff -r -u Ri-li-2.0.1.orig/src/main.cc Ri-li-2.0.1/src/main.cc
+--- Ri-li-2.0.1.orig/src/main.cc 2007-11-02 04:48:19.000000000 -0700
++++ Ri-li-2.0.1/src/main.cc 2012-01-22 00:29:40.080634136 -0800
+@@ -23,8 +23,8 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
++#include <iostream>
++#include <string>
+ #include <SDL/SDL.h>
+ #include <SDL/SDL_mixer.h>
+
+@@ -115,7 +115,7 @@
+
+ // Initilise SDL
+ if( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_AUDIO|SDL_INIT_NOPARACHUTE) < 0 ) {
+- cerr <<"Impossible d'initialiser SDL:"<<SDL_GetError()<<endl;
++ std::cerr <<"Impossible d'initialiser SDL:"<<SDL_GetError()<<std::endl;
+ exit(-1);
+ }
+ // Ferme le programme correctement quant quit
+@@ -125,7 +125,7 @@
+ sdlVideoInfo=(SDL_VideoInfo*)SDL_GetVideoInfo();
+
+ if(sdlVideoInfo->vfmt->BitsPerPixel==8) {
+- cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<endl;
++ std::cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<std::endl;
+ exit(-1);
+ }
+
+@@ -145,7 +145,7 @@
+ sdlVideo=SDL_SetVideoMode(800,600,sdlVideoInfo->vfmt->BitsPerPixel,vOption);
+
+ if(sdlVideo==NULL) {
+- cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<endl;
++ std::cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<std::endl;
+ exit(-1);
+ }
+ // Change le nom de la fenetre
+diff -r -u Ri-li-2.0.1.orig/src/menu.cc Ri-li-2.0.1/src/menu.cc
+--- Ri-li-2.0.1.orig/src/menu.cc 2007-11-02 04:48:19.000000000 -0700
++++ Ri-li-2.0.1/src/menu.cc 2012-01-22 00:30:04.752633198 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include "preference.h"
+ #include "menu.h"
+ #include "sprite.h"
+@@ -92,7 +92,7 @@
+ // Teste la resolution video
+ sdlVideoInfo=(SDL_VideoInfo*)SDL_GetVideoInfo();
+ if(sdlVideoInfo->vfmt->BitsPerPixel==8) {
+- cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<endl;
++ std::cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<std::endl;
+ exit(-1);
+ }
+
+@@ -112,7 +112,7 @@
+ if(Pref.FullScreen) vOption|=SDL_FULLSCREEN;
+ sdlVideo=SDL_SetVideoMode(800,600,sdlVideoInfo->vfmt->BitsPerPixel,vOption);
+ if(sdlVideo==NULL) {
+- cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<endl;
++ std::cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<std::endl;
+ exit(-1);
+ }
+
+diff -r -u Ri-li-2.0.1.orig/src/mouse.cc Ri-li-2.0.1/src/mouse.cc
+--- Ri-li-2.0.1.orig/src/mouse.cc 2007-11-02 04:48:20.000000000 -0700
++++ Ri-li-2.0.1/src/mouse.cc 2012-01-22 00:14:36.438797120 -0800
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include "mouse.h"
+ #include "preference.h"
+diff -r -u Ri-li-2.0.1.orig/src/sprite.cc Ri-li-2.0.1/src/sprite.cc
+--- Ri-li-2.0.1.orig/src/sprite.cc 2007-11-02 04:48:20.000000000 -0700
++++ Ri-li-2.0.1/src/sprite.cc 2012-01-22 00:30:43.640631779 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include "sprite.h"
+ #include "preference.h"
+@@ -84,7 +84,7 @@
+ strcpy(PathFile,Langue[Pref.Langue]);
+ GetPath(PathFile);
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver "<<Langue[Pref.Langue]<<endl;
++ std::cerr <<"Impossible de trouver "<<Langue[Pref.Langue]<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -128,7 +128,7 @@
+ // *** Charge le fichier des langues ***
+ // *************************************
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver 'language.dat'"<<endl;
++ std::cerr <<"Impossible de trouver 'language.dat'"<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -163,7 +163,7 @@
+ strcpy(PathFile,"sprites.dat");
+ GetPath(PathFile);
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver 'sprites.dat'"<<endl;
++ std::cerr <<"Impossible de trouver 'sprites.dat'"<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -352,7 +352,7 @@
+ Image[i]=SDL_CreateRGBSurface((Dim[i].bpp-3)*SDL_SRCALPHA,Dim[i].L,Dim[i].H,Dim[i].bpp*8,
+ 0xff,0xff00,0xff0000,0xff000000*(Dim[i].bpp-3));
+ if(Image[i]<=NULL) {
+- cerr <<"Impossible de créer une Surface SDL!"<<endl;
++ std::cerr <<"Impossible de créer une Surface SDL!"<<std::endl;
+ return false;
+ }
+
+@@ -486,7 +486,7 @@
+ Image[0]=SDL_CreateRGBSurface((Dim[0].bpp-3)*SDL_SRCALPHA,Dim[0].L,Dim[0].H,Dim[0].bpp*8,
+ 0xff,0xff00,0xff0000,0xff000000*(Dim[0].bpp-3));
+ if(Image[0]<=NULL) {
+- cerr <<"Impossible de créer une Surface SDL!"<<endl;
++ std::cerr <<"Impossible de créer une Surface SDL!"<<std::endl;
+ return false;
+ }
+ return true;
+diff -r -u Ri-li-2.0.1.orig/src/tableau.cc Ri-li-2.0.1/src/tableau.cc
+--- Ri-li-2.0.1.orig/src/tableau.cc 2007-11-02 04:48:21.000000000 -0700
++++ Ri-li-2.0.1/src/tableau.cc 2012-01-22 00:14:50.710796598 -0800
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include "preference.h"
+diff -r -u Ri-li-2.0.1.orig/src/utils.cc Ri-li-2.0.1/src/utils.cc
+--- Ri-li-2.0.1.orig/src/utils.cc 2007-11-02 04:48:22.000000000 -0700
++++ Ri-li-2.0.1/src/utils.cc 2012-01-22 00:31:30.944630051 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+
+ #ifdef WINDOWS
+ #include <windows.h>
+@@ -77,7 +77,7 @@
+
+ file=fopen(Path,"r");
+ if(!file) {
+- cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<std::endl;
+ perror("fopen");
+ return -1;
+ }
+@@ -93,7 +93,7 @@
+
+ Buf=new unsigned char [L+1];
+ if(Buf==NULL) {
+- cerr <<"ERREUR: Memoire insuffisante!"<<endl;
++ std::cerr <<"ERREUR: Memoire insuffisante!"<<std::endl;
+ fclose(file);
+ return -1;
+ }
+@@ -104,7 +104,7 @@
+ while(Compt>1024) {
+ AfficheChargeur();
+ if( fread(Po,1,1024,file) != 1024 ) {
+- cerr <<"ERREUR de lecture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR de lecture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fread");
+ fclose(file);
+ delete [] Buf;
+@@ -131,13 +131,13 @@
+
+ file=_lopen(Path,OF_READ);
+ if(file==-1) {
+- cerr <<"Impossible d'ouvrir "<<Path<<endl;
++ std::cerr <<"Impossible d'ouvrir "<<Path<<std::endl;
+ exit(-1);
+ }
+
+ long L=(long)_llseek(file,0,SEEK_END);
+ if(L==-1) {
+- cerr <<"Impossible de trouver la longueur du fichier"<<endl;
++ std::cerr <<"Impossible de trouver la longueur du fichier"<<std::endl;
+ perror("lseek");
+ _lclose(file);
+ return -1;
+@@ -146,7 +146,7 @@
+
+ Buf=new unsigned char [L+1];
+ if(Buf==NULL) {
+- cerr <<"ERREUR: Memoire insuffisante!"<<endl;
++ std::cerr <<"ERREUR: Memoire insuffisante!"<<std::endl;
+ _lclose(file);
+ return -1;
+ }
+@@ -169,14 +169,14 @@
+
+ file=fopen(Path,"w");
+ if(!file) {
+- cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<std::endl;
+ perror("fopen");
+ return false;
+ }
+
+ while(L>512) {
+ if( fwrite(Buf,1,512,file) != 512 ) {
+- cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fwrite");
+ fclose(file);
+ return false;
+@@ -187,7 +187,7 @@
+
+ if(L>0) {
+ if( fwrite(Buf,1,(size_t)L,file) != (size_t)L ) {
+- cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fwrite");
+ fclose(file);
+ return false;
+@@ -208,7 +208,7 @@
+
+ file=_lcreat(Path,0);
+ if(!file) {
+- cerr <<"ERREUR: Impossible de créer le fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible de créer le fichier '"<<Path<<"'"<<std::endl;
+ return false;
+ }
+
+@@ -216,7 +216,7 @@
+ _lclose(file);
+
+ if(Lec!=L) {
+- cerr <<"Problème d'ecriture du fichier '"<<Path<<"' ecris="<<Lec<<" au lieux de ="<<L<<endl;
++ std::cerr <<"Problème d'ecriture du fichier '"<<Path<<"' ecris="<<Lec<<" au lieux de ="<<L<<std::endl;
+ return false;
+ }
+
+@@ -250,7 +250,7 @@
+ sprintf(Path,"/usr/share/games/Ri-li/%s",Provi);
+ if(FileExiste(Path)) return;
+
+- cerr <<"Impossible de trouver le fichier '"<<Provi<<endl;
++ std::cerr <<"Impossible de trouver le fichier '"<<Provi<<std::endl;
+ exit(-1);
+ }
+ #endif
+@@ -266,7 +266,7 @@
+ sprintf(Path,"PROGDIR:%s",Provi);
+ if(FileExiste(Path)) return;
+
+- cerr <<"Impossible de trouver le fichier '"<<Path<<endl;
++ std::cerr <<"Impossible de trouver le fichier '"<<Path<<std::endl;
+ exit(-1);
+ }
+ #endif
+@@ -282,7 +282,7 @@
+ sprintf(Path,"Ri-li.app/Contents/Resources/%s",Provi);
+ if(FileExiste(Path)) return;
+
+- cerr <<"Impossible de trouver le fichier '"<<Path<<endl;
++ std::cerr <<"Impossible de trouver le fichier '"<<Path<<std::endl;
+ exit(-1);
+ }
+ #endif
diff --git a/infra/libkookie/nixpkgs/pkgs/games/rimshot/default.nix b/infra/libkookie/nixpkgs/pkgs/games/rimshot/default.nix
new file mode 100644
index 000000000000..2e5087319f0c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/rimshot/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchurl, unzip, love, lua, makeWrapper, makeDesktopItem }:
+
+let
+ pname = "rimshot";
+ version = "1.0";
+
+ icon = fetchurl {
+ url = "http://stabyourself.net/images/screenshots/rimshot-2.png";
+ sha256 = "08fyiqym3gcpq2vgb5dvafkban42fsbzfcr3iiyw03hz99q53psd";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "rimshot";
+ exec = pname;
+ icon = icon;
+ comment = "Create your own music";
+ desktopName = "Rimshot";
+ genericName = "rimshot";
+ categories = "Audio;AudioVideo;Music";
+ };
+
+in
+
+stdenv.mkDerivation {
+ name = "${pname}-${version}";
+
+ src = fetchurl {
+ url = "http://stabyourself.net/dl.php?file=${pname}/${pname}-source.zip";
+ sha256 = "08pdkyvki92549605m9bqnr24ipkbwkp5nkr5aagdqnr8ai4rgmi";
+ };
+
+ nativeBuildInputs = [ makeWrapper unzip ];
+ buildInputs = [ lua love ];
+
+ phases = [ "unpackPhase" "installPhase" ];
+
+ unpackPhase = ''
+ unzip -j $src
+ '';
+
+ installPhase =
+ ''
+ mkdir -p $out/bin
+ mkdir -p $out/share/games/lovegames
+
+ cp -v ./*.love $out/share/games/lovegames/${pname}.love
+ makeWrapper ${love}/bin/love $out/bin/${pname} --add-flags $out/share/games/lovegames/${pname}.love
+
+ chmod +x $out/bin/${pname}
+ mkdir -p $out/share/applications
+ ln -s ${desktopItem}/share/applications/* $out/share/applications/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Create your own music";
+ maintainers = with maintainers; [ leenaars ];
+ platforms = platforms.linux;
+ license = licenses.free;
+ downloadPage = "http://stabyourself.net/rimshot/";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/robotfindskitten/default.nix b/infra/libkookie/nixpkgs/pkgs/games/robotfindskitten/default.nix
new file mode 100644
index 000000000000..73beba2e34fc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/robotfindskitten/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, ncurses }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+ pname = "robotfindskitten";
+ version = "2.8284271.702";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/rfk/robotfindskitten-POSIX/ship_it_anyway/${pname}-${version}.tar.gz";
+ sha256 = "1bwrkxm83r9ajpkd6x03nqvmdfpf5vz6yfy0c97pq3v3ykj74082";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ ncurses ];
+
+ makeFlags = [ "execgamesdir=$(out)/bin" ];
+
+ postInstall = ''
+ install -Dm644 {nki,$out/share/games/robotfindskitten}/vanilla.nki
+ '';
+
+ meta = {
+ description = "Yet another zen simulation; A simple find-the-kitten game";
+ homepage = "http://robotfindskitten.org/";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.AndersonTorres ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/rocksndiamonds/default.nix b/infra/libkookie/nixpkgs/pkgs/games/rocksndiamonds/default.nix
new file mode 100644
index 000000000000..ebced6467d2a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/rocksndiamonds/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, makeDesktopItem, SDL2, SDL2_image, SDL2_mixer, SDL2_net }:
+
+stdenv.mkDerivation rec {
+ name = "${project}-${version}";
+ project = "rocksndiamonds";
+ version = "4.1.1.0";
+
+ src = fetchurl {
+ url = "https://www.artsoft.org/RELEASES/unix/${project}/${name}.tar.gz";
+ sha256 = "1k0m6l5g886d9mwwh6q0gw75qsb85mpf8i0rglh047app56nsk72";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "rocksndiamonds";
+ exec = "rocksndiamonds";
+ icon = "rocksndiamonds";
+ comment = meta.description;
+ desktopName = "Rocks'n'Diamonds";
+ genericName = "Tile-based puzzle";
+ categories = "Game;LogicGame;";
+ };
+
+ buildInputs = [ SDL2 SDL2_image SDL2_mixer SDL2_net ];
+
+ preBuild = ''
+ dataDir="$out/share/rocksndiamonds"
+ makeFlags+="RO_GAME_DIR=$dataDir"
+ '';
+
+ installPhase = ''
+ appDir=$out/share/applications
+ iconDir=$out/share/icons/hicolor/32x32/apps
+ mkdir -p $out/bin $appDir $iconDir $dataDir
+ cp rocksndiamonds $out/bin/
+ ln -s ${desktopItem}/share/applications/* $appDir/
+ ln -s $dataDir/graphics/gfx_classic/RocksIcon32x32.png $iconDir/rocksndiamonds.png
+ cp -r docs graphics levels music sounds $dataDir
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Scrolling tile-based arcade style puzzle game";
+ homepage = "https://www.artsoft.org/rocksndiamonds/";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ orivej ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/rogue/default.nix b/infra/libkookie/nixpkgs/pkgs/games/rogue/default.nix
new file mode 100644
index 000000000000..592f897f20f1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/rogue/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchurl, ncurses}:
+
+stdenv.mkDerivation {
+ name = "rogue-5.4.4";
+
+ src = fetchurl {
+ urls = [
+ "https://src.fedoraproject.org/repo/pkgs/rogue/rogue5.4.4-src.tar.gz/033288f46444b06814c81ea69d96e075/rogue5.4.4-src.tar.gz"
+ "http://ftp.vim.org/ftp/pub/ftp/os/Linux/distr/slitaz/sources/packages-cooking/r/rogue5.4.4-src.tar.gz"
+ "http://rogue.rogueforge.net/files/rogue5.4/rogue5.4.4-src.tar.gz"
+ ];
+ sha256 = "18g81274d0f7sr04p7h7irz0d53j6kd9j1y3zbka1gcqq0gscdvx";
+ };
+
+ buildInputs = [ ncurses ];
+
+ # Fix build for recent ncurses versions
+ NIX_CFLAGS_COMPILE = "-DNCURSES_INTERNALS=1";
+
+ meta = with stdenv.lib; {
+ homepage = "http://rogue.rogueforge.net/rogue-5-4/";
+ description = "The final version of the original Rogue game developed for the UNIX operating system";
+ platforms = platforms.all;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.eelco ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/rrootage/default.nix b/infra/libkookie/nixpkgs/pkgs/games/rrootage/default.nix
new file mode 100644
index 000000000000..459ff238b4a4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/rrootage/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchpatch, fetchurl, SDL, SDL_mixer, bulletml }:
+
+let
+ version = "0.23a";
+ debianRevision = "12";
+ debianPatch = patchname: hash: fetchpatch {
+ name = "${patchname}.patch";
+ url = "https://sources.debian.org/data/main/r/rrootage/${version}-${debianRevision}/debian/patches/${patchname}.patch";
+ sha256 = hash;
+ };
+
+in stdenv.mkDerivation {
+ pname = "rrootage";
+ inherit version;
+ src = fetchurl {
+ url = "http://downloads.sourceforge.net/rrootage/rRootage-${version}.tar.gz";
+ sha256 = "01zzg4ih3kmbhsn1p9zr7g8srv1d2dhrp8cdd86y9qq233idnkln";
+ };
+
+ patches = [
+ (debianPatch
+ "01_makefile"
+ "0wgplznx9kgb82skwqplpydbpallgrby3w662h52wky5zl0pyijj")
+ (debianPatch
+ "02_data_dir"
+ "12vw60s94by3f6k8pk45k555h4y7gzlqfds0a96nrrryammpgnq3")
+ (debianPatch
+ "03_texture_filename"
+ "1qxkxy6821xvanacf25mi43wj8nf40c1qiyavhc8av798xprpkjh")
+ (debianPatch
+ "04_home"
+ "0s15b0liv40jzjd9l4zsq688ky1yp9b1gmb1xhi3bih4y7q9awdz")
+ (debianPatch
+ "05_gcc"
+ "06ihgbfrklabs7cb6216w1jjb9sglv86iagzhhmyydwyph4fb782")
+ (debianPatch
+ "06_rrootage_highres"
+ "0ifjmh236yiv3g896nfwwydgcnq3njdb8ldah7s3jxp3xkpvwcga")
+ (debianPatch
+ "07_use_system_bulletml"
+ "1sxsl1yzx3msvz8mf0jk1vnahqb1ahq9drm391idgh0afy77l6j7")
+ (debianPatch
+ "08_windowed_mode"
+ "0knx4g445ngilsz4dvdkq69f5f8i2xv2fnmdmq037xd5rhfg0b23")
+ (debianPatch
+ "09_rootage_make_highres_default"
+ "1zqz8s54rl8jmqmvdi9c3ayfcma6qkbfkx5vw0fzyn268wcs022p")
+ (debianPatch
+ "10_deg_out_of_range"
+ "1wr76az4rlv1gaj9xdknzqcjazw6h8myqw6y3753q259hxbq4cah")
+ ];
+ postPatch = ''
+ substituteInPlace "src/screen.c" --replace "/usr/share/games/rrootage" "$out/share/games/rrootage"
+ substituteInPlace "src/soundmanager.c" --replace "/usr/share/games/rrootage" "$out/share/games/rrootage"
+ substituteInPlace "src/barragemanager.cc" --replace "/usr/share/games/rrootage" "$out/share/games/rrootage"
+ '';
+
+ buildInputs = [ SDL SDL_mixer bulletml ];
+ makeFlags = [ "-C src" "-f makefile.lin" ];
+ hardeningDisable = [ "stackprotector" "fortify" ]; # buffer overflow without this
+
+ installPhase = ''
+ install -d "$out"/share/games
+ cp -r rr_share "$out"/share/games/rrootage
+ install -D src/rrootage "$out"/bin/rrootage
+
+ install -D -m 644 readme.txt "$out"/share/licenses/rrootage/README.jp
+ install -m 644 readme_e.txt "$out"/share/licenses/rrootage/README.en
+
+ install -D -m 644 readme.txt "$out"/share/doc/rrootage/README.jp
+ install -m 644 readme_e.txt "$out"/share/doc/rrootage/README.en
+ install -m 644 readme_linux "$out"/share/doc/rrootage/README
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Abstract shooter created by Kenta Cho";
+ homepage = "http://rrootage.sourceforge.net/";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ fgaz ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/runelite/default.nix b/infra/libkookie/nixpkgs/pkgs/games/runelite/default.nix
new file mode 100644
index 000000000000..df8a5c3e8dcd
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/runelite/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl, makeWrapper, jre, makeDesktopItem, lib }:
+
+stdenv.mkDerivation rec {
+ pname = "runelite";
+ version = "2.0.0";
+
+ src = fetchurl {
+ url = "https://github.com/runelite/launcher/releases/download/${version}/RuneLite.jar";
+ sha256 = "0q0x8g43ggkvp5fgnymgygx59xfhnyyrhpi6ha333gqg97rr0rvw";
+ };
+
+ icon = fetchurl {
+ url = "https://github.com/runelite/launcher/raw/${version}/appimage/runelite.png";
+ sha256 = "04fcjm7p546gr82g0jbh497j7rnh70lrvas0k171bff4v3knrjw1";
+ };
+
+ desktop = makeDesktopItem {
+ name = "RuneLite";
+ type = "Application";
+ exec = "runelite";
+ icon = icon;
+ comment = "Open source Old School RuneScape client";
+ terminal = "false";
+ desktopName = "RuneLite";
+ genericName = "Oldschool Runescape";
+ categories = "Game";
+ startupNotify = null;
+ };
+
+ buildInputs = [ makeWrapper ];
+
+ # colon is bash form of no-op (do nothing)
+ dontUnpack = true;
+
+ installPhase = ''
+ mkdir -p $out/share/runelite
+ mkdir -p $out/share/applications
+
+ ln -s ${src} $out/share/runelite/RuneLite.jar
+ ln -s ${desktop}/share/applications/* $out/share/applications
+
+ makeWrapper ${jre}/bin/java $out/bin/runelite \
+ --add-flags "-jar $out/share/runelite/RuneLite.jar"
+ '';
+
+ meta = with lib; {
+ description = "Open source Old School RuneScape client";
+ homepage = "https://runelite.net/";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ kmeakin ];
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/sauerbraten/default.nix b/infra/libkookie/nixpkgs/pkgs/games/sauerbraten/default.nix
new file mode 100644
index 000000000000..c4119ee43636
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/sauerbraten/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchsvn, SDL2, SDL2_image, SDL2_mixer
+, zlib, runtimeShell
+}:
+
+stdenv.mkDerivation rec {
+ name = "sauerbraten-r${version}";
+ version = "5492";
+
+ src = fetchsvn {
+ url = "https://svn.code.sf.net/p/sauerbraten/code";
+ sha256 = "0pin7ggy84fadjvran18db5v0l81qfv42faknpfaxx47xqz00l5s";
+ rev = version;
+ };
+
+ buildInputs = [
+ SDL2 SDL2_mixer SDL2_image
+ zlib
+ ];
+
+ preBuild = ''
+ export NIX_LDFLAGS="$NIX_LDFLAGS -lX11"
+ pushd src
+ '';
+
+ installPhase = ''
+ popd
+ mkdir -p $out/bin $out/share/sauerbraten $out/share/doc/sauerbraten
+ cp -rv "docs/"* $out/share/doc/sauerbraten/
+ cp -v src/sauer_client src/sauer_server $out/share/sauerbraten/
+ cp -rv packages $out/share/sauerbraten/
+ cp -rv data $out/share/sauerbraten/
+ cat > $out/bin/sauerbraten_server <<EOF
+ #!${runtimeShell}
+ cd $out/share/sauerbraten
+ ./sauer_server "\$@"
+ EOF
+ cat > $out/bin/sauerbraten_client <<EOF
+ #!${runtimeShell}
+ cd $out/share/sauerbraten
+ ./sauer_client "\$@"
+ EOF
+ chmod a+x $out/bin/sauerbraten_*
+ '';
+
+ meta = with stdenv.lib; {
+ description = "";
+ maintainers = [ maintainers.raskin ];
+ hydraPlatforms =
+ # raskin: tested amd64-linux;
+ # not setting platforms because it is 0.5+ GiB of game data
+ [];
+ license = "freeware"; # as an aggregate - data files have different licenses
+ # code is under zlib license
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/scid-vs-pc/0001-put-fonts-in-out.patch b/infra/libkookie/nixpkgs/pkgs/games/scid-vs-pc/0001-put-fonts-in-out.patch
new file mode 100644
index 000000000000..63f31d7ef9e0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/scid-vs-pc/0001-put-fonts-in-out.patch
@@ -0,0 +1,77 @@
+From 7e99cf4ae3f38406133a4abf962527cd02416f8e Mon Sep 17 00:00:00 2001
+From: Sebastian Galkin <paraseba@gmail.com>
+Date: Wed, 20 Dec 2017 18:23:03 -0200
+Subject: [PATCH] put fonts in $out
+
+---
+ Makefile.conf | 22 ++++------------------
+ configure | 12 ------------
+ 2 files changed, 4 insertions(+), 30 deletions(-)
+
+diff --git a/Makefile.conf b/Makefile.conf
+index e7f8de9..87f3fff 100644
+--- a/Makefile.conf
++++ b/Makefile.conf
+@@ -226,19 +226,11 @@ install_scid: all_scid
+ fi
+ install -m 755 -d $(SHAREDIR)/bitmaps
+ cp -r ./bitmaps/* $(SHAREDIR)/bitmaps/
+- @if [ "`id -u`" -eq 0 ]; then \
+- install -m 755 -d $(FONTDIR); \
+- install -m 644 -p fonts/*.ttf $(FONTDIR); \
+- else \
+- install -m 755 -d ~/.fonts; \
+- install -m 644 -p fonts/*.ttf ~/.fonts; \
+- fi
++ install -m 755 -d $(FONTDIR); \
++ install -m 644 -p fonts/*.ttf $(FONTDIR); \
++
+ @if [ ! -z "`which fc-cache`" ]; then \
+- if [ "`id -u`" -eq 0 ]; then \
+- fc-cache -fv $(FONTDIR); \
+- else \
+- fc-cache -fv ~/.fonts; \
+- fi; \
++ fc-cache -fv $(FONTDIR); \
+ else \
+ echo "Don't know how to setup truetype fonts (fc-cache not available)."; \
+ echo "Please contact your system administrator."; \
+@@ -292,12 +284,6 @@ uninstall:
+ for f in `ls fonts/*.ttf`; do \
+ rm -f ~/.$$f; \
+ done; \
+- if [ ! -z "`which fc-cache`" ]; then \
+- fc-cache -fv ~/.fonts; \
+- fi; \
+- if [ "`find ~/.fonts -type d -empty`" = "`ls -d ~/.fonts`" ]; then \
+- rmdir ~/.fonts; \
+- fi; \
+ fi
+
+ clean:
+diff --git a/configure b/configure
+index 4599c77..8b09678 100755
+--- a/configure
++++ b/configure
+@@ -473,18 +473,6 @@ proc writeMakefile {{type ""}} {
+ exit 1
+ }
+
+- if {[isDarwin]} {
+- set var(FONTDIR) /Library/Fonts/
+- } else {
+- # Just install fonts in to /usr irrespective of system prefix. /usr/local may not be active
+- set prefix /usr
+- if {![file isdirectory $prefix/share/fonts]} {
+- set var(FONTDIR) "~/.fonts"
+- } else {
+- set var(FONTDIR) $prefix/share/fonts/truetype/Scid
+- }
+- }
+-
+ set line [gets $from]
+ while {1} {
+ set line [gets $from]
+--
+2.15.1
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/scid-vs-pc/default.nix b/infra/libkookie/nixpkgs/pkgs/games/scid-vs-pc/default.nix
new file mode 100644
index 000000000000..1ff0a0dc728b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/scid-vs-pc/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchurl, tcl, tk, libX11, zlib, makeWrapper, makeDesktopItem }:
+
+stdenv.mkDerivation rec {
+ pname = "scid-vs-pc";
+ version = "4.21";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/scidvspc/scid_vs_pc-${version}.tgz";
+ sha256 = "1lsm5s2hlhqbmwm6f38jlg2kc4j6lwp86lg6z3w6nc3jibzgvsay";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+ buildInputs = [ tcl tk libX11 zlib ];
+
+ prePatch = ''
+ sed -i -e '/^ *set headerPath *{/a ${tcl}/include ${tk}/include' \
+ -e '/^ *set libraryPath *{/a ${tcl}/lib ${tk}/lib' \
+ -e '/^ *set x11Path *{/a ${libX11}/lib/' \
+ configure
+
+ sed -i -e '/^ *set scidShareDir/s|\[file.*|"'"$out/share"'"|' \
+ tcl/config.tcl
+ '';
+
+ # configureFlags = [
+ # "BINDIR=$(out)/bin"
+ # "SHAREDIR=$(out)/share"
+ # "FONTDIR=$(out)/fonts"
+ # ];
+
+ preConfigure = ''configureFlags="
+ BINDIR=$out/bin
+ SHAREDIR=$out/share
+ FONTDIR=$out/fonts"
+ '';
+
+ patches = [
+ ./0001-put-fonts-in-out.patch
+ ];
+
+ hardeningDisable = [ "format" ];
+
+ dontPatchShebangs = true;
+
+ postFixup = ''
+ sed -i -e '1c#!'"$out"'/bin/tcscid' "$out/bin/scidpgn"
+ sed -i -e '1c#!${tk}/bin/wish' "$out/bin/sc_remote"
+ sed -i -e '1c#!'"$out"'/bin/tkscid' "$out/bin/scid"
+
+ for cmd in $out/bin/* ; do
+ wrapProgram "$cmd" \
+ --set TCLLIBPATH "${tcl}/${tcl.libdir}" \
+ --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"
+ done
+ '';
+
+ postInstall = ''
+ mkdir -p $out/share/applications
+ cp $desktopItem/share/applications/* $out/share/applications/
+
+ install -D icons/scid.png "$out"/share/icons/hicolor/128x128/apps/scid.png
+ '';
+
+ desktopItem = makeDesktopItem {
+ name = "scid-vs-pc";
+ desktopName = "Scid vs. PC";
+ genericName = "Chess Database";
+ comment = meta.description;
+ icon = "scid";
+ exec = "scid";
+ categories = "Game;BoardGame;";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Chess database with play and training functionality";
+ homepage = "http://scidvspc.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = [ maintainers.paraseba ];
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/scid/default.nix b/infra/libkookie/nixpkgs/pkgs/games/scid/default.nix
new file mode 100644
index 000000000000..b3d22d4c0f9e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/scid/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, tcl, tk, libX11, zlib, makeWrapper }:
+
+stdenv.mkDerivation {
+ pname = "scid";
+ version = "4.3";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/scid/scid-4.3.tar.bz2";
+ sha256 = "0zb5qp04x8w4gn2kvfdfq2p44kmzfcqn7v167dixz6nlyxg41hrw";
+ };
+
+ buildInputs = [ tcl tk libX11 zlib makeWrapper ];
+
+ prePatch = ''
+ sed -i -e '/^ *set headerPath *{/a ${tcl}/include ${tk}/include' \
+ -e '/^ *set libraryPath *{/a ${tcl}/lib ${tk}/lib' \
+ -e '/^ *set x11Path *{/a ${libX11}/lib/' \
+ configure
+
+ sed -i -e '/^ *set scidShareDir/s|\[file.*|"'"$out/share"'"|' \
+ tcl/config.tcl
+ '';
+
+ configureFlags = [
+ "BINDIR=$(out)/bin"
+ "SHAREDIR=$(out)/share"
+ ];
+
+ hardeningDisable = [ "format" ];
+
+ dontPatchShebangs = true;
+
+ postFixup = ''
+ for cmd in sc_addmove sc_eco sc_epgn scidpgn \
+ sc_import sc_spell sc_tree spliteco
+ do
+ sed -i -e '1c#!'"$out"'/bin/tcscid' "$out/bin/$cmd"
+ done
+
+ sed -i -e '1c#!${tcl}/bin/tcslsh' "$out/bin/spf2spi"
+ sed -i -e '1c#!${tk}/bin/wish' "$out/bin/sc_remote"
+ sed -i -e '1c#!'"$out"'/bin/tkscid' "$out/bin/scid"
+
+ for cmd in $out/bin/*
+ do
+ wrapProgram "$cmd" \
+ --set TCLLIBPATH "${tcl}/${tcl.libdir}" \
+ --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"
+ done
+ '';
+
+ meta = {
+ description = "Chess database with play and training functionality";
+ homepage = "http://scid.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/scorched3d/default.nix b/infra/libkookie/nixpkgs/pkgs/games/scorched3d/default.nix
new file mode 100644
index 000000000000..b7f448e119a5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/scorched3d/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, libGLU, libGL, glew, pkgconfig, openalSoft, freealut, wxGTK, libogg
+, freetype, libvorbis, fftwSinglePrec, SDL, SDL_net, expat, libjpeg, libpng }:
+
+stdenv.mkDerivation rec {
+ version = "44";
+ pname = "scorched3d";
+ src = fetchurl {
+ url = "mirror://sourceforge/scorched3d/Scorched3D-${version}-src.tar.gz";
+ sha256 = "1fldi9pn7cz6hc9h70pacgb7sbykzcac44yp3pkhn0qh4axj10qw";
+ };
+
+ buildInputs =
+ [ libGLU libGL glew openalSoft freealut wxGTK libogg freetype libvorbis
+ SDL SDL_net expat libjpeg libpng fftwSinglePrec
+ ];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ patches = [
+ ./file-existence.patch
+ (fetchurl {
+ url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/games-strategy/scorched3d/files/scorched3d-44-fix-c++14.patch?id=1bbcfc9ae3dfdfcbdd35151cb7b6050776215e4d";
+ sha256 = "1farmjxbc2wm4scsdbdnvh29fipnb6mp6z85hxz4bx6n9kbc8y7n";
+ })
+ ];
+
+ sourceRoot = "scorched";
+
+ configureFlags = [ "--with-fftw=${fftwSinglePrec.dev}" ];
+
+ NIX_LDFLAGS = "-lopenal";
+
+ meta = with stdenv.lib; {
+ homepage = "http://scorched3d.co.uk/";
+ description = "3D Clone of the classic Scorched Earth";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux; # maybe more
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/scorched3d/file-existence.patch b/infra/libkookie/nixpkgs/pkgs/games/scorched3d/file-existence.patch
new file mode 100644
index 000000000000..35eb63d07022
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/scorched3d/file-existence.patch
@@ -0,0 +1,37 @@
+diff --git a/src/common/common/DefinesFile.cpp b/src/common/common/DefinesFile.cpp
+index 6ad803d..022797a 100644
+--- a/src/common/common/DefinesFile.cpp
++++ b/src/common/common/DefinesFile.cpp
+@@ -36,6 +36,17 @@
+ #include <unistd.h>
+ #endif
+
++namespace {
++ bool fileCanBeStated(const std::string &file)
++ {
++ struct stat buf;
++ memset(&buf, 0, sizeof(buf));
++ int result = stat(file.c_str(), &buf );
++
++ return result == 0;
++ }
++}
++
+ std::string S3D::getHomeDir()
+ {
+ #ifdef _WIN32
+@@ -74,12 +85,12 @@ bool S3D::dirMake(const std::string &file)
+
+ bool S3D::fileExists(const std::string &file)
+ {
+- return (S3D::fileModTime(file) != 0);
++ return fileCanBeStated(file);
+ }
+
+ bool S3D::dirExists(const std::string &file)
+ {
+- return (S3D::fileModTime(file) != 0);
++ return fileCanBeStated(file);
+ }
+
+ time_t S3D::fileModTime(const std::string &file)
diff --git a/infra/libkookie/nixpkgs/pkgs/games/scrolls/default.nix b/infra/libkookie/nixpkgs/pkgs/games/scrolls/default.nix
new file mode 100644
index 000000000000..a435a240edef
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/scrolls/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, gcc
+, libGLU, libX11, libXext, libXcursor, libpulseaudio
+}:
+stdenv.mkDerivation {
+ name = "scrolls-2015-10-13";
+
+ meta = {
+ description = "A strategy collectible card game";
+ homepage = "https://scrolls.com/";
+ # http://www.reddit.com/r/Scrolls/comments/2j3pxw/linux_client_experimental/
+
+ platforms = [ "x86_64-linux" ];
+
+ license = stdenv.lib.licenses.unfree;
+ };
+
+ src = fetchurl {
+ url = "https://download.scrolls.com/client/linux.tar.gz";
+ sha256 = "ead1fd14988aa07041fedfa7f845c756cd5077a5a402d85bfb749cb669ececec";
+ };
+
+ libPath = stdenv.lib.makeLibraryPath [
+ gcc
+ libGLU
+ libX11
+ libXext
+ libXcursor
+ libpulseaudio
+ ];
+
+ phases = [ "unpackPhase" "installPhase" ];
+ installPhase = ''
+ mkdir -p "$out/opt/Scrolls"
+ cp -r ../Scrolls "$out/opt/Scrolls/"
+ cp -r ../Scrolls_Data "$out/opt/Scrolls/"
+ chmod +x "$out/opt/Scrolls/Scrolls"
+
+ patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+ --set-rpath "$libPath" "$out/opt/Scrolls/Scrolls"
+
+ mkdir "$out/bin"
+ ln -s "$out/opt/Scrolls/Scrolls" "$out/bin/Scrolls"
+ '';
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/scummvm/default.nix b/infra/libkookie/nixpkgs/pkgs/games/scummvm/default.nix
new file mode 100644
index 000000000000..02df60c829f2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/scummvm/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, nasm
+, alsaLib, curl, flac, fluidsynth, freetype, libjpeg, libmad, libmpeg2, libogg, libvorbis, libGLU, libGL, SDL2, zlib
+}:
+
+stdenv.mkDerivation rec {
+ pname = "scummvm";
+ version = "2.2.0";
+
+ src = fetchurl {
+ url = "http://scummvm.org/frs/scummvm/${version}/${pname}-${version}.tar.xz";
+ sha256 = "FGllflk72Ky8+sC4ObCG9kDr8SBjPpPxFsq2UrWyc4c=";
+ };
+
+ nativeBuildInputs = [ nasm ];
+
+ buildInputs = [
+ alsaLib curl freetype flac fluidsynth libjpeg libmad libmpeg2 libogg libvorbis libGLU libGL SDL2 zlib
+ ];
+
+ dontDisableStatic = true;
+
+ enableParallelBuilding = true;
+
+ configurePlatforms = [ "host" ];
+ configureFlags = [
+ "--enable-c++11"
+ "--enable-release"
+ ];
+
+ # They use 'install -s', that calls the native strip instead of the cross
+ postConfigure = ''
+ sed -i "s/-c -s/-c -s --strip-program=''${STRIP@Q}/" ports.mk
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Program to run certain classic graphical point-and-click adventure games (such as Monkey Island)";
+ homepage = "https://www.scummvm.org/";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.peterhoeg ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/scummvm/games.nix b/infra/libkookie/nixpkgs/pkgs/games/scummvm/games.nix
new file mode 100644
index 000000000000..0165a797c3a6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/scummvm/games.nix
@@ -0,0 +1,155 @@
+{ stdenv, lib, fetchurl, makeDesktopItem, unzip, writeText
+, scummvm, runtimeShell }:
+
+let
+ desktopItem = name: short: long: description: makeDesktopItem {
+ categories = "Game;AdventureGame;";
+ comment = description;
+ desktopName = long;
+ exec = "@out@/bin/${short}";
+ genericName = description;
+ icon = "scummvm";
+ name = name;
+ };
+
+ run = name: short: code: writeText "${short}.sh" ''
+ #!${runtimeShell} -eu
+
+ exec ${scummvm}/bin/scummvm \
+ --path=@out@/share/${name} \
+ --fullscreen \
+ ${code}
+ '';
+
+ generic = { plong, pshort, pcode, description, version, files, docs ? [ "readme.txt" ], ... } @attrs:
+ let
+ attrs' = builtins.removeAttrs attrs [ "plong" "pshort" "pcode" "description" "docs" "files" "version" ];
+ pname = lib.replaceStrings [ " " ":" ] [ "-" "" ] (lib.toLower plong);
+ in stdenv.mkDerivation ({
+ name = "${pname}-${version}";
+
+ nativeBuildInputs = [ unzip ];
+
+ dontBuild = true;
+ dontFixup = true;
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/bin $out/share/{applications,${pname},doc/${pname}}
+
+ ${lib.concatStringsSep "\n" (map (f: "mv ${f} $out/share/doc/${pname}") docs)}
+ ${lib.concatStringsSep "\n" (map (f: "mv ${f} $out/share/${pname}") files)}
+
+ substitute ${run pname pshort pcode} $out/bin/${pshort} \
+ --subst-var out
+ substitute ${desktopItem pname pshort plong description}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop \
+ --subst-var out
+
+ chmod 0755 $out/bin/${pshort}
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://www.scummvm.org";
+ license = licenses.free; # refer to the readme for exact wording
+ maintainers = with maintainers; [ peterhoeg ];
+ inherit description;
+ inherit (scummvm.meta) platforms;
+ };
+ } // attrs');
+
+in {
+ beneath-a-steel-sky = generic rec {
+ plong = "Beneath a Steel Sky";
+ pshort = "bass";
+ pcode = "sky";
+ description = "2D point-and-click science fiction thriller set in a bleak vision of the future";
+ version = "1.2";
+ src = fetchurl {
+ url = "mirror://sourceforge/scummvm/${pshort}-cd-${version}.zip";
+ sha256 = "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k";
+ };
+ files = [ "sky.*" ];
+ };
+
+ broken-sword-25 = generic rec {
+ plong = "Broken Sword 2.5";
+ pshort = "sword25";
+ pcode = "sword25";
+ description = "A fan game of the Broken Sword series";
+ version = "1.0";
+ src = fetchurl {
+ url = "mirror://sourceforge/scummvm/${pshort}-v${version}.zip";
+ sha256 = "0ivj1vflfpih5bs5a902mab88s4d77fwm3ya3fk7pammzc8gjqzz";
+ };
+ sourceRoot = ".";
+ docs = [ "README" "license-original.txt" ];
+ files = [ "data.b25c" ];
+ };
+
+ drascula-the-vampire-strikes-back = generic rec {
+ plong = "Drascula: The Vampire Strikes Back";
+ pshort = "drascula";
+ pcode = "drascula";
+ description = "Spanish 2D classic point & click style adventure with tons of humor and an easy interface";
+ version = "1.0";
+ # srcs = {
+ src = fetchurl {
+ url = "mirror://sourceforge/scummvm/${pshort}-${version}.zip";
+ sha256 = "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp";
+ };
+ # audio = fetchurl {
+ # url = "mirror://sourceforge/scummvm/${pshort}-audio-flac-2.0.zip";
+ # sha256 = "1zmqhrby8f5sj1qy6xjdgkvk9wyhr3nw8ljrrl58fmxb83x1rryw";
+ # };
+ # };
+ sourceRoot = ".";
+ docs = [ "readme.txt" "drascula.doc" ];
+ files = [ "Packet.001" ];
+ };
+
+ dreamweb = generic rec {
+ plong = "Dreamweb";
+ pshort = "dreamweb";
+ pcode = "dreamweb";
+ description = "2D point-and-click cyberpunk top-down adventure game";
+ version = "1.1";
+ src = fetchurl {
+ url = "mirror://sourceforge/scummvm/${pshort}-cd-uk-${version}.zip";
+ sha256 = "0hh1p3rd7s0ckvri14lc6wdry9vv0vn4h4744v2n4zg63j8i6vsa";
+ };
+ sourceRoot = ".";
+ docs = [ "license.txt" ];
+ files = [ "DREAMWEB.*" "SPEECH" "track01.flac" ];
+ };
+
+ flight-of-the-amazon-queen = generic rec {
+ plong = "Flight of the Amazon Queen";
+ pshort = "fotaq";
+ pcode = "queen";
+ description = "2D point-and-click adventure game set in the 1940s";
+ version = "1.1";
+ src = fetchurl {
+ url = "mirror://sourceforge/scummvm/FOTAQ_Talkie-${version}.zip";
+ sha256 = "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52";
+ };
+ sourceRoot = ".";
+ files = [ "*.1c" ];
+ };
+
+ lure-of-the-temptress = generic rec {
+ plong = "Lure of the Temptress";
+ pshort = "lott";
+ pcode = "lure";
+ description = "2D point-and-click adventure game with a fantasy theme";
+ version = "1.1";
+ src = fetchurl {
+ url = "mirror://sourceforge/scummvm/lure-${version}.zip";
+ sha256 = "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk";
+ };
+ docs = [ "README" "*.txt" "*.pdf" "*.PDF" ];
+ files = [ "*.vga" ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/sfrotz/default.nix b/infra/libkookie/nixpkgs/pkgs/games/sfrotz/default.nix
new file mode 100644
index 000000000000..6e4839703a1c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/sfrotz/default.nix
@@ -0,0 +1,69 @@
+{ fetchFromGitLab
+, freetype
+, libao
+, libjpeg
+, libmodplug
+, libpng
+, libsamplerate
+, libsndfile
+, libvorbis
+, pkg-config
+, SDL2
+, SDL2_mixer
+, stdenv
+, zlib }:
+
+stdenv.mkDerivation rec {
+ pname = "sfrotz";
+ version = "2.52";
+
+ src = fetchFromGitLab {
+ domain = "gitlab.com";
+ owner = "DavidGriffith";
+ repo = "frotz";
+ rev = version;
+ sha256 = "11ca1dz31b7s5vxjqncwjwmbbcr2m5v2rxjn49g4gnvwd6mqw48y";
+ };
+
+ buildInputs = [
+ freetype
+ libao
+ libjpeg
+ libmodplug
+ libpng
+ libsamplerate
+ libsndfile
+ libvorbis
+ SDL2
+ SDL2_mixer
+ zlib
+ ];
+ nativeBuildInputs = [ pkg-config ];
+ makeFlags = [ "PREFIX=${placeholder "out"}" ];
+ buildPhase = "make sdl";
+ installTargets = [ "install_sfrotz" ];
+
+ meta = with stdenv.lib; {
+ description =
+ "Interpreter for Infocom and other Z-Machine games (SDL interface)";
+ longDescription = ''
+ Frotz is a Z-Machine interpreter. The Z-machine is a virtual machine
+ designed by Infocom to run all of their text adventures. It went through
+ multiple revisions during the lifetime of the company, and two further
+ revisions (V7 and V8) were created by Graham Nelson after the company's
+ demise. The specification is now quite well documented; this version of
+ Frotz supports version 1.0.
+
+ This version of Frotz fully supports all these versions of the Z-Machine
+ including the graphical version 6. Graphics and sound are created through
+ the use of the SDL libraries. AIFF sound effects and music in MOD and OGG
+ formats are supported when packaged in Blorb container files or optionally
+ from individual files.
+ '';
+ homepage = "https://davidgriffith.gitlab.io/frotz/";
+ changelog = "https://gitlab.com/DavidGriffith/frotz/-/raw/${version}/NEWS";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ ddelabru ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/sgt-puzzles/default.nix b/infra/libkookie/nixpkgs/pkgs/games/sgt-puzzles/default.nix
new file mode 100644
index 000000000000..4cac596282e2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/sgt-puzzles/default.nix
@@ -0,0 +1,73 @@
+{ stdenv, fetchurl, desktop-file-utils
+, gtk3, libX11
+, makeWrapper, pkgconfig, perl, autoreconfHook, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+ name = "sgt-puzzles-r${version}";
+ version = "20200610.9aa7b7c";
+
+ src = fetchurl {
+ url = "http://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles-${version}.tar.gz";
+ sha256 = "0rrd1c77ar91zqy4rr4xp1z7x3ywnshlac99cga4hnrgwb7vwl3f";
+ };
+
+ sgt-puzzles-menu = fetchurl {
+ url = "https://raw.githubusercontent.com/Oleh-Kravchenko/portage/master/games-puzzle/sgt-puzzles/files/sgt-puzzles.menu";
+ sha256 = "088w0x9g3j8pn725ix8ny8knhdsfgjr3hpswsh9fvfkz5vlg2xkm";
+ };
+
+ nativeBuildInputs = [ autoreconfHook desktop-file-utils makeWrapper
+ pkgconfig perl wrapGAppsHook ];
+
+ buildInputs = [ gtk3 libX11 ];
+
+ makeFlags = [ "prefix=$(out)" "gamesdir=$(out)/bin"];
+
+ preInstall = ''
+ mkdir -p "$out"/{bin,share/doc/sgtpuzzles}
+ cp gamedesc.txt LICENCE README "$out/share/doc/sgtpuzzles"
+ '';
+
+ postInstall = ''
+ for i in $(basename -s $out/bin/*); do
+
+ ln -s $out/bin/$i $out/bin/sgt-puzzle-$i
+ install -Dm644 icons/$i-48d24.png -t $out/share/icons/hicolor/48x48/apps/
+
+ # Generate/validate/install .desktop files.
+ echo "[Desktop Entry]" > $i.desktop
+ desktop-file-install --dir $out/share/applications \
+ --set-key Type --set-value Application \
+ --set-key Exec --set-value $i \
+ --set-key Name --set-value $i \
+ --set-key Comment --set-value "${meta.description}" \
+ --set-key Categories --set-value "Game;LogicGame;X-sgt-puzzles;" \
+ --set-key Icon --set-value $out/share/icons/hicolor/48x48/apps/$i-48d24 \
+ $i.desktop
+ done
+
+ echo "[Desktop Entry]" > sgt-puzzles.directory
+ desktop-file-install --dir $out/share/desktop-directories \
+ --set-key Type --set-value Directory \
+ --set-key Name --set-value Puzzles \
+ --set-key Icon --set-value $out/share/icons/hicolor/48x48/apps/sgt-puzzles_map \
+ sgt-puzzles.directory
+
+ install -Dm644 ${sgt-puzzles-menu} -t $out/etc/xdg/menus/applications-merged/
+ '';
+
+ preConfigure = ''
+ perl mkfiles.pl
+ export NIX_LDFLAGS="$NIX_LDFLAGS -lX11"
+ export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -Wno-error"
+ cp Makefile.gtk Makefile
+ '';
+ meta = with stdenv.lib; {
+ description = "Simon Tatham's portable puzzle collection";
+ license = licenses.mit;
+ maintainers = [ maintainers.raskin ];
+ platforms = platforms.linux;
+ homepage = "https://www.chiark.greenend.org.uk/~sgtatham/puzzles/";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/sgt-puzzles/default.upstream b/infra/libkookie/nixpkgs/pkgs/games/sgt-puzzles/default.upstream
new file mode 100644
index 000000000000..b6d048b68ae9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/sgt-puzzles/default.upstream
@@ -0,0 +1,5 @@
+minimize_overwrite
+url http://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles.tar.gz
+redirect
+NEED_TO_CHOOSE_URL=
+version '.*[-_.]([0-9]{8}[.][^.]+)[.]tar[.].*' '\1'
diff --git a/infra/libkookie/nixpkgs/pkgs/games/shattered-pixel-dungeon/default.nix b/infra/libkookie/nixpkgs/pkgs/games/shattered-pixel-dungeon/default.nix
new file mode 100644
index 000000000000..f3808102bd1d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/shattered-pixel-dungeon/default.nix
@@ -0,0 +1,83 @@
+{ stdenv
+, makeWrapper
+, fetchFromGitHub
+, nixosTests
+, gradle_5
+, perl
+, jre
+, libpulseaudio
+}:
+
+let
+ pname = "shattered-pixel-dungeon";
+ version = "0.8.2d";
+
+ src = fetchFromGitHub {
+ owner = "00-Evan";
+ repo = "shattered-pixel-dungeon";
+ rev = "v${version}";
+ sha256 = "11lgalam1aacw01ar7nawiim4pbxqzrdrnxvj6wq9mg83hgsz65l";
+ };
+
+ postPatch = ''
+ # disable gradle plugins with native code and their targets
+ perl -i.bak1 -pe "s#(^\s*id '.+' version '.+'$)#// \1#" build.gradle
+ perl -i.bak2 -pe "s#(.*)#// \1# if /^(buildscript|task portable|task nsis|task proguard|task tgz|task\(afterEclipseImport\)|launch4j|macAppBundle|buildRpm|buildDeb|shadowJar)/ ... /^}/" build.gradle
+ # Remove unbuildable android stuff
+ rm android/build.gradle
+ '';
+
+ # fake build to pre-download deps into fixed-output derivation
+ deps = stdenv.mkDerivation {
+ pname = "${pname}-deps";
+ inherit version src postPatch;
+ nativeBuildInputs = [ gradle_5 perl ];
+ buildPhase = ''
+ export GRADLE_USER_HOME=$(mktemp -d)
+ gradle --no-daemon desktop:release
+ '';
+ # perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
+ installPhase = ''
+ find $GRADLE_USER_HOME/caches/modules-2 -type f -regex '.*\.\(jar\|pom\)' \
+ | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
+ | sh
+ '';
+ outputHashAlgo = "sha256";
+ outputHashMode = "recursive";
+ outputHash = "0ih10c6c85vhrqgilqmkzqjx3dc8cscvs9wkh90zgdj10qv0iba3";
+ };
+
+in stdenv.mkDerivation rec {
+ inherit pname version src postPatch;
+
+ nativeBuildInputs = [ gradle_5 perl makeWrapper ];
+
+ buildPhase = ''
+ export GRADLE_USER_HOME=$(mktemp -d)
+ # point to offline repo
+ sed -ie "s#repositories {#repositories { maven { url '${deps}' };#g" build.gradle
+ gradle --offline --no-daemon desktop:release
+ '';
+
+ installPhase = ''
+ install -Dm644 desktop/build/libs/desktop-${version}.jar $out/share/shattered-pixel-dungeon.jar
+ mkdir $out/bin
+ makeWrapper ${jre}/bin/java $out/bin/shattered-pixel-dungeon \
+ --prefix LD_LIBRARY_PATH : ${libpulseaudio}/lib \
+ --add-flags "-jar $out/share/shattered-pixel-dungeon.jar"
+ '';
+
+ passthru.tests = {
+ shattered-pixel-dungeon-starts = nixosTests.shattered-pixel-dungeon;
+ };
+
+ meta = with stdenv.lib; {
+ homepage = "https://shatteredpixel.com/";
+ downloadPage = "https://github.com/00-Evan/shattered-pixel-dungeon/releases";
+ description = "Traditional roguelike game with pixel-art graphics and simple interface";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ fgaz ];
+ platforms = platforms.all;
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/sienna/default.nix b/infra/libkookie/nixpkgs/pkgs/games/sienna/default.nix
new file mode 100644
index 000000000000..bedd446e34cc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/sienna/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchurl, love, lua, makeWrapper, makeDesktopItem }:
+
+let
+ pname = "sienna";
+ version = "1.0c";
+
+ icon = fetchurl {
+ url = "http://tangramgames.dk/img/thumb/sienna.png";
+ sha256 = "12q2rhk39dmb6ir50zafn8dylaad5gns8z3y21mfjabc5l5g02nn";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "sienna";
+ exec = pname;
+ icon = icon;
+ comment = "Fast-paced one button platformer";
+ desktopName = "Sienna";
+ genericName = "sienna";
+ categories = "Game;";
+ };
+
+in
+
+stdenv.mkDerivation {
+ name = "${pname}-${version}";
+
+ src = fetchurl {
+ url = "https://github.com/SimonLarsen/${pname}/releases/download/v${version}/${pname}-${version}.love";
+ sha256 = "1x15276fhqspgrrv8fzkp032i2qa8piywc0yy061x59mxhdndzj6";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+ buildInputs = [ lua love ];
+
+ phases = "installPhase";
+
+ installPhase =
+ ''
+ mkdir -p $out/bin
+ mkdir -p $out/share/games/lovegames
+
+ cp -v $src $out/share/games/lovegames/${pname}.love
+
+ makeWrapper ${love}/bin/love $out/bin/${pname} --add-flags $out/share/games/lovegames/${pname}.love
+
+ chmod +x $out/bin/${pname}
+ mkdir -p $out/share/applications
+ ln -s ${desktopItem}/share/applications/* $out/share/applications/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Fast-paced one button platformer";
+ maintainers = with maintainers; [ leenaars ];
+ platforms = platforms.linux;
+ license = licenses.free;
+ downloadPage = "http://tangramgames.dk/games/sienna";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/sil/default.nix b/infra/libkookie/nixpkgs/pkgs/games/sil/default.nix
new file mode 100644
index 000000000000..208a14dc1c57
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/sil/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchzip, ncurses, libX11, libXaw, libXt, libXext, libXmu, makeWrapper, writeScript, ... }:
+let
+ setup = writeScript "setup" ''
+ mkdir -p "$ANGBAND_PATH"
+ # Copy all the data files into place
+ cp -ar $1/* "$ANGBAND_PATH"
+ # The copied files are not writable, make them so
+ chmod +w -R "$ANGBAND_PATH"
+ '';
+in
+stdenv.mkDerivation rec {
+ pname = "Sil";
+ version = "1.3.0";
+
+ src = fetchzip {
+ url = "http://www.amirrorclear.net/flowers/game/sil/Sil-130-src.zip";
+ sha256 = "1amp2mr3fxascra0k76sdsvikjh8g76nqh46kka9379zd35lfq8w";
+ stripRoot=false;
+ };
+
+ buildInputs = [ makeWrapper ncurses libX11 libXaw libXt libXext libXmu ];
+
+ sourceRoot = "source/Sil/src";
+
+ makefile = "Makefile.std";
+
+ prePatch = ''
+ # Allow usage of ANGBAND_PATH
+ substituteInPlace config.h --replace "#define FIXED_PATHS" ""
+ '';
+
+ preConfigure = ''
+ buildFlagsArray+=("LIBS=-lXaw -lXext -lSM -lICE -lXmu -lXt -lX11 -lncurses")
+ '';
+
+ installPhase = ''
+ # the makefile doesn't have a sensible install target, so we hav to do it ourselves
+ mkdir -p $out/bin
+ cp sil $out/bin/sil
+ # Wrap the program to set a user-local ANGBAND_PATH, and run the setup script to copy files into place
+ # We could just use the options for a user-local save and scores dir, but it tried to write to the
+ # lib directory anyway, so we might as well give everyone a copy
+ wrapProgram $out/bin/sil \
+ --run "set -u" \
+ --run "export ANGBAND_PATH=\$HOME/.sil" \
+ --run "${setup} ${src}/Sil/lib"
+ '';
+
+ meta = {
+ description = "A rouge-like game set in the first age of Middle-earth";
+ longDescription = ''
+ A game of adventure set in the first age of Middle-earth, when the world still
+ rang with elven song and gleamed with dwarven mail.
+
+ Walk the dark halls of Angband. Slay creatures black and fell. Wrest a shining
+ Silmaril from Morgoth’s iron crown.
+ '';
+ homepage = "http://www.amirrorclear.net/flowers/game/sil/index.html";
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = [ stdenv.lib.maintainers.michaelpj ];
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/simutrans/default.nix b/infra/libkookie/nixpkgs/pkgs/games/simutrans/default.nix
new file mode 100644
index 000000000000..b75b67e0528e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/simutrans/default.nix
@@ -0,0 +1,171 @@
+{ stdenv, fetchurl, pkgconfig, unzip, zlib, libpng, bzip2, SDL, SDL_mixer
+, buildEnv, config, runtimeShell
+}:
+
+let
+ # Choose your "paksets" of objects, images, text, music, etc.
+ paksets = config.simutrans.paksets or "pak64 pak64.japan pak128 pak128.britain pak128.german";
+
+ result = with stdenv.lib; withPaks (
+ if paksets == "*" then attrValues pakSpec # taking all
+ else map (name: pakSpec.${name}) (splitString " " paksets)
+ );
+
+ ver1 = "120";
+ ver2 = "4";
+ ver3 = "1";
+ version = "${ver1}.${ver2}.${ver3}";
+ ver_dash = "${ver1}-${ver2}-${ver3}";
+
+ binary_src = fetchurl {
+ url = "mirror://sourceforge/simutrans/simutrans/${ver_dash}/simutrans-src-${ver_dash}.zip";
+ sha256 = "0yw7vjvmczp022mgk35swwhpbiszpz91mwsgicxglwivgc30vvic";
+ };
+
+
+ # As of 2015/03, many packsets still didn't have a release for version 120.
+ pakSpec = stdenv.lib.mapAttrs
+ (pakName: attrs: mkPak (attrs // {inherit pakName;}))
+ {
+ pak64 = {
+ srcPath = "121-0/simupak64-121-0";
+ sha256 = "1k335kh8dhm1hdn5iwn3sdgnrlpk0rqxmmgqgqcwsi09cmw45m5c";
+ };
+ "pak64.japan" = {
+ # No release for 120.2 yet!
+ srcPath = "120-0/simupak64.japan-120-0-1";
+ sha256 = "14swy3h4ij74bgaw7scyvmivfb5fmp21nixmhlpk3mav3wr3167i";
+ };
+
+ pak128 = {
+ srcPath = "pak128%20for%20ST%20120.4.1%20%282.8.1%2C%20priority%20signals%20%2B%20bugfix%29/pak128";
+ sha256 = "0z01y7r0rz7q79vr17bbnkgcbjjrimphy1dwb1pgbiv4klz7j5xw";
+ };
+ "pak128.britain" = {
+ srcPath = "pak128.Britain%20for%20120-1/pak128.Britain.1.18-120-3";
+ sha256 = "1kyb0s54kysvdr0zdln9106yx75d71j4lbw3v87k3i440cj3r1d3";
+ };
+ "pak128.cs" = { # note: it needs pak128 to work
+ url = "mirror://sourceforge/simutrans/Pak128.CS/pak128.cz_v.0.2.1.zip";
+ sha256 = "008d8x1s0vxsq78rkczlnf57pv1n5hi1v5nbd1l5w3yls7lk11sc";
+ };
+ "pak128.german" = {
+ url = "mirror://sourceforge/simutrans/PAK128.german/"
+ + "pak128.german_1.2_for_ST_121.0/PAK128.german_1.2_for_ST_121-0.zip";
+ sha256 = "1jxjckz4b02yv1mv1zc3pmajpq740dfnlvhr0x762lbrybymvagi";
+ };
+
+ /* This release contains accented filenames that prevent unzipping.
+ "pak192.comic" = {
+ srcPath = "pak192comic%20for%20${ver2_dash}/pak192comic-0.4-${ver2_dash}up";
+ sha256 = throw "";
+ };
+ */
+ };
+
+
+ mkPak = {
+ sha256, pakName, srcPath ? null
+ , url ? "mirror://sourceforge/simutrans/${pakName}/${srcPath}.zip"
+ }:
+ stdenv.mkDerivation {
+ name = "simutrans-${pakName}";
+ dontUnpack = true;
+ preferLocalBuild = true;
+ installPhase = let src = fetchurl { inherit url sha256; };
+ in ''
+ mkdir -p "$out/share/simutrans/${pakName}"
+ cd "$out/share/simutrans/${pakName}"
+ "${unzip}/bin/unzip" "${src}"
+ chmod -R +w . # some zipfiles need that
+
+ set +o pipefail # no idea why it's needed
+ toStrip=`find . -iname '*.pak' | head -n 1 | sed 's|\./\(.*\)/[^/]*$|\1|'`
+ echo "Detected path '$toStrip' to strip"
+ mv ./"$toStrip"/* .
+ rm -f "$toStrip/.directory" #pak128.german had this
+ rmdir -p "$toStrip"
+ '';
+ };
+
+ /* The binaries need all data in one directory; the default is directory
+ of the executable, and another option is the current directory :-/ */
+ withPaks = paks: buildEnv {
+ inherit (binaries) name;
+ paths = [binaries] ++ paks;
+ postBuild = ''
+ rm "$out/bin" && mkdir "$out/bin"
+ cat > "$out/bin/simutrans" <<EOF
+ #!${runtimeShell}
+ cd "$out"/share/simutrans
+ exec "${binaries}/bin/simutrans" -use_workdir "\$@"
+ EOF
+ chmod +x "$out/bin/simutrans"
+ '';
+
+ passthru.meta = binaries.meta // { hydraPlatforms = []; };
+ passthru.binaries = binaries;
+ };
+
+ binaries = stdenv.mkDerivation {
+ pname = "simutrans";
+ inherit version;
+
+ src = binary_src;
+
+ sourceRoot = ".";
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ zlib libpng bzip2 SDL SDL_mixer unzip ];
+
+ configurePhase = let
+ # Configuration as per the readme.txt and config.template
+ platform =
+ if stdenv.isLinux then "linux" else
+ if stdenv.isDarwin then "mac" else throw "add your platform";
+ config = ''
+ BACKEND = mixer_sdl
+ COLOUR_DEPTH = 16
+ OSTYPE = ${platform}
+ VERBOSE = 1
+ '';
+ #TODO: MULTI_THREAD = 1 is "highly recommended",
+ # but it's roughly doubling CPU usage for me
+ in ''
+ echo "${config}" > config.default
+
+ # Use ~/.simutrans instead of ~/simutrans
+ substituteInPlace simsys.cc --replace '%s/simutrans' '%s/.simutrans'
+
+ # use -O2 optimization (defaults are -O or -O3)
+ sed -i -e '/CFLAGS += -O/d' Makefile
+ export CFLAGS+=-O2
+ '';
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ mkdir -p $out/share/
+ mv simutrans $out/share/
+
+ mkdir -p $out/bin/
+ mv build/default/sim $out/bin/simutrans
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A simulation game in which the player strives to run a successful transport system";
+ longDescription = ''
+ Simutrans is a cross-platform simulation game in which the
+ player strives to run a successful transport system by
+ transporting goods, passengers, and mail between
+ places. Simutrans is an open source remake of Transport Tycoon.
+ '';
+
+ homepage = "http://www.simutrans.com/";
+ license = with licenses; [ artistic1 gpl1Plus ];
+ maintainers = with maintainers; [ kkallio vcunat phile314 ];
+ platforms = with platforms; linux; # TODO: ++ darwin;
+ };
+ };
+
+in result
diff --git a/infra/libkookie/nixpkgs/pkgs/games/sm64ex/default.nix b/infra/libkookie/nixpkgs/pkgs/games/sm64ex/default.nix
new file mode 100644
index 000000000000..e5aeb84fbf11
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/sm64ex/default.nix
@@ -0,0 +1,69 @@
+{ stdenv
+, fetchFromGitHub
+, python3
+, pkg-config
+, audiofile
+, SDL2
+, hexdump
+, requireFile
+, compileFlags ? [ ]
+, region ? "us"
+, baseRom ? requireFile {
+ name = "baserom.${region}.z64";
+ message = ''
+ This nix expression requires that baserom.${region}.z64 is
+ already part of the store. To get this file you can dump your Super Mario 64 cartridge's contents
+ and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
+ Note that if you are not using a US baserom, you must overwrite the "region" attribute with either "eu" or "jp".
+ '';
+ sha256 = {
+ "us" = "17ce077343c6133f8c9f2d6d6d9a4ab62c8cd2aa57c40aea1f490b4c8bb21d91";
+ "eu" = "c792e5ebcba34c8d98c0c44cf29747c8ee67e7b907fcc77887f9ff2523f80572";
+ "jp" = "9cf7a80db321b07a8d461fe536c02c87b7412433953891cdec9191bfad2db317";
+ }.${region};
+ }
+}:
+
+stdenv.mkDerivation rec {
+ pname = "sm64ex";
+ version = "unstable-2020-06-19";
+
+ src = fetchFromGitHub {
+ owner = "sm64pc";
+ repo = "sm64ex";
+ rev = "f5005418348cf1a53bfa75ff415a513ef0b9b273";
+ sha256 = "0adyshkqk5c4lxhdxc3j6ax4svfka26486qpa5q2gl2nixwg9zxn";
+ };
+
+ nativeBuildInputs = [ python3 pkg-config ];
+ buildInputs = [ audiofile SDL2 hexdump ];
+
+ makeFlags = [ "VERSION=${region}" ] ++ compileFlags
+ ++ stdenv.lib.optionals stdenv.isDarwin [ "OSX_BUILD=1" ];
+
+ inherit baseRom;
+
+ preBuild = ''
+ patchShebangs extract_assets.py
+ cp $baseRom ./baserom.${region}.z64
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp build/${region}_pc/sm64.${region}.f3dex2e $out/bin/sm64ex
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/sm64pc/sm64ex";
+ description = "Super Mario 64 port based off of decompilation";
+ longDescription = ''
+ Super Mario 64 port based off of decompilation.
+ Note that you must supply a baserom yourself to extract assets from.
+ If you are not using an US baserom, you must overwrite the "region" attribute with either "eu" or "jp".
+ If you would like to use patches sm64ex distributes as makeflags, add them to the "compileFlags" attribute.
+ '';
+ license = licenses.unfree;
+ maintainers = with maintainers; [ ivar ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/snake4/default.nix b/infra/libkookie/nixpkgs/pkgs/games/snake4/default.nix
new file mode 100644
index 000000000000..4c4161d5049a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/snake4/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, shhmsg, shhopt, xorg }:
+
+stdenv.mkDerivation rec {
+ name = "snake4-1.0.14";
+
+ src = fetchurl {
+ url = "https://shh.thathost.com/pub-unix/files/${name}.tar.gz";
+ sha256 = "14cng9l857np42zixp440mbc8y5675frb6lhsds53j1cws9cncw9";
+ };
+
+ buildInputs = with xorg; [ shhmsg shhopt libX11 libXt libXpm libXaw libXext ];
+
+ preInstall = ''
+ substituteInPlace Makefile \
+ --replace "-o \$(OWNER) -g \$(GROUP)" "" \
+ --replace "4755" "755"
+ '';
+
+ installFlags = [ "INSTLIBDIR=$(out)/lib"
+ "INSTBINDIR=$(out)/bin"
+ "INSTMANDIR=$(out)/man" ];
+
+ meta = with stdenv.lib; {
+ description = "A game starring a fruit-eating snake";
+ homepage = "https://shh.thathost.com/pub-unix/html/snake4.html";
+ license = licenses.artistic1;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/snipes/default.nix b/infra/libkookie/nixpkgs/pkgs/games/snipes/default.nix
new file mode 100644
index 000000000000..37993e32a5d1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/snipes/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchFromGitHub, fetchurl, SDL2, SDL2_ttf }:
+
+let
+ font = fetchurl {
+ url = "http://kingbird.myphotos.cc/ee22d44076adb8a34d8e20df4be3730a/SnipesConsole.ttf";
+ sha256 = "06n8gq18js0bv4svx84ljzhs9zmi81wy0zqcqj3b4g0rsrkr20a7";
+ };
+
+in stdenv.mkDerivation {
+ pname = "snipes";
+ version = "20180930";
+
+ src = fetchFromGitHub {
+ owner = "Davidebyzero";
+ repo = "Snipes";
+ rev = "343e14104b7848eb1f882401888e685b7918ef9f";
+ sha256 = "1rl70d5miak34warbwfv27z11vln4lvf7maqqc78z0gdc5zivdv2";
+ };
+
+ postPatch = ''
+ substitute config-sample.h config.h \
+ --replace SnipesConsole.ttf $out/share/snipes/SnipesConsole.ttf
+ '';
+
+ enableParallelBuilding = true;
+
+ buildInputs = [ SDL2 SDL2_ttf ];
+
+ installPhase = ''
+ runHook preInstall
+
+ install -Dm755 -t $out/bin snipes
+ install -Dm644 -t $out/share/doc/snipes *.md
+ install -Dm644 ${font} $out/share/snipes/SnipesConsole.ttf
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Modern port of the classic 1982 text-mode game Snipes";
+ homepage = "https://www.vogons.org/viewtopic.php?f=7&t=49073";
+ license = licenses.free; # This reverse-engineered source code is released with the original authors' permission.
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/soi/default.nix b/infra/libkookie/nixpkgs/pkgs/games/soi/default.nix
new file mode 100644
index 000000000000..0e4722cebb1a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/soi/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, cmake
+, boost, eigen2, lua, luabind, libGLU, libGL, SDL }:
+
+stdenv.mkDerivation rec {
+ pname = "soi";
+ version = "0.1.2";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/soi/Spheres%20of%20Influence-${version}-Source.tar.bz2";
+ name = "${pname}-${version}.tar.bz2";
+ sha256 = "03c3wnvhd42qh8mi68lybf8nv6wzlm1nx16d6pdcn2jzgx1j2lzd";
+ };
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ boost lua luabind libGLU libGL SDL ];
+
+ cmakeFlags = [
+ "-DEIGEN_INCLUDE_DIR=${eigen2}/include/eigen2"
+ ];
+
+ meta = with stdenv.lib; {
+ description = "A physics-based puzzle game";
+ maintainers = with maintainers; [ raskin ];
+ platforms = platforms.linux;
+ license = licenses.free;
+ downloadPage = "https://sourceforge.net/projects/soi/files/";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/solarus/default.nix b/infra/libkookie/nixpkgs/pkgs/games/solarus/default.nix
new file mode 100644
index 000000000000..c204846ae2fc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/solarus/default.nix
@@ -0,0 +1,44 @@
+{ lib, mkDerivation, fetchFromGitLab, cmake, luajit
+, SDL2, SDL2_image, SDL2_ttf, physfs, glm
+, openal, libmodplug, libvorbis
+, qtbase, qttools }:
+
+mkDerivation rec {
+ pname = "solarus";
+ version = "1.6.4";
+
+ src = fetchFromGitLab {
+ owner = "solarus-games";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "sbdlf+R9OskDQ5U5rqUX2gF8l/fj0sDJv6BL7H1I1Ng=";
+ };
+
+ outputs = [ "out" "lib" "dev" ];
+
+ nativeBuildInputs = [ cmake qttools ];
+ buildInputs = [ luajit SDL2
+ SDL2_image SDL2_ttf physfs
+ openal libmodplug libvorbis
+ qtbase glm ];
+
+ enableParallelBuilding = true;
+
+ preFixup = ''
+ mkdir $lib/
+ mv $out/lib $lib
+ '';
+
+ meta = with lib; {
+ description = "A Zelda-like ARPG game engine";
+ longDescription = ''
+ Solarus is a game engine for Zelda-like ARPG games written in lua.
+ Many full-fledged games have been writen for the engine.
+ '';
+ homepage = "http://www.solarus-games.org";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.Nate-Devv ];
+ platforms = platforms.linux;
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/space-orbit/default.nix b/infra/libkookie/nixpkgs/pkgs/games/space-orbit/default.nix
new file mode 100644
index 000000000000..e9fe6257fb63
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/space-orbit/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl
+, libGLU, libGL, libXi, libXt, libXext, libX11, libXmu, freeglut
+}:
+
+stdenv.mkDerivation rec {
+ pname = "space-orbit";
+ version = "1.01";
+ patchversion = "9";
+
+ buildInputs = [ libGLU libGL libXi libXt libXext libX11 libXmu freeglut ];
+
+ src = fetchurl {
+ url = "mirror://debian/pool/main/s/space-orbit/space-orbit_${version}.orig.tar.gz";
+ sha256 = "1kx69f9jqnfzwjh47cl1df8p8hn3bnp6bznxnb6c4wx32ijn5gri";
+ };
+
+ patches = [
+ (fetchurl {
+ url = "mirror://debian/pool/main/s/space-orbit/space-orbit_${version}-${patchversion}.diff.gz";
+ sha256 = "1v3s97day6fhv08l2rn81waiprhi1lfyjjsj55axfh6n6zqfn1w2";
+ })
+ ];
+
+ preBuild = ''
+ cd src
+ sed -e 's@/usr/share/games/orbit/@'$out'/dump/@g' -i *.c
+ sed -e '/DIR=/d; s/-lesd//; s/-DESD//;' -i Makefile
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp -r .. $out/dump
+ cat >$out/bin/space-orbit <<EOF
+#! ${stdenv.shell}
+exec $out/dump/orbit "\$@"
+EOF
+ chmod a+x $out/bin/space-orbit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A space combat simulator";
+ license = licenses.gpl2;
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/speed-dreams/default.nix b/infra/libkookie/nixpkgs/pkgs/games/speed-dreams/default.nix
new file mode 100644
index 000000000000..473409ffae95
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/speed-dreams/default.nix
@@ -0,0 +1,73 @@
+{ fetchurl, stdenv, libGLU, libGL, freeglut, libX11, plib, openal, freealut, libXrandr, xorgproto,
+libXext, libSM, libICE, libXi, libXt, libXrender, libXxf86vm, openscenegraph, expat,
+libpng, zlib, bash, SDL2, enet, libjpeg, cmake, pkgconfig, libvorbis, runtimeShell, curl }:
+
+let
+ version = "2.2.2-r6553";
+ shortVersion = builtins.substring 0 5 version;
+in
+stdenv.mkDerivation rec {
+ inherit version;
+ pname = "speed-dreams";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/speed-dreams/${shortVersion}/speed-dreams-src-base-${version}.tar.xz";
+ sha256 = "1l47d2619kpfkvdwbkwr311qss6jjfwvgl5h9z2w3bwdgz0mbaij";
+ };
+
+ cars-and-tracks = fetchurl {
+ url = "mirror://sourceforge/speed-dreams/${shortVersion}/speed-dreams-src-hq-cars-and-tracks-${version}.tar.xz";
+ sha256 = "0l8ba5pzqqcfy4inyxy2lrrhhgfs43xab7fy751xz2xqpqpfksyq";
+ };
+
+ more-cars-and-tracks = fetchurl {
+ url = "mirror://sourceforge/speed-dreams/${shortVersion}/speed-dreams-src-more-hq-cars-and-tracks-${version}.tar.xz";
+ sha256 = "10w180mhhk6dw4cza6mqa0hp5qgym9lcizfwykqbgcvs01yl2yqb";
+ };
+
+ wip-cars-and-tracks = fetchurl {
+ url = "mirror://sourceforge/speed-dreams/${shortVersion}/speed-dreams-src-wip-cars-and-tracks-${version}.tar.xz";
+ sha256 = "1wad9yaydaryhyi7ckyaii124h0z7kziqgcl475a5jr7ggbxc24q";
+ };
+
+ sourceRoot = ".";
+
+ postUnpack = ''
+ echo Unpacking data
+ tar -xf ${cars-and-tracks}
+ tar -xf ${more-cars-and-tracks}
+ tar -xf ${wip-cars-and-tracks}
+ '';
+
+ preBuild = ''
+ make -C src/libs/portability
+ make -C src/libs/portability portability.o
+ ar -rv "$(echo lib*/games/speed-dreams*/lib)"/libportability_static.a src/libs/portability/CMakeFiles/portability.dir/portability.cpp.o
+ export NIX_LDFLAGS="$NIX_LDFLAGS -L$(echo $PWD/lib*/games/speed-dreams*/lib) -lexpat"
+ echo "libportability_static.a built"
+ '';
+
+ postInstall = ''
+ mkdir "$out/bin"
+ for i in "$out"/games/*; do
+ echo '#!${runtimeShell}' >> "$out/bin/$(basename "$i")"
+ echo "$i"' "$@"' >> "$out/bin/$(basename "$i")"
+ chmod a+x "$out/bin/$(basename "$i")"
+ done
+ '';
+
+ nativeBuildInputs = [ pkgconfig cmake ];
+
+ buildInputs = [ libpng libGLU libGL freeglut libX11 plib openal freealut libXrandr xorgproto
+ libXext libSM libICE libXi libXt libXrender libXxf86vm zlib bash expat
+ SDL2 enet libjpeg openscenegraph libvorbis curl ];
+
+ meta = {
+ description = "Car racing game - TORCS fork with more experimental approach";
+ homepage = "http://speed-dreams.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl2Plus;
+ maintainers = with stdenv.lib.maintainers; [raskin];
+ platforms = stdenv.lib.platforms.linux;
+ hydraPlatforms = [];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/spring/default.nix b/infra/libkookie/nixpkgs/pkgs/games/spring/default.nix
new file mode 100644
index 000000000000..b130a7b5f77e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/spring/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchFromGitHub, cmake, lzma, boost, libdevil, zlib, p7zip
+, openal, libvorbis, glew, freetype, xorg, SDL2, libGLU, libGL
+, asciidoc, libxslt, docbook_xsl, docbook_xsl_ns, curl, makeWrapper
+, jdk ? null, python ? null, systemd, libunwind, which, minizip
+, withAI ? true # support for AI Interfaces and Skirmish AIs
+}:
+
+stdenv.mkDerivation rec {
+ pname = "spring";
+ version = "104.0.1-${buildId}-g${shortRev}";
+ # usually the latest in https://github.com/spring/spring/commits/maintenance
+ rev = "f266c8107b3e5dda5a78061ef00ca0ed8736d6f2";
+ shortRev = builtins.substring 0 7 rev;
+ buildId = "1486";
+
+ # taken from https://github.com/spring/spring/commits/maintenance
+ src = fetchFromGitHub {
+ owner = "spring";
+ repo = "spring";
+ inherit rev;
+ sha256 = "1nx68d894yfmqc6df72hmk75ph26fqdvlmmq58cca0vbwpz9hf5v";
+ fetchSubmodules = true;
+ };
+
+ # The cmake included module correcly finds nix's glew, however
+ # it has to be the bundled FindGLEW for headless or dedicated builds
+ prePatch = ''
+ substituteInPlace ./rts/build/cmake/FindAsciiDoc.cmake \
+ --replace "PATHS /usr /usr/share /usr/local /usr/local/share" "PATHS ${docbook_xsl}"\
+ --replace "xsl/docbook/manpages" "share/xml/docbook-xsl/manpages"
+ substituteInPlace ./rts/Rendering/GL/myGL.cpp \
+ --replace "static constexpr const GLubyte* qcriProcName" "static const GLubyte* qcriProcName"
+ patchShebangs .
+ rm rts/build/cmake/FindGLEW.cmake
+
+ echo "${version} maintenance" > VERSION
+ '';
+
+ cmakeFlags = ["-DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON"
+ "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON"
+ "-DPREFER_STATIC_LIBS:BOOL=OFF"];
+
+ buildInputs = [ cmake lzma boost libdevil zlib p7zip openal libvorbis freetype SDL2
+ xorg.libX11 xorg.libXcursor libGLU libGL glew asciidoc libxslt docbook_xsl curl makeWrapper
+ docbook_xsl_ns systemd libunwind which minizip ]
+ ++ stdenv.lib.optional withAI jdk
+ ++ stdenv.lib.optional withAI python;
+
+ enableParallelBuilding = true;
+
+ NIX_CFLAGS_COMPILE = "-fpermissive"; # GL header minor incompatibility
+
+ postInstall = ''
+ wrapProgram "$out/bin/spring" \
+ --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc systemd ]}"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://springrts.com/";
+ description = "A powerful real-time strategy (RTS) game engine";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.phreedom maintainers.qknight maintainers.domenkozar maintainers.sorki ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/spring/fix-certs.patch b/infra/libkookie/nixpkgs/pkgs/games/spring/fix-certs.patch
new file mode 100644
index 000000000000..b31160a05cc6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/spring/fix-certs.patch
@@ -0,0 +1,11 @@
+--- a/src/downloader/lib/src/Downloader/CurlWrapper.cpp
++++ b/src/downloader/lib/src/Downloader/CurlWrapper.cpp
+@@ -108,7 +108,6 @@
+ if (res != CURLE_OK) {
+ LOG_WARN("Error setting CURLOPT_CAPATH: %d", res);
+ }
+- return;
+ }
+
+ const std::string cafile = GetCAFilePath();
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/spring/revert_58b423e.patch b/infra/libkookie/nixpkgs/pkgs/games/spring/revert_58b423e.patch
new file mode 100644
index 000000000000..79a42cefa5a6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/spring/revert_58b423e.patch
@@ -0,0 +1,16 @@
+--- a/src/utils/slpaths.cpp
++++ b/src/utils/slpaths.cpp
+@@ -165,13 +165,10 @@
+ usync_paths.push_back(bundle);
+ }
+ if (!SlPaths::IsPortableMode()) {
+- /*
+-//FIXME: reenable when #707 is fixed / spring 102.0 is "established"
+ LSL::SpringBundle systembundle;
+ if (LSL::SpringBundle::LocateSystemInstalledSpring(systembundle)) {
+ usync_paths.push_back(systembundle);
+ }
+-*/
+
+ std::vector<std::string> paths;
+ PossibleEnginePaths(paths);
diff --git a/infra/libkookie/nixpkgs/pkgs/games/spring/springlobby.nix b/infra/libkookie/nixpkgs/pkgs/games/spring/springlobby.nix
new file mode 100644
index 000000000000..33dc364c5b70
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/spring/springlobby.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, fetchpatch, cmake, wxGTK30, openal, pkgconfig, curl, libtorrentRasterbar
+, libpng, libX11, gettext, boost, libnotify, gtk2, doxygen, spring
+, makeWrapper, glib, minizip, alure, pcre, jsoncpp }:
+
+stdenv.mkDerivation rec {
+ pname = "springlobby";
+ version = "0.270";
+
+ src = fetchurl {
+ url = "https://springlobby.springrts.com/dl/stable/springlobby-${version}.tar.bz2";
+ sha256 = "1r1g2hw9ipsmsmzbhsi7bxqra1za6x7j1kw12qzl5psqyq8rqbgs";
+ };
+
+ nativeBuildInputs = [ cmake pkgconfig gettext doxygen makeWrapper ];
+ buildInputs = [
+ wxGTK30 openal curl libtorrentRasterbar pcre jsoncpp
+ boost libpng libX11 libnotify gtk2 glib minizip alure
+ ];
+
+ patches = [
+ ./revert_58b423e.patch # Allows springLobby to continue using system installed spring until #707 is fixed
+ ./fix-certs.patch
+ (fetchpatch {
+ url = "https://github.com/springlobby/springlobby/commit/252c4cb156c1442ed9b4faec3f26265bc7c295ff.patch";
+ sha256 = "sha256-Nq1F5fRPnCkZwl9KgrfuUmpIMK3hUOyZQYIKElWpmzU=";
+ })
+ ];
+
+ enableParallelBuilding = true;
+
+ postInstall = ''
+ wrapProgram $out/bin/springlobby \
+ --prefix PATH : "${spring}/bin" \
+ --set SPRING_BUNDLE_DIR "${spring}/lib"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://springlobby.info/";
+ repositories.git = "git://github.com/springlobby/springlobby.git";
+ description = "Cross-platform lobby client for the Spring RTS project";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ phreedom qknight domenkozar ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/stardust/default.nix b/infra/libkookie/nixpkgs/pkgs/games/stardust/default.nix
new file mode 100644
index 000000000000..1e2089b9c503
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/stardust/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, zlib, libtiff, libxml2, SDL, xorgproto, libX11
+, libXi, libXmu, libXext, libGLU, libGL }:
+
+stdenv.mkDerivation rec {
+ pname = "stardust";
+ version = "0.1.13";
+
+ src = fetchurl {
+ url = "http://iwar.free.fr/IMG/gz/${pname}-${version}.tar.gz";
+ sha256 = "19rs9lz5y5g2yiq1cw0j05b11digw40gar6rw8iqc7bk3s8355xp";
+ };
+
+ buildInputs = [
+ zlib libtiff libxml2 SDL xorgproto libX11 libXi
+ libXmu libXext libGLU libGL
+ ];
+
+ installFlags = [ "bindir=\${out}/bin" ];
+
+ hardeningDisable = [ "format" ];
+
+ postConfigure = ''
+ substituteInPlace config.h \
+ --replace '#define PACKAGE ""' '#define PACKAGE "stardust"'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Space flight simulator";
+ maintainers = [ maintainers.raskin ];
+ platforms = platforms.linux;
+ license = licenses.gpl2Plus;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/steam/build-wrapped.sh b/infra/libkookie/nixpkgs/pkgs/games/steam/build-wrapped.sh
new file mode 100644
index 000000000000..ddf974671a03
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/steam/build-wrapped.sh
@@ -0,0 +1,47 @@
+source $stdenv/setup
+
+outp=$out/lib/steam-runtime
+
+buildDir() {
+ paths="$1"
+ pkgs="$2"
+
+ for pkg in $pkgs; do
+ echo "adding package $pkg"
+ for path in $paths; do
+ if [ -d $pkg/$path ]; then
+ cd $pkg/$path
+ for file in *; do
+ found=""
+ for i in $paths; do
+ if [ -e "$outp/$i/$file" ]; then
+ found=1
+ break
+ fi
+ done
+ if [ -z "$found" ]; then
+ mkdir -p $outp/$path
+ ln -s "$pkg/$path/$file" $outp/$path
+ sovers=$(echo $file | perl -ne 'print if s/.*?\.so\.(.*)/\1/')
+ if [ ! -z "$sovers" ]; then
+ fname=''${file%.''${sovers}}
+ for ver in ''${sovers//./ }; do
+ found=""
+ for i in $paths; do
+ if [ -e "$outp/$i/$fname" ]; then
+ found=1
+ break
+ fi
+ done
+ [ -n "$found" ] || ln -s "$pkg/$path/$file" "$outp/$path/$fname"
+ fname="$fname.$ver"
+ done
+ fi
+ fi
+ done
+ fi
+ done
+ done
+}
+
+eval "$installPhase"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/steam/default.nix b/infra/libkookie/nixpkgs/pkgs/games/steam/default.nix
new file mode 100644
index 000000000000..ff2c6e13288a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/steam/default.nix
@@ -0,0 +1,26 @@
+{ pkgs, newScope, buildFHSUserEnv }:
+
+let
+ callPackage = newScope self;
+
+ self = rec {
+ steamArch = if pkgs.stdenv.hostPlatform.system == "x86_64-linux" then "amd64"
+ else if pkgs.stdenv.hostPlatform.system == "i686-linux" then "i386"
+ else throw "Unsupported platform: ${pkgs.stdenv.hostPlatform.system}";
+
+ steam-runtime = callPackage ./runtime.nix { };
+ steam-runtime-wrapped = callPackage ./runtime-wrapped.nix { };
+ steam = callPackage ./steam.nix { };
+ steam-fonts = callPackage ./fonts.nix { };
+ steam-fhsenv = callPackage ./fhsenv.nix {
+ glxinfo-i686 = pkgs.pkgsi686Linux.glxinfo;
+ steam-runtime-wrapped-i686 =
+ if steamArch == "amd64"
+ then pkgs.pkgsi686Linux.steamPackages.steam-runtime-wrapped
+ else null;
+ inherit buildFHSUserEnv;
+ };
+ steamcmd = callPackage ./steamcmd.nix { };
+ };
+
+in self
diff --git a/infra/libkookie/nixpkgs/pkgs/games/steam/fhsenv.nix b/infra/libkookie/nixpkgs/pkgs/games/steam/fhsenv.nix
new file mode 100644
index 000000000000..ecd318e64c66
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/steam/fhsenv.nix
@@ -0,0 +1,286 @@
+{ config, lib, writeScript, buildFHSUserEnv, steam, glxinfo-i686
+, steam-runtime-wrapped, steam-runtime-wrapped-i686 ? null
+, extraPkgs ? pkgs: [ ] # extra packages to add to targetPkgs
+, extraLibraries ? pkgs: [ ] # extra packages to add to multiPkgs
+, extraProfile ? "" # string to append to profile
+, nativeOnly ? false
+, runtimeOnly ? false
+, runtimeShell
+
+# DEPRECATED
+, withJava ? config.steam.java or false
+, withPrimus ? config.steam.primus or false
+}:
+
+let
+ commonTargetPkgs = pkgs: with pkgs;
+ [
+ steamPackages.steam-fonts
+ # Needed for operating system detection until
+ # https://github.com/ValveSoftware/steam-for-linux/issues/5909 is resolved
+ lsb-release
+ # Errors in output without those
+ pciutils
+ python2
+ # Games' dependencies
+ xorg.xrandr
+ which
+ # Needed by gdialog, including in the steam-runtime
+ perl
+ # Open URLs
+ xdg_utils
+ iana-etc
+ # Steam Play / Proton
+ python3
+ # Steam VR
+ procps
+ usbutils
+ ] ++ lib.optional withJava jdk8 # TODO: upgrade https://github.com/NixOS/nixpkgs/pull/89731
+ ++ lib.optional withPrimus primus
+ ++ extraPkgs pkgs;
+
+ ldPath = map (x: "/steamrt/${steam-runtime-wrapped.arch}/" + x) steam-runtime-wrapped.libs
+ ++ lib.optionals (steam-runtime-wrapped-i686 != null) (map (x: "/steamrt/${steam-runtime-wrapped-i686.arch}/" + x) steam-runtime-wrapped-i686.libs);
+
+ # Zachtronics and a few other studios expect STEAM_LD_LIBRARY_PATH to be present
+ exportLDPath = ''
+ export LD_LIBRARY_PATH=/lib32:/lib64:${lib.concatStringsSep ":" ldPath}''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
+ export STEAM_LD_LIBRARY_PATH="$STEAM_LD_LIBRARY_PATH''${STEAM_LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
+ '';
+
+ setupSh = writeScript "setup.sh" ''
+ #!${runtimeShell}
+ '';
+
+ runSh = writeScript "run.sh" ''
+ #!${runtimeShell}
+ runtime_paths="/lib32:/lib64:${lib.concatStringsSep ":" ldPath}"
+ if [ "$1" == "--print-steam-runtime-library-paths" ]; then
+ echo "$runtime_paths"
+ exit 0
+ fi
+ export LD_LIBRARY_PATH="$runtime_paths''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
+ export STEAM_LD_LIBRARY_PATH="$STEAM_LD_LIBRARY_PATH''${STEAM_LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
+ exec "$@"
+ '';
+
+in buildFHSUserEnv rec {
+ name = "steam";
+
+ targetPkgs = pkgs: with pkgs; [
+ steamPackages.steam
+ # License agreement
+ gnome3.zenity
+ ] ++ commonTargetPkgs pkgs;
+
+ multiPkgs = pkgs: with pkgs; [
+ # These are required by steam with proper errors
+ xorg.libXcomposite
+ xorg.libXtst
+ xorg.libXrandr
+ xorg.libXext
+ xorg.libX11
+ xorg.libXfixes
+ libGL
+ libva
+
+ # Not formally in runtime but needed by some games
+ at-spi2-atk
+ at-spi2-core # CrossCode
+ gst_all_1.gstreamer
+ gst_all_1.gst-plugins-ugly
+ gst_all_1.gst-plugins-base
+ libdrm
+ mono
+ xorg.xkeyboardconfig
+ xorg.libpciaccess
+ udev # shadow of the tomb raider
+
+ ## screeps dependencies
+ gtk3
+ dbus
+ zlib
+ glib
+ atk
+ cairo
+ freetype
+ gdk-pixbuf
+ pango
+ fontconfig
+
+ # friends options won't display "Launch Game" without it
+ lsof
+
+ # called by steam's setup.sh
+ file
+
+ # Prison Architect
+ libGLU
+ libuuid
+ libbsd
+ alsaLib
+ ] ++ (if (!nativeOnly) then [
+ (steamPackages.steam-runtime-wrapped.override {
+ inherit runtimeOnly;
+ })
+ ] else [
+ # Required
+ glib
+ gtk2
+ bzip2
+ zlib
+ gdk-pixbuf
+
+ # Without these it silently fails
+ xorg.libXinerama
+ xorg.libXdamage
+ xorg.libXcursor
+ xorg.libXrender
+ xorg.libXScrnSaver
+ xorg.libXxf86vm
+ xorg.libXi
+ xorg.libSM
+ xorg.libICE
+ gnome2.GConf
+ freetype
+ (curl.override { gnutlsSupport = true; sslSupport = false; })
+ nspr
+ nss
+ fontconfig
+ cairo
+ pango
+ expat
+ dbus
+ cups
+ libcap
+ SDL2
+ libusb1
+ dbus-glib
+ libav
+ atk
+ # Only libraries are needed from those two
+ libudev0-shim
+ networkmanager098
+
+ # Verified games requirements
+ xorg.libXt
+ xorg.libXmu
+ xorg.libxcb
+ libogg
+ libvorbis
+ SDL
+ SDL2_image
+ glew110
+ openssl
+ libidn
+ tbb
+ wayland
+ mesa
+ libxkbcommon
+
+ # Other things from runtime
+ flac
+ freeglut
+ libjpeg
+ libpng12
+ libsamplerate
+ libmikmod
+ libtheora
+ libtiff
+ pixman
+ speex
+ SDL_image
+ SDL_ttf
+ SDL_mixer
+ SDL2_ttf
+ SDL2_mixer
+ libappindicator-gtk2
+ libcaca
+ libcanberra
+ libgcrypt
+ libvpx
+ librsvg
+ xorg.libXft
+ libvdpau
+ ] ++ steamPackages.steam-runtime-wrapped.overridePkgs) ++ extraLibraries pkgs;
+
+ extraBuildCommands = if (!nativeOnly) then ''
+ mkdir -p steamrt
+ ln -s ../lib/steam-runtime steamrt/${steam-runtime-wrapped.arch}
+ ${lib.optionalString (steam-runtime-wrapped-i686 != null) ''
+ ln -s ../lib32/steam-runtime steamrt/${steam-runtime-wrapped-i686.arch}
+ ''}
+ ln -s ${runSh} steamrt/run.sh
+ ln -s ${setupSh} steamrt/setup.sh
+ '' else ''
+ ln -s /usr/lib/libbz2.so usr/lib/libbz2.so.1.0
+ ${lib.optionalString (steam-runtime-wrapped-i686 != null) ''
+ ln -s /usr/lib32/libbz2.so usr/lib32/libbz2.so.1.0
+ ''}
+ '';
+
+ extraInstallCommands = ''
+ mkdir -p $out/share/applications
+ ln -s ${steam}/share/icons $out/share
+ ln -s ${steam}/share/pixmaps $out/share
+ sed "s,/usr/bin/steam,steam,g" ${steam}/share/applications/steam.desktop > $out/share/applications/steam.desktop
+ '';
+
+ profile = ''
+ # Workaround for issue #44254 (Steam cannot connect to friends network)
+ # https://github.com/NixOS/nixpkgs/issues/44254
+ if [ -z ''${TZ+x} ]; then
+ new_TZ="$(readlink -f /etc/localtime | grep -P -o '(?<=/zoneinfo/).*$')"
+ if [ $? -eq 0 ]; then
+ export TZ="$new_TZ"
+ fi
+ fi
+
+ export STEAM_RUNTIME=${if nativeOnly then "0" else "/steamrt"}
+ '' + extraProfile;
+
+ runScript = writeScript "steam-wrapper.sh" ''
+ #!${runtimeShell}
+ if [ -f /host/etc/NIXOS ]; then # Check only useful on NixOS
+ ${glxinfo-i686}/bin/glxinfo >/dev/null 2>&1
+ # If there was an error running glxinfo, we know something is wrong with the configuration
+ if [ $? -ne 0 ]; then
+ cat <<EOF > /dev/stderr
+ **
+ WARNING: Steam is not set up. Add the following options to /etc/nixos/configuration.nix
+ and then run \`sudo nixos-rebuild switch\`:
+ {
+ hardware.opengl.driSupport32Bit = true;
+ hardware.pulseaudio.support32Bit = true;
+ }
+ **
+ EOF
+ fi
+ fi
+ ${lib.optionalString (!nativeOnly) exportLDPath}
+ exec steam "$@"
+ '';
+
+ meta = steam.meta // {
+ broken = nativeOnly;
+ };
+
+ passthru.run = buildFHSUserEnv {
+ name = "steam-run";
+
+ targetPkgs = commonTargetPkgs;
+ inherit multiPkgs extraBuildCommands;
+
+ runScript = writeScript "steam-run" ''
+ #!${runtimeShell}
+ run="$1"
+ if [ "$run" = "" ]; then
+ echo "Usage: steam-run command-to-run args..." >&2
+ exit 1
+ fi
+ shift
+ ${lib.optionalString (!nativeOnly) exportLDPath}
+ exec -- "$run" "$@"
+ '';
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/steam/fonts.nix b/infra/libkookie/nixpkgs/pkgs/games/steam/fonts.nix
new file mode 100644
index 000000000000..44dde01a8a83
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/steam/fonts.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation {
+ name = "steam-fonts-1";
+
+ src = fetchurl {
+ url = "https://support.steampowered.com/downloads/1974-YFKL-4947/SteamFonts.zip";
+ sha256 = "1cgygmwich5f1jhhbmbkkpnzasjl8gy36xln76n6r2gjh6awqfx0";
+ };
+
+ buildInputs = [ unzip ];
+
+ sourceRoot = ".";
+
+ installPhase = ''
+ mkdir -p $out/share/fonts/truetype
+ cp -r *.TTF *.ttf $out/share/fonts/truetype
+ '';
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/steam/runtime-wrapped.nix b/infra/libkookie/nixpkgs/pkgs/games/steam/runtime-wrapped.nix
new file mode 100644
index 000000000000..8e4f5b866bbc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/steam/runtime-wrapped.nix
@@ -0,0 +1,45 @@
+{ stdenv, steamArch, lib, perl, pkgs, steam-runtime
+, runtimeOnly ? false
+}:
+
+let
+ overridePkgs = lib.optionals (!runtimeOnly) (with pkgs; [
+ libgpgerror
+ libpulseaudio
+ alsaLib
+ openalSoft
+ libva1
+ libvdpau
+ vulkan-loader
+ gcc.cc.lib
+ nss
+ nspr
+ xorg.libxcb
+ ]);
+
+ allPkgs = overridePkgs ++ [ steam-runtime ];
+
+ gnuArch = if steamArch == "amd64" then "x86_64-linux-gnu"
+ else if steamArch == "i386" then "i386-linux-gnu"
+ else abort "Unsupported architecture";
+
+ libs = [ "lib/${gnuArch}" "lib" "usr/lib/${gnuArch}" "usr/lib" ];
+ bins = [ "bin" "usr/bin" ];
+
+in stdenv.mkDerivation {
+ name = "steam-runtime-wrapped";
+
+ nativeBuildInputs = [ perl ];
+
+ builder = ./build-wrapped.sh;
+
+ passthru = {
+ inherit gnuArch libs bins overridePkgs;
+ arch = steamArch;
+ };
+
+ installPhase = ''
+ buildDir "${toString libs}" "${toString (map lib.getLib allPkgs)}"
+ buildDir "${toString bins}" "${toString (map lib.getBin allPkgs)}"
+ '';
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/steam/runtime.nix b/infra/libkookie/nixpkgs/pkgs/games/steam/runtime.nix
new file mode 100644
index 000000000000..4f373b9be30f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/steam/runtime.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+
+ name = "steam-runtime";
+ # from https://repo.steampowered.com/steamrt-images-scout/snapshots/
+ version = "0.20200720.0";
+
+ src = fetchurl {
+ url = "https://repo.steampowered.com/steamrt-images-scout/snapshots/${version}/steam-runtime.tar.xz";
+ sha256 = "03qdlr1xk84jb4c60ilis00vjhj70bxc0bbgk5g5b1883l2frljd";
+ name = "scout-runtime-${version}.tar.gz";
+ };
+
+ buildCommand = ''
+ mkdir -p $out
+ tar -C $out --strip=1 -x -f $src
+ '';
+
+ meta = with stdenv.lib; {
+ description = "The official runtime used by Steam";
+ homepage = "https://github.com/ValveSoftware/steam-runtime";
+ license = licenses.unfreeRedistributable; # Includes NVIDIA CG toolkit
+ maintainers = with maintainers; [ hrdinka abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/steam/steam.nix b/infra/libkookie/nixpkgs/pkgs/games/steam/steam.nix
new file mode 100644
index 000000000000..20ccba641e4a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/steam/steam.nix
@@ -0,0 +1,39 @@
+{stdenv, fetchurl, runtimeShell, traceDeps ? false}:
+
+let
+ traceLog = "/tmp/steam-trace-dependencies.log";
+ version = "1.0.0.61";
+
+in stdenv.mkDerivation {
+ pname = "steam-original";
+ inherit version;
+
+ src = fetchurl {
+ url = "https://repo.steampowered.com/steam/pool/steam/s/steam/steam_${version}.tar.gz";
+ sha256 = "0c5xy57gwr14vp3wy3jpqi5dl6y7n01p2dy4jlgl9bf9x7616r6n";
+ };
+
+ makeFlags = [ "DESTDIR=$(out)" "PREFIX=" ];
+
+ postInstall = ''
+ rm $out/bin/steamdeps
+ ${stdenv.lib.optionalString traceDeps ''
+ cat > $out/bin/steamdeps <<EOF
+ #!${runtimeShell}
+ echo \$1 >> ${traceLog}
+ cat \$1 >> ${traceLog}
+ echo >> ${traceLog}
+ EOF
+ chmod +x $out/bin/steamdeps
+ ''}
+ install -d $out/lib/udev/rules.d
+ install -m644 lib/udev/rules.d/*.rules $out/lib/udev/rules.d
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A digital distribution platform";
+ homepage = "http://store.steampowered.com/";
+ license = licenses.unfreeRedistributable;
+ maintainers = with maintainers; [ jagajaga ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/steam/steamcmd.nix b/infra/libkookie/nixpkgs/pkgs/games/steam/steamcmd.nix
new file mode 100644
index 000000000000..223dff332a70
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/steam/steamcmd.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, steam-run, bash, coreutils
+, steamRoot ? "~/.local/share/Steam"
+}:
+
+stdenv.mkDerivation {
+ pname = "steamcmd";
+ version = "20180104"; # According to steamcmd_linux.tar.gz mtime
+
+ src = fetchurl {
+ url = "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz";
+ sha256 = "0z0y0zqvhydmfc9y9vg5am0vz7m3gbj4l2dwlrfz936hpx301gyf";
+ };
+
+ # The source tarball does not have a single top-level directory.
+ preUnpack = ''
+ mkdir $name
+ cd $name
+ sourceRoot=.
+ '';
+
+ buildInputs = [ bash steam-run ];
+
+ dontBuild = true;
+
+ installPhase = ''
+ mkdir -p $out/share/steamcmd/linux32
+ install -Dm755 steamcmd.sh $out/share/steamcmd/steamcmd.sh
+ install -Dm755 linux32/* $out/share/steamcmd/linux32
+
+ mkdir -p $out/bin
+ substitute ${./steamcmd.sh} $out/bin/steamcmd \
+ --subst-var out \
+ --subst-var-by coreutils ${coreutils} \
+ --subst-var-by steamRoot "${steamRoot}" \
+ --subst-var-by steamRun ${steam-run}
+ chmod 0755 $out/bin/steamcmd
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Steam command-line tools";
+ homepage = "https://developer.valvesoftware.com/wiki/SteamCMD";
+ platforms = platforms.linux;
+ license = licenses.unfreeRedistributable;
+ maintainers = with maintainers; [ tadfisher ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/steam/steamcmd.sh b/infra/libkookie/nixpkgs/pkgs/games/steam/steamcmd.sh
new file mode 100644
index 000000000000..588badb41a1a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/steam/steamcmd.sh
@@ -0,0 +1,27 @@
+#!@bash@/bin/bash -e
+
+# Always run steamcmd in the user's Steam root.
+STEAMROOT=@steamRoot@
+
+# Add coreutils to PATH for mkdir, ln and cp used below
+PATH=$PATH${PATH:+:}@coreutils@/bin
+
+# Create a facsimile Steam root if it doesn't exist.
+if [ ! -e "$STEAMROOT" ]; then
+ mkdir -p "$STEAMROOT"/{appcache,config,logs,Steamapps/common}
+ mkdir -p ~/.steam
+ ln -sf "$STEAMROOT" ~/.steam/root
+ ln -sf "$STEAMROOT" ~/.steam/steam
+fi
+
+# Copy the system steamcmd install to the Steam root. If we don't do
+# this, steamcmd assumes the path to `steamcmd` is the Steam root.
+# Note that symlinks don't work here.
+if [ ! -e "$STEAMROOT/steamcmd.sh" ]; then
+ mkdir -p "$STEAMROOT/linux32"
+ # steamcmd.sh will replace these on first use
+ cp @out@/share/steamcmd/steamcmd.sh "$STEAMROOT/."
+ cp @out@/share/steamcmd/linux32/* "$STEAMROOT/linux32/."
+fi
+
+@steamRun@/bin/steam-run "$STEAMROOT/steamcmd.sh" "$@"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/stepmania/default.nix b/infra/libkookie/nixpkgs/pkgs/games/stepmania/default.nix
new file mode 100644
index 000000000000..f6cfb873709c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/stepmania/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, lib, fetchFromGitHub, cmake, nasm
+, gtk2, glib, ffmpeg, alsaLib, libmad, libogg, libvorbis
+, glew, libpulseaudio, udev
+}:
+
+stdenv.mkDerivation rec {
+ pname = "stepmania";
+ version = "5.1.0-b2";
+
+ src = fetchFromGitHub {
+ owner = "stepmania";
+ repo = "stepmania";
+ rev = "v${version}";
+ sha256 = "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn";
+ };
+
+ nativeBuildInputs = [ cmake nasm ];
+
+ buildInputs = [
+ gtk2 glib ffmpeg alsaLib libmad libogg libvorbis
+ glew libpulseaudio udev
+ ];
+
+ cmakeFlags = [
+ "-DWITH_SYSTEM_FFMPEG=1"
+ "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
+ "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
+ ];
+
+ postInstall = ''
+ mkdir -p $out/bin
+ ln -s $out/stepmania-5.1/stepmania $out/bin/stepmania
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with lib; {
+ homepage = "https://www.stepmania.com/";
+ description = "Free dance and rhythm game for Windows, Mac, and Linux";
+ platforms = platforms.linux;
+ license = licenses.mit; # expat version
+ maintainers = [ ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/stockfish/default.nix b/infra/libkookie/nixpkgs/pkgs/games/stockfish/default.nix
new file mode 100644
index 000000000000..bdea1db9b3e9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/stockfish/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl }:
+
+let arch = if stdenv.isx86_64 then "x86-64" else
+ if stdenv.isi686 then "x86-32" else
+ "unknown";
+
+ version = "12";
+
+ nnueFile = "nn-82215d0fd0df.nnue";
+ nnue = fetchurl {
+ name = nnueFile;
+ url = "https://tests.stockfishchess.org/api/nn/${nnueFile}";
+ sha256 = "1r4yqrh4di05syyhl84hqcz84djpbd605b27zhbxwg6zs07ms8c2";
+ };
+in
+
+stdenv.mkDerivation {
+ pname = "stockfish";
+ inherit version;
+
+ src = fetchurl {
+ url = "https://github.com/official-stockfish/Stockfish/archive/sf_${version}.tar.gz";
+ sha256 = "16980aicm5i6i9252239q4f9bcxg1gnqkv6nphrmpz4drg8i3v6i";
+ };
+
+ postUnpack = ''
+ sourceRoot+=/src
+ echo ${nnue}
+ cp "${nnue}" "$sourceRoot/${nnueFile}"
+ '';
+
+ makeFlags = [ "PREFIX=$(out)" "ARCH=${arch}" ];
+ buildFlags = [ "build" ];
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ homepage = "https://stockfishchess.org/";
+ description = "Strong open source chess engine";
+ longDescription = ''
+ Stockfish is one of the strongest chess engines in the world. It is also
+ much stronger than the best human chess grandmasters.
+ '';
+ maintainers = with maintainers; [ luispedro peti ];
+ platforms = ["x86_64-linux" "i686-linux"];
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/stuntrally/default.nix b/infra/libkookie/nixpkgs/pkgs/games/stuntrally/default.nix
new file mode 100644
index 000000000000..98a3ca883178
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/stuntrally/default.nix
@@ -0,0 +1,43 @@
+{ fetchurl, stdenv, cmake, boost, ogre, mygui, ois, SDL2, libvorbis, pkgconfig
+, makeWrapper, enet, libXcursor, bullet, openal }:
+
+stdenv.mkDerivation rec {
+ pname = "stunt-rally";
+ version = "2.6.1";
+
+ src = fetchurl {
+ url = "https://github.com/stuntrally/stuntrally/archive/${version}.tar.gz";
+ sha256 = "1zxq3x2g9pzafa2awx9jzqd33z6gnqj231cs07paxzrm89y51w4v";
+ };
+
+ tracks = fetchurl {
+ url = "https://github.com/stuntrally/tracks/archive/${version}.tar.gz";
+ sha256 = "0x6lgpa4c2grl0vrhqrcs7jcysa3mmvpdl1v5xa0dsf6vkvfr0zs";
+ };
+
+ # include/OGRE/OgreException.h:265:126: error: invalid conversion from
+ # 'int' to 'Ogre::Exception::ExceptionCodes' [-fpermissive]
+ NIX_CFLAGS_COMPILE="-fpermissive";
+
+ preConfigure = ''
+ pushd data
+ tar xf ${tracks}
+ mv tracks-${version} tracks
+ popd
+ '';
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ cmake boost ogre mygui ois SDL2 libvorbis
+ makeWrapper enet libXcursor bullet openal
+ ];
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Stunt Rally game with Track Editor, based on VDrift and OGRE";
+ homepage = "http://stuntrally.tuxfamily.org/";
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ pSub ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/super-tux-kart/default.nix b/infra/libkookie/nixpkgs/pkgs/games/super-tux-kart/default.nix
new file mode 100644
index 000000000000..b3a7966071a7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/super-tux-kart/default.nix
@@ -0,0 +1,92 @@
+{ lib, stdenv, fetchFromGitHub, fetchsvn, cmake, pkgconfig, makeWrapper
+, openal, freealut, libGLU, libGL, libvorbis, libogg, gettext, curl, freetype, glew
+, fribidi, libtool, bluez, libjpeg, libpng, zlib, libX11, libXrandr, harfbuzz
+, mcpp, wiiuse, angelscript
+}:
+let
+ dir = "stk-code";
+ assets = fetchsvn {
+ url = "https://svn.code.sf.net/p/supertuxkart/code/stk-assets";
+ rev = "18212";
+ sha256 = "1dyj8r5rfifhnhayga8w8irkpa99vw57xjmy74cp8xz8g7zvdzqf";
+ name = "stk-assets";
+ };
+
+ # List of bundled libraries in stk-code/lib to keep
+ # Those are the libraries that cannot be replaced
+ # with system packages.
+ bundledLibraries = [
+ # Bullet 2.87 is incompatible (bullet 2.79 needed whereas 2.87 is packaged)
+ # The api changed in a lot of classes, too much work to adapt
+ "bullet"
+ # Upstream Libenet doesn't yet support IPv6,
+ # So we will use the bundled libenet which
+ # has been fixed to support it.
+ "enet"
+ # Internal library of STK, nothing to do about it
+ "graphics_utils"
+ # This irrlicht is bundled with cmake
+ # whereas upstream irrlicht still uses
+ # archaic Makefiles, too complicated to switch to.
+ "irrlicht"
+ # Not packaged to this date
+ "libraqm"
+ # Not packaged to this date
+ "libsquish"
+ ];
+in stdenv.mkDerivation rec {
+
+ pname = "supertuxkart";
+ version = "1.1";
+
+ src = fetchFromGitHub {
+ owner = "supertuxkart";
+ repo = "stk-code";
+ rev = version;
+ sha256 = "01vxxl94583ixswzmi4caz8dk64r56pn3zxh7v63zml60yfvxbvp";
+ name = dir;
+ };
+
+ # Deletes all bundled libs in stk-code/lib except those
+ # That couldn't be replaced with system packages
+ postPatch = ''
+ find lib -maxdepth 1 -type d | egrep -v "^lib$|${(lib.concatStringsSep "|" bundledLibraries)}" | xargs -n1 -L1 -r -I{} rm -rf {}
+ '';
+
+ nativeBuildInputs = [ cmake gettext libtool pkgconfig makeWrapper ];
+
+ buildInputs = [
+ libX11 libXrandr
+ openal freealut libGLU libGL libvorbis libogg zlib freetype glew
+ curl fribidi bluez libjpeg libpng harfbuzz
+ mcpp wiiuse angelscript
+ ];
+
+ cmakeFlags = [
+ "-DBUILD_RECORDER=OFF" # libopenglrecorder is not in nixpkgs
+ "-DUSE_SYSTEM_ANGELSCRIPT=OFF" # doesn't work with 2.31.2 or 2.32.0
+ "-DCHECK_ASSETS=OFF"
+ "-DUSE_SYSTEM_WIIUSE=ON"
+ "-DUSE_SYSTEM_ANGELSCRIPT=ON"
+ ];
+
+ # Obtain the assets directly from the fetched store path, to avoid duplicating assets across multiple engine builds
+ preFixup = ''
+ wrapProgram $out/bin/supertuxkart --set-default SUPERTUXKART_ASSETS_DIR "${assets}"
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with lib; {
+ description = "A Free 3D kart racing game";
+ longDescription = ''
+ SuperTuxKart is a Free 3D kart racing game, with many tracks,
+ characters and items for you to try, similar in spirit to Mario
+ Kart.
+ '';
+ homepage = "https://supertuxkart.net/";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ pyrolagus peterhoeg ];
+ platforms = with platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/supertux/default.nix b/infra/libkookie/nixpkgs/pkgs/games/supertux/default.nix
new file mode 100644
index 000000000000..68b49fd55172
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/supertux/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, cmake, pkgconfig, SDL2, SDL2_image , curl
+, libogg, libvorbis, libGLU, libGL, openal, boost, glew
+, libpng, freetype
+}:
+
+stdenv.mkDerivation rec {
+ pname = "supertux";
+ version = "0.6.2";
+
+ src = fetchurl {
+ url = "https://github.com/SuperTux/supertux/releases/download/v${version}/SuperTux-v${version}-Source.tar.gz";
+ sha256 = "167m3z4m8n76dvbv42m1fnvabpbpsxvr28zk9641916jl9pfba96";
+ };
+
+ nativeBuildInputs = [ pkgconfig cmake ];
+
+ buildInputs = [ SDL2 SDL2_image curl libogg libvorbis libGLU libGL openal boost glew
+ libpng freetype
+ ];
+
+ cmakeFlags = [ "-DENABLE_BOOST_STATIC_LIBS=OFF" ];
+
+ postInstall = ''
+ mkdir $out/bin
+ ln -s $out/games/supertux2 $out/bin
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Classic 2D jump'n run sidescroller game";
+ homepage = "http://supertux.github.io/";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ pSub ];
+ platforms = with platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/system-syzygy/default.nix b/infra/libkookie/nixpkgs/pkgs/games/system-syzygy/default.nix
new file mode 100644
index 000000000000..4343a27fb499
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/system-syzygy/default.nix
@@ -0,0 +1,43 @@
+{lib, rustPlatform, fetchFromGitHub, fetchurl, SDL2, makeWrapper, makeDesktopItem}:
+
+let
+ desktopFile = makeDesktopItem {
+ name = "system-syzygy";
+ exec = "@out@/bin/syzygy";
+ comment = "A puzzle game";
+ desktopName = "System Syzygy";
+ categories = "Game;";
+ };
+in
+rustPlatform.buildRustPackage rec {
+ pname = "system-syzygy";
+ version = "1.0.1";
+
+ src = fetchFromGitHub {
+ owner = "mdsteele";
+ repo = "syzygy";
+ rev = "5ba148fed7aae14bf35108d7303e4194e8ffe5e8";
+ sha256 = "07mzwx8ql33q865snnw4gm3dgf0mnm60lnq1f5fgas2yjy9g9vwa";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+ buildInputs = [ SDL2 ];
+
+ cargoSha256 = "001cwdq8zxji56yahwfsydi7s0j7c5zsip60lxk3qmn078wcipdp";
+
+ postInstall = ''
+ mkdir -p $out/share/syzygy/
+ cp -r ${src}/data/* $out/share/syzygy/
+ wrapProgram $out/bin/syzygy --set SYZYGY_DATA_DIR $out/share/syzygy
+ mkdir -p $out/share/applications
+ substituteAll ${desktopFile}/share/applications/system-syzygy.desktop $out/share/applications/system-syzygy.desktop
+ '';
+
+
+ meta = with lib; {
+ description = "A story and a puzzle game, where you solve a variety of puzzle";
+ homepage = "https://mdsteele.games/syzygy";
+ license = licenses.gpl3Plus;
+ maintainers = [ maintainers.marius851000 ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/t4kcommon/default.nix b/infra/libkookie/nixpkgs/pkgs/games/t4kcommon/default.nix
new file mode 100644
index 000000000000..997ce72db33c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/t4kcommon/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, fetchurl, cmake, pkgconfig, SDL, SDL_image, SDL_mixer, SDL_net, SDL_ttf, libpng, librsvg, libxml2 }:
+
+stdenv.mkDerivation rec {
+ version = "0.1.1";
+ pname = "t4kcommon";
+
+ src = fetchFromGitHub {
+ owner = "tux4kids";
+ repo = "t4kcommon";
+ rev = "upstream/${version}";
+ sha256 = "13q02xpmps9qg8zrzzy2gzv4a6afgi28lxk4z242j780v0gphchp";
+ };
+
+ patches = [
+ # patch from debian to support libpng16 instead of libpng12
+ (fetchurl {
+ url = "https://salsa.debian.org/tux4kids-pkg-team/t4kcommon/raw/f7073fa384f5a725139f54844e59b57338b69dc7/debian/patches/libpng16.patch";
+ sha256 = "1lcpkdy5gvxgljg1vkrxych74amq0gramb1snj2831dam48is054";
+ })
+ ];
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+ buildInputs = [ SDL SDL_image SDL_mixer SDL_net SDL_ttf libpng librsvg libxml2 ];
+
+ meta = with stdenv.lib; {
+ description = "A library of code shared between tuxmath and tuxtype";
+ homepage = "https://github.com/tux4kids/t4kcommon";
+ license = licenses.gpl3Plus;
+ maintainers = [ maintainers.aanderse ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/taisei/0001-lto-fix.patch b/infra/libkookie/nixpkgs/pkgs/games/taisei/0001-lto-fix.patch
new file mode 100644
index 000000000000..eed7b845f53c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/taisei/0001-lto-fix.patch
@@ -0,0 +1,13 @@
+diff --git a/meson.build b/meson.build
+index 80aa58d..c7e9d0a 100644
+--- a/meson.build
++++ b/meson.build
+@@ -17,7 +17,7 @@ project('taisei', 'c',
+ # You may want to change these for a debug build dir
+ 'buildtype=release',
+ 'strip=true',
+- 'b_lto=true',
++ 'b_lto=false',
+ 'b_ndebug=if-release',
+ ]
+ )
diff --git a/infra/libkookie/nixpkgs/pkgs/games/taisei/default.nix b/infra/libkookie/nixpkgs/pkgs/games/taisei/default.nix
new file mode 100644
index 000000000000..3c4d0df2b036
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/taisei/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl
+# Build depends
+, docutils, meson, ninja, pkgconfig, python3
+# Runtime depends
+, glfw, SDL2, SDL2_mixer
+, freetype, libpng, libwebp, libzip, zlib
+}:
+
+stdenv.mkDerivation rec {
+ pname = "taisei";
+ version = "1.3.1";
+
+ src = fetchurl {
+ url = "https://github.com/taisei-project/${pname}/releases/download/v${version}/${pname}-v${version}.tar.xz";
+ sha256 = "11f9mlqmzy1lszwcc1nsbar9q1hs4ml6pbm52hqfd4q0f4x3ln46";
+ };
+
+ nativeBuildInputs = [
+ docutils meson ninja pkgconfig python3
+ ];
+
+ buildInputs = [
+ glfw SDL2 SDL2_mixer
+ freetype libpng libwebp libzip zlib
+ ];
+
+ patches = [ ./0001-lto-fix.patch ];
+
+ preConfigure = ''
+ patchShebangs .
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A free and open-source Touhou Project clone and fangame";
+ longDescription = ''
+ Taisei is an open clone of the TÅhÅ Project series. TÅhÅ is a one-man
+ project of shoot-em-up games set in an isolated world full of Japanese
+ folklore.
+ '';
+ homepage = "https://taisei-project.org/";
+ license = [ licenses.mit licenses.cc-by-40 ];
+ maintainers = [ maintainers.lambda-11235 ];
+ platforms = platforms.all;
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tcl2048/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tcl2048/default.nix
new file mode 100644
index 000000000000..765c50149ace
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tcl2048/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, tcl, tcllib, runtimeShell }:
+
+stdenv.mkDerivation {
+ name = "tcl2048-0.4.0";
+
+ src = fetchurl {
+ url = "https://raw.githubusercontent.com/dbohdan/2048.tcl/v0.4.0/2048.tcl";
+ sha256 = "53f5503efd7f029b2614b0f9b1e3aac6c0342735a3c9b811d74a5135fee3e89e";
+ };
+
+ phases = "installPhase";
+
+ installPhase = ''
+ mkdir -pv $out/bin
+ cp $src $out/2048.tcl
+ cat > $out/bin/2048 << EOF
+ #!${runtimeShell}
+
+ # wrapper for tcl2048
+ export TCLLIBPATH="${tcllib}/lib/tcllib${tcllib.version}"
+ ${tcl}/bin/tclsh $out/2048.tcl
+ EOF
+
+ chmod +x $out/bin/2048
+ '';
+
+ meta = {
+ homepage = "https://github.com/dbohdan/2048.tcl";
+ description = "The game of 2048 implemented in Tcl";
+ license = stdenv.lib.licenses.mit;
+ platforms = stdenv.lib.platforms.all;
+ maintainers = with stdenv.lib.maintainers; [ dbohdan ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tdm/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tdm/default.nix
new file mode 100644
index 000000000000..98b7ecdc4778
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tdm/default.nix
@@ -0,0 +1,105 @@
+{ stdenv, fetchurl, binutils-unwrapped, sconsPackages, gnum4, p7zip, glibc_multi, mesa
+, xorg, libGLU, libGL, openal
+, lib, makeWrapper, makeDesktopItem }:
+
+let
+ pname = "tdm";
+ version = "2.08";
+
+ desktop = makeDesktopItem {
+ desktopName = pname;
+ name = pname;
+ exec = "@out@/bin/${pname}";
+ icon = pname;
+ terminal = "false";
+ comment = "The Dark Mod - stealth FPS inspired by the Thief series";
+ type = "Application";
+ categories = "Game;";
+ genericName = pname;
+ fileValidation = false;
+ };
+in stdenv.mkDerivation {
+ name = "${pname}-${version}";
+ src = fetchurl {
+ url = "https://www.thedarkmod.com/sources/thedarkmod.${version}.src.7z";
+ sha256 = "0bmv07j6s6q3m7hnpx7cwrycjkbvlf0y9sg9migakni0jg9yz5ps";
+ };
+ nativeBuildInputs = [
+ p7zip sconsPackages.scons_3_1_2 gnum4 makeWrapper
+ ];
+ buildInputs = [
+ glibc_multi mesa.dev xorg.libX11.dev openal
+ xorg.libXext.dev xorg.libXxf86vm.dev
+ libGL libGLU
+ ];
+ unpackPhase = ''
+ 7z x $src
+ '';
+
+ # I'm pretty sure there's a better way to build 2 targets than a random hook
+ preBuild = ''
+ pushd tdm_update
+ scons BUILD=release TARGET_ARCH=x64
+ install -Dm755 bin/tdm_update.linux64 $out/share/libexec/tdm_update.linux
+ popd
+ '';
+
+ # why oh why can it find ld but not strip?
+ postPatch = ''
+ sed -i 's!strip \$!${binutils-unwrapped}/bin/strip $!' SConstruct
+ # This adds math.h needed for math::floor
+ sed -i 's|#include "Util.h"|#include "Util.h"\n#include <math.h>|' tdm_update/ConsoleUpdater.cpp
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ install -Dm644 ${desktop}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop
+ substituteInPlace $out/share/applications/${pname}.desktop --subst-var out
+ install -Dm755 thedarkmod.x64 $out/share/libexec/tdm
+
+ # The package doesn't install assets, these get installed by running tdm_update.linux
+ # Provide a script that runs tdm_update.linux on first launch
+ install -Dm755 <(cat <<'EOF'
+#!/bin/sh
+set -e
+DIR="$HOME/.local/share/tdm"
+mkdir -p "$DIR"
+cd "$DIR"
+exec "PKGDIR/share/libexec/tdm_update.linux" --noselfupdate
+EOF
+ ) $out/bin/tdm_update
+
+ install -Dm755 <(cat <<'EOF'
+#!/bin/sh
+set -e
+DIR="$HOME/.local/share/tdm"
+if [ ! -d "$DIR" ]; then
+ echo "Please run tdm_update to (re)download game data"
+else
+ cd "$DIR"
+ exec "PKGDIR/share/libexec/tdm"
+fi
+EOF
+ ) $out/bin/tdm
+ sed -i "s!PKGDIR!$out!g" $out/bin/tdm_update
+ sed -i "s!PKGDIR!$out!g" $out/bin/tdm
+
+ runHook postInstall
+ '';
+
+ postInstall = ''
+ wrapProgram $out/bin/tdm --suffix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libGL libGLU ]}
+ '';
+
+ enableParallelBuilding = true;
+ sconsFlags = [ "BUILD=release" "TARGET_ARCH=x64" ];
+ NIX_CFLAGS_COMPILE = "-Wno-error=format-security";
+ meta = with stdenv.lib; {
+ description = "The Dark Mod - stealth FPS inspired by the Thief series";
+ homepage = "http://www.thedarkmod.com";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ cizra ];
+ platforms = with platforms; [ "x86_64-linux" ]; # tdm also supports x86, but I don't have a x86 install at hand to test.
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/teetertorture/default.nix b/infra/libkookie/nixpkgs/pkgs/games/teetertorture/default.nix
new file mode 100644
index 000000000000..a568fd79085a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/teetertorture/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, SDL, SDL_image, SDL_mixer}:
+
+stdenv.mkDerivation {
+ name = "teeter-torture-20051018";
+ src = fetchurl {
+ url = "ftp://ftp.tuxpaint.org/unix/x/teetertorture/source/teetertorture-2005-10-18.tar.gz";
+ sha256 = "175gdbkx3m82icyzvwpyzs4v2fd69c695k5n8ca0lnjv81wnw2hr";
+ };
+
+ buildInputs = [ SDL SDL_image SDL_mixer];
+
+ configurePhase = ''
+ sed -i s,data/,$out/share/teetertorture/, src/teetertorture.c
+ '';
+
+ patchPhase = ''
+ sed -i '/free(home)/d' src/teetertorture.c
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/teetertorture
+ cp teetertorture $out/bin
+ cp -R data/* $out/share/teetertorture
+ '';
+
+ meta = {
+ homepage = "http://www.newbreedsoftware.com/teetertorture/";
+ description = "Simple shooting game with your cannon is sitting atop a teeter totter";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/teeworlds/default.nix b/infra/libkookie/nixpkgs/pkgs/games/teeworlds/default.nix
new file mode 100644
index 000000000000..9ff50d533bec
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/teeworlds/default.nix
@@ -0,0 +1,57 @@
+{ fetchFromGitHub, stdenv, cmake, pkgconfig, python3, alsaLib
+, libX11, libGLU, SDL2, lua5_3, zlib, freetype, wavpack, icoutils
+, nixosTests
+}:
+
+stdenv.mkDerivation rec {
+ pname = "teeworlds";
+ version = "0.7.5";
+
+ src = fetchFromGitHub {
+ owner = "teeworlds";
+ repo = "teeworlds";
+ rev = version;
+ sha256 = "1l19ksmimg6b8zzjy0skyhh7z11ql7n5gvilkv7ay5x2b9ndbqwz";
+ fetchSubmodules = true;
+ };
+
+ postPatch = ''
+ # set compiled-in DATA_DIR so resources can be found
+ substituteInPlace src/engine/shared/storage.cpp \
+ --replace '#define DATA_DIR "data"' \
+ '#define DATA_DIR "${placeholder "out"}/share/teeworlds/data"'
+ '';
+
+ nativeBuildInputs = [ cmake pkgconfig icoutils ];
+
+ buildInputs = [
+ python3 alsaLib libX11 libGLU SDL2 lua5_3 zlib freetype wavpack
+ ];
+
+ postInstall = ''
+ # Convert and install desktop icon
+ mkdir -p $out/share/pixmaps
+ icotool --extract --index 1 --output $out/share/pixmaps/teeworlds.png $src/other/icons/teeworlds.ico
+
+ # Install menu item
+ install -D $src/other/teeworlds.desktop $out/share/applications/teeworlds.desktop
+ '';
+
+ passthru.tests.teeworlds = nixosTests.teeworlds;
+
+ meta = {
+ description = "Retro multiplayer shooter game";
+
+ longDescription = ''
+ Teeworlds is a free online multiplayer game, available for all
+ major operating systems. Battle with up to 12 players in a
+ variety of game modes, including Team Deathmatch and Capture The
+ Flag. You can even design your own maps!
+ '';
+
+ homepage = "https://teeworlds.com/";
+ license = "BSD-style, see `license.txt'";
+ maintainers = with stdenv.lib.maintainers; [ astsmtl ];
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tennix/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tennix/default.nix
new file mode 100644
index 000000000000..56ac0a2faf4e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tennix/default.nix
@@ -0,0 +1,26 @@
+{stdenv, fetchurl, SDL, SDL_mixer, SDL_image, SDL_ttf, SDL_net, python } :
+
+stdenv.mkDerivation rec {
+ name = "tennix-1.1";
+ src = fetchurl {
+ url = "https://icculus.org/tennix/downloads/${name}.tar.gz";
+ sha256 = "0np5kw1y7i0z0dsqx4r2nvmq86qj8hv3mmgavm3hxraqnds5z8cm";
+ };
+
+ buildInputs = [ python SDL SDL_mixer SDL_image SDL_ttf SDL_net ];
+
+ patches = [ ./fix_FTBFS.patch ];
+
+ preConfigure = ''
+ makeFlags="PREFIX=$out"
+ installFlags="PREFIX=$out install"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "http://icculus.org/tennix/";
+ description = "Classic Championship Tour 2011";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ pSub ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tennix/fix_FTBFS.patch b/infra/libkookie/nixpkgs/pkgs/games/tennix/fix_FTBFS.patch
new file mode 100644
index 000000000000..d58aa3a8129f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tennix/fix_FTBFS.patch
@@ -0,0 +1,288 @@
+From: Thomas Perl <m@thp.io>
+Description: Fix FTBFS
+Origin: upstream, https://repo.or.cz/w/tennix.git/commitdiff/6144cb7626dfdc0820a0036af83a531e8e68bae6
+Bug-Debian: https://bugs.debian.org/664907
+
+--- tennix-1.1.orig/archivetool.cc
++++ tennix-1.1/archivetool.cc
+@@ -24,6 +24,7 @@
+ #include <assert.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <libgen.h>
+ #include <sys/stat.h>
+
+ #include "archive.hh"
+--- tennix-1.1.orig/game.c
++++ tennix-1.1/game.c
+@@ -388,6 +388,9 @@ void step(GameState* s) {
+ s->ball.move_x = 4.0 + 3.0*PLAYER(s, p).power/PLAYER_POWER_MAX;
+ s->ball.move_z = 1.1*PLAYER(s, p).power/PLAYER_POWER_MAX;
+ break;
++ default:
++ assert(false);
++ break;
+ }
+ s->ball.move_y = get_move_y( s, p);
+ s->sound_events ^= SOUND_EVENT_RACKET;
+--- tennix-1.1.orig/network.h
++++ tennix-1.1/network.h
+@@ -103,19 +103,19 @@ void
+ net_serialize_ball(const Ball* src, NetworkBall* dest);
+
+ void
+-net_unserialize_ball(const NetworkBall* src, Ball* dest);
++net_unserialize_ball(NetworkBall* src, Ball* dest);
+
+ void
+ net_serialize_player(const Player* src, NetworkPlayer* dest);
+
+ void
+-net_unserialize_player(const NetworkPlayer* src, Player* dest);
++net_unserialize_player(NetworkPlayer* src, Player* dest);
+
+ void
+ net_serialize_gamestate(const GameState* src, NetworkGameState* dest);
+
+ void
+-net_unserialize_gamestate(const NetworkGameState* src, GameState* dest);
++net_unserialize_gamestate(NetworkGameState* src, GameState* dest);
+
+ #endif
+
+--- tennix-1.1.orig/locations.h
++++ tennix-1.1/locations.h
+@@ -155,7 +155,7 @@ static Location locations[] = {
+ #endif
+
+ /* End marker */
+- { NULL, NULL, NULL, 0, 0, NULL, 0, 0, 0, 0, false }
++ { NULL, NULL, NULL, 0, 0, NULL, 0, 0, 0, 0, false, false, 0, 0 }
+ };
+
+ unsigned int location_count()
+--- tennix-1.1.orig/tennix.cc
++++ tennix-1.1/tennix.cc
+@@ -461,7 +461,7 @@ int main( int argc, char** argv) {
+ start_fade();
+ gameloop(current_game, connection);
+ SDL_Delay(150);
+- while(SDL_PollEvent(&e));
++ while (SDL_PollEvent(&e)) {};
+ #ifdef ENABLE_FPS_LIMIT
+ frames = 0;
+ ft = SDL_GetTicks();
+--- tennix-1.1.orig/SDL_rotozoom.c
++++ tennix-1.1/SDL_rotozoom.c
+@@ -365,6 +365,9 @@ int zoomSurfaceRGBA(SDL_Surface * src, S
+
+ int zoomSurfaceY(SDL_Surface * src, SDL_Surface * dst, int flipx, int flipy)
+ {
++ (void)flipx;
++ (void)flipy;
++
+ Uint32 x, y, sx, sy, *sax, *say, *csax, *csay, csx, csy;
+ Uint8 *sp, *dp, *csp;
+ int dgap;
+@@ -393,7 +396,7 @@ int zoomSurfaceY(SDL_Surface * src, SDL_
+ */
+ csx = 0;
+ csax = sax;
+- for (x = 0; x < dst->w; x++) {
++ for (x = 0; x < (Uint32)dst->w; x++) {
+ csx += sx;
+ *csax = (csx >> 16);
+ csx &= 0xffff;
+@@ -401,7 +404,7 @@ int zoomSurfaceY(SDL_Surface * src, SDL_
+ }
+ csy = 0;
+ csay = say;
+- for (y = 0; y < dst->h; y++) {
++ for (y = 0; y < (Uint32)dst->h; y++) {
+ csy += sy;
+ *csay = (csy >> 16);
+ csy &= 0xffff;
+@@ -410,13 +413,13 @@ int zoomSurfaceY(SDL_Surface * src, SDL_
+
+ csx = 0;
+ csax = sax;
+- for (x = 0; x < dst->w; x++) {
++ for (x = 0; x < (Uint32)dst->w; x++) {
+ csx += (*csax);
+ csax++;
+ }
+ csy = 0;
+ csay = say;
+- for (y = 0; y < dst->h; y++) {
++ for (y = 0; y < (Uint32)dst->h; y++) {
+ csy += (*csay);
+ csay++;
+ }
+@@ -432,10 +435,10 @@ int zoomSurfaceY(SDL_Surface * src, SDL_
+ * Draw
+ */
+ csay = say;
+- for (y = 0; y < dst->h; y++) {
++ for (y = 0; y < (Uint32)dst->h; y++) {
+ csax = sax;
+ sp = csp;
+- for (x = 0; x < dst->w; x++) {
++ for (x = 0; x < (Uint32)dst->w; x++) {
+ /*
+ * Draw
+ */
+@@ -801,6 +804,8 @@ SDL_Surface* rotateSurface90Degrees(SDL_
+ void rotozoomSurfaceSizeTrig(int width, int height, double angle, double zoomx, double zoomy, int *dstwidth, int *dstheight,
+ double *canglezoom, double *sanglezoom)
+ {
++ (void)zoomy;
++
+ double x, y, cx, cy, sx, sy;
+ double radangle;
+ int dstwidthhalf, dstheighthalf;
+--- tennix-1.1.orig/network.c
++++ tennix-1.1/network.c
+@@ -183,7 +183,7 @@ net_serialize_ball(const Ball* src, Netw
+ }
+
+ void
+-net_unserialize_ball(const NetworkBall* src, Ball* dest)
++net_unserialize_ball(NetworkBall* src, Ball* dest)
+ {
+ assert(src != NULL && dest != NULL);
+ dest->x = unpack_float(SDLNet_Read32(&(src->x)), -WIDTH, WIDTH*2);
+@@ -213,7 +213,7 @@ net_serialize_player(const Player* src,
+ }
+
+ void
+-net_unserialize_player(const NetworkPlayer* src, Player* dest)
++net_unserialize_player(NetworkPlayer* src, Player* dest)
+ {
+ assert(src != NULL && dest != NULL);
+ dest->x = unpack_float(SDLNet_Read32(&(src->x)), 0, WIDTH*1.2);
+@@ -221,7 +221,7 @@ net_unserialize_player(const NetworkPlay
+ dest->power = unpack_float(SDLNet_Read32(&(src->power)), 0, 110);
+ dest->use_power = src->use_power;
+ dest->score = src->score;
+- dest->desire = src->desire;
++ dest->desire = (PlayerDesire)src->desire;
+ dest->game = src->game;
+ memcpy(dest->sets, src->sets, sizeof(unsigned char)*(SETS_TO_WIN*2));
+ dest->accelerate = unpack_float(SDLNet_Read32(&(src->accelerate)), 0, 200);
+@@ -250,7 +250,7 @@ net_serialize_gamestate(const GameState*
+ }
+
+ void
+-net_unserialize_gamestate(const NetworkGameState* src, GameState* dest)
++net_unserialize_gamestate(NetworkGameState* src, GameState* dest)
+ {
+ int p;
+
+--- tennix-1.1.orig/makefile
++++ tennix-1.1/makefile
+@@ -27,24 +27,23 @@ ifeq ($(MKCALLGRAPH),1)
+ LD = nccld
+ endif
+
+-RELEASE = 1.1
+-
+-UNAME = $(shell uname)
++RELEASE = 1.1.1
+
+ PREFIX ?= /usr/local
+ BINDIR ?= $(PREFIX)/bin
+ DATAROOTDIR ?= $(PREFIX)/share
+ DATADIR ?= $(DATAROOTDIR)/games
+
+-LIBS =
+-CFLAGS += -W -Wall -ansi -pedantic -Wcast-qual -Wwrite-strings -DVERSION=\"$(RELEASE)\" -O2 -DPREFIX=\"$(PREFIX)\" -g
++CFLAGS += -W -Wall -DVERSION=\"$(RELEASE)\" -O2 -DPREFIX=\"$(PREFIX)\"
+ CXXFLAGS += $(CFLAGS)
+
+ USE_PYTHON ?= 1
+
+ ifeq ($(USE_PYTHON),1)
+- CFLAGS += `python-config --includes` -DTENNIX_PYTHON
+- LIBS += `python-config --libs`
++ PYTHON_INCLUDES := $(shell python-config --includes)
++ PYTHON_LIBS := $(shell python-config --libs)
++ CFLAGS += $(PYTHON_INCLUDES) -DTENNIX_PYTHON
++ LIBS += $(PYTHON_LIBS)
+ endif
+
+ ifeq ($(NONFREE_LOCATIONS),1)
+@@ -67,17 +66,14 @@ ifeq ($(MAEMO),1)
+ CFLAGS += -DMAEMO
+ endif
+
+-ifeq ($(UNAME),Darwin)
+- SDLLIBS=$$(sdl-config --prefix)/lib
+- LIBS += $$(sdl-config --static-libs) $(SDLLIBS)/libSDL_mixer.a $(SDLLIBS)/libSDL_image.a $(SDLLIBS)/libSDL_ttf.a $(SDLLIBS)/libSDL_net.a $$(freetype-config --prefix)/lib/libfreetype.a
+- CFLAGS += $$(sdl-config --cflags) -lz
+-else
+- LIBS += $$(sdl-config --libs) -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_net
+- CFLAGS += $$(sdl-config --cflags)
+-endif
++SDL_LIBS := $(shell sdl-config --libs)
++SDL_CFLAGS := $(shell sdl-config --cflags)
++
++LIBS += $(SDL_LIBS) -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_net
++CFLAGS += $(SDL_CFLAGS)
+
+-SRC = tennix.cc game.c graphics.cc input.c util.c sound.cc animation.c network.c
+ OBJ = tennix.o game.o graphics.o input.o util.o sound.o animation.o archive.o SDL_rotozoom.o network.o
++
+ ifeq ($(MSYSTEM),MINGW32)
+ OBJ += tennixres.o
+ endif
+--- tennix-1.1.orig/game.h
++++ tennix-1.1/game.h
+@@ -98,6 +98,13 @@ typedef struct {
+ bool inhibit_gravity;
+ } Ball;
+
++enum PlayerDesire {
++ DESIRE_NORMAL,
++ DESIRE_TOPSPIN,
++ DESIRE_SMASH,
++ DESIRE_MAX
++};
++
+ typedef struct {
+ InputDevice* input;
+ char input_device_index;
+@@ -106,9 +113,9 @@ typedef struct {
+ float power;
+ bool use_power;
+ unsigned char score;
+- unsigned char desire;
++ PlayerDesire desire;
+ bool type; /* is this player ai-controlled or human? */
+- char game; /* score for the current game */
++ int game; /* score for the current game */
+ unsigned char sets[SETS_TO_WIN*2]; /* score for each set */
+ float accelerate; /* a value [0..1] how fast the user accelerates */
+ } Player;
+@@ -118,13 +125,6 @@ enum {
+ PLAYER_TYPE_AI
+ };
+
+-enum {
+- DESIRE_NORMAL,
+- DESIRE_TOPSPIN,
+- DESIRE_SMASH,
+- DESIRE_MAX
+-};
+-
+ /* wait 2 seconds before we score the game */
+ #define SCORING_DELAY 1000
+
+@@ -161,7 +161,7 @@ enum {
+
+ typedef struct {
+ const Location* location;
+- char current_location; /* index of loc. in global location table */
++ int current_location; /* index of loc. in global location table */
+ Ball ball;
+ Player players[MAXPLAYERS];
+ unsigned char serving_player;
diff --git a/infra/libkookie/nixpkgs/pkgs/games/terraria-server/default.nix b/infra/libkookie/nixpkgs/pkgs/games/terraria-server/default.nix
new file mode 100644
index 000000000000..94fb9d063b32
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/terraria-server/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, file, fetchurl, autoPatchelfHook, unzip }:
+
+stdenv.mkDerivation rec {
+ pname = "terraria-server";
+ version = "1.4.1.2";
+ urlVersion = lib.replaceChars [ "." ] [ "" ] version;
+
+ src = fetchurl {
+ url = "https://terraria.org/system/dedicated_servers/archives/000/000/042/original/terraria-server-${urlVersion}.zip";
+ sha256 = "18hcy7jfizyyp0h66rga8z948xg3nyk32rzl7hgv7ar1w43airhh";
+ };
+
+ buildInputs = [ file unzip ];
+ nativeBuildInputs = [ autoPatchelfHook ];
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp -r Linux $out/
+ chmod +x "$out/Linux/TerrariaServer.bin.x86_64"
+ ln -s "$out/Linux/TerrariaServer.bin.x86_64" $out/bin/TerrariaServer
+ '';
+
+ meta = with lib; {
+ homepage = "https://terraria.org";
+ description =
+ "Dedicated server for Terraria, a 2D action-adventure sandbox";
+ platforms = [ "x86_64-linux" ];
+ license = licenses.unfree;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tes3cmd/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tes3cmd/default.nix
new file mode 100644
index 000000000000..3778aadda9c5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tes3cmd/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, perlPackages, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+ pname = "tes3cmd";
+ version = "0.40-pre-release-2";
+
+ src = fetchFromGitHub {
+ owner = "john-moonsugar";
+ repo = pname;
+ rev = "f72e9ed9dd18e8545dd0dc2a4056c250cf505790";
+ sha256 = "01zqplp8yb0xnl54963n0zkz66rf3hn2x3i255jlhdhx1c43jba7";
+ };
+
+ buildInputs = [ perlPackages.perl ];
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp tes3cmd $out/bin/tes3cmd
+ '';
+
+ meta = with lib; {
+ description = "A command line tool for examining and modifying plugins for the Elder Scrolls game Morrowind by Bethesda Softworks";
+ homepage = "https://github.com/john-moonsugar/tes3cmd";
+ license = licenses.mit;
+ maintainers = [ maintainers.marius851000 ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/the-butterfly-effect/default.nix b/infra/libkookie/nixpkgs/pkgs/games/the-butterfly-effect/default.nix
new file mode 100644
index 000000000000..99599b92dfa0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/the-butterfly-effect/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, mkDerivation, fetchFromGitHub, qt5, box2d, which, cmake, gettext }:
+
+mkDerivation rec {
+ pname = "tbe";
+ version = "0.9.3.1";
+
+ src = fetchFromGitHub {
+ owner = "kaa-ching";
+ repo = pname;
+ rev = "refs/tags/v${version}";
+ sha256 = "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj";
+ };
+
+ postPatch = "sed '1i#include <vector>' -i src/model/World.h";
+
+ buildInputs = [
+ qt5.qtbase qt5.qtsvg qt5.qttranslations box2d which cmake
+ gettext
+ ];
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ make DESTDIR=.. install
+ mkdir -p $out/bin
+ cp ../usr/games/tbe $out/bin
+ cp -r ../usr/share $out/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A physics-based game vaguely similar to Incredible Machine";
+ homepage = "http://the-butterfly-effect.org/";
+ maintainers = [ maintainers.raskin ];
+ platforms = platforms.linux;
+ license = licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/the-powder-toy/default.nix b/infra/libkookie/nixpkgs/pkgs/games/the-powder-toy/default.nix
new file mode 100644
index 000000000000..af392eca8d8f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/the-powder-toy/default.nix
@@ -0,0 +1,36 @@
+
+{ stdenv, fetchFromGitHub, scons, pkgconfig, SDL2, lua, fftwFloat,
+ zlib, bzip2, curl, darwin }:
+
+stdenv.mkDerivation rec {
+ pname = "the-powder-toy";
+ version = "95.0";
+
+ src = fetchFromGitHub {
+ owner = "The-Powder-Toy";
+ repo = "The-Powder-Toy";
+ rev = "v${version}";
+ sha256 = "18rp2g1mj0gklra06wm9dm57h73hmm301npndh0y8ap192i5s8sa";
+ };
+
+ nativeBuildInputs = [ scons pkgconfig ];
+
+ propagatedBuildInputs = stdenv.lib.optionals stdenv.isDarwin
+ [ darwin.apple_sdk.frameworks.Cocoa ];
+
+ buildInputs = [ SDL2 lua fftwFloat zlib bzip2 curl ];
+
+ installPhase = ''
+ install -Dm 755 build/powder* "$out/bin/powder"
+ '';
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "A free 2D physics sandbox game";
+ homepage = "http://powdertoy.co.uk/";
+ platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ abbradar siraben ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tibia/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tibia/default.nix
new file mode 100644
index 000000000000..b8c2c3f3cf43
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tibia/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, glibc, libX11, runtimeShell, libGLU, libGL }:
+
+with stdenv.lib;
+stdenv.mkDerivation {
+ name = "tibia-10.90";
+
+ src = fetchurl {
+ url = "http://static.tibia.com/download/tibia1090.tgz";
+ sha256 = "11mkh2dynmbpay51yfaxm5dmcys3rnpk579s9ypfkhblsrchbkhx";
+ };
+
+ shell = stdenv.shell;
+
+ # These binaries come stripped already and trying to strip after the
+ # files are in $out/res and after patchelf just breaks them.
+ # Strangely it works if the files are in $out but then nix doesn't
+ # put them in our PATH. We set all the files to $out/res because
+ # we'll be using a wrapper to start the program which will go into
+ # $out/bin.
+ dontStrip = true;
+
+ installPhase = ''
+ mkdir -pv $out/res
+ cp -r * $out/res
+
+ patchelf --set-interpreter ${glibc.out}/lib/ld-linux.so.2 \
+ --set-rpath ${stdenv.lib.makeLibraryPath [ stdenv.cc.cc libX11 libGLU libGL ]} \
+ "$out/res/Tibia"
+
+ # We've patchelf'd the files. The main ‘Tibia’ binary is a bit
+ # dumb so it looks for ‘./Tibia.dat’. This requires us to be in
+ # the same directory as the file itself but that's very tedious,
+ # especially with nix which changes store hashes. Here we generate
+ # a simple wrapper that we put in $out/bin which will do the
+ # directory changing for us.
+
+ mkdir -pv $out/bin
+
+ # The wrapper script itself. We use $LD_LIBRARY_PATH for libGL.
+ cat << EOF > "$out/bin/Tibia"
+ #!${runtimeShell}
+ cd $out/res
+ ${glibc.out}/lib/ld-linux.so.2 --library-path \$LD_LIBRARY_PATH ./Tibia "\$@"
+ EOF
+
+ chmod +x $out/bin/Tibia
+
+ '';
+
+ meta = {
+ description = "Top-down MMORPG set in a fantasy world";
+ homepage = "http://tibia.com";
+ license = stdenv.lib.licenses.unfree;
+ platforms = ["i686-linux"];
+ maintainers = with stdenv.lib.maintainers; [ ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tintin/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tintin/default.nix
new file mode 100644
index 000000000000..cd58fcf24fd8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tintin/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, lib, zlib, pcre
+, tlsSupport ? true, gnutls ? null
+# ^ set { tlsSupport = false; } to reduce closure size by ~= 18.6 MB
+}:
+
+assert tlsSupport -> gnutls != null;
+
+stdenv.mkDerivation rec {
+ name = "tintin-2.02.03";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/tintin/${name}.tar.gz";
+ sha256 = "0ybgy8j8i36d7f892x539vl6fl5zvvfyy5ffc98550vjr6qqhk74";
+ };
+
+ nativeBuildInputs = lib.optional tlsSupport gnutls.dev;
+ buildInputs = [ zlib pcre ] ++ lib.optional tlsSupport gnutls;
+
+ preConfigure = ''
+ cd src
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A free MUD client for macOS, Linux and Windows";
+ homepage = "http://tintin.sourceforge.net";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tinyfugue/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tinyfugue/default.nix
new file mode 100644
index 000000000000..fb706d38e189
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tinyfugue/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, ncurses, zlib
+, openssl ? null
+, sslSupport ? true
+}:
+
+with stdenv.lib;
+
+assert sslSupport -> openssl != null;
+
+stdenv.mkDerivation rec {
+ pname = "tinyfugue";
+ version = "50b8";
+ verUrl = "5.0%20beta%208";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/tinyfugue/tinyfugue/${verUrl}/tf-${version}.tar.gz";
+ sha256 = "12fra2fdwqj6ilv9wdkc33rkj343rdcf5jyff4yiwywlrwaa2l1p";
+ };
+
+ configureFlags = optional (!sslSupport) "--disable-ssl";
+
+ buildInputs =
+ [ ncurses zlib ]
+ ++ optional sslSupport openssl;
+
+ meta = {
+ homepage = "http://tinyfugue.sourceforge.net/";
+ description = "A terminal UI, screen-oriented MUD client";
+ longDescription = ''
+ TinyFugue, aka "tf", is a flexible, screen-oriented MUD client, for use
+ with any type of text MUD.
+ '';
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = [ maintainers.KibaFox ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tome2/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tome2/default.nix
new file mode 100644
index 000000000000..1fc80b1764d5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tome2/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, makeDesktopItem, ncurses, libX11, boost, cmake }:
+
+let
+ pname = "tome2";
+ description = "A dungeon crawler similar to Angband, based on the works of Tolkien";
+
+ desktopItem = makeDesktopItem {
+ desktopName = pname;
+ name = pname;
+ exec = "${pname}-x11";
+ icon = pname;
+ terminal = "false";
+ comment = description;
+ type = "Application";
+ categories = "Game;RolePlaying;";
+ genericName = pname;
+ fileValidation = false;
+ };
+
+in stdenv.mkDerivation {
+ inherit pname;
+ version = "2.4";
+
+ src = fetchFromGitHub {
+ owner = "tome2";
+ repo = "tome2";
+ rev = "4e6a906c80ff07b75a6acf4ff585b47303805e46";
+ sha256 = "06bddj55y673d7bnzblk8n01z32l6k2rad3bpzr8dmw464hx4wwf";
+ };
+
+ buildInputs = [ ncurses libX11 boost ];
+
+ nativeBuildInputs = [ cmake ];
+
+ cmakeFlags = [
+ "-DSYSTEM_INSTALL=ON"
+ ];
+
+ postInstall = ''
+ mkdir -p $out/share/applications
+ cp ${desktopItem}/share/applications/*.desktop $out/share/applications
+ '';
+
+ meta = with stdenv.lib; {
+ inherit description;
+ license = licenses.unfree;
+ maintainers = with maintainers; [ cizra ];
+ platforms = platforms.all;
+ homepage = "https://github.com/tome2/tome2";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tome4/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tome4/default.nix
new file mode 100644
index 000000000000..59dced9ac67d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tome4/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, fetchurl, makeDesktopItem, makeWrapper, premake4, unzip
+, openal, libpng, libvorbis, libGLU, SDL2, SDL2_image, SDL2_ttf }:
+
+let
+ pname = "tome4";
+
+ desktop = makeDesktopItem {
+ desktopName = pname;
+ name = pname;
+ exec = "@out@/bin/${pname}";
+ icon = pname;
+ terminal = "false";
+ comment = "An open-source, single-player, role-playing roguelike game set in the world of Eyal.";
+ type = "Application";
+ categories = "Game;RolePlaying;";
+ genericName = pname;
+ };
+
+in stdenv.mkDerivation rec {
+ name = "${pname}-${version}";
+ version = "1.6.7";
+
+ src = fetchurl {
+ url = "https://te4.org/dl/t-engine/t-engine4-src-${version}.tar.bz2";
+ sha256 = "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68";
+ };
+
+ prePatch = ''
+ # http://forums.te4.org/viewtopic.php?f=42&t=49478&view=next#p234354
+ sed -i 's|#include <GL/glext.h>||' src/tgl.h
+ '';
+
+ nativeBuildInputs = [ makeWrapper unzip premake4 ];
+
+ # tome4 vendors quite a few libraries so someone might want to look
+ # into avoiding that...
+ buildInputs = [
+ libGLU openal libpng libvorbis SDL2 SDL2_ttf SDL2_image
+ ];
+
+ # disable parallel building as it caused sporadic build failures
+ enableParallelBuilding = false;
+
+ NIX_CFLAGS_COMPILE = "-I${SDL2.dev}/include/SDL2 -I${SDL2_image}/include/SDL2 -I${SDL2_ttf}/include/SDL2";
+
+ makeFlags = [ "config=release" ];
+
+ # The wrapper needs to cd into the correct directory as tome4's detection of
+ # the game asset root directory is faulty.
+
+ installPhase = ''
+ runHook preInstall
+
+ dir=$out/share/${pname}
+
+ install -Dm755 t-engine $dir/t-engine
+ cp -r bootstrap game $dir
+ makeWrapper $dir/t-engine $out/bin/${pname} \
+ --run "cd $dir"
+
+ install -Dm755 ${desktop}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop
+ substituteInPlace $out/share/applications/${pname}.desktop \
+ --subst-var out
+
+ unzip -oj -qq game/engines/te4-${version}.teae data/gfx/te4-icon.png
+ install -Dm644 te4-icon.png $out/share/icons/hicolor/64x64/${pname}.png
+
+ install -Dm644 -t $out/share/doc/${pname} CONTRIBUTING COPYING COPYING-MEDIA CREDITS
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Tales of Maj'eyal (rogue-like game)";
+ homepage = "https://te4.org/";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ chattered peterhoeg ];
+ platforms = with platforms; [ "i686-linux" "x86_64-linux" ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/toppler/default.nix b/infra/libkookie/nixpkgs/pkgs/games/toppler/default.nix
new file mode 100644
index 000000000000..cf037a0f4362
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/toppler/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, fetchurl
+, SDL
+, SDL_mixer
+, zlib
+}:
+
+stdenv.mkDerivation rec {
+ pname = "toppler";
+ version = "1.1.6";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
+ sha256 = "0ifccissd8sh78kpwh7dafx4ah7hkhqz6nf4z2hdnalw702jkg3x";
+ };
+
+ buildInputs = [
+ SDL
+ SDL_mixer
+ zlib
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Jump and run game, reimplementation of Tower Toppler/Nebulus";
+ homepage = "http://toppler.sourceforge.net/";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ fgaz ];
+ platforms = platforms.all;
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/torcs/default.nix b/infra/libkookie/nixpkgs/pkgs/games/torcs/default.nix
new file mode 100644
index 000000000000..136578924a0d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/torcs/default.nix
@@ -0,0 +1,50 @@
+{ fetchpatch, fetchurl, stdenv, libGLU, freeglut, libX11, plib, openal, freealut, libXrandr, xorgproto,
+libXext, libSM, libICE, libXi, libXt, libXrender, libXxf86vm, libvorbis,
+libpng, zlib, makeWrapper }:
+
+stdenv.mkDerivation rec {
+ name = "torcs-1.3.7";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/torcs/${name}.tar.bz2";
+ sha256 = "0kdq0sc7dsfzlr0ggbxggcbkivc6yp30nqwjwcaxg9295s3b06wa";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = "https://salsa.debian.org/games-team/torcs/raw/fb0711c171b38c4648dc7c048249ec20f79eb8e2/debian/patches/gcc6-isnan.patch";
+ sha256 = "16scmq30vwb8429ah9d4ws0v1w6ai59lvn7hcgnvfzyap42ry876";
+ })
+ (fetchpatch {
+ url = "https://salsa.debian.org/games-team/torcs/raw/fb0711c171b38c4648dc7c048249ec20f79eb8e2/debian/patches/format-argument.patch";
+ sha256 = "04advcx88yh23ww767iysydzhp370x7cqp2wf9hk2y1qvw7mxsja";
+ })
+ (fetchpatch {
+ url = "https://salsa.debian.org/games-team/torcs/raw/fb0711c171b38c4648dc7c048249ec20f79eb8e2/debian/patches/glibc-default-source.patch";
+ sha256 = "0k4hgpddnhv68mdc9ics7ah8q54j60g394d7zmcmzg6l3bjd9pyp";
+ })
+ (fetchpatch {
+ url = "https://salsa.debian.org/games-team/torcs/raw/32bbe77c68b4de07b28c34497f3c0ad666ee618d/debian/patches/gcc7.patch";
+ sha256 = "09iilnvdv8h7b4nb1372arszkbz9hbzsck4rimzz1xjdh9ydniw9";
+ })
+ ];
+
+ postPatch = ''
+ sed -i -e s,/bin/bash,`type -P bash`, src/linux/torcs.in
+ '';
+
+ nativeBuildInputs = [ makeWrapper ];
+ buildInputs = [ libGLU freeglut libX11 plib openal freealut libXrandr xorgproto
+ libXext libSM libICE libXi libXt libXrender libXxf86vm libpng zlib libvorbis ];
+
+ installTargets = "install datainstall";
+
+ meta = {
+ description = "Car racing game";
+ homepage = "http://torcs.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl2Plus;
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = stdenv.lib.platforms.linux;
+ hydraPlatforms = [];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tr-patcher/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tr-patcher/default.nix
new file mode 100644
index 000000000000..68e3eb608954
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tr-patcher/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, fetchurl, fetchzip, jre, makeWrapper }:
+
+let
+translation-file = fetchurl {
+ url = "https://gitlab.com/bmwinger/tr-patcher/-/raw/master/lib/Translation.txt?inline=false";
+ sha256 = "136zd2s73b4n1w2n34wxi656bm448748nn3y7a64fd89ysg9n7n8";
+};
+in
+stdenv.mkDerivation rec {
+ pname = "tr-patcher";
+ version = "1.0.5";
+
+ # use the pre compiled source, as compilation is a bit complex
+ src = fetchzip {
+ url = "https://gitlab.com/bmwinger/tr-patcher/uploads/b57899980b2351c136393f02977c4fab/tr-patcher-shadow.zip";
+ sha256 = "0va7nbmlgf3p2nc0z2b9n1285y4q5rpyjr4w93rdnx38wrhinxnw";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ installPhase = ''
+ install -Dm644 lib/tr-patcher-all.jar $out/lib/tr-patcher.jar
+ install -Dm644 ${translation-file} $out/lib/Translation.txt
+ mkdir -p $out/bin
+ makeWrapper ${jre}/bin/java $out/bin/tr-patcher \
+ --add-flags "-jar $out/lib/tr-patcher.jar"
+ '';
+
+ meta = with lib; {
+ description = "Allow to update dependancies of the Tamriel-Data mod for morrowind";
+ homepage = "https://gitlab.com/bmwinger/tr-patcher";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.marius851000 ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/trackballs/default.nix b/infra/libkookie/nixpkgs/pkgs/games/trackballs/default.nix
new file mode 100644
index 000000000000..ec607758bd6d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/trackballs/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, cmake, SDL2, SDL2_ttf, gettext, zlib, SDL2_mixer, SDL2_image, guile, libGLU, libGL }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+ pname = "trackballs";
+ version = "1.3.1";
+
+ src = fetchFromGitHub {
+ owner = "trackballs";
+ repo = "trackballs";
+ rev = "v${version}";
+ sha256 = "1yjzz50r57aahy7wcbsmhrd40abzyriq40j49225ya7m9g28vmgl";
+ };
+
+ buildInputs = [ cmake zlib SDL2 SDL2_ttf SDL2_mixer SDL2_image guile gettext libGLU libGL ];
+
+ meta = {
+ homepage = "https://trackballs.github.io/";
+ description = "3D Marble Madness clone";
+ platforms = stdenv.lib.platforms.linux;
+ license = stdenv.lib.licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tremulous/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tremulous/default.nix
new file mode 100644
index 000000000000..cab77b23ee91
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tremulous/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchurl, unzip, libGLU, libGL, libX11, SDL, openal, runtimeShell }:
+stdenv.mkDerivation rec {
+ pname = "tremulous";
+ version = "1.1.0";
+ src1 = fetchurl {
+ url = "mirror://sourceforge/tremulous/${pname}-${version}.zip";
+ sha256 = "11w96y7ggm2sn5ncyaffsbg0vy9pblz2av71vqp9725wbbsndfy7";
+ };
+ # http://tremulous.net/wiki/Client_versions
+ src2 = fetchurl {
+ url = "http://releases.mercenariesguild.net/client/mgclient_source_Release_1.011.tar.gz";
+ sha256 = "1vrsi7va7hdp8k824663s1pyw9zpsd4bwwr50j7i1nn72b0v9a26";
+ };
+ src3 = fetchurl {
+ url = "http://releases.mercenariesguild.net/tremded/mg_tremded_source_1.01.tar.gz";
+ sha256 = "1njrqlhzjvy9myddzkagszwdcf3m4h08wip888w2rmbshs6kz6ql";
+ };
+ buildInputs = [ unzip libGLU libGL libX11 SDL openal ];
+ unpackPhase = ''
+ unzip $src1
+ cd tremulous
+ tar xvf $src2
+ mkdir mg_tremded_source
+ cd mg_tremded_source
+ tar xvf $src3
+ cd ..
+ '';
+ patches = [ ./parse.patch ];
+ patchFlags = [ "-p" "0" ];
+ NIX_LD_FLAGS = ''
+ -rpath ${stdenv.cc}/lib
+ -rpath ${stdenv.cc}/lib64
+ '';
+ buildPhase = ''
+ cd Release_1.011
+ make
+ cd ..
+ cd mg_tremded_source
+ make
+ cd ..
+ '';
+ installPhase = ''
+ arch=$(uname -m | sed -e s/i.86/x86/)
+ mkdir -p $out/opt/tremulous
+ cp -v Release_1.011/build/release-linux-$arch/tremulous.$arch $out/opt/tremulous/
+ cp -v mg_tremded_source/build/release-linux-$arch/tremded.$arch $out/opt/tremulous/
+ cp -rv base $out/opt/tremulous
+ mkdir -p $out/bin
+ for b in tremulous tremded
+ do
+ cat << EOF > $out/bin/$b
+ #!${runtimeShell}
+ cd $out/opt/tremulous
+ exec ./$b.$arch "\$@"
+ EOF
+ chmod +x $out/bin/$b
+ done
+ '';
+ dontPatchELF = true;
+ meta = with stdenv.lib; {
+ description = "A game that blends a team based FPS with elements of an RTS";
+ longDescription = ''
+ Tremulous is a free, open source game that blends a team based FPS with
+ elements of an RTS. Players can choose from 2 unique races, aliens and
+ humans. Players on both teams are able to build working structures
+ in-game like an RTS. These structures provide many functions, the most
+ important being spawning. The designated builders must ensure there are
+ spawn structures or other players will not be able to rejoin the game
+ after death. Other structures provide automated base defense (to some
+ degree), healing functions and much more...
+ '';
+ homepage = "http://www.tremulous.net";
+ license = with licenses; [
+ gpl2
+ cc-by-sa-25 /* media */
+ ];
+ maintainers = with maintainers; [ astsmtl ];
+ platforms = platforms.linux;
+ broken = true;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tremulous/parse.patch b/infra/libkookie/nixpkgs/pkgs/games/tremulous/parse.patch
new file mode 100644
index 000000000000..12a73138c099
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tremulous/parse.patch
@@ -0,0 +1,21 @@
+diff -ruN Release_1.011-old/src/qcommon/parse.c Release_1.011/src/qcommon/parse.c
+--- Release_1.011-old/src/qcommon/parse.c 2011-12-02 19:11:49.307368651 -0500
++++ Release_1.011/src/qcommon/parse.c 2011-12-02 19:13:27.556836387 -0500
+@@ -981,7 +981,7 @@
+ {
+ if (*string == '\"')
+ {
+- strcpy(string, string+1);
++ memmove(string, string+1, strlen(string));
+ }
+ if (string[strlen(string)-1] == '\"')
+ {
+@@ -1784,7 +1784,7 @@
+ if ((*ptr == '\\' || *ptr == '/') &&
+ (*(ptr+1) == '\\' || *(ptr+1) == '/'))
+ {
+- strcpy(ptr, ptr+1);
++ memmove(ptr, ptr+1, strlen(ptr));
+ }
+ else
+ {
diff --git a/infra/libkookie/nixpkgs/pkgs/games/trigger/default.nix b/infra/libkookie/nixpkgs/pkgs/games/trigger/default.nix
new file mode 100644
index 000000000000..74a56f1fd406
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/trigger/default.nix
@@ -0,0 +1,54 @@
+{ fetchurl, stdenv, runtimeShell, SDL2, freealut, SDL2_image, openal, physfs
+, zlib, libGLU, libGL, glew, tinyxml-2 }:
+
+stdenv.mkDerivation rec {
+ pname = "trigger-rally";
+ version = "0.6.6.1";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/trigger-rally/${pname}-${version}.tar.gz";
+ sha256 = "016bc2hczqscfmngacim870hjcsmwl8r3aq8x03vpf22s49nw23z";
+ };
+
+ buildInputs = [
+ SDL2
+ freealut
+ SDL2_image
+ openal
+ physfs
+ zlib
+ libGLU
+ libGL
+ glew
+ tinyxml-2
+ ];
+
+ preConfigure = ''
+ sed s,/usr/local,$out, -i bin/*defs
+
+ cd src
+
+ sed s,lSDL2main,lSDL2, -i GNUmakefile
+ export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${SDL2.dev}/include/SDL2"
+ export makeFlags="$makeFlags prefix=$out"
+ '';
+
+ enableParallelBuilding = true;
+
+ postInstall = ''
+ mkdir -p $out/bin
+ cat <<EOF > $out/bin/trigger-rally
+ #!${runtimeShell}
+ exec $out/games/trigger-rally "$@"
+ EOF
+ chmod +x $out/bin/trigger-rally
+ '';
+
+ meta = {
+ description = "A fast-paced single-player racing game";
+ homepage = "http://trigger-rally.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tuxpaint/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tuxpaint/default.nix
new file mode 100644
index 000000000000..a5bea42d04e5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tuxpaint/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl, SDL, SDL_image, SDL_ttf, SDL_mixer, libpng,
+ cairo, librsvg, gettext, libpaper, fribidi, pkgconfig, gperf, imagemagick }:
+
+stdenv.mkDerivation rec {
+ version = "0.9.24";
+ pname = "tuxpaint";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/tuxpaint/${version}/${pname}-${version}.tar.gz";
+ sha256 = "06m1lg2pikfkmassfvvrbwqffwgixcmjh1li6akaldgkalpmfql7";
+ };
+
+ nativeBuildInputs = [ SDL SDL_image SDL_ttf SDL_mixer libpng cairo
+ librsvg gettext libpaper fribidi pkgconfig gperf imagemagick ];
+ hardeningDisable = [ "format" ];
+ makeFlags = [ "GPERF=${gperf}/bin/gperf"
+ "PREFIX=$$out"
+ "COMPLETIONDIR=$$out/share/bash-completion/completions"
+ ];
+
+ patches = [ ./tuxpaint-completion.diff ];
+ postPatch = ''
+ grep -Zlr include.*SDL . | xargs -0 sed -i -e 's,"SDL,"SDL/SDL,'
+ '';
+
+ # stamps
+ stamps = fetchurl {
+ url = "mirror://sourceforge/project/tuxpaint/tuxpaint-stamps/2014-08-23/tuxpaint-stamps-2014.08.23.tar.gz";
+ sha256 = "0rhlwrjz44wp269v3rid4p8pi0i615pzifm1ym6va64gn1bms06q";
+ };
+
+ postInstall = ''
+ # Install desktop file
+ mkdir -p $out/share/applications
+ cp hildon/tuxpaint.xpm $out/share/pixmaps
+ sed -e "s+Exec=tuxpaint+Exec=$out/bin/tuxpaint+" < src/tuxpaint.desktop > $out/share/applications/tuxpaint.desktop
+
+ # Install stamps
+ tar xzf $stamps
+ cd tuxpaint-stamps-2014.08.23
+ make install-all PREFIX=$out
+ rm -rf $out/share/tuxpaint/stamps/military
+ '';
+
+ meta = {
+ description = "Open Source Drawing Software for Children";
+ homepage = "http://www.tuxpaint.org/";
+ license = stdenv.lib.licenses.gpl3;
+ maintainers = with stdenv.lib.maintainers; [ woffs ];
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tuxpaint/tuxpaint-completion.diff b/infra/libkookie/nixpkgs/pkgs/games/tuxpaint/tuxpaint-completion.diff
new file mode 100644
index 000000000000..0824b2becf49
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tuxpaint/tuxpaint-completion.diff
@@ -0,0 +1,16 @@
+--- tuxpaint-0.9.22/src/tuxpaint-completion.bash~ 1970-01-01 01:00:01.000000000 +0100
++++ tuxpaint-0.9.22/src/tuxpaint-completion.bash 2018-03-06 10:54:03.437560921 +0100
+@@ -8,7 +8,6 @@
+ # FIXME: See http://www.debian-administration.org/articles/316 for an intro
+ # to how we should be doing this... -bjk 2009.09.09
+
+-have tuxpaint &&
+ _tuxpaint()
+ {
+ local cur
+@@ -96,4 +95,4 @@
+ fi
+
+ }
+-[ "${have:-}" ] && complete -F _tuxpaint $filenames tuxpaint
++complete -F _tuxpaint $filenames tuxpaint
diff --git a/infra/libkookie/nixpkgs/pkgs/games/tuxtype/default.nix b/infra/libkookie/nixpkgs/pkgs/games/tuxtype/default.nix
new file mode 100644
index 000000000000..9d04440a1672
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/tuxtype/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, librsvg, libxml2, SDL, SDL_image, SDL_mixer, SDL_net, SDL_ttf, t4kcommon }:
+
+stdenv.mkDerivation rec {
+ version = "1.8.3";
+ pname = "tuxtype";
+
+ src = fetchFromGitHub {
+ owner = "tux4kids";
+ repo = "tuxtype";
+ rev = "upstream/${version}";
+ sha256 = "1i33rhi9gpzfml4hd73s18h6p2s8zcr26va2vwf2pqqd9fhdwpsg";
+ };
+
+ postPatch = ''
+ patchShebangs data/scripts/sed-linux.sh
+ patchShebangs data/themes/asturian/scripts/sed-linux.sh
+ patchShebangs data/themes/greek/scripts/sed-linux.sh
+ patchShebangs data/themes/hungarian/scripts/sed-linux.sh
+
+ substituteInPlace Makefile.am \
+ --replace "\$(MKDIR_P) -m 2755 " "\$(MKDIR_P) -m 755 " \
+ --replace "chown root:games \$(DESTDIR)\$(pkglocalstatedir)/words" " "
+
+ # required until the following has been merged:
+ # https://salsa.debian.org/tux4kids-pkg-team/tuxtype/merge_requests/1
+ substituteInPlace configure.ac \
+ --replace 'CFLAGS="$CFLAGS $SDL_IMAGE"' 'CFLAGS="$CFLAGS $SDL_IMAGE_CFLAGS"' \
+ --replace 'PKG_CHECK_MODULES([SDL_ttf],' 'PKG_CHECK_MODULES([SDL_TTF],'
+ '';
+
+ nativeBuildInputs = [ autoreconfHook pkgconfig ];
+ buildInputs = [ librsvg libxml2 SDL SDL_image SDL_mixer SDL_net SDL_ttf t4kcommon ];
+
+ configureFlags = [ "--without-sdlpango" ];
+
+ meta = with stdenv.lib; {
+ description = "An Educational Typing Tutor Game Starring Tux, the Linux Penguin";
+ homepage = "https://github.com/tux4kids/tuxtype";
+ license = licenses.gpl3Plus;
+ maintainers = [ maintainers.aanderse ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/typespeed/default.nix b/infra/libkookie/nixpkgs/pkgs/games/typespeed/default.nix
new file mode 100644
index 000000000000..9da67cbd1ea1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/typespeed/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation {
+ name = "typespeed-0.6.5";
+ buildInputs = [ ncurses ];
+ src = fetchurl {
+ url = "http://typespeed.sourceforge.net/typespeed-0.6.5.tar.gz";
+ sha256 = "5c860385ceed8a60f13217cc0192c4c2b4705c3e80f9866f7d72ff306eb72961";
+ };
+
+ patches = [ ./typespeed-config-in-home.patch ];
+
+ configureFlags = [ "--datadir=\${out}/share/" ];
+ makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
+
+ meta = with stdenv.lib; {
+ description = "A curses based typing game";
+ homepage = "http://typespeed.sourceforge.net/";
+ license = licenses.gpl2;
+ platforms = platforms.unix;
+ maintainers = [ maintainers.auntie ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/typespeed/typespeed-config-in-home.patch b/infra/libkookie/nixpkgs/pkgs/games/typespeed/typespeed-config-in-home.patch
new file mode 100644
index 000000000000..fe313a4392ed
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/typespeed/typespeed-config-in-home.patch
@@ -0,0 +1,148 @@
+diff --git a/src/file.c b/src/file.c
+index d1d1982..1655f6f 100644
+--- a/src/file.c
++++ b/src/file.c
+@@ -125,6 +125,8 @@ int hcompar(const void *, const void *);
+ int loadscores(char *);
+ static int parseline(char *, char **, char **);
+ void readconfig(void);
++void mkconfig(char *filename);
++void mkscore(char *filename);
+ static void readfile(char *, int);
+ static void setoptions(char *, char *, int);
+
+@@ -1125,7 +1127,7 @@ void
+ readconfig(void)
+ {
+ char *envhome;
+- char userhigh[MAXPATHLEN], userconf[MAXPATHLEN];
++ char userhigh[MAXPATHLEN], userconf[MAXPATHLEN], confdir[MAXPATHLEN];
+ struct stat sb;
+
+ if (xsnprintf(ruledir, sizeof(ruledir), "%s", RULEDIR)) {
+@@ -1140,18 +1142,33 @@ readconfig(void)
+ readfile(CONFIGFILE, 1);
+
+ if ((envhome = getenv("HOME")) == NULL)
+- return;
++ xerr(1, "readconfig: environment variable HOME not set");
+
+ if (xsnprintf(userconf, sizeof(userconf), "%s/.typespeed/config",
+- envhome))
+- return;
++ envhome))
++ xerr(1, "readconfig: string error");
++ if (xsnprintf(userhigh, sizeof(userhigh), "%s/.typespeed/score",
++ envhome))
++ xerr(1, "readconfig: string error");
+
+ if (stat(userconf, &sb) || (sb.st_mode & S_IFMT) != S_IFREG)
+- return;
+-
+- if (xsnprintf(userhigh, sizeof(userhigh), "%s/.typespeed/score",
+- envhome))
+- return;
++ {
++ if (xsnprintf(confdir, sizeof(confdir), "%s/.typespeed",
++ envhome))
++ xerr(1, "readconfig: string error");
++ if(stat(confdir, &sb) == -1)
++ if(mkdir(confdir, S_IRWXU | S_IRWXG | S_IRWXO))
++ xerr(1, "readconfig: could not create config directory %s",
++ confdir);
++ /* create the user configuration with default values */
++ mkconfig(userconf);
++ }
++ /* check for the high score file */
++ if (stat(userhigh, &sb) || (sb.st_mode & S_IFMT) != S_IFREG)
++ {
++ /* create a blank high score file */
++ mkscore(userhigh);
++ }
+
+ /*
+ * Open a user writable high score.
+@@ -1159,14 +1176,48 @@ readconfig(void)
+ * file. Protect system-wide high score file with group
+ * write permissions: privileged gid already dropped.
+ */
+- if (close(hfd) == -1)
+- xerr(1, "readconfig: close");
+- if ((hfd = open(userhigh, O_RDWR, 0)) == -1)
++ if ((hfd = open(userhigh, O_RDWR)) == -1)
+ xerr(1, "readconfig: open: %s", userhigh);
+
+ readfile(userconf, 1);
+ }
+
++#define DEFAULT_CONFIG "cheat = no\n" \
++ "highorder = score cps tcps\n" \
++ "ruledir = " RULEDIR "\n" \
++ "worddir = " WORDDIR "\n"
++
++/*
++ * Create the user configuration, with default values, at the given path.
++ */
++void
++mkconfig(char *filename)
++{
++ int cfd;
++
++ if((cfd = open(filename, O_WRONLY | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO)) == -1)
++ xerr(1, "mkconfig: open: %s", filename);
++ if(write(cfd, DEFAULT_CONFIG, sizeof(DEFAULT_CONFIG)/sizeof(DEFAULT_CONFIG[0]) - 1) == -1)
++ xerr(1, "mkconfig: write: %s", filename);
++ if(close(cfd) == -1)
++ xerr(1, "mkconfig: close: %s", filename);
++}
++
++/*
++ * Create the user high score file, which is just a blank file.
++ */
++void
++mkscore(char *filename)
++{
++ int sfd;
++ if((sfd = open(filename, O_WRONLY | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO)) == -1)
++ xerr(1, "mkscore: open: %s", filename);
++ if(write(sfd, "", 0) == -1)
++ xerr(1, "mkconfig: write: %s", filename);
++ if(close(sfd) == -1)
++ xerr(1, "mkconfig: close: %s", filename);
++}
++
+ /*
+ * Function used to open configuration and game rule files and to
+ * set options with function setoptions.
+diff --git a/src/typespeed.c b/src/typespeed.c
+index 7ac5ee2..77e9acb 100644
+--- a/src/typespeed.c
++++ b/src/typespeed.c
+@@ -319,8 +319,13 @@ main(int argc, char **argv)
+ progname++;
+
+ /* just open high score file while being setgid games */
+- if ((hfd = open(HIGHFILE, O_RDWR, 0)) == -1)
+- xerr(1, "main: open: %s", HIGHFILE);
++ /*
++ * For NixOS, a global high score file doesn't make sense, so we just comment
++ * this out. A high score file in the user's home directory will be opened
++ * later in readconfig().
++ */
++/* if ((hfd = open(HIGHFILE, O_RDWR, 0)) == -1)
++ xerr(1, "main: open: %s", HIGHFILE); */
+
+ #ifndef WIN32
+ /* drop privileges */
+@@ -348,9 +353,9 @@ main(int argc, char **argv)
+ #endif /* WIN32 */
+
+ /* check file descriptors for consistency */
+- if (hfd == STDIN_FILENO || hfd == STDOUT_FILENO ||
++/* if (hfd == STDIN_FILENO || hfd == STDOUT_FILENO ||
+ hfd == STDERR_FILENO)
+- exit(1);
++ exit(1); */
+ if (!isatty(STDIN_FILENO) || !isatty(STDOUT_FILENO) ||
+ !isatty(STDERR_FILENO))
+ xerrx(1, "not fully connected to a terminal");
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ue4/cdn-deps.nix b/infra/libkookie/nixpkgs/pkgs/games/ue4/cdn-deps.nix
new file mode 100644
index 000000000000..4b7fa8765ca9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ue4/cdn-deps.nix
@@ -0,0 +1,7028 @@
+{ fetchurl }:
+
+{
+ "0049fd8a61e04257b6dcb37217d4d603cd74cc6b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/0049fd8a61e04257b6dcb37217d4d603cd74cc6b";
+ sha256 = "1dcyxixgqsw4lcwg9066q39yghhppfp85yyi4r4drq5j5rg3dgb1";
+ };
+ "0055e020f7505cf021eb66b73e3a8fa3cc308b05" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/0055e020f7505cf021eb66b73e3a8fa3cc308b05";
+ sha256 = "1i2ff0hzrs2kdqv860wjnddyp80asanx5zzispsbzm95iljfby70";
+ };
+ "007491dae0c56c74ca78a46639d8e41243bde83f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/007491dae0c56c74ca78a46639d8e41243bde83f";
+ sha256 = "14q664k5dgyc4f30mc6f2537w9mxw9407nba3023xss9vfijldgv";
+ };
+ "00927d42baa3e7f8fb204e62ea43ff39384f8679" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/00927d42baa3e7f8fb204e62ea43ff39384f8679";
+ sha256 = "1jpzh24r1xkn8vifqyqljfbb9jbmcl7syigaq2lkjjxfl9nzwqqv";
+ };
+ "0092dbc71c6b4bd985a697ac3d1f1597c0bc82f6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/0092dbc71c6b4bd985a697ac3d1f1597c0bc82f6";
+ sha256 = "17cdmr5p4vyq04m0njv4b82l6gnp0dpxs22y5466ksnksckh9xwz";
+ };
+ "009f9921fd444183569a1057648f0c3573688f98" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/009f9921fd444183569a1057648f0c3573688f98";
+ sha256 = "0pc107dgkg8v51gy4083myp01lby8xfvlkx5xplsq55lxifkxcqy";
+ };
+ "00ab55311f402e65385f797ea5e1c4ab4663553e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/00ab55311f402e65385f797ea5e1c4ab4663553e";
+ sha256 = "1d2hwgd2zk4alxb6fb4fzkxcpkl3gp95v39jd0g77frj5ajnf5yc";
+ };
+ "00add27414f59890b092ab4b03bbbc585cedb847" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/00add27414f59890b092ab4b03bbbc585cedb847";
+ sha256 = "0jmbay34rl6srpkylamsy409a2rpqb9jwhyxfph34bazsp3jv04k";
+ };
+ "00b98d4aec7a1f350c0fdd8186841aa96c0cce53" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/00b98d4aec7a1f350c0fdd8186841aa96c0cce53";
+ sha256 = "0lh9rdgg9nr2mxvgx0rdg0zk4q5gsza4yacxp933bm41vvdwr3kq";
+ };
+ "00c4eb5dc59035a15405197341b6b925473708db" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/00c4eb5dc59035a15405197341b6b925473708db";
+ sha256 = "00xl95hd2qcnzylvqc77pv758frws8z8anf4kb5vhz3lcv8c1n9n";
+ };
+ "00f460c11eef99d9e125c11687a40d39f7b74873" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/00f460c11eef99d9e125c11687a40d39f7b74873";
+ sha256 = "1zp0qrc4nrv2cy7mc0z7chm75pa6ffzzz7yr32lw9ijzv5rbcjml";
+ };
+ "0104416c142ca7b3174660267c22f049db573bdb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/0104416c142ca7b3174660267c22f049db573bdb";
+ sha256 = "0lzg75w1cnbm9yll32la7gcq5wv7wr8ckx3kxv4adhkkaz53bail";
+ };
+ "01687bd36252e9a263022192524ca8835ae9552b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/01687bd36252e9a263022192524ca8835ae9552b";
+ sha256 = "0cdql0x9nppg7lh4rlnc1k4cj4pv404881z02miqlr99a05rwzpv";
+ };
+ "01a1b60633d0e13df7952058973ca4979a5389e2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/01a1b60633d0e13df7952058973ca4979a5389e2";
+ sha256 = "127llh0ybq7f6fnsmh1hrh4xh46ap0x3za9xxqfmj0qhfbz5nanr";
+ };
+ "01b5b6310231646e87a0bfefaebfee7f0c9e1929" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/01b5b6310231646e87a0bfefaebfee7f0c9e1929";
+ sha256 = "0agyb9fy1vpnc06073c8j1k3d9n475pznf5chaxpcqpppcqi8j55";
+ };
+ "01d26cddb178f064c3cd74a09430970bf6cc12b7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/01d26cddb178f064c3cd74a09430970bf6cc12b7";
+ sha256 = "1lxb8g2hd2jdswinzgnr4dqknh1c6nm6xh3fwbkvniglglrr7w9z";
+ };
+ "01e6c01a96b3cbe860204f191d1b9153509a9dee" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/01e6c01a96b3cbe860204f191d1b9153509a9dee";
+ sha256 = "1ll3kahg1bvrw1djm855fan0yhfv385qaqbvsx11h4f7nsk1y8l1";
+ };
+ "0255260ee4d81de161e877cdcc3af4d7fcf8d0e3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/0255260ee4d81de161e877cdcc3af4d7fcf8d0e3";
+ sha256 = "1b35v17pkpxjak9nslgmqik0779yqpfmrqhxih85fw38cx883y9k";
+ };
+ "0287d808513bc8ab41d3a122437451b3505e5a06" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/0287d808513bc8ab41d3a122437451b3505e5a06";
+ sha256 = "0kjqvqs537kjji645wj9c7g0vm49saz7844gmsvaxbxa7j6qpv8r";
+ };
+ "0294cec564dabb2b74767382fed8bf1d85c3dd6a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/0294cec564dabb2b74767382fed8bf1d85c3dd6a";
+ sha256 = "1bc87j7aqh55c08r95iqhjy7yqyvjfrhnl5p9nvd9rmsywlcdpy6";
+ };
+ "02b79c9e934ba5d5df21ca904400f6921b0e919c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/02b79c9e934ba5d5df21ca904400f6921b0e919c";
+ sha256 = "0ky6wm47c5nly14jj171nvr1hyx9qn027jpxzhffmdj1zd0ab1n2";
+ };
+ "02db54285fbdc7bcbc5072716c06102dadbe73a3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/02db54285fbdc7bcbc5072716c06102dadbe73a3";
+ sha256 = "08j35dhpj1wpsjck57w6sncy9vciqmhpnzsmrb8a698alb4nq4la";
+ };
+ "02e23f8b72f230a371e141cf422d6339edc7f136" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/02e23f8b72f230a371e141cf422d6339edc7f136";
+ sha256 = "0lgfl91hyy4isy03jp1lprlr6p6vq95vs408rr620xrrx8v9g1xj";
+ };
+ "02e31aefb786970a757120d82ef7e57d99598e2a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/02e31aefb786970a757120d82ef7e57d99598e2a";
+ sha256 = "0kzp6hvpclqgm6ik46ifsb7q8cnyc1jpmn9hablz3bbcgz1ja1v6";
+ };
+ "02e3996085d4a6eadcc0403adb002e453626ad38" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/02e3996085d4a6eadcc0403adb002e453626ad38";
+ sha256 = "1av0m7l2yb9k74482i60gbshpbiay25j6272p78vzzky55gfvvkq";
+ };
+ "02f911003167be7b08c3fbf9bdababa124958f48" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2489400-f6cf8f7e3aa44b46b137c223b0724bd6/02f911003167be7b08c3fbf9bdababa124958f48";
+ sha256 = "1a63d9d3ca0fhzniqwksxfs1q9fzxa8wz8mmcavnhmh2hcdf8l7s";
+ };
+ "037becd787cf315691a800ac53fc1ace30efc22f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/037becd787cf315691a800ac53fc1ace30efc22f";
+ sha256 = "19jwdg0gi8axng2jc52i39bahzyhsksmza8ich6xbga7vzmcslic";
+ };
+ "038a65feb0c32e0a8997e4798012f90e380a5fa4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/038a65feb0c32e0a8997e4798012f90e380a5fa4";
+ sha256 = "11c1sk31f1wv2by7fvmwjlw0bf2khjh1gn7sx5iib6bx10mfk6zg";
+ };
+ "03bb65f1dc5e3bf35f5d6d5d6068a10aed0cf4a8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/03bb65f1dc5e3bf35f5d6d5d6068a10aed0cf4a8";
+ sha256 = "1akwa8n1h491r45w8z4396bpg53szq42ac081ra087a92x699h59";
+ };
+ "03eac14bed108c28a0a4450fa4f534d145c12179" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/03eac14bed108c28a0a4450fa4f534d145c12179";
+ sha256 = "1y2gwhynvyr499kj3l4w5wj55q938n6swb8wbzily46r24g8d6g6";
+ };
+ "0419d8143ae34750eb7de7c51c4d3cd231bbce51" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/0419d8143ae34750eb7de7c51c4d3cd231bbce51";
+ sha256 = "1nr22bs71msfzp0ndi5hm7y4blv51039dpcv05a0xv4s939y16bl";
+ };
+ "041d9b9407ae8d58c7c3a7110af093916fee573e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/041d9b9407ae8d58c7c3a7110af093916fee573e";
+ sha256 = "14syxk0bgc8khzabliibvm82asc692pyxa8m78f3jii47gy6vwcn";
+ };
+ "042de486169ab637609e1b035138f64893e04ad5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/042de486169ab637609e1b035138f64893e04ad5";
+ sha256 = "0j5p0bid72xs8r63nbkyx77w89fy6d1kbx6axph5w6nnkr2flvy6";
+ };
+ "049aaeab9a2e4405e946d0097d1a3e824c128df6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/049aaeab9a2e4405e946d0097d1a3e824c128df6";
+ sha256 = "0d56izrz5cbgib0mxzd5zj6yzvfln4rglpvxi1h05l5xrd9rcc9s";
+ };
+ "04b9a9091bba671b960e607283c6434625072697" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/04b9a9091bba671b960e607283c6434625072697";
+ sha256 = "1sbhvy7dyir4gk6ignmbssmmhjkqm34rpzri9jv50k59lhdzrmz4";
+ };
+ "04e55b081d4e6680ca0da096eab39443e53aeb2a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621793-1958bfdd4e3b49f3a0ca6a4c08a60a0a/04e55b081d4e6680ca0da096eab39443e53aeb2a";
+ sha256 = "1f4mypy8nv0m4xzljlj9d5h13670r78lmp1nrzkyj6pkjaiz9l1h";
+ };
+ "04ec121ce824aec5caca1ddb70eaa21e0191a5b4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/04ec121ce824aec5caca1ddb70eaa21e0191a5b4";
+ sha256 = "0a32ss082pizm8qybmpsl91mc60290wj192rlgbp7q7rvn85j5yi";
+ };
+ "04f2ae9278db23034ee3cb0bbbe67db49b5881fc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/04f2ae9278db23034ee3cb0bbbe67db49b5881fc";
+ sha256 = "1d0l0kjscdgwm5sb454hd7n5vn0x61v78b7zklhjrfzmfsqxxijz";
+ };
+ "052ad62516b7d63eaf4c6410cd2dca0264734665" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/052ad62516b7d63eaf4c6410cd2dca0264734665";
+ sha256 = "1a70f5mk7z053i0xl949gngkysdg3kc810mm88mirzn501xc6rq3";
+ };
+ "05be3410a78afea71327d64933707b9f7550d2f6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/05be3410a78afea71327d64933707b9f7550d2f6";
+ sha256 = "1vb8vsjx7h1k9vdikm02lzwjpyfm409kh8q8bv94d0plh9cpg03l";
+ };
+ "061b4fb485e75b96f3266aff9a762a28b2d77616" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/061b4fb485e75b96f3266aff9a762a28b2d77616";
+ sha256 = "0f4nbrgdpb6dy6z0brk7fidx97svxljqcwng4skqg0rww9275hh2";
+ };
+ "0625d1c6055de9cf9025b2e61299912a56f88ccb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/0625d1c6055de9cf9025b2e61299912a56f88ccb";
+ sha256 = "150c0n1n1fa6f89pxv3rp8yxfcvkca3ygp7fwia0s8zcakn02ail";
+ };
+ "0668d99201136f1b598c5795fa3e58050020e8b1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/0668d99201136f1b598c5795fa3e58050020e8b1";
+ sha256 = "0cmd3ix5b39bakyrra0p9847lq14kb7jkvcl3hw30v8kww4m056w";
+ };
+ "067baa5f7a564bf867b5b337369950ad00e13e99" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/067baa5f7a564bf867b5b337369950ad00e13e99";
+ sha256 = "1jmdc1hpl7hgn22ws8357lg0v98a51d3qa1fqhq3bbvhcssgls62";
+ };
+ "06ebb79f97706bad4850ce9077a9e7e90185e324" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605188-b2b13e5f7b3d453eb5d6b0cde31b638c/06ebb79f97706bad4850ce9077a9e7e90185e324";
+ sha256 = "18ykxqm31gd1ij30a9vf8saygjk162k2jqmpybx00vqawqwbbcx5";
+ };
+ "06f561a38764b8e9c4087a97ed512c995363927c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/06f561a38764b8e9c4087a97ed512c995363927c";
+ sha256 = "1wassg3y5yd5i5jqsd528ddb8j9f65r4k5g981z6l70spk5l0v34";
+ };
+ "0702299294e21ac823c34d43de2a89140288143d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/0702299294e21ac823c34d43de2a89140288143d";
+ sha256 = "08wjf4zk7pba5ac5s2d26zlrq7ld12bd7l35xn2pz9lsd1j4qwry";
+ };
+ "070b80d72403fb102b91c2c7c1eababab6aec2f7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/070b80d72403fb102b91c2c7c1eababab6aec2f7";
+ sha256 = "0jv0j6qp1k1zwww3qvrckisa5cdj39xq9aw3ljsvdfsp10x4i4a3";
+ };
+ "07a88f4f32dff82062e33545b17b0011c4f3242b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/07a88f4f32dff82062e33545b17b0011c4f3242b";
+ sha256 = "139xl7bzcab78s1ma42vl2yqxflxrpgl8qglnwbfdlq1nxbj8yiq";
+ };
+ "07bac5d4a23c9a7bc1695e030017c8694d72a735" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/07bac5d4a23c9a7bc1695e030017c8694d72a735";
+ sha256 = "0f6pjix0slzd06yqgd7vfsdssc3qkqi3av6kvfmjcn22xryq2qn6";
+ };
+ "0818124e55b7ae14e580ada76b6fca5656c05836" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/0818124e55b7ae14e580ada76b6fca5656c05836";
+ sha256 = "0a3frk5viy0pv4ac7jv50j74d985hgq2dnjq6vgkrdcrir7zbz0m";
+ };
+ "084e5de210ff35e876901668dd00537a3a019ac5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/084e5de210ff35e876901668dd00537a3a019ac5";
+ sha256 = "08v9q7796r1nab02ghyvbdsip8bmw07cab6w079vvrqwkrg2ajcm";
+ };
+ "0898f76e0b61476b01184a79f59737933332711f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/0898f76e0b61476b01184a79f59737933332711f";
+ sha256 = "1qrz8ld9a5lv5pxs34icsic6c8fy1ydjx79zf35hvzdaqkds22jc";
+ };
+ "08aafc6b5bf5f6834032ea41a414bf57378e9d6e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/08aafc6b5bf5f6834032ea41a414bf57378e9d6e";
+ sha256 = "10v3b2bsx240fa9xvarh5r4klz2gnqg9ljf2h34j8pqs1fq6dvc2";
+ };
+ "09007b1cd8b9f90a5ab85549323903759f18b852" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/09007b1cd8b9f90a5ab85549323903759f18b852";
+ sha256 = "0vx3k63svxh9iyzy69vwkm6i9kays9jdkc8fzyd71k9wspq4ynvr";
+ };
+ "09510670263d739c9271c8d43047c1e427873509" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2702576-55d4c00170ec40c8a92540c9aee72a96/09510670263d739c9271c8d43047c1e427873509";
+ sha256 = "1wzb6gsxrvc3l1yhlaj533k1ha8c6s5bpnivs0jcqflnc3lfcza7";
+ };
+ "095aae7dd171f8fa10295657651b0889b387ad68" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/095aae7dd171f8fa10295657651b0889b387ad68";
+ sha256 = "0fig4i1afa9y27hhq3dkc5j36hwi5m1h2yviwv2kv60g9k01rsil";
+ };
+ "09601c1491f5d27c2533b4e7c9fb26a2e5eaa4d3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/09601c1491f5d27c2533b4e7c9fb26a2e5eaa4d3";
+ sha256 = "1b99ms4v6shf8ld7faxlckgmz8c8ii5avkhk88809ry6v4mhm2qx";
+ };
+ "09732d6bf762ba4d866616248b46adff0e12d76b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/09732d6bf762ba4d866616248b46adff0e12d76b";
+ sha256 = "0g096y34r6a3f270n7gkh96ybrjl4afgscpzwbk860dik4xkzvnj";
+ };
+ "09b220dceaa8205e3a32a877c58c678dfdb8555f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/09b220dceaa8205e3a32a877c58c678dfdb8555f";
+ sha256 = "1a108nfspg6v2mfgj7g310cxvgq1b3b9i8l0sll8p7dcwdqk5077";
+ };
+ "0a17d50561c9bf1d85e82416f97726243726fe8e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/0a17d50561c9bf1d85e82416f97726243726fe8e";
+ sha256 = "1ibf6hr9zkrvj7x4mlmmvi552is75p60rgbcrr2bxjnk5vd5kixn";
+ };
+ "0a85e36f224c350b058936fdb88cb656864411c4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/0a85e36f224c350b058936fdb88cb656864411c4";
+ sha256 = "1wdrvm3s4asra41zgr309y5rwlw0nng1m4cd8p4gcch8q8vybl1z";
+ };
+ "0adcf8b7399354848f3b1659ae1bdfebe7c5fb54" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/0adcf8b7399354848f3b1659ae1bdfebe7c5fb54";
+ sha256 = "0f3zipklkp21qmsi5y9bm5539pgjn9h85w3r7qxhsa7arq4bfv9y";
+ };
+ "0ae58afa6b821d9172b327831297925b165ba540" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/0ae58afa6b821d9172b327831297925b165ba540";
+ sha256 = "0xi644mlx97vyfzcp4zg2xy4d7xl6bpsqbyrja8vc02ddcqrz8ws";
+ };
+ "0b0c49fd66d2a1e20b9c3dfbaf57920646259399" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/0b0c49fd66d2a1e20b9c3dfbaf57920646259399";
+ sha256 = "1862n366gcqqkf5apc19qg6w6vmyap3hz5f91lskhd3i28zmzcr6";
+ };
+ "0b19af7719665b5651dfb183e0f462030575539c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/0b19af7719665b5651dfb183e0f462030575539c";
+ sha256 = "02015jsy2mzf4hkir3f11xxg2z21vrz5qnwyias322jr3g3k4x8n";
+ };
+ "0b2364f6696f39626a964e4370380b3fc8768b43" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/0b2364f6696f39626a964e4370380b3fc8768b43";
+ sha256 = "0nfz5g0wp7l4kbdjg3qvl0p2nzcravivw0bhbwb7zppmmrsz08b9";
+ };
+ "0b2cd11ad11c170163c7958e24f339bf66609001" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2620227-83084f9091244f6c9bba34d6d2a0fc20/0b2cd11ad11c170163c7958e24f339bf66609001";
+ sha256 = "0qhsp71xk2pj9dq3al2pghnh5w1zsvfwgg4ykm2czn8dqpr6v2fm";
+ };
+ "0b41a5fe69764ca460a102d4569d5cf0a96262dc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/0b41a5fe69764ca460a102d4569d5cf0a96262dc";
+ sha256 = "1w56h4m41178dyi9swrqjbl6jk6hz36i1ax27gmbvlmn71bd25sr";
+ };
+ "0b650b20c8c8aba9b4ffbfff4555352296b8026d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/0b650b20c8c8aba9b4ffbfff4555352296b8026d";
+ sha256 = "0z46pi0np99l1dd63b8c7wlpzn9aqgfs8m90i8shkb8rr83yvqrd";
+ };
+ "0b65847315b6c2c97cf1cb6e6d159e22233c8251" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/0b65847315b6c2c97cf1cb6e6d159e22233c8251";
+ sha256 = "14pcxkamnwscpdq1gw0jdmpxsvilq8wdgpzlgsifdmwhrbzq9dhw";
+ };
+ "0b6608a97e2540ea5f17c2efa77ffe1ee1b3c533" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/0b6608a97e2540ea5f17c2efa77ffe1ee1b3c533";
+ sha256 = "03j28mjv9qhw3inkj2sq9ri7vbajkfg4yq4fydqgas8zxiy7p5sa";
+ };
+ "0bbfc90e364f03102506acd5ad039a28e02cadf7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2618399-180c811b4d074c95af323aa82cdccb34/0bbfc90e364f03102506acd5ad039a28e02cadf7";
+ sha256 = "1p276i1gcj0hm4y3n46mz7inc0dh5naz2kj85aa07dy734qmnayf";
+ };
+ "0bcc47e413bef8dae40e79c9757941b0db15f97a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/0bcc47e413bef8dae40e79c9757941b0db15f97a";
+ sha256 = "0h6qjxy1p9x7yfyawygb44bhlmdli96riclq9jbw9dypgpywmff3";
+ };
+ "0be87d25f74713be10bd98e1e966d795cfe4e5dc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/0be87d25f74713be10bd98e1e966d795cfe4e5dc";
+ sha256 = "0pd540vl2hs57fsbjrxj0vzsilr8mqx5ad47kmcpsk3nckrq6p1w";
+ };
+ "0c8fc2ef1a59d232fd4f22a022e20d492f6e2a84" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2706207-4f57365c766141c988cbd0106cf38f5c/0c8fc2ef1a59d232fd4f22a022e20d492f6e2a84";
+ sha256 = "0knhyb5y0fmbjds7qjhgxq5cvicv925qbp5pkdsa4bqab8vgzjaq";
+ };
+ "0c95d970796b73f6699b10dc55a5f23caeb0e7b6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/0c95d970796b73f6699b10dc55a5f23caeb0e7b6";
+ sha256 = "157klpl089j437v12ngyfy20jipwdb252khg84dhz54dnmsl30l7";
+ };
+ "0cad2c40463fe8795e6ba38765dd8c775689eca4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/0cad2c40463fe8795e6ba38765dd8c775689eca4";
+ sha256 = "1h85ix8ilw61jqiihm4xgkhknsqwfmkhw6zmyc1b3h5iczwa56m4";
+ };
+ "0cb75afcdc3e2acc810f4eaab1c4d0e47b71e66e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/0cb75afcdc3e2acc810f4eaab1c4d0e47b71e66e";
+ sha256 = "1w1h8gj1sln0h4vsbqljnbdwmvfii0iykf9p8pfi616pi1rk0zrz";
+ };
+ "0cec09dea442a96d2db56d5f25830c204faf9c73" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/0cec09dea442a96d2db56d5f25830c204faf9c73";
+ sha256 = "1lik501r5m0jgnrlkimbwanwdd9j5j81xlwcksiyfaf4mx4jfd5q";
+ };
+ "0d1962bd98cbfd172126e306fff8cf75b8796bc7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/0d1962bd98cbfd172126e306fff8cf75b8796bc7";
+ sha256 = "1vjgl25j9v7qnv9829jprsgdlgagsh9rzv22fpq9yyiclxavhza2";
+ };
+ "0d5caa5b5d94abc659bf759feee88b37f4cf4618" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/0d5caa5b5d94abc659bf759feee88b37f4cf4618";
+ sha256 = "0660nyachjcvccrdkrarqwwalp5whg7ja998la6vqbpfq3m4x9dx";
+ };
+ "0dcd2138b0d77e84dd01b019736eefc97445f806" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/0dcd2138b0d77e84dd01b019736eefc97445f806";
+ sha256 = "0a5693qjs5ap9m3idqiadaym0k6j4saan6jd7mi1db9y66r4czsk";
+ };
+ "0e1315e453e0b243c9c0afc4965bc9042f5eadfa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/0e1315e453e0b243c9c0afc4965bc9042f5eadfa";
+ sha256 = "1gjk3jjcnns9pcab7q7b8i46k8lsn5sjmp9vh0cswkl23v3qqwwg";
+ };
+ "0e1a08f56c646fa8ce394a0e41b8cab5a658268d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2608258-d12288bf79ea446a9353c7f9d223b24e/0e1a08f56c646fa8ce394a0e41b8cab5a658268d";
+ sha256 = "1905j12lxpla20xiv6f2cjmnp100mzzp8076n8j295fdn7vbrb9v";
+ };
+ "0e26168a7254c7ba26bf4c06b28033e8387c689c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/0e26168a7254c7ba26bf4c06b28033e8387c689c";
+ sha256 = "026w09ixxqzfgp0kbf60h7qwixd2gnx4v13kb9l3nn0g9p73slzk";
+ };
+ "0e4c8e5cf7fcfddf545be976ecd6d676331d54c9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613635-9840736c5f9647ffa600ff7b7e36f4ea/0e4c8e5cf7fcfddf545be976ecd6d676331d54c9";
+ sha256 = "0r42n43jnwi8w8z0z08p6pzha973qxy3km94w3n0ywn7f1b20wbp";
+ };
+ "0e6c43d516af17c6766c4b204af1a1358451d364" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2748421-cc8960341ac147a18a63389f5fd32945/0e6c43d516af17c6766c4b204af1a1358451d364";
+ sha256 = "1n4n643zzh11k77vwvcsqsz10s8pks5729qbh9wq9ccrs2b5k2kd";
+ };
+ "0e934ae8f346ea8f7834da572917c93731ee3e71" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/0e934ae8f346ea8f7834da572917c93731ee3e71";
+ sha256 = "0n6czxwf531phc7l9d1daymylsvlhspfa6byx73nj2piifrnzcm3";
+ };
+ "0ed7e089f52f2e816998664ec165b776a056ee6e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/0ed7e089f52f2e816998664ec165b776a056ee6e";
+ sha256 = "0nl7j84np4v6109dnvslal6p6w8ycx8ai9nnagkg8bcsq9a4ramz";
+ };
+ "0ee5f371d8dffa94c5df7c2c1337d8a7029c022c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/0ee5f371d8dffa94c5df7c2c1337d8a7029c022c";
+ sha256 = "0jh51nbdqcd7bz5sqj112q4y3iqr47lnp725f32s5ad9ywa2jrpv";
+ };
+ "0ef3349a6ee43e03e0390d117749207582bd62fb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/0ef3349a6ee43e03e0390d117749207582bd62fb";
+ sha256 = "14qi1p9fxb0mgvhnriqf1qx716ap18vfsjp7kdcmn295fqzkxl8x";
+ };
+ "0f5530749f1eb9cd579c611a2c19eb675d225841" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/0f5530749f1eb9cd579c611a2c19eb675d225841";
+ sha256 = "1i3ngjajjhv2yamk2hcza399iylja42ygjbp7kwqx6qxvc2vh02p";
+ };
+ "0f74ff9d91cbb2b2061d50909d5d7f093b845a72" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/0f74ff9d91cbb2b2061d50909d5d7f093b845a72";
+ sha256 = "06a5r840iksqmzch0l6hkngd2rv2s7dbwlp7dw1gwfd1ql9vm3c1";
+ };
+ "1015366202732d5b428dc71ad9ec5fa99ca1b874" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/1015366202732d5b428dc71ad9ec5fa99ca1b874";
+ sha256 = "1s4q8bzbxypj650pwrbb6mqr9yqskavdrcj8kw03hj5fz29d9szy";
+ };
+ "1016254965add7631ca2982903c6d0169b0d45b2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1016254965add7631ca2982903c6d0169b0d45b2";
+ sha256 = "17rp6pixbs3qi9xyzh0w7kq1hcywckayd1q2db77m48rg36gvg6s";
+ };
+ "1028eaded56f0e46a92e7188a0e4dae970bc77c8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1028eaded56f0e46a92e7188a0e4dae970bc77c8";
+ sha256 = "0867qswbqmmlam1l1a2d2ynzb1p5fwwp92mfb19n1ippgy6d128g";
+ };
+ "104b55382829a7351cea26478445bfa8e601d755" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/104b55382829a7351cea26478445bfa8e601d755";
+ sha256 = "0sr5c506zphmxclrzbq9b23jc8bcvwx58hpqzqg07d94qw9p4rsb";
+ };
+ "104eb620cbaf2629b13d4f5dc9edc9a888ff2e33" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/104eb620cbaf2629b13d4f5dc9edc9a888ff2e33";
+ sha256 = "01z335z3ddkvsx4z96m9w96hbksg29miqyn6wmvgpbsvgbp1wmgp";
+ };
+ "106f60f7c4e09a6444df98f226b3b925941480d8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2467022-c410c14385ba462bb86b4995040cdcb9/106f60f7c4e09a6444df98f226b3b925941480d8";
+ sha256 = "18xzn1iphddc7hyniyhrlsv36cijij7724psb9nq2dz5dpclg3db";
+ };
+ "10723922ccc14914c163a9546c40f01779891869" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/10723922ccc14914c163a9546c40f01779891869";
+ sha256 = "0pi4s4r7pk6adb8v5f1g9bs3jb028yqsg4d82nd7p99qw4q4q20x";
+ };
+ "1077e9c2c6e2f36520c08a148ce3709a6e10a8ab" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1077e9c2c6e2f36520c08a148ce3709a6e10a8ab";
+ sha256 = "1ms7r8pkbrsrb7brbcralbmxl20lhb8a77zhiad3b9xbwyil4p67";
+ };
+ "109ac2799187c1e94076a2db14922c275e94adbb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/109ac2799187c1e94076a2db14922c275e94adbb";
+ sha256 = "1viw9fa3gd8sc4qdfxh5x5b9pz8712xa15sfgjr16h6mb9h5y4yy";
+ };
+ "10bc8f77ff0fe6245b5ecf2b32ffcee97d4d42d4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/10bc8f77ff0fe6245b5ecf2b32ffcee97d4d42d4";
+ sha256 = "0f7i36149z2g7i4j8z7d5d3xnw476d3raiij87y0siixw0fl0js1";
+ };
+ "10d7ee1bc39b827fc0238870cf1aebbee7ed2b0b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/10d7ee1bc39b827fc0238870cf1aebbee7ed2b0b";
+ sha256 = "1088hkj96l5kxx3mww39nmkv2mzvc97syx2a9w6yys89n5y166qg";
+ };
+ "1142cb9f18f922166ae87d131c1fd09dce63f6d9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1142cb9f18f922166ae87d131c1fd09dce63f6d9";
+ sha256 = "1frmz1rbhzfinz06lg14pcz7mbr1sddl6v9n53p2dq64lkrpcsw6";
+ };
+ "11485b16ed1b0a1f37aef0aec2e8a7afbf490e75" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/11485b16ed1b0a1f37aef0aec2e8a7afbf490e75";
+ sha256 = "1i1619cvimdj4a6786prdr1c76ga37blckyx6zzqkarq4idl3k9y";
+ };
+ "11beb714095ff4a699b6f0a3543c8c2b82cf1a0d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/11beb714095ff4a699b6f0a3543c8c2b82cf1a0d";
+ sha256 = "1iyb0g8rbhhjs87z8iadjddk254z3jn6g9c80v93i6vgw8k9bcbf";
+ };
+ "11fad551f44760406d524cb0e1892580b9be77bc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/11fad551f44760406d524cb0e1892580b9be77bc";
+ sha256 = "00bj5pkychks7kaipf1dqkw7bhf0597g4qlh6rbm8qn4zd5f2747";
+ };
+ "12468bf1be869d88d9a8104ffde7c4887839843d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2608258-d12288bf79ea446a9353c7f9d223b24e/12468bf1be869d88d9a8104ffde7c4887839843d";
+ sha256 = "0h5a4gfvj1hjxv4lj0m4bzavfh8akwbz6wg027q0mjnr143k0pr9";
+ };
+ "12d1a73c1c063a416ba2a70fa0cb25ebee04cedf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/12d1a73c1c063a416ba2a70fa0cb25ebee04cedf";
+ sha256 = "0wkrw8jwjwhk3zvrs883xhrwcrppg8j3plnvxb109d67k7c1pd1h";
+ };
+ "12d213957fbfe643a97d5072b1f6ae30aeebcbb7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/12d213957fbfe643a97d5072b1f6ae30aeebcbb7";
+ sha256 = "0p4pzcn3fmqnkz93wk023zzs1f12c1xpsx7fkz2hv8i4jm8mrkb4";
+ };
+ "12eb0444499ce41f101b1b5f9dd6b87894949511" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/12eb0444499ce41f101b1b5f9dd6b87894949511";
+ sha256 = "19nggqdvkq6rap0sqnpkyrwsc882dzy1cg2lbsbd88s2nn6lrc3q";
+ };
+ "131d64c4948a0370d99897b2ad5a968b160e4300" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/131d64c4948a0370d99897b2ad5a968b160e4300";
+ sha256 = "1g0wf836rpmy7g291wyf0xwyr8g196cb0val8lzg5pa5qxivpr1g";
+ };
+ "132e734bba8f24cfaecbe6e03b85b76158a57d1f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/132e734bba8f24cfaecbe6e03b85b76158a57d1f";
+ sha256 = "0g7qw0y8006hmmfpmrz80628l35380960j54iqrp88jbqlqsd1p9";
+ };
+ "139f335e517878be52106907638e80140951abaa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/139f335e517878be52106907638e80140951abaa";
+ sha256 = "1xdwmml0i40dvdi148fzk7xp0wcpx4vfp488159xl09p88ad9zk3";
+ };
+ "13b3c6250566821e05b35dd3296b5686aae3f325" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/13b3c6250566821e05b35dd3296b5686aae3f325";
+ sha256 = "0dcis8x0fpq6k33bxfhnh0j0bywr084l8nla6jkx6pfvwirq06cy";
+ };
+ "13c7b27a977c4bf9c4e07a19ffb106c1128995bd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/13c7b27a977c4bf9c4e07a19ffb106c1128995bd";
+ sha256 = "1387mczy66xavzg995734s7vg45nn895pm3pp8n2yrgzhd1qfzjz";
+ };
+ "13f0a72b4826430335caa709e76f92079ca53b13" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/13f0a72b4826430335caa709e76f92079ca53b13";
+ sha256 = "1w7wbwifr9896ndbmpxmx85md5hb1v8amd8paryn8jb573hjl28d";
+ };
+ "1411432bb3fedd8dc4b429d4f6929746ef0e0a2e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2622402-86d1483fa60742b6be9fd5a0b0b946e0/1411432bb3fedd8dc4b429d4f6929746ef0e0a2e";
+ sha256 = "07586dvm3qmccm5i0894lwcc8zfjx95c8vvdp619vip6xg825g5x";
+ };
+ "142674e220c8509ae1f8b001af30a95d6b08951c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/142674e220c8509ae1f8b001af30a95d6b08951c";
+ sha256 = "0bzlrpir8fw10360kzi422zbhaal8sqdpl77qx3fk3gxhvj26r2h";
+ };
+ "145ca8052bc6fccd7bf7af21f36664fc217f2f70" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/145ca8052bc6fccd7bf7af21f36664fc217f2f70";
+ sha256 = "1ip6wspykfvmxidbwfhflfzbcnqzfmmmhgax5nxg5pla2yn71kdk";
+ };
+ "1463ec95f086a9205c1ab27df290f232964381a3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/1463ec95f086a9205c1ab27df290f232964381a3";
+ sha256 = "186vk4bdmrd6ggyxz2db5713i3zkqzph0lyr3aivgj0a4ha8gfkn";
+ };
+ "1467cb6b7644671f3127567be26cf07d20b6da7e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/1467cb6b7644671f3127567be26cf07d20b6da7e";
+ sha256 = "0laxdgvsskc4gzbfnbal80ab7pd81v31qg8rcp9pjw1np5zpb63j";
+ };
+ "146b3768fb0d7880b8c751140d38a1177906de0f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/146b3768fb0d7880b8c751140d38a1177906de0f";
+ sha256 = "15v9nwb7m1746zrwfrgfgf8va5x88by8chsa3ivgraa5j6if1px4";
+ };
+ "1471837617ec5898ca2e49cf20ad5e0795687b7b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/1471837617ec5898ca2e49cf20ad5e0795687b7b";
+ sha256 = "0gycs7mhhq9y3c5dd014ggbbg3609kds5vzj3v45kkydkylqm0l2";
+ };
+ "148131344e6fe6a2249ce840916527aca52dbc35" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/148131344e6fe6a2249ce840916527aca52dbc35";
+ sha256 = "0y5h5v8vlr8jr8yyy529yrjg5rw75jpxz4fa7jmbpr6syai2bdwx";
+ };
+ "149605f77f4487d4f238f2439c46df83708b08f8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/149605f77f4487d4f238f2439c46df83708b08f8";
+ sha256 = "04rqssi1ndhgps7wsq1zxd2sk5p6michbfn1hi9g072gc0qp5c8a";
+ };
+ "14b7da233b40c5199352d0ad87f5c2ef529fbfc2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/14b7da233b40c5199352d0ad87f5c2ef529fbfc2";
+ sha256 = "1akz1k4wh5hz1w8zd6hvkmvc6w6hadw2psrr4rwpvdnkvhmnh3yh";
+ };
+ "14d50f80e32417f2f524ef471610a343fd6eb8b3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/14d50f80e32417f2f524ef471610a343fd6eb8b3";
+ sha256 = "18db45x0zfwxd9v0x1jmid7lklp3ib565d98sqjzbyzfvmq8q6f3";
+ };
+ "15299d434cd85410167be0405f54ccdeeaa3f831" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/15299d434cd85410167be0405f54ccdeeaa3f831";
+ sha256 = "0ivkh9ysa6nx4dw5bgqb00nynjzbn9gb1ihj43nccxskj0rynz7a";
+ };
+ "154306df1d2a4877cbc22db8224277c856f1b6b2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/154306df1d2a4877cbc22db8224277c856f1b6b2";
+ sha256 = "0jys95p7vg6gjxsphg1widz471ap8hw3y4vz1msw85clkgxh9szl";
+ };
+ "1567a031ece4d70d2c360767b32f084b40eeef63" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/1567a031ece4d70d2c360767b32f084b40eeef63";
+ sha256 = "04gzs1apaimrmkgsc76qlccqh4z7y7d221fxfaszdlvjaz9k7njs";
+ };
+ "157c6388b0a3c7a95bc29c5ae0f8e920a39dd7dc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/157c6388b0a3c7a95bc29c5ae0f8e920a39dd7dc";
+ sha256 = "10sx2ac6w30jbf40l8gixwv8zx4rkdpi5n8a0nfgbpay72rymi2k";
+ };
+ "15a502cd7ed28b9a7f8bb3e95ed15009b0e9a29e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2468936-39e1c39556f84e60be8d850c452aed67/15a502cd7ed28b9a7f8bb3e95ed15009b0e9a29e";
+ sha256 = "14zkdf9f592y3ivk49by1dpydv9rrpzggwm5997ykxz7ws04i1lp";
+ };
+ "15a50c3fc6a68c2b5fc5d130da66af83529e7ed2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2709658-e5f367f730d84b618e9cbc16aceb91ca/15a50c3fc6a68c2b5fc5d130da66af83529e7ed2";
+ sha256 = "00021z0mfhlx9pkfn04cv07k4xlzywj4nd19mydqppm9r0vw5fwy";
+ };
+ "15eddf9d2c822c3f5a608ff772c24ca1c2928c60" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/15eddf9d2c822c3f5a608ff772c24ca1c2928c60";
+ sha256 = "0jnslw7j2msim71pgjv2w8jd2xq48ipjw0iryw9i8vibgb30ri90";
+ };
+ "160a1829963e541ea0fc69e090047543f0c547a2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/160a1829963e541ea0fc69e090047543f0c547a2";
+ sha256 = "0lshw7xhf4z4jzanbrr6q8hmq8xir8w9syl6akfbpjdc25yab0jy";
+ };
+ "1623d3a181ce7eddf10a90c3c235075fe55bca69" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/1623d3a181ce7eddf10a90c3c235075fe55bca69";
+ sha256 = "0r8plai0830ywnqpmrikzr7y1hw34qbfgiigagrr04z97g775l4k";
+ };
+ "1627ab02a99a1389c8f3330ff31a92d4994ef631" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/1627ab02a99a1389c8f3330ff31a92d4994ef631";
+ sha256 = "042si54d7qxziwy6d23fqkcdifqjpqf8j1gs9s5w2csaqy1bjyvl";
+ };
+ "162be3e52c290eda8052be126f9b1b9f19a5e182" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/162be3e52c290eda8052be126f9b1b9f19a5e182";
+ sha256 = "01g1bj3sld338a22ian9f0mnim418l6j3n7zy23sk6a5qip4h726";
+ };
+ "16311b83711df9620e3ea0adad878eb4547e2dc8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/16311b83711df9620e3ea0adad878eb4547e2dc8";
+ sha256 = "084iaizc503s24cmximifd4gadlksslras2dv4l46ngik7mmwkzw";
+ };
+ "163784cb855cf579aa85c8d84241ac308c31d9c6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/163784cb855cf579aa85c8d84241ac308c31d9c6";
+ sha256 = "185fjh744ynh1s45z7ikyhw0mml2vwfa2db4byv8zv122x10844h";
+ };
+ "1679ff7ab2527671a6c79835501cd4447f769d26" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1679ff7ab2527671a6c79835501cd4447f769d26";
+ sha256 = "1rdlg3y9ihvhi2lf1isabj58y6f8lj24x6yb4xh9jqm8fgdjbn5x";
+ };
+ "167a3b509221baa789dd8c568b74ddcaf7c4a7c5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/167a3b509221baa789dd8c568b74ddcaf7c4a7c5";
+ sha256 = "143g5h823i5pcbqb30419i1k6mq2s3mhmcgcfn8v0jm83lwar4i9";
+ };
+ "16e421c9204b08586edd8de93b93b19fb10644ea" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/16e421c9204b08586edd8de93b93b19fb10644ea";
+ sha256 = "0b9ki8rj1xmy9zaa52d3zbq7jk95mjv8b17qyb0zrpirl51g46gg";
+ };
+ "16ff1b3c00e3fef8b809b49a5b63be510b23dc97" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/16ff1b3c00e3fef8b809b49a5b63be510b23dc97";
+ sha256 = "1fa3b7wri025cgjkd4f4v7pmi13qkza4i1f9zpmcpwfiwvvi8dgx";
+ };
+ "17a98e6cd0892c88290f9dd9e9cb3fde84e8798f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/17a98e6cd0892c88290f9dd9e9cb3fde84e8798f";
+ sha256 = "0yhrwdwjn7fszj38ihq9cac1gk44xinnrh506rglmcw81iwz4j39";
+ };
+ "17b2ed6bd21c462973aa928a668bafd1f8ebcfbb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/17b2ed6bd21c462973aa928a668bafd1f8ebcfbb";
+ sha256 = "1pw6irhilhicr1xkxf5pvv1ylkckxr8180nvsdnfigrzyk5732sc";
+ };
+ "17f24542b619ed66aa29fe28eb716b4dd4c33d84" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/17f24542b619ed66aa29fe28eb716b4dd4c33d84";
+ sha256 = "15ssnahf78zv5is9n69cd4hyn55iij0zcdqzg446bzpslpd2y1vr";
+ };
+ "1802e0cd4e93677f9da0d094475296d070a0a167" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/1802e0cd4e93677f9da0d094475296d070a0a167";
+ sha256 = "195dqkx2pwmymd6agn5k72rs6plp6nvap7gk7h5wk9yip51lkmh4";
+ };
+ "1819e4a555e0b22457eb52ec088f2d106697434b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1819e4a555e0b22457eb52ec088f2d106697434b";
+ sha256 = "1pmz470s77fsl1d2sqf2kdspb8k08xw6hw3f3y1wk9w3w10mcqfd";
+ };
+ "184edcd2f9fc791ab8f0ecbb980e124e1622311d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/184edcd2f9fc791ab8f0ecbb980e124e1622311d";
+ sha256 = "0zcc4qhgzg56hayaiqxjp63bxa0jkf8ws95kfm9x3b4va4qzg907";
+ };
+ "185535353a9576cb4f9e4a7fa3c1fe649d00f26b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/185535353a9576cb4f9e4a7fa3c1fe649d00f26b";
+ sha256 = "0llsp8z8av08d6dp442abpp4pwvc7l5flh9nd29q7l156dxz5nq9";
+ };
+ "185908a865ebe7f6ee31701211aad217de343c7f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/185908a865ebe7f6ee31701211aad217de343c7f";
+ sha256 = "1xmi888fc5hwcvgyw73g6f7gwwhwpybi8sl41dbrj5pjcvrj2clg";
+ };
+ "187cc49caa5b9c37b965dc6d5ae486c963873c47" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/187cc49caa5b9c37b965dc6d5ae486c963873c47";
+ sha256 = "1ghn25c2pxibw2wnr5c7wyk8hfdvchm27bqncnxi0vby0bwdis6n";
+ };
+ "18943d114a03b9994e64f86843cbfbea2c18fc60" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/18943d114a03b9994e64f86843cbfbea2c18fc60";
+ sha256 = "00dgywg4p8502rm5b8ykm5xqfb8i98nqip3z96vpbwqlqllxz2fq";
+ };
+ "18d1e1adb711eb56d874c79f49ae68b3e26fb044" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/18d1e1adb711eb56d874c79f49ae68b3e26fb044";
+ sha256 = "1zmdhkcbb8bsciycigj8x7ijc7wxcg5hj21588jimfl4i48zqw78";
+ };
+ "1916cbea932d8ec4cbe73743294b2456b6f82f4d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/1916cbea932d8ec4cbe73743294b2456b6f82f4d";
+ sha256 = "1a0dqqqmk6aj2j90qgf6qz91i37azisqjbrr9srxs42x8q8mhx2s";
+ };
+ "1919f737357402ffd6035ef99089bf4492ef39ce" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/1919f737357402ffd6035ef99089bf4492ef39ce";
+ sha256 = "1qnry1aa0hhi4cr279293y35ywl57llrkdgrmhpwi6cvamyfpyrb";
+ };
+ "196a7cd92cd85833aa987ab46cc84abad637e671" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/196a7cd92cd85833aa987ab46cc84abad637e671";
+ sha256 = "1xfbv83r1920v5lv4fpklmv21mmhfykkrfar0cm0yky3nyl93wi3";
+ };
+ "19bf552b5636cd53f93b288b3393447e0a9fa015" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/19bf552b5636cd53f93b288b3393447e0a9fa015";
+ sha256 = "02cxv7wmy2frhl6kc93y8r98ccpq9cdjji5pdyxniwmwjvnbd152";
+ };
+ "19c8ede828d4e84d3023a8cad20c4118e92c51f6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/19c8ede828d4e84d3023a8cad20c4118e92c51f6";
+ sha256 = "1br3pqv9fwrfcrxmxai88qa0wbi56ik5v66x4pzwp2k20ihahmny";
+ };
+ "19eb01d07ed61f10eba97cb487040edf44235d88" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/19eb01d07ed61f10eba97cb487040edf44235d88";
+ sha256 = "13pyc8jpln5a5d3nxbbgjkqrl8v3vngg0lzsgkjaf0ddk6jr0vjv";
+ };
+ "1a2a4f3777f219966c172ba8de9cb16dc214645a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1a2a4f3777f219966c172ba8de9cb16dc214645a";
+ sha256 = "0ghw873w98wx4xv0qwfqa0yshfyf6l58yymf64yw5gignay2jzf1";
+ };
+ "1a42be4a1a8f42a72c27e99abb9741fb826a99e9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1a42be4a1a8f42a72c27e99abb9741fb826a99e9";
+ sha256 = "15ph4vwd1r4gcv25ib0y93jvcxd4nihs32c5j1f5jvr8xgrgrn7f";
+ };
+ "1a546bb1c6ba2765dbc10b34126650d033464bf8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1a546bb1c6ba2765dbc10b34126650d033464bf8";
+ sha256 = "089h0npcbvxh3nisns5p4ld9pfyk18f16gm9zf90jjcq4r528dqh";
+ };
+ "1a5ecbad3eddb57b522f4873840b8a716d98b2b9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/1a5ecbad3eddb57b522f4873840b8a716d98b2b9";
+ sha256 = "04yfwjcj5w7iwyghhzbqfj4vymy9lfvc9ncxk9z0ll75f2sf0kil";
+ };
+ "1a81e6c5fd4cc760a6589fa20070d26a9cb6e53a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/1a81e6c5fd4cc760a6589fa20070d26a9cb6e53a";
+ sha256 = "0gyx0sq7k9cilcbcl2z49icf5jbknc1qcix2156nar2f8v5mqxmz";
+ };
+ "1aad9a745382e917c890acd98a988a1536087fe2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/1aad9a745382e917c890acd98a988a1536087fe2";
+ sha256 = "1hjxm0jz4bwllb08ix354i6cy78dy9vwklw9rpspdxqqkis8jxs9";
+ };
+ "1acfcb65de4dc96785b1705ca6c0029e5e4cea95" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/1acfcb65de4dc96785b1705ca6c0029e5e4cea95";
+ sha256 = "169xwg1jrwclx20qyci8az8rffmfn22z1x2zvib9dsmi3451mk3i";
+ };
+ "1af0a9938323c32bfd00373e1eeec3f0eb7267f4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/1af0a9938323c32bfd00373e1eeec3f0eb7267f4";
+ sha256 = "1a70ajr3s1msvsmyjmyg6vq8jh8ba5xc1f0k2afjycj3vzjrlgmr";
+ };
+ "1af8c3dcef0a363b208600f3db2ab066d1c407b0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738476-1eae05647f894f068d67ed64f86505f8/1af8c3dcef0a363b208600f3db2ab066d1c407b0";
+ sha256 = "13q98b90nhzqm9mz24nhdahz1i1gvja5gkab5p5mxsqbkm15r6vn";
+ };
+ "1b6ac4ad1dd42a8d52a6cb4a24b64cd86c92cc83" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/1b6ac4ad1dd42a8d52a6cb4a24b64cd86c92cc83";
+ sha256 = "03nfc20m6av56gqsg20h2jzc28crmvxs8ychxg0k7cmx7bzz1r23";
+ };
+ "1b6e2211b6ef64b74fd226f74bb7fdf14f384868" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/1b6e2211b6ef64b74fd226f74bb7fdf14f384868";
+ sha256 = "0fnzj5qxrmgc1mly6my307g9if6mr3pq8mnsdhz7sdpglvqx9745";
+ };
+ "1b929d889ec58a690a9fb4fe5c7e74eb60c339a5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1b929d889ec58a690a9fb4fe5c7e74eb60c339a5";
+ sha256 = "1mrvhvp5r3mhq490w4ymjdf4f7ymp56ic8waxdd6ms8xgkrq9cpa";
+ };
+ "1bc440e5f448e7dec6f97dbb519814d6c4b17b0e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1bc440e5f448e7dec6f97dbb519814d6c4b17b0e";
+ sha256 = "1vriwq47ck2inw22jl3vy4hn82sphlkdp22jzsxl9wg1bjkp7phf";
+ };
+ "1be30bac2f567e402ae48b89e8355a4b4e609b8a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621166-706a1811c2684ac5bae65fafa17839c2/1be30bac2f567e402ae48b89e8355a4b4e609b8a";
+ sha256 = "145nr5766qs6nhakskrh03b13m650n499q3q1pcj2yzb8qcmr8ml";
+ };
+ "1bfd97f204592ed48706e423bb6ab7a6128cad7d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/1bfd97f204592ed48706e423bb6ab7a6128cad7d";
+ sha256 = "1702mbcd7a2y4hsqmqy7cdr23h628f31spyj6wyajrixqb0xgr24";
+ };
+ "1c70d51c5e2d2a9ebdb87dc176b3cbe48c275309" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621163-719903f8599f48949652ccefc2a2d5be/1c70d51c5e2d2a9ebdb87dc176b3cbe48c275309";
+ sha256 = "0rzwsxpr3bwsgfpwci3mmy9wvwjkf1p6jam19rnnqz1h88w7ijxx";
+ };
+ "1c803eb30ed3570e150cffbce8729d1cc54e8fc3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/1c803eb30ed3570e150cffbce8729d1cc54e8fc3";
+ sha256 = "0p9iyll322a8cfdy0h1briv01hxw0iafbq43w5k7sy8kysv5ffl0";
+ };
+ "1c8d955be9265f85641ccaa5c0c9abacc66115f7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1c8d955be9265f85641ccaa5c0c9abacc66115f7";
+ sha256 = "0x7f04mypvy01v78xqjf2q9psw5f0fhhyyf2q4hww70s23xl3j2s";
+ };
+ "1cbf6a11e17024243825f5ea454051bf5b1e7d3f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/1cbf6a11e17024243825f5ea454051bf5b1e7d3f";
+ sha256 = "0xhgb9grcd2nca9yn495n5d0c0higjqcglhc2ra5kp57fsqmf9vx";
+ };
+ "1ce933b4731d07d18548a668fca861035354bbf2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1ce933b4731d07d18548a668fca861035354bbf2";
+ sha256 = "1bww5rid4w5zjn40701x1509qgn44wfhp9mz723axmdykp5ak6kc";
+ };
+ "1cf61777b0744f76064a8cb5a1d0bc1bb2d3165b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/1cf61777b0744f76064a8cb5a1d0bc1bb2d3165b";
+ sha256 = "1x3jww0rzkrx2ybx85ncq0d4zwa60x6h05sjm4r0gps8vmjalnl9";
+ };
+ "1d09bb4f8ba502cef13de6d570839e6790bf3542" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1d09bb4f8ba502cef13de6d570839e6790bf3542";
+ sha256 = "1xfdfyf3pkazb1583qjgv6planywm5ajhqpjndhwn0wkim6lakmb";
+ };
+ "1d5c9571ce51f244f1e0158e0cd49bd36f16bfc5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/1d5c9571ce51f244f1e0158e0cd49bd36f16bfc5";
+ sha256 = "040f2qb2g7jf9hzc48xkszy5adbwnbxy22jmp8v6q9h9qkfvm7w4";
+ };
+ "1d81bb3fd4494d2d93359f0cbecd2e9e20e67a09" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2532063-ce5a2c068f9844c8bb5d0e603da092af/1d81bb3fd4494d2d93359f0cbecd2e9e20e67a09";
+ sha256 = "16xman4991dvi5m50rmplp18xb89181261g5rczkjznkf7q2973a";
+ };
+ "1d82f1e693e8f317ca408dc5159b1a6afd317016" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/1d82f1e693e8f317ca408dc5159b1a6afd317016";
+ sha256 = "1ng1h62id2a1h3kd9mhakbfr568wkm2whbn2lv2x4l1q3ahrw9ix";
+ };
+ "1dc7018f35ab6ebe2908608910fbaf9214506ecd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2616691-982be94b99b442419e99de37630ca843/1dc7018f35ab6ebe2908608910fbaf9214506ecd";
+ sha256 = "118xrnwqmjfqndg3shn1iw90jnjvxbmr6y9ws0zrn4bas0bsn9bj";
+ };
+ "1e0c495e2e2fc0f9ab567761cfeec0d8659f6572" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1e0c495e2e2fc0f9ab567761cfeec0d8659f6572";
+ sha256 = "0423h6jq38k03zcfrnh1kkz3dsplpyij4ysrqqyyagni3l0wpwad";
+ };
+ "1e8e90fc8fbee70866085a1fbd7ee5585941dc31" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/1e8e90fc8fbee70866085a1fbd7ee5585941dc31";
+ sha256 = "1qdm6qkkmxxcml9bi121dvg36j55qzzzy7hslzg5ap8c65vcd00x";
+ };
+ "1ef5c21107774059ed6c5010dd2d5f3373c81445" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/1ef5c21107774059ed6c5010dd2d5f3373c81445";
+ sha256 = "14lmgyagsk3sszh04w9r4gnyi99vhqkccy9408fypxs33l3g2n3a";
+ };
+ "1f10b8e0a3d6f6fdfe5b451508626eda10e3e771" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1f10b8e0a3d6f6fdfe5b451508626eda10e3e771";
+ sha256 = "1plprfagzg8izyrr3dy5wnmlp0sm76kg0w36001j105accnqkn7l";
+ };
+ "1f3815ccc8afbd78900f57993ac9ee538ad3a776" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716370-1fe4be93d0274863a43a7797419557e3/1f3815ccc8afbd78900f57993ac9ee538ad3a776";
+ sha256 = "11i9z6hzviapkp8llkn96m5nb9xmlkbxiv8196zkmqxp759a2917";
+ };
+ "1f8e075fc05cbc97e7fd21ab40e0ceeb595c741a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/1f8e075fc05cbc97e7fd21ab40e0ceeb595c741a";
+ sha256 = "11g2rvmdj5dv5r2kfrw5ccmgl8cbkkhjmbaqpdmhiw306fd9fq5a";
+ };
+ "1fe2947f6b39cef244fd00698c7cb7adcee1d927" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/1fe2947f6b39cef244fd00698c7cb7adcee1d927";
+ sha256 = "0kviyyjr9hqnibzk36fxnbk7ad8fb2a7gf3hdmlb88jq3ymd4bm2";
+ };
+ "1ff18f725dd963421e618df72bf8a01bbb35d02b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/1ff18f725dd963421e618df72bf8a01bbb35d02b";
+ sha256 = "1ki17xws01fvhk796f1qf7yshwgv1a9xnmg25iq2ikm47gjjx9bi";
+ };
+ "2061aaa6e57d72cbc697076a3bfff9ede7a0a405" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/2061aaa6e57d72cbc697076a3bfff9ede7a0a405";
+ sha256 = "1siplly88g11327ync8771kzpbdc9g75645fai37rvawip526cln";
+ };
+ "2099a8b27bb01df580dca27c74682abb819d7424" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/2099a8b27bb01df580dca27c74682abb819d7424";
+ sha256 = "1jjcpc1nqk10xhk5y53qv0xwzh34wjcvn2cykjxn5g10n1vs5iqx";
+ };
+ "20b2c00511aaf3fb29dfe2ad61683427686bdb7e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/20b2c00511aaf3fb29dfe2ad61683427686bdb7e";
+ sha256 = "1dkbivkv0vz5rdwaanjzvc47k1yczdgjb9w0qllxwrdgixacnbv4";
+ };
+ "20ce1ae8d2c0f8a6cc946c302b619dfa82a8d0be" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/20ce1ae8d2c0f8a6cc946c302b619dfa82a8d0be";
+ sha256 = "0jba3b03d4gb62a7zj758j856mgw5l16zw99xdcgp8qd17nwlksp";
+ };
+ "20f22f8b8176717ac951ccdc7e6f5f56806df59d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/20f22f8b8176717ac951ccdc7e6f5f56806df59d";
+ sha256 = "1fndrfy6azyh1ckzmq4261cs1mpq393abl1mc2k3cxgn67s4ymcn";
+ };
+ "211fe5f3ea5194f89c18a81f99259151734b4118" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/211fe5f3ea5194f89c18a81f99259151734b4118";
+ sha256 = "121q1z4mj75vmcvbvyzb6i05xl8s7nkn700fd156z65g7ywn1dfd";
+ };
+ "2130d3a7a6cb4b7985001c43cece413b95605a04" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2130d3a7a6cb4b7985001c43cece413b95605a04";
+ sha256 = "0bx84arn6w9iic3q5xwd9v20qlpgashanm12qwrxy9dpvixb6z0l";
+ };
+ "215f16be383b3e37f6ab866a94263c078729c9ef" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/215f16be383b3e37f6ab866a94263c078729c9ef";
+ sha256 = "1k9dqr8ll66yp75mv2rx7if4zknrb02yb927xkwb2vvf8smy84x3";
+ };
+ "218b41b249f8b8cc60c48cdfe5f9f3139acec694" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605020-6cb4e3cef2f14bbc9f4e8bd763c3120d/218b41b249f8b8cc60c48cdfe5f9f3139acec694";
+ sha256 = "09iqnxhngdhsysdvlr05nvz261x7y320b66pgl3m5q5nm1b4vxc4";
+ };
+ "21907541d849646ca7b37552024a6bcbab11cce0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/21907541d849646ca7b37552024a6bcbab11cce0";
+ sha256 = "1dscgs1k5p0nsxkfhmwiw29vik2zs317gks9hb6hlkcl62852snl";
+ };
+ "219229e93fb1bf7a335603340498ba0d7dded08a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/219229e93fb1bf7a335603340498ba0d7dded08a";
+ sha256 = "19wwpdx566x9bj3ygiyni23z7q2qdj9nxvzl9wb5nym3nfk75zq5";
+ };
+ "21fa784bbf679195e305e3c41f0638cd402f6834" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/21fa784bbf679195e305e3c41f0638cd402f6834";
+ sha256 = "0iga4d8n471pvk1jfzkg0mvz37lp3b3908dmqfls0lvrqivyi68b";
+ };
+ "220e020f8e3d2a2de2da4e1a95e72d0a2efe26bd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/220e020f8e3d2a2de2da4e1a95e72d0a2efe26bd";
+ sha256 = "0jiva87bjrriz0jyx153p6ddisckqam6wl7vzxlxwg9bhc9yadww";
+ };
+ "22118798b30814806475890a25dbd3082cf56d24" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/22118798b30814806475890a25dbd3082cf56d24";
+ sha256 = "1sdlqrj1k5adb1z19mjikbm8cdg12h2kvaprnh6pc4bhs9l8210b";
+ };
+ "222160b66bde04349f00f790676a49a8bd3f2aac" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/222160b66bde04349f00f790676a49a8bd3f2aac";
+ sha256 = "0nyd9x389a3bk22kpgmispq6a62y8p5gbjbzdchcznvfjvbg8mdk";
+ };
+ "2265f48eeeda05a6393f1268fedaea74e5d989d4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/2265f48eeeda05a6393f1268fedaea74e5d989d4";
+ sha256 = "11wk6krf02vqza7mxxdfm22bl19dfsdb79fd23m56yq3i154z65b";
+ };
+ "22b3cc937fab3025d3abf8d725b2cb3b1d12ef3c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/22b3cc937fab3025d3abf8d725b2cb3b1d12ef3c";
+ sha256 = "17blrcaa86q8my9b4c1gnp804w7csbrxw92pa5jcag1h68vb2dir";
+ };
+ "22c962e9607d75b5917d731e9a66bd74fd15f2a2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2458551-07195e4b171247cfbc0f6645046eda02/22c962e9607d75b5917d731e9a66bd74fd15f2a2";
+ sha256 = "1vzg92pqixpi093rjb8mvnmxd94dplhwpwwm2wkip9asis0wamcb";
+ };
+ "22f8914859f73cc332699e1c40e17cd44d700b87" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2597566-6e859699948f4adda2592656e3924b32/22f8914859f73cc332699e1c40e17cd44d700b87";
+ sha256 = "019zcs7safk4pldr47v9qn710q4d5cw20v8i26frwwqimnjdgjka";
+ };
+ "232d603ed060bcff36c5d452ec42caf19d74ec9e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/232d603ed060bcff36c5d452ec42caf19d74ec9e";
+ sha256 = "0y9jplgh3dcf6p3n6vsrs7shz60jj8kx8ccz8yldm9wy7sjqhkzj";
+ };
+ "232eab324de501a6a4db9e0af2922875e7b6303f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2597177-394deee1ae174b2db1462326aa83252a/232eab324de501a6a4db9e0af2922875e7b6303f";
+ sha256 = "0dvnfwqnf1hwnbg3y0az2hc0zib18fizdska9w64xjni6zq3fy2y";
+ };
+ "2339c1d3bfb2db1621ef01225df981c1bcc32f49" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2339c1d3bfb2db1621ef01225df981c1bcc32f49";
+ sha256 = "17wks3c6nz4qxlz6qwgnbp14v4wda2ss5b8mhdiisc6zhsn2sn4f";
+ };
+ "23563ae9b7815c9196c9ea7c27b2c1b78c2e3b77" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/23563ae9b7815c9196c9ea7c27b2c1b78c2e3b77";
+ sha256 = "0v1pafnd21lss6pf6af5r3h5n3minzl45ckmxa1v4rmx3c3j8xnb";
+ };
+ "235cc68a11ea8011ea5ca0d1326a488fd48ee713" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/235cc68a11ea8011ea5ca0d1326a488fd48ee713";
+ sha256 = "0xcpafbrys5hkxqd76fx12cxjbf7i80b9206iz69hfprh0hsa2h6";
+ };
+ "236633a6e0745c5413ea190b0e07deb9e9b9d409" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/236633a6e0745c5413ea190b0e07deb9e9b9d409";
+ sha256 = "0ffj6q65nwwpr67pah2h3nzkp7m549zzb47pkbxsk54d06b9q1lq";
+ };
+ "23b01ee08bbe595a4dcb1a72014151b82e5e76ff" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/23b01ee08bbe595a4dcb1a72014151b82e5e76ff";
+ sha256 = "00fml6x864bvh4prq3bkpqn3q6ca4zwif7zxhnsx3ksia8kj9845";
+ };
+ "23cc3f11d38de5312fd5798024de0d232bbf2e68" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/23cc3f11d38de5312fd5798024de0d232bbf2e68";
+ sha256 = "1w0nr2hvcl0h8fkivrxval1l2vw4546rh9vpkwhybfwjh2g06q1y";
+ };
+ "2408381821f1ad904404880379feec1a2eeb2ad4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2547993-1fb84b9e293242c988e586c599eeeb56/2408381821f1ad904404880379feec1a2eeb2ad4";
+ sha256 = "159g6gb74b6nrmi7rln4mpk1yj3kzsf6bppx53i2sa9wcp0vzqyv";
+ };
+ "249d8cdb69fcbdd5f0dfef3a752eb2b7daaf01f4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/249d8cdb69fcbdd5f0dfef3a752eb2b7daaf01f4";
+ sha256 = "1jgr54z0ic0gaby8zml5kj7iyx60v1spf4a1wqiqq61frbkm4qgr";
+ };
+ "24f19b36203cb12aa6892d2d4399df0a679189f7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/24f19b36203cb12aa6892d2d4399df0a679189f7";
+ sha256 = "0drx0nv2249nfdbmlhc24isigf0bxv2n0vyjr62hpddb6xjqikq2";
+ };
+ "252915e59bf956eba7b4eb84256f1eb9c08c16e6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/252915e59bf956eba7b4eb84256f1eb9c08c16e6";
+ sha256 = "0qkvmqhirgdq9wlv0zkkqqa1gl45bw3i19711vfv487n37d2acmf";
+ };
+ "254bdc731ce0a3bef83fa6dd6c76771cadefeab5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/254bdc731ce0a3bef83fa6dd6c76771cadefeab5";
+ sha256 = "0pr4zh0kf2j52msqfwaailrgm5i091msf7s72nk9j5p4zjmcy4qw";
+ };
+ "2573361ce50bbcbed674e108ea4cbb055cd0f2ec" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2573361ce50bbcbed674e108ea4cbb055cd0f2ec";
+ sha256 = "1ms3v0avlbwf3p8g2zw9w5d90hmyf7ba5d3ya7w4mv9sc3a8h5v2";
+ };
+ "25a0a89eda2d7c97ae3a37ba14f151b4682617e9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/25a0a89eda2d7c97ae3a37ba14f151b4682617e9";
+ sha256 = "1656qa6wxbw19kcihb0rl0ssyhrr7pklhflrbwz7f9nsanw6zjmf";
+ };
+ "25a1ae1b60746c8e36e21531648e67b4c330d30d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/25a1ae1b60746c8e36e21531648e67b4c330d30d";
+ sha256 = "04wb1hkil0khgk7qsndar970wgky73f93ng3kgp4c9sgck46gkqz";
+ };
+ "25b04d770d7a50481f9276487a5ed9834119dabd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2602350-38e0d307a57a47baa00ee5f892c9ced6/25b04d770d7a50481f9276487a5ed9834119dabd";
+ sha256 = "1pxvxdxjidk0qsxr0j04jsmjxbjz8havi7ngqfx9dfl6w9nxc0vn";
+ };
+ "25d67f4de95951cb969435a84594979cd05c4091" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/25d67f4de95951cb969435a84594979cd05c4091";
+ sha256 = "0rjmj5395cbcg275yd47gmd8gjgq1nip77k8vy8nn4k2cqpn2rlh";
+ };
+ "260381a0277c560f8c2006d8bfd4f7069cd5640d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/260381a0277c560f8c2006d8bfd4f7069cd5640d";
+ sha256 = "03v2nzwhbb0f728qyd60l68w2nvpadfz8sppzr3y1zbz75rd2k3r";
+ };
+ "2616e3cfebab7a82dd81c3bfee37a62f3317e357" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/2616e3cfebab7a82dd81c3bfee37a62f3317e357";
+ sha256 = "1m01ldgxq49rpr4bvrqppkfk9l8ajrw0401704hgnz06xs3sczql";
+ };
+ "26407337ede0c844ad2b9b9e4eec2286431b0fc9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/26407337ede0c844ad2b9b9e4eec2286431b0fc9";
+ sha256 = "0kwhdyyg2wqy9z0x9v4rprvy84a1l65777fp9nlq5kqmkhl5qhaa";
+ };
+ "267f7ab24d96a8949db4cbc89f50cb9aa755e5e7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/267f7ab24d96a8949db4cbc89f50cb9aa755e5e7";
+ sha256 = "1m26i9cxxy8dbfgnmcpar7a19jr7kz57nxqnim3vbkycvfj0i75q";
+ };
+ "269c797991f91dddf54acd99a214152e8f155f8f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/269c797991f91dddf54acd99a214152e8f155f8f";
+ sha256 = "0k61nipciisz9q6riyd08n7zi78nnm5b454zg4rnpv4fxkxwrmkh";
+ };
+ "27098f36979ec3e79f5f7d7145dae3cfedf9b0a9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/27098f36979ec3e79f5f7d7145dae3cfedf9b0a9";
+ sha256 = "0ygswmzmb89m4mpl2zansjppn1r83dkwxg5r68ssk4isrr8dha8m";
+ };
+ "279afe349fb3fbd2a845d8f650df0bf1dbb73c45" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/279afe349fb3fbd2a845d8f650df0bf1dbb73c45";
+ sha256 = "1rcww7wpbygq82zlpnh6gh79yw9w7rb7zjlx9dpdkys3v81rkzr0";
+ };
+ "27ab355d7817d1ffb8eb77e96879aab84b9ad7de" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2599004-dd46a4b56e3e4811a26bcf6c9cddf877/27ab355d7817d1ffb8eb77e96879aab84b9ad7de";
+ sha256 = "104zskbv7ii90incdrl8gwqx60bgfghyl8si1rmnvch2ppnb9cmx";
+ };
+ "27e4175b9bbb4b175f9daaa9a824638a178a6d76" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2393838-48fca459a31f4f83a05d71c733f01d7a/27e4175b9bbb4b175f9daaa9a824638a178a6d76";
+ sha256 = "0845rjmqick7mmymkprd4bjpszldxrqcgg56kndy4x0qrmdmh5lc";
+ };
+ "2827f79a76e04e6ba05b6cd3cc73e4dfce1ca961" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2468936-39e1c39556f84e60be8d850c452aed67/2827f79a76e04e6ba05b6cd3cc73e4dfce1ca961";
+ sha256 = "18y83fxfr8r6fya771s8wn3fpwd0f0kpdd3bvnr5f0dqqqa84g1d";
+ };
+ "28438bc19c11df6c698e30491b3413fed60b2f0e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/28438bc19c11df6c698e30491b3413fed60b2f0e";
+ sha256 = "0vp18h36h5wdy17a31mwl2mf049kk2mkg09ldjidn25qfd4cdjm4";
+ };
+ "28783f63ac21ccc8c6ba68949502795e3a63f569" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/28783f63ac21ccc8c6ba68949502795e3a63f569";
+ sha256 = "19cd3p7gsd9ka8gmpzrabcya7pzmsmmjr3djmvj5nmraf4qxprd1";
+ };
+ "288cc5ec4da8903ba6077e259a8d9f1a0e5360c5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/288cc5ec4da8903ba6077e259a8d9f1a0e5360c5";
+ sha256 = "0ypv6mj46hibaa5hbi1i8a44gjmbp1y7qlvk4xywrqsj9fiadjyj";
+ };
+ "288d0122b6bf19ad09a81fb7a631a19113ae96f1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/288d0122b6bf19ad09a81fb7a631a19113ae96f1";
+ sha256 = "0araqg4vmbmpfbda1m1pj7b62rh1nd8pqs3smha0jpmfx1gj75xb";
+ };
+ "28926b6102371746bf5dd7c493c2353392ba76f7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/28926b6102371746bf5dd7c493c2353392ba76f7";
+ sha256 = "0b24j3l4ln2rjkc6bfczdyzpgzmc0kbai26di8afz2lsklsmpjdn";
+ };
+ "289a1b921105ce48ba09d95a245cd2daa77b05bb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/289a1b921105ce48ba09d95a245cd2daa77b05bb";
+ sha256 = "0p903d63x9zxqlfs23c48v52gmvja3p71z8bcc2qbryrcv7w50bl";
+ };
+ "289c460fd7eac93f2aa4548c3c805ce6f69f32ce" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/289c460fd7eac93f2aa4548c3c805ce6f69f32ce";
+ sha256 = "123pwgcmmyv03b1i9i6q6ks457hsipwbkvap8jfjvn2rppy4cr1b";
+ };
+ "28a656853baebf8714c795ebceb8ac04f687f67f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/28a656853baebf8714c795ebceb8ac04f687f67f";
+ sha256 = "0g4w1nkwi27mbh523511qwsdpjzi5lz9awcaha94031krjayfn69";
+ };
+ "28f2170447e86afc17f7c14affde7f2dd410c256" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/28f2170447e86afc17f7c14affde7f2dd410c256";
+ sha256 = "07y161rsf1j7s6pna2nsjm9jvzr9ai8i5hxwxd2q64labz0403z5";
+ };
+ "28f89206861167b3d68bb1c6d131985c152b757d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/28f89206861167b3d68bb1c6d131985c152b757d";
+ sha256 = "0rfkf21snlq5rsq39sfz9ala1qf4d85ns9qfy9k8sf274sr0z1sh";
+ };
+ "2914f32cdeac7870819661e0fe54b4833a9962c0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2914f32cdeac7870819661e0fe54b4833a9962c0";
+ sha256 = "1rkl3b1j864x9j1rbw7h7hhnhdb9m4r7b17py9kqvy6mfhacjanr";
+ };
+ "292a8fbb5a1aff92533e52ded470f85af5ffd6c4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/292a8fbb5a1aff92533e52ded470f85af5ffd6c4";
+ sha256 = "0flbsvx3d2x5qlxfj5fk9nsd6b2x9nn8mx65dqlwws2pvkw6ah8s";
+ };
+ "2944a0052b881a644f04844186daa4ae54aad523" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2944a0052b881a644f04844186daa4ae54aad523";
+ sha256 = "1fzmcs75y6q3fmlldrp6yk10bfw7vxmlg2swz995i9ry1avmjmq1";
+ };
+ "295f41723355e152d24716ed3125507d5155eccc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/295f41723355e152d24716ed3125507d5155eccc";
+ sha256 = "1gzxs53jhaskdwkiqw5kxvhfh02b9vcyql1v1kzii23f3vv1kvx3";
+ };
+ "29681ec614276ed188ccfff2342d818c3503f114" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/29681ec614276ed188ccfff2342d818c3503f114";
+ sha256 = "1f10r2iv2xq3zcl4bpcapzab9rkfscpxm83g23hszbp8yjs2bvi8";
+ };
+ "29ba225936b8addec463e591b235407a300ecaca" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2467022-c410c14385ba462bb86b4995040cdcb9/29ba225936b8addec463e591b235407a300ecaca";
+ sha256 = "1rvhh8hxxy6dv23m8qhn1bvy409szfxj7yz73dv6bzj4kf8xhm05";
+ };
+ "29eae01c452b3ae340b64ad4266ea1152b4e6729" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/29eae01c452b3ae340b64ad4266ea1152b4e6729";
+ sha256 = "1y4cmksxajljfgr8vmh7rvn7dlf43z2rw4hxfnxhri3bl55y5cg8";
+ };
+ "2a26f841843dd2551c447764a346353954884612" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2791326-4a233957ffc54c94b38c9ceaf84d58de/2a26f841843dd2551c447764a346353954884612";
+ sha256 = "0zn93s7bwy5z1cscs79bd27qxyjgdj6ry9j1nwkcvd9irw2ca14k";
+ };
+ "2aa18a35f72b72172e9b2c30c8ef7dbe2031303c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2aa18a35f72b72172e9b2c30c8ef7dbe2031303c";
+ sha256 = "0jj1cjhj4y50hjbsslxhrjc8byjngvcg4fllc6fysd01hdbzx267";
+ };
+ "2acb20ce30a8d1a5aa3f7506c94c9f8a93297c8d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/2acb20ce30a8d1a5aa3f7506c94c9f8a93297c8d";
+ sha256 = "07pr5hm5pv8s1qw3lmgasg8ppsga50h6dhpbm7z5lcnc70nd5fkm";
+ };
+ "2b1ea22d749ba6df5bafa9119fe8a0c0d4ba68c1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/2b1ea22d749ba6df5bafa9119fe8a0c0d4ba68c1";
+ sha256 = "1i5cvjjm2sjx77qahmk4p26gm30rri50fdm1jfypp45y0hqa34wn";
+ };
+ "2b2f6a55cc19d94c0130e833f2e70c29e8bfa2e4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/2b2f6a55cc19d94c0130e833f2e70c29e8bfa2e4";
+ sha256 = "0z3vk2yn1afbkx5lni2pwii3v9by37rixz1brws112h79a2mnbd4";
+ };
+ "2b83155ddf092ccd8d8baeb9898fe084b587e82d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2488287-03e6f1d9f826475c81f3125cbcc669d9/2b83155ddf092ccd8d8baeb9898fe084b587e82d";
+ sha256 = "1jg06zvfzbz1s34wfnvcnkpjhad8kmlcf0byf61dyfacjw0rpfr0";
+ };
+ "2bac5c303baf3d4800852e359ebe06398d185cd9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/2bac5c303baf3d4800852e359ebe06398d185cd9";
+ sha256 = "1wg72mlyh82ah0p7fxkj83wkllx6r8ya0x9adizvlaf8mw7ymhvj";
+ };
+ "2bc488cec0bae3f273fcf9d172b61b9a12489423" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2622232-9cbce5f5f69743598cf4bcb212040bd6/2bc488cec0bae3f273fcf9d172b61b9a12489423";
+ sha256 = "10bqvkyzynfi9k4s697i6qzpfc3p5dyw77k3wqsdm686kaaa035x";
+ };
+ "2c391f34048aae95fed7d9649088e50dc62d614a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/2c391f34048aae95fed7d9649088e50dc62d614a";
+ sha256 = "0k6vzh8kkfvgb8km5jd6qn3fw84snm9xz0fmx3jffc7g5n1jywsz";
+ };
+ "2c42aecf4d302508d97a42889f9c616197b1bd9d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2c42aecf4d302508d97a42889f9c616197b1bd9d";
+ sha256 = "0f7h2w6pppdi7gp8h50528xf25d382fkf1mckckzfilvs3xvsqrn";
+ };
+ "2c6a334523bb0b39b337ae9f3754d787d930b6ce" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/2c6a334523bb0b39b337ae9f3754d787d930b6ce";
+ sha256 = "1537cbvm3byiz5yifw43236yv2ffr1h9xn5kn1m3x031q1lkrvj7";
+ };
+ "2c8420f6e48f529d116aafee46759cdf99e8a724" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2748148-aeba26080cd64d52aecc49d22cba05f4/2c8420f6e48f529d116aafee46759cdf99e8a724";
+ sha256 = "01bc98a4q8h02f3iclrd99sg215jpznqr5dviakrhakvyg2qifm5";
+ };
+ "2ccd26d6297607f50e2fd8c1b54cde1f6e6509a5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/2ccd26d6297607f50e2fd8c1b54cde1f6e6509a5";
+ sha256 = "12w39ljrf6nrvixky4dzx8q4izwba17a8bc65f561wp49305rq8j";
+ };
+ "2cd1739a082210f13445cb6acb076e89cb209759" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/2cd1739a082210f13445cb6acb076e89cb209759";
+ sha256 = "1g8miwfg84c0z6hxm2j7lqk7khbvk80jkzavb0fwygyml9xlwgfv";
+ };
+ "2cf7b40136915c48e206e1052021eb226c0050ca" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2495503-7390cc25898b4ab0a4f9f846f2fd7754/2cf7b40136915c48e206e1052021eb226c0050ca";
+ sha256 = "0gs5ylym2j8sk1jg4b6217nchv10d9bigl1nd94amzss2d4aq86j";
+ };
+ "2d54103141e313b63ef5cf774325a15054e9ff39" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/2d54103141e313b63ef5cf774325a15054e9ff39";
+ sha256 = "109gvy1i6g2bk3cj0q833gc2rc2mg5w34q6j4jx6ff956dvl9drb";
+ };
+ "2d883815049fa9361c8c5c425fbea36dcd903c7a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/2d883815049fa9361c8c5c425fbea36dcd903c7a";
+ sha256 = "0g2ld1zbwck746j2i2gl61xplp4rg54vw7yk9rc81w60889z7zbh";
+ };
+ "2dc37c85bc4dd351cd3d177f7e6f986d186bd1f2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/2dc37c85bc4dd351cd3d177f7e6f986d186bd1f2";
+ sha256 = "1nf42p4lzwz88g91wc9i4vcawsdnskjf4s93sha70mx38xbk82fd";
+ };
+ "2de8f1186afad5e4c4f23315078e4d2bf6df4264" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2653899-1a26143a64884f27a8bfc418cb1e75f0/2de8f1186afad5e4c4f23315078e4d2bf6df4264";
+ sha256 = "1hcpcss34rv1q9cw8g3lnqfxhmd4gqb52zll1g44biid1ybhjyqj";
+ };
+ "2e01332dbabb9d7f2325d7f297f41fcd48933c46" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/2e01332dbabb9d7f2325d7f297f41fcd48933c46";
+ sha256 = "07j0r50lbva8dzkpp1cym72995p9lsbc3hxkczhdydaff2cxkbpp";
+ };
+ "2e09a8e7ade5fdf179f0918bc2abac9c18e85901" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/2e09a8e7ade5fdf179f0918bc2abac9c18e85901";
+ sha256 = "1sh9srrwzs9fzy1ds452h8dzangi8q2kvnn9sq39b8cpgffjy1qc";
+ };
+ "2e601894255189d2db25a10b7d612d09c725aba7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2e601894255189d2db25a10b7d612d09c725aba7";
+ sha256 = "1y0pfngnbfzc7zlwalf7w1f97fx6aclrkhzl91axjdgnkwcnnp2f";
+ };
+ "2e6729373c277fcfd3a59532e1e7738523370fb8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/2e6729373c277fcfd3a59532e1e7738523370fb8";
+ sha256 = "12farscg3s037w3mylb5s7xnv4gzriqpbgadg7jxpl4znpdafdy2";
+ };
+ "2e6b877018994d97122a9b698eba651b59cbe02d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2e6b877018994d97122a9b698eba651b59cbe02d";
+ sha256 = "1pgfa4bx7sy8x7dq1zy0jifkaj2jmw12v0fnd4wdcnkraw9wh25y";
+ };
+ "2e8c5279ef8b2e93ab8c738c3e9b8689fc63b839" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/2e8c5279ef8b2e93ab8c738c3e9b8689fc63b839";
+ sha256 = "10hff6yk8q7kwn3557s4fbx7gbhwxsk44j7h8xqn26qzm6xbwd34";
+ };
+ "2ecfd27e7e8beaa971269c4d29040f148b7fdf07" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2ecfd27e7e8beaa971269c4d29040f148b7fdf07";
+ sha256 = "128y3l95zg1qxz9bwf3wzjb8hr89d3v74dix0c4qiv4srk300d1c";
+ };
+ "2eddeeafbb16203bad1207fe3c70aaf2e165ebea" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/2eddeeafbb16203bad1207fe3c70aaf2e165ebea";
+ sha256 = "1gr063b3z1q7d7q9ygvyj7qh1z922r8c2mh5aw2wq0s15sxjqq7p";
+ };
+ "2eebb65cf7012650afcab43c7f2f559c86b2f3a3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2eebb65cf7012650afcab43c7f2f559c86b2f3a3";
+ sha256 = "1v1kwg15r7fns0gash84zff9r25amphma6jfpzl2yr2qcydyqkdn";
+ };
+ "2efd964b62d457693b93d311acd7d54dc4e7f177" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/2efd964b62d457693b93d311acd7d54dc4e7f177";
+ sha256 = "1kd99v2l23ming81m799zz666pyk7pvzlykd9iqd9a1b8xi8q80l";
+ };
+ "2f143d8520d94bbf2cb250b35a8f79e3d3e8572c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2f143d8520d94bbf2cb250b35a8f79e3d3e8572c";
+ sha256 = "1wrzkwv1vl3r7hczgmyxw4gv2nlwjivds8x1myicrb3wqz85b2wr";
+ };
+ "2f3b66c8bc4bc7ba4a38982c19f7aea56a40fa44" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/2f3b66c8bc4bc7ba4a38982c19f7aea56a40fa44";
+ sha256 = "1bz12dwy7yyg4niq822jqv7vi5g7mmfiscsdbay08184niw1a2fc";
+ };
+ "2f4b14734a09e63c0347c348f77cd0da3c72b561" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/2f4b14734a09e63c0347c348f77cd0da3c72b561";
+ sha256 = "0ypvfnnsl2q15qmqkq9qs1mfmyk63jjxhr2w54v7xcxv40l2d0ah";
+ };
+ "2f8b4043d609acb0eee65a86210c9881d1e4a9b5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/2f8b4043d609acb0eee65a86210c9881d1e4a9b5";
+ sha256 = "0yqildrca6fx0gvhb08s3m4dwfkrzbyq877nkcykzid687q6f2h6";
+ };
+ "2fb0ce94e7960b83e88bc4d2687ba07c94e9d96f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/2fb0ce94e7960b83e88bc4d2687ba07c94e9d96f";
+ sha256 = "0jlakpvdmqscxgdwlgyrx69bdpfpx9bxinz56hwrfdqlsl13d6zp";
+ };
+ "2fbbb90552e28dbaf47f41fa63652c11c7b99c78" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/2fbbb90552e28dbaf47f41fa63652c11c7b99c78";
+ sha256 = "1w8zvb659f0xd5fa0bhclmrkavb82nj8xwwcan1rwys38vvghl6h";
+ };
+ "2fda5ea89a82d953d04583ab86b387b1b3f3dd6f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/2fda5ea89a82d953d04583ab86b387b1b3f3dd6f";
+ sha256 = "1l8slfjrais377xrpj9lm0058y2r4qb24yvh30fpxmw3alvw5wg2";
+ };
+ "2fdbf124501fb7d04dae2e4dea0e796f8a098f36" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2fdbf124501fb7d04dae2e4dea0e796f8a098f36";
+ sha256 = "1b4id5wcrfjl6b0qp5c1y1dq62g8sn7ln8j1idvi5ffwwrmsx8j3";
+ };
+ "2fe1fb9f98af4a68ceb9adee909fe7b67917ea81" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621991-64978bb873e64559b7c143597fba3856/2fe1fb9f98af4a68ceb9adee909fe7b67917ea81";
+ sha256 = "0n35g4sb7wymb0k22n0frapdhw6zz1aiiv5xynjk8c99pivdnism";
+ };
+ "2ff8709ada5b8bbfe994f55ce697983225440813" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/2ff8709ada5b8bbfe994f55ce697983225440813";
+ sha256 = "1h57h9z44acyrw5klcslbg9g7zxgxaz26d3ab18q2mp17mrw3wk3";
+ };
+ "3012eb0c18cf3faab0fd1a8290905b902456192c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/3012eb0c18cf3faab0fd1a8290905b902456192c";
+ sha256 = "1halwqjmiprn659fqcdfw5g3ffanx34j0ri8n00xmbwv4hhkvsvh";
+ };
+ "307b166459a0b56cda3d5d3235e3c39b37b2e2e7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/307b166459a0b56cda3d5d3235e3c39b37b2e2e7";
+ sha256 = "0hmc67ngk3s4by9k2kcl5kqi8vmkrqp0vaphd0v88z162vax44pk";
+ };
+ "30bf523aff5cc60cdbb2da5ca9b51226e6aefc9b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/30bf523aff5cc60cdbb2da5ca9b51226e6aefc9b";
+ sha256 = "0cvfn3vv6jhhpimc8s9q37k041c3qc8rrh1fkab89y1d1g430mil";
+ };
+ "30e4e0e87aa3c6ed5b9d99e89c3e3986727405b4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/30e4e0e87aa3c6ed5b9d99e89c3e3986727405b4";
+ sha256 = "0gpvcs6q6cprbirwndirz8a75d5xrsxdzplh9j2zknqkybwbdsyg";
+ };
+ "31513973d4d5ca51b8bb4b0b965dd53bed0284bf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/31513973d4d5ca51b8bb4b0b965dd53bed0284bf";
+ sha256 = "1y1lnwvzs2v6yibnxb5lxcc74gn2pgarqdqhs26501hf35cw400m";
+ };
+ "31a9943db56acc38a4a6083517d5981accfd7b0f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/31a9943db56acc38a4a6083517d5981accfd7b0f";
+ sha256 = "0i6n6hhcjg2ccqxmajmb3nhwbfx2bkfszxycs1k4ip34yhb7fbcd";
+ };
+ "31b00e20c26ba53e1e4071f88ae88e478dddc667" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/31b00e20c26ba53e1e4071f88ae88e478dddc667";
+ sha256 = "0n9fwvmp1r5h3z9sbqx1ywr1azm0ckrgk4j2557n06l4f539bah5";
+ };
+ "31d76d0dbcad8d9f1b4242247389a533fb8e3ca1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/31d76d0dbcad8d9f1b4242247389a533fb8e3ca1";
+ sha256 = "1iwqppypjqvq32csylhbrq7kjcm1533fdaq4m6pdnb8cf3q0haa3";
+ };
+ "31dc2af99e1bb1eecb4ddcb3b2983a0563cde9f6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/31dc2af99e1bb1eecb4ddcb3b2983a0563cde9f6";
+ sha256 = "03awckc4gh0ypdkglzhy4fg79fik904nczmwpf4vwrd83xin7dp7";
+ };
+ "3227bc9c7feb2325ecd2c4144ae0feae8ddc8b90" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/3227bc9c7feb2325ecd2c4144ae0feae8ddc8b90";
+ sha256 = "1k11sd1jsbbcgr71jn67vq4zjwxa96y8qknl4b9p3333skixvhmy";
+ };
+ "32860f0809372d37c40310daf0184877322fc636" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/32860f0809372d37c40310daf0184877322fc636";
+ sha256 = "0dg7hjwhpbfbqxwn4dgclpfrbbrjn5l8xbdpx9n3fvsrr861zdxg";
+ };
+ "32bb97834c48d10d8115a0167b8372bca6b8b179" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/32bb97834c48d10d8115a0167b8372bca6b8b179";
+ sha256 = "04z8ppim2mh792m2fqw2xws7j1m6xrd1jp1pcn7lgfaiz98yxvr1";
+ };
+ "32d809d2943a46adfb06d390602d4be87fa510ba" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/32d809d2943a46adfb06d390602d4be87fa510ba";
+ sha256 = "04fn639135gmvmrq4i7jq0s6k8rfd3jj4a11740avbpbynw9gr25";
+ };
+ "32f81135ef65d05728ba2f1c5b5f3935a52334d7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2467022-c410c14385ba462bb86b4995040cdcb9/32f81135ef65d05728ba2f1c5b5f3935a52334d7";
+ sha256 = "0sczgfd4kksl69gw3zazx7r046vb3dxgbpb6njzv52yj5q13ha4f";
+ };
+ "330afd81b039c963aa95ebf7fcb5e01b8ce9ee3f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2620227-83084f9091244f6c9bba34d6d2a0fc20/330afd81b039c963aa95ebf7fcb5e01b8ce9ee3f";
+ sha256 = "0fv2jyajl8p8v9vini5iqmj6gnzzccjvmgzk121vmnhnm4090p1m";
+ };
+ "330e7d22693575d7c1e3bc8598676d1ad936a018" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/330e7d22693575d7c1e3bc8598676d1ad936a018";
+ sha256 = "08s5fpxn14xppyif4yx6w1sgrxb74q2aw4ar126b9pc1ihlw2c0h";
+ };
+ "33450e05fddd79d7692866accaff42adf9cb9a97" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2706207-4f57365c766141c988cbd0106cf38f5c/33450e05fddd79d7692866accaff42adf9cb9a97";
+ sha256 = "0yg8i2hg1mrx6mppwm1xs3hwpdv9m20l5881vbncyvgpy9a37kgb";
+ };
+ "3347d72ae38994059c896549688eac5a145b35fe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/3347d72ae38994059c896549688eac5a145b35fe";
+ sha256 = "1pxfsdbmrhal911bb5pjmkk0j70nik0m5kc1b9i675v4h4ysfk3x";
+ };
+ "33870814a45b700847bc8d18c59c18d1daa72623" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/33870814a45b700847bc8d18c59c18d1daa72623";
+ sha256 = "015v4x2gkkcpnz7jf35gbq0z1x3b0drcyp21ignx3xz7w6cxz97m";
+ };
+ "33902cc01c7eda10161025651275a129da5ead6e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/33902cc01c7eda10161025651275a129da5ead6e";
+ sha256 = "1g3i1zx14zg5dmbs6pcrrg0xw1rpsqavvbrxd79m5r09c90y6kbh";
+ };
+ "33d0a2949662b327b35a881192e85107ecafc8ac" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/33d0a2949662b327b35a881192e85107ecafc8ac";
+ sha256 = "1x60d939njwsak5r3mga01bkv2c2ggvq28hvqnx6s0z7icch7vib";
+ };
+ "342f323d0582f6c4897956e82b4549bbf9c47973" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/342f323d0582f6c4897956e82b4549bbf9c47973";
+ sha256 = "1l6wr3rbkg5hs0wda43c1dk2gfg2a9r53rki2yls0i9xirhfmkd7";
+ };
+ "345fb7a468fc7c5315a11b86b2c600ac91955213" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/345fb7a468fc7c5315a11b86b2c600ac91955213";
+ sha256 = "1jw46pcrndls655pyx57acdj44v4kr3jg7b04ibmxc31j0mn1955";
+ };
+ "34901ceb8b3afa22d4a75f06c3c465a3292592d3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/34901ceb8b3afa22d4a75f06c3c465a3292592d3";
+ sha256 = "1lmnfbi5l6fk6p4iaa30dpali392xm8r1fz1nd0jil0zr7d3kcll";
+ };
+ "349fb1419c99f4b260e3bb7b3a7cb5273c5b88dc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/349fb1419c99f4b260e3bb7b3a7cb5273c5b88dc";
+ sha256 = "0xdrf7zqci1ffn6w0pw8hq4ijbppbka72fb2lgrqjiawzmhh1i5h";
+ };
+ "34a9c86849d93a7f932667ae0e2d9fc3f4aceeb7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/34a9c86849d93a7f932667ae0e2d9fc3f4aceeb7";
+ sha256 = "0fvrksn1668yxx9fbpchawvnah6n4zpicc865djhfqq1h5vfndfv";
+ };
+ "34b38730a025a0c75cff4caa03512a0054d0695c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/34b38730a025a0c75cff4caa03512a0054d0695c";
+ sha256 = "03m8rvh9hrz1rp0004vav5gdkj2c79j2h3adhjlbgcx8llr3z3p4";
+ };
+ "34da962d8bda23fc14978d82c2c5fb761acc5815" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/34da962d8bda23fc14978d82c2c5fb761acc5815";
+ sha256 = "13xv0nb13z4f57xf9rvnnd73ssf8cx26mvagjmikzsi7chvbpbwn";
+ };
+ "34f9df3c5cbc087be9cf8b8b2084287fb9f3b2e2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/34f9df3c5cbc087be9cf8b8b2084287fb9f3b2e2";
+ sha256 = "0dywks9jrd72xlmxzvcgd5blphf89r98g5h6k76grmc9k2mswwv3";
+ };
+ "351da091078402bf85cff8964a50e1ecaf81e7ce" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/351da091078402bf85cff8964a50e1ecaf81e7ce";
+ sha256 = "1qx85bsc094gzng5x426d6gcbhfjnqhahly3s0dq3g3vw915jl2s";
+ };
+ "353076c56a6ecfb890a7ab5f30c881a73e09d508" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/353076c56a6ecfb890a7ab5f30c881a73e09d508";
+ sha256 = "17lbpk2zkm36l67lfbrmf0wc8x47ywkji127592q707wc4zgh397";
+ };
+ "3579a812b187dc0ebafb13d5914b27deab2c4367" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3579a812b187dc0ebafb13d5914b27deab2c4367";
+ sha256 = "0pnppnyx0nk9grvn2sqha2wmfky42f92mvnxs7scavg913zxi3sg";
+ };
+ "357fc4cd09e4eea77faa70a271346bfd5d0b8417" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/357fc4cd09e4eea77faa70a271346bfd5d0b8417";
+ sha256 = "05xfhmc9y3q31nrjsfnifx709l5yrss0qkilbw19da4lhxqknb6i";
+ };
+ "35b0e5ed5cbf20a0b47af4bb9ca6ffef4d3e5d8e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2602350-38e0d307a57a47baa00ee5f892c9ced6/35b0e5ed5cbf20a0b47af4bb9ca6ffef4d3e5d8e";
+ sha256 = "1i88krwy1kxphjcl4l5bxfp4z8dyl4lgj9nrw09dvj8k7azzjvlx";
+ };
+ "35e0d2f1b5d56bea19aa9443dd5c41b4ef095b4e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2638350-39632eb9e5f94ba4ab8e97fa2d5a3251/35e0d2f1b5d56bea19aa9443dd5c41b4ef095b4e";
+ sha256 = "16k5gkkwmwldbaf29yfshhawqxxq5ccpwylw8wklc56705ib3x96";
+ };
+ "35f95404a8393dcd6374b594b1c2bb5acce427ed" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/35f95404a8393dcd6374b594b1c2bb5acce427ed";
+ sha256 = "0qvh62961qhp0j46p18iiyv3fw783lrcljlxzr3vv3zszpvnqyhv";
+ };
+ "3639943c4bf99c8f284de9f812bf2cd6eff5d49b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2456855-d820875aa14148d6807c08cda631b764/3639943c4bf99c8f284de9f812bf2cd6eff5d49b";
+ sha256 = "00rdh4lcfb7mwlkqxzrpqd9g88znfajm1cbcd83zxdyc2jkipi18";
+ };
+ "363bd76bc4fa81ad344802f2fb8610153a5ca75f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/363bd76bc4fa81ad344802f2fb8610153a5ca75f";
+ sha256 = "0sllg3pgm9jqq73i89l1smrl2y35cgd8667q05v1x9ilhlxpb2zs";
+ };
+ "36922d450606299836b10b930c0c66af1f780347" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/36922d450606299836b10b930c0c66af1f780347";
+ sha256 = "0ribsanhwk7m3qvqydpkhvhi00js7n9wabi3c3l0jib6knndphsh";
+ };
+ "36923d3780cea992eb61b86d48b1a61297b44536" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/36923d3780cea992eb61b86d48b1a61297b44536";
+ sha256 = "0i4av37slygbl1xynai7h6cb7dsg773zgafdmy10jmc2bb8dp4ky";
+ };
+ "36af7f5290dd60c07f83b8a398eb9721c24a6154" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/36af7f5290dd60c07f83b8a398eb9721c24a6154";
+ sha256 = "0rwi5y9sra4pnxdw5l8ykf6s26dg5clflr76f66vdppvipd38rf0";
+ };
+ "372698b3d3b17da23c0c53958fefda69c1198f54" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/372698b3d3b17da23c0c53958fefda69c1198f54";
+ sha256 = "1824igxlj2yc3b2li4gapwlgzgx9gd3kw2gnlkcxdsw1m2h79npd";
+ };
+ "374b33734d17be020f3eec73cf16a100e905a8c5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/374b33734d17be020f3eec73cf16a100e905a8c5";
+ sha256 = "0d3ax4shw2y8bivqajmfgzmf3bg1syz6i91pk8jbl38i1007h4l1";
+ };
+ "376fa7bdb1a776f7100bfaa29f24a9b81bb5a97a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2701146-722550daa90f4e4996a6cdd478880969/376fa7bdb1a776f7100bfaa29f24a9b81bb5a97a";
+ sha256 = "1znfn4asyx1spinx8jpc5r479a30n5cnbb4pvlas6sb3hy8q68hd";
+ };
+ "3779adbbb84b7918fcaa4bc8df4b64a45e50aa88" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/3779adbbb84b7918fcaa4bc8df4b64a45e50aa88";
+ sha256 = "0g3gww1rq1z7lrnxw6gw3i33h799fbmh717qm599w47pq73xmffl";
+ };
+ "37a47bf076c47063d031b82f827412bf05a5f500" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2550873-dbd5ea4331fc461794c4770d56863ff2/37a47bf076c47063d031b82f827412bf05a5f500";
+ sha256 = "0v71m3c03xv44f17rznw6jbn5k7vac2g3547wsvin7y1vr7jhy11";
+ };
+ "37d805efe0d2358727b0deeb9f5c56b3b68a8478" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2653899-1a26143a64884f27a8bfc418cb1e75f0/37d805efe0d2358727b0deeb9f5c56b3b68a8478";
+ sha256 = "0chznyg2xnyx3zz2q9q6i9cdk26m6chcp6pjzm8lnvc4k7p2mbls";
+ };
+ "37f1c844684794da07d9c537b175855f8266fdbb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/37f1c844684794da07d9c537b175855f8266fdbb";
+ sha256 = "07ypy820rrps4d4icdv0bklaa6kyn50gyyaq5yspmwkn07rp5hbv";
+ };
+ "37ff9ca732f3611a92185cfbfd25e6eb7d3d2fde" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/37ff9ca732f3611a92185cfbfd25e6eb7d3d2fde";
+ sha256 = "0lj5ajjx53k7d7m770hdm0mfanfi0kj7vhnfi7x5h75gpzihi6g6";
+ };
+ "3811b277d1080f2314e9ffd524da841aefd84ce0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2547993-1fb84b9e293242c988e586c599eeeb56/3811b277d1080f2314e9ffd524da841aefd84ce0";
+ sha256 = "1m9hjjiskwc6xnfkyzbg52mx2alxl8qh19cawykr1dnd1qs2ngz6";
+ };
+ "38c9a6c68be0ce7a36d83391a637010447ad3301" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/38c9a6c68be0ce7a36d83391a637010447ad3301";
+ sha256 = "08j52b49p3ps6i78v9h04gwxzcbibg41i5dcxqi47vq9ihhb1nsa";
+ };
+ "38e0e2e02bc165327038c973058790e3962d6079" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2686985-76325fadec474557a67995f00383ea6d/38e0e2e02bc165327038c973058790e3962d6079";
+ sha256 = "0yb69a7b63sjcjha8lh1l86jlfxln1gz5y7gplqbj0m0c4qrg72v";
+ };
+ "38e6833dfb6b74f5acf23d984bb9ad01086e1f39" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/38e6833dfb6b74f5acf23d984bb9ad01086e1f39";
+ sha256 = "10ln9haj9317g49zmi5jc4dq56qs0b4qr8g1g6rypiw8ndlm00rq";
+ };
+ "38e79fc7612d6ebd7278e23e7d0a9df3b95155d5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2739939-d1b07735d39c4b8c8427e05b6d9e3571/38e79fc7612d6ebd7278e23e7d0a9df3b95155d5";
+ sha256 = "0w1lwm9dfrprxa3dcaln774c3l5b4ai2sssww81f8adjafbvzr7l";
+ };
+ "392d5e0536abeb83ccfc28ba9fb96e9d1d6507f3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/392d5e0536abeb83ccfc28ba9fb96e9d1d6507f3";
+ sha256 = "1b9a86drlml4cflilwa188i5ay69ydhpc3q477947vs5gbgc7ln7";
+ };
+ "3965204d2b18ccd0b4d2191500d373ac064180df" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/3965204d2b18ccd0b4d2191500d373ac064180df";
+ sha256 = "0k801x11n4zmfshdmb6sby0k29bjcd83hzcbwp0hg7vnnxqsmfm9";
+ };
+ "39935e746b413e3c60c9a519e893cd19db5425ed" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/39935e746b413e3c60c9a519e893cd19db5425ed";
+ sha256 = "1cr5666m83v6xkpwr2j51sf1c3a0q5kahh3j8ygrd74alm9v4wqd";
+ };
+ "3994a8a3195661395d89f209755bbab5ce1861c1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3994a8a3195661395d89f209755bbab5ce1861c1";
+ sha256 = "1jybg0wg5n99rsmzd4i3a1bs1p78gngzar0qan131scdywcv8384";
+ };
+ "39e7e3f8feb9564c8b90f2f6d630bb8ba96f2eb9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/39e7e3f8feb9564c8b90f2f6d630bb8ba96f2eb9";
+ sha256 = "098vn5ps7qv0qjs6fvrzyx9qiq9qw7pslnhy4djm4xzamxs0n49n";
+ };
+ "3a6db69d4f8128addbe24660128ecd2ed9fd6dd0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/3a6db69d4f8128addbe24660128ecd2ed9fd6dd0";
+ sha256 = "04kx57syka9vpvgh5mjlmc1gg8d2ng5snrv36vmw4gq3pm0dpfi5";
+ };
+ "3a7f7a47aca5ad86176f1ceafd77139a06b89e11" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/3a7f7a47aca5ad86176f1ceafd77139a06b89e11";
+ sha256 = "06vrb7nwi09vdkv8b143g2wz0wvn1qbp0l3l95g9frp4xkd6j8cf";
+ };
+ "3ab17699ce95c427b0c0f3466b4226e2e30b92d0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3ab17699ce95c427b0c0f3466b4226e2e30b92d0";
+ sha256 = "0vl7np8bpwcylsgdlvy8hmkzapj1a8pqywy0n01vk7q0fi0wxmc8";
+ };
+ "3b07d6bb5a24bb96557c48982e8b3389df33cfef" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/3b07d6bb5a24bb96557c48982e8b3389df33cfef";
+ sha256 = "1fgkqm5f66x937nlmbsz2qx2lnd276f7rjhcyf073prv9hwhi2vh";
+ };
+ "3b14a44c8ac4cda934824f4a48fdf11ae6dc27fc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/3b14a44c8ac4cda934824f4a48fdf11ae6dc27fc";
+ sha256 = "16y6n3nlpkccpafcbavp8qhcc9adyjfyw75wjafkaw5ixd7c89ag";
+ };
+ "3b1f533104a3f316e188203a3b20770df4580018" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/3b1f533104a3f316e188203a3b20770df4580018";
+ sha256 = "1wmryvw8i7zvkcb2z2ajafsngnj66cls3918n91d2lqihsjp5x6c";
+ };
+ "3b5ec1d1c8209489d78b2eabab46ec59ea1f65b2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3b5ec1d1c8209489d78b2eabab46ec59ea1f65b2";
+ sha256 = "1qvjpm5sy6544wfvnlgd5qa2sw9q0nd3dvxqdqsvbjfzf1da6min";
+ };
+ "3b5feab7a5f46b3129c78ca6512692588d73eb8a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3b5feab7a5f46b3129c78ca6512692588d73eb8a";
+ sha256 = "1q0is2ciaxcan8fzlf57pbwj096d1lhnym8653ifxbxii9jm7ng3";
+ };
+ "3b8d4ffa1666bbdbcc426ba6232275bc853755ea" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/3b8d4ffa1666bbdbcc426ba6232275bc853755ea";
+ sha256 = "0mws36ydilcpavzhc32jzxllwgkxsk7d5yhrfa51j1b894wn60qp";
+ };
+ "3b9f2ea7dea75e5b70ff3776eb46e114725fed92" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3b9f2ea7dea75e5b70ff3776eb46e114725fed92";
+ sha256 = "054gxl8l03zzib7awcq2va0gh0xisl7yzz2x4rdpiv97zm0hlzx7";
+ };
+ "3ba6f94d6907237623e86c589cc6e9a1399e5a2e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/3ba6f94d6907237623e86c589cc6e9a1399e5a2e";
+ sha256 = "022lj7l1w267kw44flfjpbsq9qj99xinw5qqxk352h8py2nddm2a";
+ };
+ "3bbd878e5357ee3dc1e752b07819ba87b7230ef4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/3bbd878e5357ee3dc1e752b07819ba87b7230ef4";
+ sha256 = "146g6zzaiwj2lcfazn6ap8ldqxs16cfdm6larc93g3yys16c87y9";
+ };
+ "3bc0fb4bdfdd1b6c1c684583efe02591afadb98e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/3bc0fb4bdfdd1b6c1c684583efe02591afadb98e";
+ sha256 = "1diniwvlf76vcfxb3cqxx2xdkwsvd486qwkdgfvwyx3np2kypk8b";
+ };
+ "3c01d8c58f5ec428fdb8057af5387b8bca2816eb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/3c01d8c58f5ec428fdb8057af5387b8bca2816eb";
+ sha256 = "0mrfagcmk325vzrhw1zb96ka5b0a37xm7g1k2b4s62xcl641qk55";
+ };
+ "3c048c63475cdefe078376d2fc1ab8294de64e58" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/3c048c63475cdefe078376d2fc1ab8294de64e58";
+ sha256 = "1gkh00i117krs57p2xwpi4s3vwby5na98nni0n5xf3aglqwa9anz";
+ };
+ "3c262ad594e83bd32b0d3a0f794b737101eb2874" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3c262ad594e83bd32b0d3a0f794b737101eb2874";
+ sha256 = "065r44gb0jsfz4m6zfvlj3w6wgh4fdmr52f353r5z1gxqqzqszr2";
+ };
+ "3c3769be5270bdf2ff4215c9f2f6c15d0ae05b7e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/3c3769be5270bdf2ff4215c9f2f6c15d0ae05b7e";
+ sha256 = "0ia41s3fvywhfgb2riqxq9mhhzy477yjix2v1bzq034g19bp4s1i";
+ };
+ "3c3a62993361bbb928b7f5c0407be6bee08da734" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/3c3a62993361bbb928b7f5c0407be6bee08da734";
+ sha256 = "0qn8mkxlll5rg4vr22xlwr6dmbsmvvyniry3jv7d3cj3bajqgavp";
+ };
+ "3c477e2e63d3533e62d654e63f012e59da5a3edc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2638350-39632eb9e5f94ba4ab8e97fa2d5a3251/3c477e2e63d3533e62d654e63f012e59da5a3edc";
+ sha256 = "1f625rs8277bqv7wb6cpxpv1ry7zcy4an9q5gq5iz0f56qs3hyxc";
+ };
+ "3c65149be3cd5e4689b4eda6bf5569d16b149f6e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/3c65149be3cd5e4689b4eda6bf5569d16b149f6e";
+ sha256 = "1zs20c26z86jwjx18zsppkra3d147vynyigibx0klrp0g2lfkpdr";
+ };
+ "3c6fd2f94e3497924851a5d8254666518d47a633" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3c6fd2f94e3497924851a5d8254666518d47a633";
+ sha256 = "00rh0skjjx7b8pd8mmnd2v35vhmsly1f0pnrvwyr9d5pfzsnxb6j";
+ };
+ "3c70f43afffaaed52bb87c78f1ecf8de846ce76d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/3c70f43afffaaed52bb87c78f1ecf8de846ce76d";
+ sha256 = "106bj18q36wr5f1k2fjfish63q6phzwavcl5fh6sq1vzlh6gggz4";
+ };
+ "3c8149ddaa7dec626f08fd4fc2d852a4536ddabc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621991-64978bb873e64559b7c143597fba3856/3c8149ddaa7dec626f08fd4fc2d852a4536ddabc";
+ sha256 = "1zl5kv0d37dhvkrhzzs9xn5qx1zpfa5nzy3cc4dvmfhsp74bgf7y";
+ };
+ "3c9ccdfb5da6f595a26f2e1f746cfc9f639e57dd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2625762-5759dd47f697403cb15f8e48090b1010/3c9ccdfb5da6f595a26f2e1f746cfc9f639e57dd";
+ sha256 = "17wp0p9miy3yll9wyl5kggdg8x1rlbjwpw1w8gyinbvlp87y41md";
+ };
+ "3cc84281c7db62939c39b08c06b3174dc52ae63f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3cc84281c7db62939c39b08c06b3174dc52ae63f";
+ sha256 = "06da44vi1v0gcrq4q3aanrqbpywqjrcm12w6i38kkwa8w2m7fq9d";
+ };
+ "3cd0df317d9f5715cd35c147537107dc3a588008" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/3cd0df317d9f5715cd35c147537107dc3a588008";
+ sha256 = "0ic2xh8327zzgrpgrcggdq10cx906sidv55ys6bn37yqcm86ihyr";
+ };
+ "3ce154ee1488f62d7804205c87d8e37504733e7a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3ce154ee1488f62d7804205c87d8e37504733e7a";
+ sha256 = "1gn1lmmnz00cbrm054q8wf3hxb2i7dhi7vb38dmgy4zwk67qdf3y";
+ };
+ "3ce4d40ab5c9c0141c6b805ed0eaa638cacc0e8f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/3ce4d40ab5c9c0141c6b805ed0eaa638cacc0e8f";
+ sha256 = "1zv992b5bndxizgvcmxwdl1mrahg0xpn356s8y4xnbvf4ysimpiv";
+ };
+ "3d0b21a35355415e71e8fb7ea0012b306e2a037e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/3d0b21a35355415e71e8fb7ea0012b306e2a037e";
+ sha256 = "1zwykg73i0rnga0y6cal2x4jlz69n3c6iq3g7c1c7d7a4hsgpy76";
+ };
+ "3d2991e772cfa979508e25de5935a89210973591" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/3d2991e772cfa979508e25de5935a89210973591";
+ sha256 = "1cacv6pd0p5wmxmfxfp56v4qd3chz6r27c6kbax3p325b6cjf9kz";
+ };
+ "3d3ffa0f6b5db075797d9657c491f1cec7434474" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3d3ffa0f6b5db075797d9657c491f1cec7434474";
+ sha256 = "0gzfpaw0v6xxbwrj14k1hl6dzn3g532war2h0mbpk5x2zgf05ppw";
+ };
+ "3dae84206c49a13a781a04f072560fdaae772628" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2542875-37bf4143b09d4d7a88bd89c6cbba110c/3dae84206c49a13a781a04f072560fdaae772628";
+ sha256 = "027xmslcmb490svay10k7xhj8rsjlmqv13igafnrqw082fz2crvi";
+ };
+ "3e2b9f360e17b90289d6aa8e07f64f8bec445375" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/3e2b9f360e17b90289d6aa8e07f64f8bec445375";
+ sha256 = "0hpm43hbn6wj8gv2hr47cnbfky2732pbqpmhjd33lgd5zjm17ki5";
+ };
+ "3edebf50b702f5e5d08876bdea65dbffa3d1e98f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/3edebf50b702f5e5d08876bdea65dbffa3d1e98f";
+ sha256 = "196mmj2w2dzp9d9gyllpivnmik2kg54kk1qini5c7va9v0iifh7l";
+ };
+ "3eeb2f03152b2114d56a8804fb8d634405321569" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3eeb2f03152b2114d56a8804fb8d634405321569";
+ sha256 = "1mr55cjp8l7jmql2lj146lw2rqgyxb7wff71nm2i8b5mp6w7fa5i";
+ };
+ "3ef09650cc8541a72fb0c287cf9008a6ed209a58" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/3ef09650cc8541a72fb0c287cf9008a6ed209a58";
+ sha256 = "0wmf0hxsyxqzbzj8r1d7f2pfrqjqwa56wj4i2nnp6cccb7z8vdh1";
+ };
+ "3f4cbf00af0438c956f74f514929e02e3e8d43bc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2616691-982be94b99b442419e99de37630ca843/3f4cbf00af0438c956f74f514929e02e3e8d43bc";
+ sha256 = "0294prdqycf6w77hb88jxirl7jgm00sjgc4nzwkznpf6q32jc1if";
+ };
+ "3f75f49ccfcf87ae2a3bcc2a68cf49fb510ada09" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/3f75f49ccfcf87ae2a3bcc2a68cf49fb510ada09";
+ sha256 = "1yq7yamysw27k0znsji1p850gk56vq07lbhxs837x0j9mp2qbfml";
+ };
+ "3f77d7050ec7beb565e4f6d6ad5f1291b2a066e4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/3f77d7050ec7beb565e4f6d6ad5f1291b2a066e4";
+ sha256 = "1ibs8qdbh8vp9ba04qs3bziwss5hbqknylqsydafqzmsvg0qgm5k";
+ };
+ "3fb53e132dfce0a5c72b3b10fb63fd6b5b89b16d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/3fb53e132dfce0a5c72b3b10fb63fd6b5b89b16d";
+ sha256 = "0lrs4n23klz5jqvchpzpflk3hyva9rr335qx3psd34q64hnkxs89";
+ };
+ "401dde870b0593ea8eb48a00e180d088dd331d41" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/401dde870b0593ea8eb48a00e180d088dd331d41";
+ sha256 = "0ijdkqiymih4nm75gky9h6yycd496hjg60kimjnz73bdadanq4g5";
+ };
+ "4022d82d143e72ccce04e7825d3328a7b02fc901" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/4022d82d143e72ccce04e7825d3328a7b02fc901";
+ sha256 = "0f69a35zcjw4l68gd1qv21xnxhlwgx5fxi2msxfa5blg9i45vkvv";
+ };
+ "402bb37cf56e4ae0f047b4de8eed748f259c6a15" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/402bb37cf56e4ae0f047b4de8eed748f259c6a15";
+ sha256 = "0l3sgilafh4ri0mjz6jlx59bz82qbd6q119alb9wjpvlwgk19s9d";
+ };
+ "402bd33734002ac97efc2300bb3bcf9d2cad7bac" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2514362-4164223ab78d4e529a0f07d941c2c537/402bd33734002ac97efc2300bb3bcf9d2cad7bac";
+ sha256 = "18p16j0jpavsdyv2mgif0s7xcqhw9574vfi95qs7q4pb4lpd89pq";
+ };
+ "402fa9c093561a043e89a83d3b0553126fdf2bb7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/402fa9c093561a043e89a83d3b0553126fdf2bb7";
+ sha256 = "1ga2xj4v20a28fj6n8byq7082psawipfr00f54mx33wr2flb6c7n";
+ };
+ "403c4174a81ed034269a740a7bb9739dd07b91da" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/403c4174a81ed034269a740a7bb9739dd07b91da";
+ sha256 = "157xba3mjgw37m6i29chdk2l4jg4jmlp4fkmfsanl9g66z7aw4hg";
+ };
+ "4041329918332581cd573d410c6a163dcf7b7495" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/4041329918332581cd573d410c6a163dcf7b7495";
+ sha256 = "1gvjy14zqhnyx4nnlcbj6649d2aw3vwaxhrls3ngrkw5jw74ckxj";
+ };
+ "409e09bd60df0765b85577118bd3da12988d97d9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613445-f4cf430b68ba4dbf80d97361d7c5dd6e/409e09bd60df0765b85577118bd3da12988d97d9";
+ sha256 = "0lq5lril4ylw3xg46djxzlkbvv109lpa4l0l7ag0q555yzhfcnp8";
+ };
+ "40b467567f62e9c6d0bf5cba7d2ff43cb9a687b3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2599079-89300969452d4a5eaefe1ab4af976839/40b467567f62e9c6d0bf5cba7d2ff43cb9a687b3";
+ sha256 = "02qslivwbnycygypvqicgv8syrsrdw9cv7bmz4zxp9ghbkmasx5g";
+ };
+ "40ddad780beeb95a141365c9ee5c50502ecf9a3f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/40ddad780beeb95a141365c9ee5c50502ecf9a3f";
+ sha256 = "0bd531adivbi47mb1nqmwm23plhsh6hbj54wrpnkyzbkciq24jd8";
+ };
+ "40f7222800bd5c3a14980a0f6e706ce2b8a6dc8a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/40f7222800bd5c3a14980a0f6e706ce2b8a6dc8a";
+ sha256 = "13rzkw224mz4qfsz7f3pywdl2nkly5k28jvrzqqhksrrddf4y78g";
+ };
+ "410e46447d67d73c00b681403bff72bd1c8db3e1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/410e46447d67d73c00b681403bff72bd1c8db3e1";
+ sha256 = "0dahfv97qdxza2yjp60mkflmf541s99c8j0m119vigv5795nrp2l";
+ };
+ "4138035f335e8ef4c9bd7d4700011e8ce6bc06dc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/4138035f335e8ef4c9bd7d4700011e8ce6bc06dc";
+ sha256 = "1fn99hdnba0zza6w416xkqj6vajgk57s5qphqbn2jsrf024kaal4";
+ };
+ "41478e3ee1bd4eb5b22ccbef4265d78586e0a9d3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/41478e3ee1bd4eb5b22ccbef4265d78586e0a9d3";
+ sha256 = "0k259kbgvw1zm8dcs0mp21lh88zvkxzy1v2zyj8yb8hp94gdwp1r";
+ };
+ "416a2ef9e1d85c9801e1c11b5b75e6647f40b196" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/416a2ef9e1d85c9801e1c11b5b75e6647f40b196";
+ sha256 = "1zxg97c2211hspph0d9jzaqlvrfd8cx49d40k5halnz3h682cl2d";
+ };
+ "416d80d6a7cfb22bb899d4a75a80c78ddd81ffbf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/416d80d6a7cfb22bb899d4a75a80c78ddd81ffbf";
+ sha256 = "16xfnicsjfvhzcnzpf1rpbb9q42dq67kbxi84mb4gvdrqigkvmg5";
+ };
+ "4179740ad0fac203ef6afbed2ade36619667a9f2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/4179740ad0fac203ef6afbed2ade36619667a9f2";
+ sha256 = "02kg5bp115via7359bkr3vgbk1nvylhzjc9szzqjbff3mb2fxgdn";
+ };
+ "418d45c49afe937049dd1f731516162b1f716dda" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2608258-d12288bf79ea446a9353c7f9d223b24e/418d45c49afe937049dd1f731516162b1f716dda";
+ sha256 = "05fqszk0lv9ynzpf6lr44jddhm5lr476naxiiqsvwj4g62i8nv6i";
+ };
+ "41b5b5efc87e1d57447016f701ab6688ba9bed94" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/41b5b5efc87e1d57447016f701ab6688ba9bed94";
+ sha256 = "0gcfhbzh8hqhv5xzyfz20j01haxgyirilv8nphg74ky961y2sj2g";
+ };
+ "41d5dc73ef01e6cc21c028fba64a655a4f2d3d52" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2467022-c410c14385ba462bb86b4995040cdcb9/41d5dc73ef01e6cc21c028fba64a655a4f2d3d52";
+ sha256 = "13sdr479wysfckxv8lx7p3kh0mc9ajdyknkvzgklaxcxpl591y67";
+ };
+ "41e03d2c0ea9b66441ae01c7aa831107fba3ffed" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2612065-7518df1e66b64067baa9f5dbe835628e/41e03d2c0ea9b66441ae01c7aa831107fba3ffed";
+ sha256 = "0zfmpa24cl54f7zlpcmc6ki6kqh0qnv6g5kfi9jv51m9l2cg0x5g";
+ };
+ "41e5224b15d09a7227b36b443d5ad87d74e45b50" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/41e5224b15d09a7227b36b443d5ad87d74e45b50";
+ sha256 = "1mpq5lifwddv3mg2lxh3973nz3k3j9bs6r0ma3zknc9pjzvhr6z4";
+ };
+ "41fd3f7a3fb916297e3f478f49ee73a7ef8b0eea" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/41fd3f7a3fb916297e3f478f49ee73a7ef8b0eea";
+ sha256 = "1m0san717x975926nnbinwbq8wchxbrj8w9pddq72s9k3h57a51q";
+ };
+ "41fddcc984061641cb8c27aba4b296bd158bb7b6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2622402-86d1483fa60742b6be9fd5a0b0b946e0/41fddcc984061641cb8c27aba4b296bd158bb7b6";
+ sha256 = "0pq8gl1n7anxky03fy135mwcp76y6270i5jjq7il985mhqa9n3xs";
+ };
+ "42325aa5f02bc9fc9310d7edd42e4e731ef6896a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/42325aa5f02bc9fc9310d7edd42e4e731ef6896a";
+ sha256 = "1r6fhxi4341408ibhgq92yw8hih2nq7m9klax7hsfmdr4di537hg";
+ };
+ "4245e1d2e7ad643f66f744a3ed38052789489640" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/4245e1d2e7ad643f66f744a3ed38052789489640";
+ sha256 = "08fnw7apzsdwx44q2bc66r6gb24z5df5573zsf0fibnflz457zj0";
+ };
+ "427e2d72759a41c12424a8f41db8c46c533e7aad" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/427e2d72759a41c12424a8f41db8c46c533e7aad";
+ sha256 = "1anhhx1xifzqa7lifb63jgrfdx0j5j3ngr7pd9acbwhf1fnz1xan";
+ };
+ "4287f776bff018fbd5847a483885c62661d3e8b7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/4287f776bff018fbd5847a483885c62661d3e8b7";
+ sha256 = "0ka3mm4icsf0rvlq84s0zc2pyyymwfl7vidvhp6gphi9wb0gg0si";
+ };
+ "429bcf5d037539b13d24742b82d8b2e4dfc310a2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/429bcf5d037539b13d24742b82d8b2e4dfc310a2";
+ sha256 = "15609z8zkg3xf0374ccr3qw4c0y4l6via1c8vpn1g3n3aclgrcvr";
+ };
+ "42a2da181f0e0c22a37f4fd84ebb8992f5801a40" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/42a2da181f0e0c22a37f4fd84ebb8992f5801a40";
+ sha256 = "134cik312f2mc2cm6syz3khm11j4z5mki1ajis11plp9yc4awlrb";
+ };
+ "42a53ede1b023f8c062f8cdda02e206b50d9b706" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/42a53ede1b023f8c062f8cdda02e206b50d9b706";
+ sha256 = "0bf6waiwj827d6q4jlk84iz194gkrwyq62iqbh5k7via2xwq8j1w";
+ };
+ "42d3f4d56675451d30b582bc5dbd45fd3782d471" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/42d3f4d56675451d30b582bc5dbd45fd3782d471";
+ sha256 = "1k865pqjyn2i29kypga3m3g705pclw082zcr50yx4pzb4gyx81ss";
+ };
+ "43024ccccfd7e2f51ab71730d53234756da7f75e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/43024ccccfd7e2f51ab71730d53234756da7f75e";
+ sha256 = "0qiafmz9hg9g936y32jfi81whv6ijsbxi3wq2vjygwvw12z3pp7k";
+ };
+ "4325240311aaa4a187fdea78519062e5a4d7269b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/4325240311aaa4a187fdea78519062e5a4d7269b";
+ sha256 = "13im2y96y8wlfq6i85dw6rpbrzqypvzhbb5f6272zi8mg0vl68c4";
+ };
+ "434d698cf6b167859c6903ad11759566d8f57b0e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/434d698cf6b167859c6903ad11759566d8f57b0e";
+ sha256 = "1p1mx0lffkz0lb4ryrjv8nbvmb3vzr1yhd6bar6mgn9j26x68nhd";
+ };
+ "4358d2bea62c66562030e8970bcc999a9f049cd9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2565979-eaaf2006b54843b69b5280979c12ed6d/4358d2bea62c66562030e8970bcc999a9f049cd9";
+ sha256 = "10g40dfpwcmwid6x2zj4jsr8wlfaj19wncimrj64ma84x9asid6l";
+ };
+ "439b6b4397b03135c193062962f4e04f7efb2f97" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/439b6b4397b03135c193062962f4e04f7efb2f97";
+ sha256 = "0fxgi0m96lz8vsig99mi43bmkxj4zqhdrmcin3s15qgqv5fnpp0i";
+ };
+ "43af1512f9c03f740a4b1e5e5d430bc184358f2c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2482391-24fb529bc09847ca8c3576d69ba36285/43af1512f9c03f740a4b1e5e5d430bc184358f2c";
+ sha256 = "0rllprr8x2wylsymvmwjbfxm5wc81q6hxz9xqz7ps99wnaa376vj";
+ };
+ "43ce938e9264c991f07b4ab978d5801d8b385c7f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/43ce938e9264c991f07b4ab978d5801d8b385c7f";
+ sha256 = "1xlk578ab6r0jia0ipsznr8kb0r95ljzqxhlxbp2gizyad80rbvw";
+ };
+ "43d2fd6b8e568774d422003e4f1d8cbd90c8ad09" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/43d2fd6b8e568774d422003e4f1d8cbd90c8ad09";
+ sha256 = "1gz46rhfy3w67945dwrbj5364z3r5vfkq7kcsdvlam8sn31mban6";
+ };
+ "43d5b1f0c816ddc1a75dc7c9eba7e3861bfac93b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/43d5b1f0c816ddc1a75dc7c9eba7e3861bfac93b";
+ sha256 = "05x9b14mm65v3kg0w3vknv0las5669dxqi863pj283gykai5y5j8";
+ };
+ "44550fffb2c3c4bd3e389a62349314f917149551" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/44550fffb2c3c4bd3e389a62349314f917149551";
+ sha256 = "0gwbyp4cz93dhp4lvlzb16ylkdkl1861q5sc9x8lzcfhrdlzbbqx";
+ };
+ "44988d061edf9fe35e6423243372b984f7bbc8ce" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/44988d061edf9fe35e6423243372b984f7bbc8ce";
+ sha256 = "1ijy29lal9bg8kwbjgzvzjc57f1vls2g073hvlgvha84a32qhd5f";
+ };
+ "44aea7fc4f0d356841e342fce80616815268e97c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/44aea7fc4f0d356841e342fce80616815268e97c";
+ sha256 = "1xspkr7cq8whhk66z695yvgf0z1z4w6rck41n9jxr9c2xkycafvs";
+ };
+ "44bfee33fde62aa26954c1ac4481489a0997550f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/44bfee33fde62aa26954c1ac4481489a0997550f";
+ sha256 = "1r6zdd24m7m0rykn7qbl1bkbxmiwh2jmkkqva5nw0zyc33rhy6dz";
+ };
+ "44e185cd6baca3dd0931a5b2c536c61efdb62652" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/44e185cd6baca3dd0931a5b2c536c61efdb62652";
+ sha256 = "10ji73zvb3wjsr9283r2may7kwjwrch0zdkw5qi845q1xdsy03qn";
+ };
+ "44f209fa07e3956ffbde948b34a35bca08039bf4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/44f209fa07e3956ffbde948b34a35bca08039bf4";
+ sha256 = "19h5cpf1n828wxy77sa7ajfiy3pfg2hjnaprml3wl7g607zsb2wi";
+ };
+ "450752e8befdc19f8af240d074de7cfdff240ff6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/450752e8befdc19f8af240d074de7cfdff240ff6";
+ sha256 = "03f7fvkqvbxi8xfqc5x6zzwa141rzjrvxfn4npcqifzv543zlwfl";
+ };
+ "451249045a83162ab51a602006391035d937b4fe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/451249045a83162ab51a602006391035d937b4fe";
+ sha256 = "1f594dpxyb2vln0bjj10yzxmxim88d27asaxb05b7msj8s4if4qz";
+ };
+ "457e4cce8cc3af1d0237efdf32e01dd8149d1366" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/457e4cce8cc3af1d0237efdf32e01dd8149d1366";
+ sha256 = "0ipki4pq2irfhy10sapsah9frp3nx6j33sjdi5a82sz5hc00czvy";
+ };
+ "458ce5eadcec7db6c79cc7c4785864957159d82d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2649176-0ea78bc522e047c6b5b5e477faaaf0eb/458ce5eadcec7db6c79cc7c4785864957159d82d";
+ sha256 = "0xlz9ag4xxqza8c1bbx4aj73nphngqnqmb2g2kx4wzrsf60balqk";
+ };
+ "45b816b4d0f405c95179b48d4aef89b863be886b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/45b816b4d0f405c95179b48d4aef89b863be886b";
+ sha256 = "1b6n8l0xwxfpxysljvqgh2pccqxsv7hhsgvigk7bc7bfvm4f2bc5";
+ };
+ "45b8181ade7c5f9416382db55ebb9ff006a860ae" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/45b8181ade7c5f9416382db55ebb9ff006a860ae";
+ sha256 = "0mns61vw4kv3v6pjmkqzad95x9sqlvkazr2qcxlp2pjl41h349jw";
+ };
+ "45b97a83e7de5add19253c91c6f9c3fca6133a0b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2515854-a6b06d306d9743a78268eae33a3084ae/45b97a83e7de5add19253c91c6f9c3fca6133a0b";
+ sha256 = "0bymag4rf1gnyc3yfn4xjmi1n22zkfqzqdpg09wbnrmghld92rhx";
+ };
+ "45c2f6d67121c2498bd3723b899243959da6e017" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/45c2f6d67121c2498bd3723b899243959da6e017";
+ sha256 = "1z8ks07y1q8ifi8mbb2n1igfa6a6dpmmzscn14mr860a8lh9lp1v";
+ };
+ "4653f71982a36f99d16331bbaebded3036eff50f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/4653f71982a36f99d16331bbaebded3036eff50f";
+ sha256 = "05n5s7vhiiisamy7n1c31s68yy7iplfsr8q7qkjwijp6svpz3w4r";
+ };
+ "46cacf33335ca2ec60df0c71cc36af0602ca8bfb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2608258-d12288bf79ea446a9353c7f9d223b24e/46cacf33335ca2ec60df0c71cc36af0602ca8bfb";
+ sha256 = "117j7ps781wbi14cc9r5v0n64xsl7p8yr2ism8i4n8ij3i106cf7";
+ };
+ "46cea2f0ed5abe44ea23ba16c356889ae16636e3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/46cea2f0ed5abe44ea23ba16c356889ae16636e3";
+ sha256 = "1rsy2lac1ck6flh60jh5b640kns104f40qr5ffsf7mxj3zzc9h3w";
+ };
+ "46e1d0fc2b1da401fb554e93a9e7f69ba5b9857e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/46e1d0fc2b1da401fb554e93a9e7f69ba5b9857e";
+ sha256 = "18vcpjb9qvy9xswrk2zna7g2xmj0dycpsnnpddydlby8mrda1vd0";
+ };
+ "47057afb3b675c9635a3a671c05a32525083c8c4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/47057afb3b675c9635a3a671c05a32525083c8c4";
+ sha256 = "120gd17dy4m36r4y36ivjkmn9vvfgycfw0jna7vx85qys7f2qslx";
+ };
+ "471521a96267727393067d510fa208a9f090ee56" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/471521a96267727393067d510fa208a9f090ee56";
+ sha256 = "043gl3chcbcyh3na9wcv26kag7hixk31yh8synihybml4bf30am1";
+ };
+ "4733ca75068a23a29a578352ecc8dddc16d714e6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/4733ca75068a23a29a578352ecc8dddc16d714e6";
+ sha256 = "11g301j3gim04xisk1pzdsxv5ygj6mf39rkxw9hfrbzky4y5zfb5";
+ };
+ "476436af18523fd743894ca8676ceb74f5d392f4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/476436af18523fd743894ca8676ceb74f5d392f4";
+ sha256 = "1qld1qqnmmn6bcw8gxs8fi0227w5d2pwyk9hxqqwfvqazmbmrdra";
+ };
+ "4782725e3bb079fa03e2bc6e6d6ca44c9352c9ce" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/4782725e3bb079fa03e2bc6e6d6ca44c9352c9ce";
+ sha256 = "002qq97afjmvpwa5vhpzyknywxfg4f6hm8f9z6vhcbc487j24dfx";
+ };
+ "47c3dd6d524f1923aa08644c2e4083ced4d481a0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/47c3dd6d524f1923aa08644c2e4083ced4d481a0";
+ sha256 = "093zcfgvnr9x6b50zi4dcvp0qp6dsp4y9z438gzf8cz41ilmk2mq";
+ };
+ "47cb5394541c26f3bab3e60fab36b8acba1d8907" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/47cb5394541c26f3bab3e60fab36b8acba1d8907";
+ sha256 = "0aqwpc5krlqi81g2wcbq2591kbnnv01cgiq4qdyd9jlkfpk79ra3";
+ };
+ "485fd4e8653da37ae3302212c1ff6c808f2e1e7a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/485fd4e8653da37ae3302212c1ff6c808f2e1e7a";
+ sha256 = "10k9s21042a9gi2k03d9r5lg8h2gx07sa39wx8zrfs697g0g9082";
+ };
+ "486e59fe184e878bc399bc95f1f81b94c3e84237" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/486e59fe184e878bc399bc95f1f81b94c3e84237";
+ sha256 = "19ck4wmlzfj43w9b1l54na3ql62n0jx0h7ffb0ghizswnb36nvcv";
+ };
+ "487d06c15e88caec9f131b002ba4ced31ca8ea46" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/487d06c15e88caec9f131b002ba4ced31ca8ea46";
+ sha256 = "1mfvbd2p8508f07dhh1dfqaq1a9n7c4l5dsfajzhcdndlzawrbbc";
+ };
+ "488efa1da7ed78314cdd0c95ad874f812853fcd7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/488efa1da7ed78314cdd0c95ad874f812853fcd7";
+ sha256 = "09jjzzvszqv7f7a70i8gib9x04h6967by6cs8dfqfb8ysfrx426n";
+ };
+ "489e5e0492743ad3dbfd8599a5d00f284d4b13d3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/489e5e0492743ad3dbfd8599a5d00f284d4b13d3";
+ sha256 = "1szgnqakysr4r59zqi8i1sjqbpykjb7flvmw8p00mx0zqpw2qi6y";
+ };
+ "48a51059aeb73ec544e6c1ace7303ebc6143b782" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/48a51059aeb73ec544e6c1ace7303ebc6143b782";
+ sha256 = "0w212ajaypf69mx8hc94kz61l1f64dvh99rpmzrycwllxk17il1w";
+ };
+ "48becdab8fce5451f3de26a98ad8c4b41c51c09e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/48becdab8fce5451f3de26a98ad8c4b41c51c09e";
+ sha256 = "1pb09gl5ji1c71nhg2bv6i3wknx11vnxcjjyfvlzgpfsw7mi9c99";
+ };
+ "48e9d691a3bd11810596fcf32aef9faa872a8fc3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/48e9d691a3bd11810596fcf32aef9faa872a8fc3";
+ sha256 = "0anv20icv51j79f4vzzh7q1a9jwpk65zzs0brsylyfkylskd9wz7";
+ };
+ "4905bf362dac5be04631d1ce552b8184a6f9eb7f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/4905bf362dac5be04631d1ce552b8184a6f9eb7f";
+ sha256 = "0yf7x9wc9zwdpdpqh6x8kcrphmc63ij9xcb6ggfbihjhhfkq9m2y";
+ };
+ "493b6e580a2441b91435c406da869b799e031da2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/493b6e580a2441b91435c406da869b799e031da2";
+ sha256 = "0ic4h663s8yyckvzrkbbhg8ih888igvcswsnnh66zwrl3h5wjshd";
+ };
+ "497e1a2128ecd56307d393c59ed4962de200412c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621802-1efd555e661e4948aa22f3883712aa6c/497e1a2128ecd56307d393c59ed4962de200412c";
+ sha256 = "0860mkkg6k4c2fjzq573xpf13cvcmn276z45hi146y0llsb9hpwf";
+ };
+ "49d7eaf76b4f243057c59f3fda3310c655144a0e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/49d7eaf76b4f243057c59f3fda3310c655144a0e";
+ sha256 = "07sn2y8bzh0flhrkkw12x7rc9p78mmsx0dphsm0mxb9nkkznygq0";
+ };
+ "49e02b1078a769deaf14989f1731daeb927f2192" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2787088-b587684669f0414288401564922cf5d8/49e02b1078a769deaf14989f1731daeb927f2192";
+ sha256 = "180yvr32wnhgivkz5i00l88wkw4l5v9d5vgmdxhjvndzv52ij00p";
+ };
+ "49ffdfd5801c4c8c2b51be4b2e51108595a340f7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/49ffdfd5801c4c8c2b51be4b2e51108595a340f7";
+ sha256 = "0m0qv1wyslkdg75ymbba0ppp35ir9wmm51jqsaac3wxjacgwp85f";
+ };
+ "4a3c35cce04ee67dd38baa7ef7703dbd6fa6b14f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/4a3c35cce04ee67dd38baa7ef7703dbd6fa6b14f";
+ sha256 = "02kqv01gjhj6402i18cq5ihp9nbcl4ij7hanb2l6k3mw2f3h9202";
+ };
+ "4a6de8866429da8f1baf5ddaf3973c381e507f9f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/4a6de8866429da8f1baf5ddaf3973c381e507f9f";
+ sha256 = "113qadrkv6calsid2bbb0lswimr3qasf0mzyvbxcg888q934dirp";
+ };
+ "4a996ed0676c92d061e923599186c0d592b8c180" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/4a996ed0676c92d061e923599186c0d592b8c180";
+ sha256 = "0gfmg2si5wmv99d0f3z82qdpcnkb377hvd9mjn29npvmzcxdk8xl";
+ };
+ "4aac38fbf89541859c14c7fbf320b1f9deb410f4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/4aac38fbf89541859c14c7fbf320b1f9deb410f4";
+ sha256 = "1snz21gw73zi27bha2jq2099j4hgk03xrn382rgc9l0j6zx1hcld";
+ };
+ "4ac1a3a1641db0a7d533dc58b147c50ee5e61f2d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2495503-7390cc25898b4ab0a4f9f846f2fd7754/4ac1a3a1641db0a7d533dc58b147c50ee5e61f2d";
+ sha256 = "1b0wz0gz103l9vvg2g9xbds3nc65x3bv7nb4rw8k1lafnpypxvx4";
+ };
+ "4ac1a96d979c84bea010254903c746d8f0192931" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/4ac1a96d979c84bea010254903c746d8f0192931";
+ sha256 = "0p4zjrik6jbp25vsahv7g8jkpvydkh19winqiswiz91xfjzi7wfl";
+ };
+ "4adb6983f2858294dd67959dbb107cb141c93c74" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/4adb6983f2858294dd67959dbb107cb141c93c74";
+ sha256 = "07fbgdm1d6ymv6m046pmjh0af4syin13f3g36kyh19gbsf81gn51";
+ };
+ "4b0a3157b647ecf945962c64e6c1f2a4b0841404" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/4b0a3157b647ecf945962c64e6c1f2a4b0841404";
+ sha256 = "0qh7irvdj2ak0ixbq8mvgnyak9l378463ffgvh8a76rvajlmfw01";
+ };
+ "4b6a1631906e490aad98097955aaed303b835e4c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/4b6a1631906e490aad98097955aaed303b835e4c";
+ sha256 = "1c8mzirs8qbk2532ai7sj6gx98lhzl2r8c5w78p2zhxc44qds6cy";
+ };
+ "4b6f876e200503f43b0378c2bff4e3371dede19d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/4b6f876e200503f43b0378c2bff4e3371dede19d";
+ sha256 = "1wxz4zscc57j0h8jrdxiy7qjx5gyz5wv552hkx9swzl8zv1c4vxi";
+ };
+ "4ba7bd51b92bbbea7f47cede7dccb18ed74c4da9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/4ba7bd51b92bbbea7f47cede7dccb18ed74c4da9";
+ sha256 = "10mgd6mhyp147v70vrjs2pni99f10wvjzzxgv4s1yb0kb1f3rx7m";
+ };
+ "4ba9e150400597410bcc2038b890c5ebfab59f97" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/4ba9e150400597410bcc2038b890c5ebfab59f97";
+ sha256 = "11gnqjjjdjjlxnzsx2p2j08xjjpr28zy5g0y5ba2q9fzz1pmi0xd";
+ };
+ "4bb876b638318dcb891581ef5c5b60ab49f84a14" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/4bb876b638318dcb891581ef5c5b60ab49f84a14";
+ sha256 = "0kabkyrgb8jbp90hbmksmh03r5bbfk9rk61rix4krk2dlcb0dazi";
+ };
+ "4bc5d5526880f85cc76aa4910df1d4cb262afea4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/4bc5d5526880f85cc76aa4910df1d4cb262afea4";
+ sha256 = "18g5sk5ck5yv7bm84c3hm4q1b05kwm4vv5dq5l54a0pkgp59grqv";
+ };
+ "4bdc7380f8fb8cd1f70702e4b5dd2f4ea262d125" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/4bdc7380f8fb8cd1f70702e4b5dd2f4ea262d125";
+ sha256 = "0j924pcmddwqap395nsygs3jzcsfp3f225waypzjzwzf0dqdwvdm";
+ };
+ "4be9c06ad3f3ec9e3ab2f093677c38c9a57609fd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/4be9c06ad3f3ec9e3ab2f093677c38c9a57609fd";
+ sha256 = "0inyckyvag3cjbjw7yir3ga8qx6kly82xhi4ibrqs5anmlbvg6wn";
+ };
+ "4bf3ad76dabf85f8e9a2caef2ec4cc44035c1748" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2557508-14de7cde62764f07a29f3058b3db36e8/4bf3ad76dabf85f8e9a2caef2ec4cc44035c1748";
+ sha256 = "0d9igj7ncm9bgx4z8sybfw5qa0vsslfp155wgycj77sqbk4vxw6f";
+ };
+ "4ca619b184d0aecc977846b5cb89a7789844736d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/4ca619b184d0aecc977846b5cb89a7789844736d";
+ sha256 = "0x6km34gk5wmd1p3i2b9a8bhv32337dxmilaq2x9zg12g5j0ab76";
+ };
+ "4ca7aeb41838db40fce0bd1181781152f3273c85" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/4ca7aeb41838db40fce0bd1181781152f3273c85";
+ sha256 = "1c47j2as7c67aa4y21gkli9qxzik75aq0abdvjln2mw2yidd9f6q";
+ };
+ "4cdfababde3088412ac7195d034c19f4f7e873cc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/4cdfababde3088412ac7195d034c19f4f7e873cc";
+ sha256 = "0mqq1vbh9ikcrplnr5sa0lz73p45kl8wc1py3ylmycifymjcb7jk";
+ };
+ "4cf428f5e7b38cea3b24dce0380c776e1a06ecaf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2787088-b587684669f0414288401564922cf5d8/4cf428f5e7b38cea3b24dce0380c776e1a06ecaf";
+ sha256 = "078yzqnwidsx5xqa5p9jvl4qqvhdmx5i2rv31azjc1s9bbyihnyg";
+ };
+ "4d0630a1e99d1c060c8dd45b809b2e6c5e6bde7a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/4d0630a1e99d1c060c8dd45b809b2e6c5e6bde7a";
+ sha256 = "0hrpqrb934z5qjxmvp2hpjqkbr80xwqrd8bxj63pdcz11axnk1c1";
+ };
+ "4d1f805d1ce7a7c6f0eb46295359f5ef01297c17" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/4d1f805d1ce7a7c6f0eb46295359f5ef01297c17";
+ sha256 = "1fh46cz761wk4cy6xskjs07a58sb2im6n56gk20mmslw2iv8y1z2";
+ };
+ "4d65a777c9a440e869ef25b04b71a9d9a6ff7190" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2593226-b511ed7dda124055acab1a4474628222/4d65a777c9a440e869ef25b04b71a9d9a6ff7190";
+ sha256 = "0jv2bpb77dshi3kj0wlgzl0y7f5b1g0jr0h47fyraxk2mg10ry5q";
+ };
+ "4d6f9c6d7a261e35898225b1fade32da175cb530" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/4d6f9c6d7a261e35898225b1fade32da175cb530";
+ sha256 = "1kn5zg25rwl37vskaggw7hlb2yxxambk0lhaa4i0mlgj8050m2n6";
+ };
+ "4db41bf84756d686fc71e275d2c94c5c2299de97" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/4db41bf84756d686fc71e275d2c94c5c2299de97";
+ sha256 = "17rijjf8k5fa827szbj2adz8ix8z6h607xpa0mg69hrl9jxbi7jp";
+ };
+ "4dbf88901817044507142dfafe605a1b527a5733" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2416381-a1125fd46e044645898de0a3f7870b3d/4dbf88901817044507142dfafe605a1b527a5733";
+ sha256 = "0bsykmshh4677rlkgd7qx2j0alcskw8krkvfzardcq481zkv3i7n";
+ };
+ "4de19ef682be73fd5616348eafabda7e5b5c2614" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/4de19ef682be73fd5616348eafabda7e5b5c2614";
+ sha256 = "0m3phx8581x615y7dg98kg0bdkka07897pjcd759dxjfbvvy2fyl";
+ };
+ "4e0bab5bde5138bbeb03c118ed5450afb6087c8f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/4e0bab5bde5138bbeb03c118ed5450afb6087c8f";
+ sha256 = "1afci1zkw3skyih5ij2ld2z75xp3vf2q4ssdb39xgjw84hagxybl";
+ };
+ "4e10a129d42108f8b10039ca6b879fd30bfeb431" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/4e10a129d42108f8b10039ca6b879fd30bfeb431";
+ sha256 = "0qyadw0q43aj15c699minvb2xbd6hlarwjy7gfsym9vbrv55fhjh";
+ };
+ "4e6e5e7b59b428c37f77a90e081f121a450cb039" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/4e6e5e7b59b428c37f77a90e081f121a450cb039";
+ sha256 = "0vpr0k1mf4zg5k90jkx8jxm11dl0ky8jlyq17zcdl4v0ricadw57";
+ };
+ "4e7e810806daa53af602a84d64ae8277b20e8884" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/4e7e810806daa53af602a84d64ae8277b20e8884";
+ sha256 = "1j4ms2b2g34d3hr2cwbimwlljpm9a08vwv6d644ryib170kiv8z2";
+ };
+ "4e98b65102ae8ae6833a82df09b1c4926070f680" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/4e98b65102ae8ae6833a82df09b1c4926070f680";
+ sha256 = "12np9i6rrfb72pzb53wqs9i2pi54gfd95sq5g1b5appj3qqvl5cw";
+ };
+ "4eacf8ae62800ea91a75533032d4a4abad00c1dc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/4eacf8ae62800ea91a75533032d4a4abad00c1dc";
+ sha256 = "1i23518c07q9q9npwrbmxl1dxx0sxyviv4l9892s8kjj2gamf4kn";
+ };
+ "4ee7da06ece4e65e4b1f6c4f3f60b4f183a6b0cc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/4ee7da06ece4e65e4b1f6c4f3f60b4f183a6b0cc";
+ sha256 = "1pliz4710qi465vhy2z90w9br02jx6k3r192izn96njsnd02mm4x";
+ };
+ "4efa7b4c022fb3147eafad578190d50881927acd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/4efa7b4c022fb3147eafad578190d50881927acd";
+ sha256 = "1pic400nbygcarkrkzcdvhb00pq25iipn3bwlgcng38ihfay7wjm";
+ };
+ "4f65d69acee548a54f8329d2457356d425bee4a7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/4f65d69acee548a54f8329d2457356d425bee4a7";
+ sha256 = "1bl8arab79mh10qclam0gmf0bf7rqj4zbas3bsz2jq6mnw7hz7py";
+ };
+ "4f6a87f4bf05f150a09c25735784bc3739871dfb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/4f6a87f4bf05f150a09c25735784bc3739871dfb";
+ sha256 = "0kal7sz290wjq3p8v76kyhj9l783h8br06cfyd8vr93xnrmxj18s";
+ };
+ "4f81cd7206cb477f1b15d71433f87035b8ef4b61" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/4f81cd7206cb477f1b15d71433f87035b8ef4b61";
+ sha256 = "0dkad05vjbxqvdhx3594j7vx7qjjckpzcsnbwmlb6jvlp7ki4qal";
+ };
+ "4f9629d19fa7928aaae10e4bb7c79195fb4f2436" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/4f9629d19fa7928aaae10e4bb7c79195fb4f2436";
+ sha256 = "0w26dm0npmlbdg73j89rmbxpkr64i80wdm4zzgsafrh3vmaqs38n";
+ };
+ "4fb2c8f58c15b33818735ef8f75ba170a1b1f65d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/4fb2c8f58c15b33818735ef8f75ba170a1b1f65d";
+ sha256 = "111hbfbikwl85iscj37k3wn35s47cd6qzpcsir1ylaxcb9q350j7";
+ };
+ "4fbda194b6083d60ec1a9e281eb6caad5716cf1e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2489751-c4626d8ec02a40d3817d364f1bc426a5/4fbda194b6083d60ec1a9e281eb6caad5716cf1e";
+ sha256 = "0nfihbl3pwni0gpfrpcdi4xggdkr0m9d4lq788w9hfb4phfppkjh";
+ };
+ "4fe88f539e62bf77da44db73cb91ffe913569e34" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/4fe88f539e62bf77da44db73cb91ffe913569e34";
+ sha256 = "0vl7g23l199imd5n0ll78bf6bk5spx33r1sdzwbwyf439xd53zn5";
+ };
+ "4fecd0bf8aca3391671cf59243a551e7b58f745f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2787088-b587684669f0414288401564922cf5d8/4fecd0bf8aca3391671cf59243a551e7b58f745f";
+ sha256 = "0yzh9i84lm4gh8wsljsa66bg9g6p0xbff3vq5rk1nha0zwg0i7x1";
+ };
+ "502e3c3b4dcae339b71743fc346f2398f2d7a218" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/502e3c3b4dcae339b71743fc346f2398f2d7a218";
+ sha256 = "1qirpjwv6cmx2g74dlswhd5haaqff9km47xv79m6rd3c4q5xn0xs";
+ };
+ "50606bde1b8f7f906c86dad14730c53cab06b477" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/50606bde1b8f7f906c86dad14730c53cab06b477";
+ sha256 = "1kfvwbxhl69f08ryfh39105xda14vz06r6zhvi18d3cy50znamw4";
+ };
+ "508797aad17ea00c10d3c50bebc98d3981dd7bb9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/508797aad17ea00c10d3c50bebc98d3981dd7bb9";
+ sha256 = "1r9csvlr703whm8dk759xnn89glrp1gbdxs60ahspls48yxj1syg";
+ };
+ "5098f795311987869f91ed638f4c0a395312211a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/5098f795311987869f91ed638f4c0a395312211a";
+ sha256 = "1j3k1vixg49ilcmvd9k82dq7lj0dlmf8iaz8zvsgzgril9azd3nw";
+ };
+ "50eea30641c70b731a2069bd514ef5f1709825de" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/50eea30641c70b731a2069bd514ef5f1709825de";
+ sha256 = "0p9k5jhmhv26i18c7axi9yvr29d4wzq4zr08875m1hcwhij3wyxg";
+ };
+ "51298934386bbe2da528af9262277810d6653396" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/51298934386bbe2da528af9262277810d6653396";
+ sha256 = "1yygwd8i6cp67rgz59g192x1klh3rxgsyzpmxcinj4b0iwihglvc";
+ };
+ "512f28040301a00935d7f1ded68e709b048d7f1d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/512f28040301a00935d7f1ded68e709b048d7f1d";
+ sha256 = "075szic2vp5f6c3kmy432xn8r81pb6c82dwhpigmyvjl0hjqqcf5";
+ };
+ "51413e0814803560ea68a0cdfa59ae901551ad14" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/51413e0814803560ea68a0cdfa59ae901551ad14";
+ sha256 = "1cbb5a1drx313zi7llrbwsj7yqshinxs3i1q86y63vrjh9yimsb6";
+ };
+ "514684d898b2ab6135a63ae87054e6af91cac2ae" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/514684d898b2ab6135a63ae87054e6af91cac2ae";
+ sha256 = "0xha9la702szpf8nqrm9kril6qdfl3vxpl18npm8d3rxgsbrrj1p";
+ };
+ "5147927b8b7ebed2923c8d3ae6b0e1f716b5fb61" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610954-bd0fcbe6f0c748508fe9438073c40b27/5147927b8b7ebed2923c8d3ae6b0e1f716b5fb61";
+ sha256 = "18p404kg10mqfh5d2rcwalxrgr5ihw0lp14rm5xf1aiw303mlf61";
+ };
+ "5152492459f57a1bb4d120be68d29ed666c87c33" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5152492459f57a1bb4d120be68d29ed666c87c33";
+ sha256 = "17nfafsnk349q31cyrppz4w50z8c5n0ff2v6n5s3z8vzx4pj1zhg";
+ };
+ "519dd66ccb831a904959a155fd43639be5a97863" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2686985-76325fadec474557a67995f00383ea6d/519dd66ccb831a904959a155fd43639be5a97863";
+ sha256 = "01rd9jvys40vi6xqpyf2r1dqj4r3gg61w58madq8wq7q0x4wvvcg";
+ };
+ "519e03a04b64bc3d14eefb416e21ae15c6f0121e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/519e03a04b64bc3d14eefb416e21ae15c6f0121e";
+ sha256 = "15gfg5klklnhbfbsx0jqy33zamc32l0aiji064mjbkliwv1hm51b";
+ };
+ "51f74fd271b725c13ee25b2dae5d9b5250116180" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/51f74fd271b725c13ee25b2dae5d9b5250116180";
+ sha256 = "1zn2lm64icq0bjnayczrl7a6d66jyxbv46cgnixlnvpa0dq1bx5m";
+ };
+ "51fd67fd01d7f93ebe372aa67ec66496e9ccf3b1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/51fd67fd01d7f93ebe372aa67ec66496e9ccf3b1";
+ sha256 = "0xzjsdcfbzl41lwbblq00hy4w3kmjsbl8ai85xa5qdkzc8d8krsk";
+ };
+ "525da4df29fa810fe46aef9432572bbb5743b36f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/525da4df29fa810fe46aef9432572bbb5743b36f";
+ sha256 = "0y445vx9i0572y6cj5jbzl9gkcxgs8kn1qpc3zjzhn61ckdijc4s";
+ };
+ "5270c6b547cfda7e26cad076321fd7be0e5a061d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2602350-38e0d307a57a47baa00ee5f892c9ced6/5270c6b547cfda7e26cad076321fd7be0e5a061d";
+ sha256 = "14r1vw9hw6nlndj1iplwk0qfnr2y8b880g6fgnzwd31p0dbcim8s";
+ };
+ "52ad7360b0e7a95cc19aa7de2f2433ca955eac9b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/52ad7360b0e7a95cc19aa7de2f2433ca955eac9b";
+ sha256 = "0z164smiksv7hka7cj4d68cj5nmy4marwipq48nan3365g9j0r37";
+ };
+ "530b33d367b237887fd7f3666822b40a696806f3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/530b33d367b237887fd7f3666822b40a696806f3";
+ sha256 = "0vj4bax08c5iq035kqihrpksprrkh0nj6hyfswx5qqsca0znh4br";
+ };
+ "53190479c1e53af3a2670f6eeb1f4bda0ebd5a80" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/53190479c1e53af3a2670f6eeb1f4bda0ebd5a80";
+ sha256 = "0gncl86d1j8228hcrfckn6ap632ljkxfbkya8wpqq8cspr5xbb0k";
+ };
+ "536b4cf746322581a3abe99533df6307e7a9c2c7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/536b4cf746322581a3abe99533df6307e7a9c2c7";
+ sha256 = "08d2hxd3v469b39ra57cb13shkzv4dxk44ksy92dw3m5wnwpq6w8";
+ };
+ "53738d12a38995c76f4de6f5f064a567f0ff3ac8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/53738d12a38995c76f4de6f5f064a567f0ff3ac8";
+ sha256 = "1ba1ygd5xwwgciy93pvl8ibd79glh8h7z8mxd32c301n1g7zyh42";
+ };
+ "541bb03057456219ae8a2ab97be5603923921739" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/541bb03057456219ae8a2ab97be5603923921739";
+ sha256 = "0fc4a7yw1psd4qlbc95gkanynyl5jmwdg3ddz3w93i02cd4l3y42";
+ };
+ "541d949e247ee005e6e55562dc29055d6159fb64" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/541d949e247ee005e6e55562dc29055d6159fb64";
+ sha256 = "11bws26a0j9wa8amwmpq632glrwmcwkfc5pzapwrhkd3s4snc5x8";
+ };
+ "5435cf07dad1155ea3ddbd5178f3dd6013a507d8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2615502-35e684f430004977ab5aaed43a0fab81/5435cf07dad1155ea3ddbd5178f3dd6013a507d8";
+ sha256 = "1mkhn4q4rrf7pdi49fd1968hrikham7s4wx6ch22psfinn5ysda6";
+ };
+ "543ebe1dfdaff4a1590fbd156175d836ae2beb0f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/543ebe1dfdaff4a1590fbd156175d836ae2beb0f";
+ sha256 = "1mdp47id04fc4gb247k0g40byv4nidrjnmyavpgq977yljfpzwip";
+ };
+ "544dffe0e2da98dba3a519141a740f849c5ca7ee" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/544dffe0e2da98dba3a519141a740f849c5ca7ee";
+ sha256 = "1kain6a7p6y533wl1075adfzh8733sdac87iq886hjqr89k5jdyx";
+ };
+ "5495c21514ee03fd9e7736742077960a79934c74" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/5495c21514ee03fd9e7736742077960a79934c74";
+ sha256 = "0n9cg673wa58r1xzspyxb4h3qa73jpw4sk9gc8d4dgl6z3q6lsji";
+ };
+ "54be461a1c72b36e4f01f2db78849473477d73dd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/54be461a1c72b36e4f01f2db78849473477d73dd";
+ sha256 = "0zlp7nhdl0b9yhlbclx3d3r2g4cymppwaa5w168chd4gym8qnv44";
+ };
+ "551654d82bdacbe12dfe0a27ff7948b6ad1894b5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/551654d82bdacbe12dfe0a27ff7948b6ad1894b5";
+ sha256 = "1d1bxj880nyrap1vrxfp9fn1b3pz5dbz6f50ccw6bvfwjg4fwkv1";
+ };
+ "5525223a6059a69ca58ad0617598cac64d8659b8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2620872-38314c216e7741359375cb68452fb2b2/5525223a6059a69ca58ad0617598cac64d8659b8";
+ sha256 = "1rvg2sgkbcnymrvp38847rw828ijr3mxl1zsa5706ndly6gysygb";
+ };
+ "553aa77e78f9ac7693e56c9b2ae642c4141aed66" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/553aa77e78f9ac7693e56c9b2ae642c4141aed66";
+ sha256 = "0nr6gsba11kk96l0r1hk08bbn2iy5z41hah14f85dcidcdfn8q3j";
+ };
+ "55575c3f7cb2cd14356f9dd1836e4beeb057941b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/55575c3f7cb2cd14356f9dd1836e4beeb057941b";
+ sha256 = "0g2x108hmsnfp3cgzxcdj91ikz3x3x4br6rl9vlry03dfvhzwvf3";
+ };
+ "5559dc18c6a3a435b34446daa5b51264cf9971fc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/5559dc18c6a3a435b34446daa5b51264cf9971fc";
+ sha256 = "10dvc0spvjp7r6lsvhr0f9r6nxm29053pr4q712akak7jnqh6nrd";
+ };
+ "55d527b168c8ad85340fae2fb9b238e7a568f338" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/55d527b168c8ad85340fae2fb9b238e7a568f338";
+ sha256 = "1dcjnifabnbk2v3pwkmk1hn07svavjqsck694dh8ybqcxbkf4sbq";
+ };
+ "561af5c6ee4445a0c380bce19a7f5ee82b3fe756" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/561af5c6ee4445a0c380bce19a7f5ee82b3fe756";
+ sha256 = "0r5p7rb865yrjag2wn1p8ps76ap6pa83c0lbq7fmsn4xr2m9aq8c";
+ };
+ "562c6d13b647a43c555b040ce69507c475089c24" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/562c6d13b647a43c555b040ce69507c475089c24";
+ sha256 = "1lq7cl1rbh2xyg52p6260gbqd2l6n58cm0g1ny0fwgkaskbsbvwx";
+ };
+ "567807ac295099a07a6c59a7bff568f21dd14860" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2534734-323cf099317f457e9467fda2d086db9a/567807ac295099a07a6c59a7bff568f21dd14860";
+ sha256 = "1cimyysd3z3miz0zwvnmqc60s2cc5ymb2dj4dy88iw3zw1a75hsk";
+ };
+ "568dc16559220cee02d71db824805edd0d74a3d4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621991-64978bb873e64559b7c143597fba3856/568dc16559220cee02d71db824805edd0d74a3d4";
+ sha256 = "1gmfb8106wb12757plw73g6znwqazya41dygzlpmc6zfc5sfd9kw";
+ };
+ "56b3ac7ff0cfd2d96ea21ec3d48bce76e2720807" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/56b3ac7ff0cfd2d96ea21ec3d48bce76e2720807";
+ sha256 = "0vf7hh0cav351qrpkvf897pwdlwnzwjhgfwr8dly6pjf0pqm4c3f";
+ };
+ "56d72a0ee05d644fc991dfc250a1534fdacb5b3e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/56d72a0ee05d644fc991dfc250a1534fdacb5b3e";
+ sha256 = "0r2kc6cnijar4z50xbsdf6ma4zfjqs9mzklbdamjy3niyzjy5s32";
+ };
+ "5725149f4c8e211494463fc9280b6c10907ea321" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/5725149f4c8e211494463fc9280b6c10907ea321";
+ sha256 = "0ifxhhl3rrcaqcxy1izy0abpmii9jzgs55kd537ifmnspi02674i";
+ };
+ "57518e7a38c99e38c3bb12baa69c5124f3780152" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/57518e7a38c99e38c3bb12baa69c5124f3780152";
+ sha256 = "1fya8iyfyjnqs0vgqsh3zkdb85z8s9snc188qnwypmyfpy8mpwp5";
+ };
+ "57a803d869d2db9788911933ffa0282320e75170" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/57a803d869d2db9788911933ffa0282320e75170";
+ sha256 = "1gy1dyjmpr6qap6irs2mzfpzmkjhkrci2r4ak1855ggycvy98d12";
+ };
+ "57be8202d1bdd44a6b6686351edba4e653af9f01" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/57be8202d1bdd44a6b6686351edba4e653af9f01";
+ sha256 = "167dndrfslwss276i0m1dwavg8kk27rhhalj200wk5ywb7dm6xg5";
+ };
+ "57d629f9fb09a65be5be7697a5d33a20c2b557a4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/57d629f9fb09a65be5be7697a5d33a20c2b557a4";
+ sha256 = "0xq600178i6hih6ap7aydgp0xpmmgz56ix21acrawikj89ykv5aq";
+ };
+ "57ffba4219a312d7e7daab46237a0f61ddb3ad28" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/57ffba4219a312d7e7daab46237a0f61ddb3ad28";
+ sha256 = "1qnw6qn7ywd96pv9bi9g006lnib6c60p312dlhyclphsykbn0lzf";
+ };
+ "58031ce6c4634d8b348854a1ad4bc1c74d022c7b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/58031ce6c4634d8b348854a1ad4bc1c74d022c7b";
+ sha256 = "0lz5wd4qzy64c2sr841ky129z46ha3mxx2xx0l9icxmcxczgaxq7";
+ };
+ "5828edda3a662171a3c8e304b857dc7a745b85e4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/5828edda3a662171a3c8e304b857dc7a745b85e4";
+ sha256 = "0m3p8iz4n03nw97v6iia6cdgniqp5f9zqr0mqxziwss5hhvwhaf6";
+ };
+ "5890d07428ec2ee9086c9f8d07792db118a1b57b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/5890d07428ec2ee9086c9f8d07792db118a1b57b";
+ sha256 = "1x5bqq655j50zfn31kxbrl0zbvf3zjvfgkgsp2w816lg01bkbr97";
+ };
+ "58b4bdbc8f5686d4ece9cb4a18f6367d8222f073" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/58b4bdbc8f5686d4ece9cb4a18f6367d8222f073";
+ sha256 = "0cw0gw0ky6gal0zjlxqbivhsxb1ys7whjfgjbcph9wfmws0n9cnv";
+ };
+ "58c296582abb3dba4bc073aa6708c81bc8798ff7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/58c296582abb3dba4bc073aa6708c81bc8798ff7";
+ sha256 = "1197ridzhpvih14rs5gxhvpnbpaz1l52x3cpxnfs5hd80qk212l6";
+ };
+ "58c56183f54227469e3aba4fe40c8fc227c66e55" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/58c56183f54227469e3aba4fe40c8fc227c66e55";
+ sha256 = "1nz8qyfhd6a7chs3a44aa8da1y0p7ikgd45y9w09k1wlmjgzby5i";
+ };
+ "58cf115d701dba2092d2e4a3f0ed075cc6fe3069" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/58cf115d701dba2092d2e4a3f0ed075cc6fe3069";
+ sha256 = "17h20ivmf3ks276vd96xc0z1ashyk3prk7f0p1w8z5vj7kv1y6wa";
+ };
+ "58db59892f8758da63e7b9c465b5615f6318634b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/58db59892f8758da63e7b9c465b5615f6318634b";
+ sha256 = "151qdvx1kk3r2hisn32g63jpcz5ji5n65ql000wxmav75m25dl9s";
+ };
+ "58e46f1625d6b6603897665bac292c5a3566d565" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/58e46f1625d6b6603897665bac292c5a3566d565";
+ sha256 = "0hh2kg1qz3xvcp0gmfky73gm8v2in7593hm59rqcwzk18q9pzwcs";
+ };
+ "58e4e03689103981844fc3f19413c5d3eebe2489" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/58e4e03689103981844fc3f19413c5d3eebe2489";
+ sha256 = "0h7qlwy4agc9130wb8j5a51pdy2ndvm6lbz1p55a3rjzxpmi7idf";
+ };
+ "58f1a93515f38b967b50196a9be74684efbca7b7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/58f1a93515f38b967b50196a9be74684efbca7b7";
+ sha256 = "1bwlqqs4pp20vzxvhs0cqpj3108bxbqk505q93rbgyvlif0kyidy";
+ };
+ "58f5f621564cce6f1eb3c9099a1645a0369ece56" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/58f5f621564cce6f1eb3c9099a1645a0369ece56";
+ sha256 = "04finlmybwqzb146rkqmgyfrq34ql2ih5gmxhalfwn2lvlzkykgd";
+ };
+ "58f7288e0fe3a5997003f6a117a30579d15f5973" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/58f7288e0fe3a5997003f6a117a30579d15f5973";
+ sha256 = "00a351ajzmfjpc6pbj80dbm677mqrdnx1b7dsjhx91gcarxq8q26";
+ };
+ "5906155140815aedc94241abd916f56c6ab4564b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5906155140815aedc94241abd916f56c6ab4564b";
+ sha256 = "12ywwixraayk1hvfq4i2hr5dgykv693sxv6vk6nigxq8kbg0rnqk";
+ };
+ "5925a9b0f257cc9517f224bec3dee7ecf883aa08" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/5925a9b0f257cc9517f224bec3dee7ecf883aa08";
+ sha256 = "0vglai3jkbls46qvss4l28h4b21ph5x79271hln3ypd2j4chswlx";
+ };
+ "59717f7d7697f047103bbfbca63b68088e7172bd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/59717f7d7697f047103bbfbca63b68088e7172bd";
+ sha256 = "1gfm6b9cypdsvndc4id9idainvddjb0zrsa601acy62h97b9gjpm";
+ };
+ "5977705c2272d0c3385b70ffc3e5f0a2983e986c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/5977705c2272d0c3385b70ffc3e5f0a2983e986c";
+ sha256 = "08zlxija7h63j10nhchjnh7mclsfqny6lr6ay8rwcxcgfqz3kr0z";
+ };
+ "5983c069abdec3469db5b5874ac27c17341e3f27" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5983c069abdec3469db5b5874ac27c17341e3f27";
+ sha256 = "0f8y8vikn7a6f1rkqkp9y1vyvnx5g8y4pmc0gyvw5lj6hi0ph83w";
+ };
+ "598492be84474143365fa6267a0e73936ce8a248" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/598492be84474143365fa6267a0e73936ce8a248";
+ sha256 = "1s6cvk6p6m8j0w1g45gg2hdnjiwa1sf8zsaf8xvlr10jcwlnc802";
+ };
+ "59c4bec5e2957d30ef37c5198c4b90381f3ba20f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/59c4bec5e2957d30ef37c5198c4b90381f3ba20f";
+ sha256 = "1pxdkbji2wqh6dp648ikn4367zzxfxa8g0lbvdrvbq0a6s5px02r";
+ };
+ "59d5809fb3d0b096e7104e798b12b06dc68c750e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/59d5809fb3d0b096e7104e798b12b06dc68c750e";
+ sha256 = "1i9mqv3jngvibkby1bfxqjrhib4a1w63sjp4y68cc52gqkv02c22";
+ };
+ "5a001646d2ea8b208174c4b954cf99309889bac0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/5a001646d2ea8b208174c4b954cf99309889bac0";
+ sha256 = "01gxymd2h4bm1b76yn6jpjpxnyw2ixax3rccmn7f36j8zjbnmcm0";
+ };
+ "5a2a13ad5533dc3b2172eb552b404c7c458983ac" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5a2a13ad5533dc3b2172eb552b404c7c458983ac";
+ sha256 = "1k2kjhx4y1zgz5sfnjsfdrqvjbr8vdqzg9q425ncd6zr198p5pl1";
+ };
+ "5a4c5b85fb81b291e8fb6f7c37c0b152f8aeb1bb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/5a4c5b85fb81b291e8fb6f7c37c0b152f8aeb1bb";
+ sha256 = "1s2nlmd81bnk6a884hpmpkgbznnwvilmbbkmx74r8wxwnsnsq3fc";
+ };
+ "5a668ab8aef15368ff281ed35e8f730cc8ec5c7f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/5a668ab8aef15368ff281ed35e8f730cc8ec5c7f";
+ sha256 = "0ha9h8ghv84byrxy7f0jqqq6gzw777vk73sh9n9kxk994a7r2dc2";
+ };
+ "5ab07520be55c428c36c959bcc9d4738bcc55daf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2791326-4a233957ffc54c94b38c9ceaf84d58de/5ab07520be55c428c36c959bcc9d4738bcc55daf";
+ sha256 = "029p4hajh92z6qf433kr6a4ahprqjj4cgbfqabf636q2d3cjwmxy";
+ };
+ "5b00e89032246f6937f2093a0f6510beb7eab715" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5b00e89032246f6937f2093a0f6510beb7eab715";
+ sha256 = "1svvf9jmhhjr36dwlw2lq6y1kl09vnhwcj2m2i8z5fbs2pa724bq";
+ };
+ "5b0c314a325c53eec5d98afdb50067ad99c6e99a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/5b0c314a325c53eec5d98afdb50067ad99c6e99a";
+ sha256 = "0g7yxicms3pkn4y90r14rf7m076fnf2vwq8rbb3wldqjl1yxmjik";
+ };
+ "5b37da6b06afe4b358305eda6827bea44e782b44" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/5b37da6b06afe4b358305eda6827bea44e782b44";
+ sha256 = "0d4k8ramsgvir0689dqxj79flqa1vls9lnjidhkwl8k7an5jf9p8";
+ };
+ "5b81c9f201693bb927130d9d31a3768f7143dfde" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/5b81c9f201693bb927130d9d31a3768f7143dfde";
+ sha256 = "1nk5jan996kb09v2cr1invjq8x3zlh4zmli57hik378x282isszz";
+ };
+ "5bbeebcd7d784670bb16f73b0bf59374d12e300d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5bbeebcd7d784670bb16f73b0bf59374d12e300d";
+ sha256 = "1i4xck1p3269fqa1p69pr7j5r5ssi4hf8p1iq988hhi10wnb74mn";
+ };
+ "5bd038cfe2a2f12f6753e85dee691c08d4fcb6e3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/5bd038cfe2a2f12f6753e85dee691c08d4fcb6e3";
+ sha256 = "184pccfp59sq2sg5wk7i20l2qxswv524nym06dpabm1fv9hi8v0m";
+ };
+ "5c42920f6f44c053dcf7e87f29ccef27b326822c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5c42920f6f44c053dcf7e87f29ccef27b326822c";
+ sha256 = "1z5ii5hslidbijzjqbx66f8h087vn7aidw02m1840pas9dqj9mwc";
+ };
+ "5c4dd9ea4a964b483b1e90c4c6a70cedc63ac70b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/5c4dd9ea4a964b483b1e90c4c6a70cedc63ac70b";
+ sha256 = "08d1f17f7prkw4c64xalywss6r0f3ab0q46hpamj5cb6xs4igccz";
+ };
+ "5c517712601cff542ae326efa6bdc3a7734755c9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5c517712601cff542ae326efa6bdc3a7734755c9";
+ sha256 = "0szgq7q7pf5chr81b1a021r6p2rlb30cyhyjazgq4snprx3f0ih2";
+ };
+ "5c53d41540d89216421c6738a2b0b389ab94ea8a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/5c53d41540d89216421c6738a2b0b389ab94ea8a";
+ sha256 = "0hcz2dj3aansxbyqcrhygsvksa3xlc156c4692rqgcfdawyz1yz2";
+ };
+ "5c65fc01f0d8703654412f609c5e78a363870079" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2468936-39e1c39556f84e60be8d850c452aed67/5c65fc01f0d8703654412f609c5e78a363870079";
+ sha256 = "1v6vgkp5vvjb4zfipyy7a5y5fqafpckb2636fx0bcfqd2ggbqwqd";
+ };
+ "5c8363a3b4c54cf612de94a0521b30e565085fc8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5c8363a3b4c54cf612de94a0521b30e565085fc8";
+ sha256 = "19fq6zfwiazkgra4dvpawh0fsk0c9278kl3jzanjlyxms9isncsf";
+ };
+ "5c9dc79aa298468ccc506369dd777f36e980e71e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/5c9dc79aa298468ccc506369dd777f36e980e71e";
+ sha256 = "0wxn9pw1h2ailgsvkpykrrjdffjdrhswhvznny0l49g7jy39asa2";
+ };
+ "5ca8bb4804169df408781649b3ef8a3d6dd2f414" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/5ca8bb4804169df408781649b3ef8a3d6dd2f414";
+ sha256 = "1nimfzwxc0nfyrp0avf0nhi7n8z21pgsr9321sk21rfv3ln74bab";
+ };
+ "5cf160a27902278f941572aa592a11cf80ac6972" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/5cf160a27902278f941572aa592a11cf80ac6972";
+ sha256 = "0x9ljwsb5jy434kpf0gkk6v1grsmksk691gv9ypn98r20rj1yix3";
+ };
+ "5d09c96c7e23adaab207052fa2fe12dea14e6a44" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5d09c96c7e23adaab207052fa2fe12dea14e6a44";
+ sha256 = "052z4i5naspmnvqlrnz13rvsgfm0qx6yiwq0w3lxwgp09ix612av";
+ };
+ "5d2198866f1b1047bb8a047bbeb38cc0622a4cfb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/5d2198866f1b1047bb8a047bbeb38cc0622a4cfb";
+ sha256 = "1qw4i3v9hfs04r9ys85074j0rdxadzmmjaf3fl6pvrqfprxl0x0x";
+ };
+ "5d8e7a77ae12035781174084d8cb9a4e1bcbfb0b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5d8e7a77ae12035781174084d8cb9a4e1bcbfb0b";
+ sha256 = "0xwnanfz1rxb8jkh27sirf7iv6dkb99i51q7my15amv5a6r9svrh";
+ };
+ "5dbebfe34ab5c28eca7d7b6c57ff41cda029cf64" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2489162-8b935a4b34ed4b3586d7fe3f6ce28b34/5dbebfe34ab5c28eca7d7b6c57ff41cda029cf64";
+ sha256 = "0kl73ymnq3w0wi630i3kdm2b0j60i708i5938qipq340cwjw4m7c";
+ };
+ "5e2314065445393471dbf0e9d3f2755a491d1bba" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/5e2314065445393471dbf0e9d3f2755a491d1bba";
+ sha256 = "1i9v4q0r13jd9x4n4inkin8p2936qzlx9bkm6wl0ab9fy0bzl0lm";
+ };
+ "5e58fbb85b49d5886aa35ed06da2fc6788db1320" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2596395-e8e15c40b8f2449b881e17834a75d9f8/5e58fbb85b49d5886aa35ed06da2fc6788db1320";
+ sha256 = "05051mjf0ywp7h94g4sxcxdplm3vfq5nc2l52y08gyz4348s66a5";
+ };
+ "5e7d96af5e5b1cafa670bd77ae918457a118f7a5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5e7d96af5e5b1cafa670bd77ae918457a118f7a5";
+ sha256 = "1p9phbl68bq2q7h0afa2q429pbyb0m2wprym4v1ydlz7c50mpkp9";
+ };
+ "5e9b459db24eeba207710184e58445974e211543" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/5e9b459db24eeba207710184e58445974e211543";
+ sha256 = "0r3vxr2hi86v8fhpcr3n4hacaisqn92a9ayh84fym4y964zg5c2d";
+ };
+ "5ec11a04eda7f0d96f115e200ac8029b95d4115d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5ec11a04eda7f0d96f115e200ac8029b95d4115d";
+ sha256 = "06jfn17h59jc4d0f81s09yfjl2a12r7d9b5p4pn08h50zjkwwhac";
+ };
+ "5ef88b8b3029a7aa2ddaaaf702ab09e6f18a9ab1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/5ef88b8b3029a7aa2ddaaaf702ab09e6f18a9ab1";
+ sha256 = "18zs81swncyyff3a26dlc9c87gvq75b9c0sscwhqak2m18jz1xqs";
+ };
+ "5f026e163284ef4d1dd49f3e7ab1ddb74e2e8dbf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/5f026e163284ef4d1dd49f3e7ab1ddb74e2e8dbf";
+ sha256 = "0rnhwgizkbxn5xdf63kbacsf9s54hzxl3zz6m72jzmlr0i3z17hh";
+ };
+ "5f116087ea09d4cd18e565462f0cb21da53cad86" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2407513-a097e3fe93574082b279540eec49fa58/5f116087ea09d4cd18e565462f0cb21da53cad86";
+ sha256 = "10blnrsjd5f90bkd48k4bqbz69xa0dd41yvkf4v21ffl4sdj184b";
+ };
+ "5f239795752cebffb0bd14bc3d14db541d74b95f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/5f239795752cebffb0bd14bc3d14db541d74b95f";
+ sha256 = "17wnf2ps8abp04i6mkqz9wmfm58vwjy355pqqs216ap3bq7l7iw7";
+ };
+ "5f29467ca4107002987a75eafe3c02d49c0d3fc8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/5f29467ca4107002987a75eafe3c02d49c0d3fc8";
+ sha256 = "1irzs3c6qwh0xl7dhpyk24iwbdxyrmpn9qdly7zshgqqzgz26caj";
+ };
+ "5fa26a7a3b2978df4bee466d4c76c7b95497e4a4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/5fa26a7a3b2978df4bee466d4c76c7b95497e4a4";
+ sha256 = "03d8366sam4f1xjf7jg2awir5hd3h7hgggif3nisbpvg91nip0vb";
+ };
+ "5fe5595a5a46eab069dcd2d6813c1b68cd9ade4f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/5fe5595a5a46eab069dcd2d6813c1b68cd9ade4f";
+ sha256 = "0s3a3w3xd7w1c7x19nljmkp68xq2b1m2klx60i739y5lb2g7x0lv";
+ };
+ "6028c6247770e169982f50ed839356448f3d93f5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/6028c6247770e169982f50ed839356448f3d93f5";
+ sha256 = "0fcg2pm4l5cg2vah26s2p0p5ljy3hk0vssc0f1f18pvw5zicv3g9";
+ };
+ "604e9fc9dd1c1b397add8f900213a87a9964ee51" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/604e9fc9dd1c1b397add8f900213a87a9964ee51";
+ sha256 = "0xsns5k5165s37f4q2qy12958zz112487313n6mlgny6zrp1azf9";
+ };
+ "607c94b25b7e4fd2ad13dfdf210e43eca3abf392" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/607c94b25b7e4fd2ad13dfdf210e43eca3abf392";
+ sha256 = "169603qzhzfnpmik6vaz14zggkvad57s3d46xlnc63hcq7ambj4a";
+ };
+ "60864e331c9e60034c81b9544ca30a14688574a3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/60864e331c9e60034c81b9544ca30a14688574a3";
+ sha256 = "1hqyxcf0nfwx83qb94534y5idxb0a3554nncbrxx9s4vigm4pdb7";
+ };
+ "6093beca3b21ddf0d2d599e6a841ea070ac01fae" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/6093beca3b21ddf0d2d599e6a841ea070ac01fae";
+ sha256 = "1hxgib9wc4d9s8n0b4y8vaisxqpbhxa699ls5358nz4gdw8zr0q8";
+ };
+ "60c5bb5120f6c73b23af87c97dd5179f0ade011f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/60c5bb5120f6c73b23af87c97dd5179f0ade011f";
+ sha256 = "0lcnjvklsxhfzcda286wkwjqdczyb7w0k8v9yybl0cj3ls1ikgnb";
+ };
+ "60d58acfdcf8d83f8a76a00017b7b2e18671b5a9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716370-1fe4be93d0274863a43a7797419557e3/60d58acfdcf8d83f8a76a00017b7b2e18671b5a9";
+ sha256 = "1gfl59bmrkvg038xw90xi2g1vmz6wzh84wmsk5g6mm8klpd57aw9";
+ };
+ "60f481b9e0149933c045fafa2e119c902e698d0e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/60f481b9e0149933c045fafa2e119c902e698d0e";
+ sha256 = "0l9rq8fh7mmkj363gzl673rknaacjv32276y0b52vxxg0m8fylfc";
+ };
+ "6110e8d90324f6bac6bd3173bc69f6c58d459d08" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/6110e8d90324f6bac6bd3173bc69f6c58d459d08";
+ sha256 = "15rqyi5w0nklw3v2r7fagaa0v6am1p1rgvq7fpk0x98axp7nvx71";
+ };
+ "61402aec078bfe9e6535f5a6ae537710fa5e79b0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/61402aec078bfe9e6535f5a6ae537710fa5e79b0";
+ sha256 = "0f9yjkz2myf9qnnk21n2alsb4ibznl96hh9i57d1y9w425jg4a2x";
+ };
+ "61588d85e249c225350c50ef50608fa8b9f4941a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/61588d85e249c225350c50ef50608fa8b9f4941a";
+ sha256 = "0daalrsynapmicj8bbv2cvg4kijm3x0c8zkayjjzixw5qy8sada9";
+ };
+ "618449250b93c28bb8f15751ff6bb653143e5ff0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/618449250b93c28bb8f15751ff6bb653143e5ff0";
+ sha256 = "0zkpxgpqcmkfd1a8rsivfrw5qxkqlcw9apa2jkf46417m1k5w2k1";
+ };
+ "61a4313e93aab82bab5da58a1b601aad41ecbd60" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/61a4313e93aab82bab5da58a1b601aad41ecbd60";
+ sha256 = "1gf7d5hxdl8hyfs30b2y9f1h6d3b17jfb65jlrx8fbcg70brad42";
+ };
+ "61edd2f04c73c5c3eca0bfae13c92213516504e3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/61edd2f04c73c5c3eca0bfae13c92213516504e3";
+ sha256 = "1aslzizrnnibzn5ynspirz9zz7667mzpz4gfvqb8k0x6zk46j5xz";
+ };
+ "61ff058a4cd1eab2481a48a115063c62660b78ca" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/61ff058a4cd1eab2481a48a115063c62660b78ca";
+ sha256 = "08m4b9c2dyld2hr7c8mxpfgvxxdaxj7svaspdfsg91ghq42mscdd";
+ };
+ "622d9c355d2344266a6a9065ae16e911791d9ac2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/622d9c355d2344266a6a9065ae16e911791d9ac2";
+ sha256 = "1i51r1bwfx7fsrykfbj5ylm1yjcp2q9a305vx070rig8m33qygla";
+ };
+ "6253baddbb265d8bcab9334e1bb48fee69c0a14c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/6253baddbb265d8bcab9334e1bb48fee69c0a14c";
+ sha256 = "0xfz545zngq5jnji3zxr8wlwjf8y7c8wd6bmmwkkjf1a2pipywiy";
+ };
+ "62cfaf0ed5a8437e74ef0b7331f28a86942cc8c8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605188-b2b13e5f7b3d453eb5d6b0cde31b638c/62cfaf0ed5a8437e74ef0b7331f28a86942cc8c8";
+ sha256 = "1asb6h92cnh2xmwnggn6kk9qly4pzw43aax3v07zhs69d3jbhg2x";
+ };
+ "62d297add5bd88f5ea16b2ba6b97664dd888eef8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/62d297add5bd88f5ea16b2ba6b97664dd888eef8";
+ sha256 = "1ajrnfsz53imm4hcsnjznbq087yvbj87s30v948x2vxy7ja17hi2";
+ };
+ "62e18e2b34d9ca5872cacacfd6eb9e94afd0eb2e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/62e18e2b34d9ca5872cacacfd6eb9e94afd0eb2e";
+ sha256 = "0jirs3ij917vqznqffqh5bisx4bvqfhbhr56fmlfyykckqwmq7i8";
+ };
+ "62e5d1e864e96e11f84e99dcab8cd16345641f43" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/62e5d1e864e96e11f84e99dcab8cd16345641f43";
+ sha256 = "1s7k9h8vpg5j5jq9mc4mgnrb1lyp3y3lvgc7n7l76djm61amqchz";
+ };
+ "63574e974c45ae3f0e8fbfcc9d896c53798dd161" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/63574e974c45ae3f0e8fbfcc9d896c53798dd161";
+ sha256 = "181s6b5j1zqv1hf905paxxgl4j4k20s7ypnv1h7f05qp4sq6wia2";
+ };
+ "6359e2376de35d2b27246726788d28d678796a20" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/6359e2376de35d2b27246726788d28d678796a20";
+ sha256 = "006mdqfgkxgppxcx8fdfza7z9f80rq27gjncnqpgk3wawb9033r6";
+ };
+ "6372acc1b0c4c85801bbd2b0fc9bd17a043c1b67" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/6372acc1b0c4c85801bbd2b0fc9bd17a043c1b67";
+ sha256 = "0c8fgaqy17nvsqx4lsiy4fd9z563rbf69sac18bkwyvw0wb4w1s6";
+ };
+ "637e6e050e0e294f4e7191f12ad96c9be75aa747" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/637e6e050e0e294f4e7191f12ad96c9be75aa747";
+ sha256 = "1s1vx86pp7c7kabvi0jpvqqykjb5127qwf6ljz8r6awmx9k32yly";
+ };
+ "6393b6f72772149473aacbdd6425bc77b7146697" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/6393b6f72772149473aacbdd6425bc77b7146697";
+ sha256 = "0jpjsh7r1m4isbhmmijlysv7jmnf01f3rj9q8z3v6fdmbi6v0d68";
+ };
+ "6393ed28494cd0c7bbfc3d90ee14a3c4fb5ffe2e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/6393ed28494cd0c7bbfc3d90ee14a3c4fb5ffe2e";
+ sha256 = "0972073k9di5s980ypdn4dww5y0drc1fsn7q5bk71ylz6pdx7ijh";
+ };
+ "639844a81c2400a43810b5674c144824ce23f3db" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2653253-b6a14aed15124b4891aa1fe8706033fb/639844a81c2400a43810b5674c144824ce23f3db";
+ sha256 = "0rflhgn3nxl5msfd7f8xmz56msgkqhadyh5n7b120lk34wa7bvw3";
+ };
+ "63b510d13c94072e9005674901d2b32ec9853167" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/63b510d13c94072e9005674901d2b32ec9853167";
+ sha256 = "1j10rlxqrdy1zv5fpx0zk4hy73fbi93zk7qsq59cfgpbgsd9n79g";
+ };
+ "63ceab8331229d4e03c85aa9b5f4671eda2643f1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/63ceab8331229d4e03c85aa9b5f4671eda2643f1";
+ sha256 = "05jv83mc7abw5zyad8wccnnh7q8f5ba82hq10w7d589gasdbj9s8";
+ };
+ "63fb6b15f90b5647d4e46169447beceac52a5dff" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/63fb6b15f90b5647d4e46169447beceac52a5dff";
+ sha256 = "1bhljn5pai17hw9znr22kv87p0fl01sx8h231v4mb96f8d1037q3";
+ };
+ "645a1e3bcfcb7345c6416a0ed520fae63329b8b3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2622232-9cbce5f5f69743598cf4bcb212040bd6/645a1e3bcfcb7345c6416a0ed520fae63329b8b3";
+ sha256 = "1mdx70n7hv42j7ychalbn2rwq8irm1nl1s0i5rgnbvsxb0z445pn";
+ };
+ "64e87def5324af1f8687a977b1aeca68f9ecf0a6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/64e87def5324af1f8687a977b1aeca68f9ecf0a6";
+ sha256 = "1alslkmk8i0vmg4v5bd8lizm1b51bp1mcy5bmwy03dfnpv9hd8yk";
+ };
+ "64f0b7d72766b49356b5948a55695a43f845be22" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/64f0b7d72766b49356b5948a55695a43f845be22";
+ sha256 = "0x7rh3sw20czicj5pb9p0z4xdhd7vc32562wlcwf5c9k0vdyddri";
+ };
+ "6522f3b24668a2691bee084b8ee44262dc6cc644" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/6522f3b24668a2691bee084b8ee44262dc6cc644";
+ sha256 = "0brl515h4axh92dypzyrcx5gjf3lzakmn48nn2aapk25l8lzw7fm";
+ };
+ "65578de12deaee566474c4d151d51dfbd4c073c9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/65578de12deaee566474c4d151d51dfbd4c073c9";
+ sha256 = "0n1rhn916zqr83fxzb6slwd3sj7xbxyi4j5371pndfq1ah8yynkr";
+ };
+ "6580420e45c35e3175f7714b91aa918b46c45984" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/6580420e45c35e3175f7714b91aa918b46c45984";
+ sha256 = "1xsyvsp7gr58v19k3b5d33ayhz38amckz6kcabv2jaj22d1m4zwv";
+ };
+ "658fa72e61b1133bc866dc68b7317dda0c190d51" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372492-7eda6cf2d68f471699ac1d302230bcd3/658fa72e61b1133bc866dc68b7317dda0c190d51";
+ sha256 = "0am1lpxk2jxhf015siabscd3b8i2p43xgg8p5bp0r0sxrcbxwy2j";
+ };
+ "65a719d77d9dbaa46e24a210a17ef22399982d13" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/65a719d77d9dbaa46e24a210a17ef22399982d13";
+ sha256 = "15wh8wv0fj30xy5lhz1vhw5a7d6fqk8pjpcivzmlc9qp48jaa9jr";
+ };
+ "65b78b6ca4fcbc234e459578f687f0a5f21ff467" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/65b78b6ca4fcbc234e459578f687f0a5f21ff467";
+ sha256 = "1xpkj42dfkpqa0bq1fvwwy8n4286h2xlwz0fm2m4yk3p7qs2yyn5";
+ };
+ "65c815431a222281ca4027a3409714aca969c404" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/65c815431a222281ca4027a3409714aca969c404";
+ sha256 = "11n5ra9mwj06zlilmn58xwhqr081ml58f8jd57sz994f3ci78kf4";
+ };
+ "65f992d64db107757f6c8186765571a2f85d60d1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/65f992d64db107757f6c8186765571a2f85d60d1";
+ sha256 = "1jfrsagmfvvjxji32w4p7qq6b2vyqfmn52d1xinxn11v575cmrxw";
+ };
+ "663723ac5cff1d4ea06e07da58676eda31ded8b7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/663723ac5cff1d4ea06e07da58676eda31ded8b7";
+ sha256 = "0yc5wmplmj4nqfzlydrf3gcphnym0vdy5l8xsb6l6gjm1rzn3w61";
+ };
+ "66b5c49c095c24e8ff5576638e6f43f40b60e398" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2467022-c410c14385ba462bb86b4995040cdcb9/66b5c49c095c24e8ff5576638e6f43f40b60e398";
+ sha256 = "1r4cq5hz5ciak42xy5h6jk8r55cy4a2am2x7nsm8n40pn1m86xg3";
+ };
+ "66e6d819829e7f036392ae108ecdedd0068b3fed" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/66e6d819829e7f036392ae108ecdedd0068b3fed";
+ sha256 = "00h32jp49052x7fms634savpk88976q973s1ixnkcl4q10y3ygc3";
+ };
+ "675414213a5992bda8f4bf33aa2feac7508eadb9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/675414213a5992bda8f4bf33aa2feac7508eadb9";
+ sha256 = "0b20idjyc0m9dqrnpzxxdshw29l7nlj1g7fi5zhf9y0hh77v1ji3";
+ };
+ "6758891f27f3f1b33f508442151c2d1d4244cacf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/6758891f27f3f1b33f508442151c2d1d4244cacf";
+ sha256 = "0ixakp9gxjjn5c19mir7qxjh7ywx6n2pncqiv37mbhj5c9z5r7mb";
+ };
+ "676f25261064cf478cd211dd584b7a391376f599" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/676f25261064cf478cd211dd584b7a391376f599";
+ sha256 = "0f0ix6vbx89pa9bpvnf87kwhbnf7q34mxf8ycw6md4brrjps21js";
+ };
+ "677b668be4a2ec5fa834fa988bf502390ca975d1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2703853-c90e6f22156c41b6b1968b2a029d291e/677b668be4a2ec5fa834fa988bf502390ca975d1";
+ sha256 = "16ppk310afb40np5slr1b7qy6ksq16d0pl2zavd4wrxr626c0yjb";
+ };
+ "67ebcec99338fbc806e98fe5ddcc80abd7cfe885" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/67ebcec99338fbc806e98fe5ddcc80abd7cfe885";
+ sha256 = "1rhm5ziiax99nlnyz1y3gqai9wkkvi0lwmsjn64xsqhp2cm93sag";
+ };
+ "67f9a57842391bca1072e56b907d2adde02d2d34" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2609785-e83ceb61e76a4e4bb9b4dc17c52d07b1/67f9a57842391bca1072e56b907d2adde02d2d34";
+ sha256 = "1i8aa40i83zlzydfdbf3k023329mlvlh32kwln6q9pg9998k5hr0";
+ };
+ "68290cfc4aa5f88785b355b66e5efa7ae2451f3f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/68290cfc4aa5f88785b355b66e5efa7ae2451f3f";
+ sha256 = "1s6m4qakr8bzyhak2v7d6b7h3g75iy4wfxplbz0r1bk79mlzh8ch";
+ };
+ "682beb667137b4be322732642ec6bd7a7fb77a67" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2474673-cc4b4abcf8d5453d9c14a5ad304063e3/682beb667137b4be322732642ec6bd7a7fb77a67";
+ sha256 = "1sap6ri29l2cd8yw5g5g8axy9nz8gy4lhrkvp1fnnf5c68cqqhm4";
+ };
+ "684a26e9ee9814c8e55834710a5e5395db2acbf6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/684a26e9ee9814c8e55834710a5e5395db2acbf6";
+ sha256 = "1g8alym478k5mla106h38zmspr1gvgbyckhc0hbjk950kffwg537";
+ };
+ "69435a1a9c544a85003dac3e715da698388e8cfe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/69435a1a9c544a85003dac3e715da698388e8cfe";
+ sha256 = "1wb8slsppm2cz2g5qlccjgjayv3q8bl0p5hybz3gpicnjyhla1c0";
+ };
+ "694d6d6d33e802bd013aa60c6ceef225f1769a21" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/694d6d6d33e802bd013aa60c6ceef225f1769a21";
+ sha256 = "100b3c46qf5nhw3758203khsqjk5jq9hi3s7hsjsjrrz03p2fclp";
+ };
+ "696aa11a029bfeebe1885750c0a1219698f45667" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/696aa11a029bfeebe1885750c0a1219698f45667";
+ sha256 = "0nbr429yjr1xi2zlqz0k33p62d4mq4pcc49xshkdjbqm8j76yg9r";
+ };
+ "69fc2b97ab8ad300bd86bdb295b868f7e2bce67e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/69fc2b97ab8ad300bd86bdb295b868f7e2bce67e";
+ sha256 = "0538b6klq4k379vp6miha7y73sz3lbgj093hxhzl4jb7fqnrwpdr";
+ };
+ "6a0ea024e2030b5079a2b9e20aa262fcb1a4a4b3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/6a0ea024e2030b5079a2b9e20aa262fcb1a4a4b3";
+ sha256 = "1i6rijsnpwq58ngwdak1kx0kv53w2bqgl0jfwww2mpm9nwr34dgk";
+ };
+ "6a12e8d5c57226c69cfd4eea779767ef39cc7040" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/6a12e8d5c57226c69cfd4eea779767ef39cc7040";
+ sha256 = "0fpbgjzi79f8y2k8dmj596kndbjrpkaqvld1mpfd8mfxjg435psd";
+ };
+ "6a471e2c9660b457b6c96bac1a80ff31694ca135" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2602350-38e0d307a57a47baa00ee5f892c9ced6/6a471e2c9660b457b6c96bac1a80ff31694ca135";
+ sha256 = "0ifvzqzrjf1ich2m8r75czl46kyr0y2aagsb6h5mqnxmqbznwkq0";
+ };
+ "6a50182277880d3cdd4488457883c08e6765df35" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2587672-91bd78b10f504d6789cdb334ed27eda0/6a50182277880d3cdd4488457883c08e6765df35";
+ sha256 = "1pr0sfpya1izpppfdpypkpyqsalr02v0azcxyn2p8jibnzkg4qqa";
+ };
+ "6a67f7a815e887377e17dc82a86617bcbfd74f12" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/6a67f7a815e887377e17dc82a86617bcbfd74f12";
+ sha256 = "1wqf8h7wlwzwiv2syrs3c69lbiqr7505kkbfckrscj8ym2rgmqxl";
+ };
+ "6a6962c3f79f9f08e1b48bdf76659d8d0ac02e20" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/6a6962c3f79f9f08e1b48bdf76659d8d0ac02e20";
+ sha256 = "01dlplk4r00san6hbw5mclppb0kapx51w4mv2piihx6vcdq2dv2w";
+ };
+ "6a8708499175f48f9ac6e36dcde1684f5908e594" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/6a8708499175f48f9ac6e36dcde1684f5908e594";
+ sha256 = "0v67h7q7wz0xa66l8m8kk7adrf7mr9arns5w5rdv3m6dq9730cz1";
+ };
+ "6a9c5875310b65c3a8a12766aa12d23c75256911" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605188-b2b13e5f7b3d453eb5d6b0cde31b638c/6a9c5875310b65c3a8a12766aa12d23c75256911";
+ sha256 = "1x5q67kq3jrxhcvnc4xj2ic28ssmiyld4yp3y612vl71z02rsaji";
+ };
+ "6b3a9a128f40523d7b4663b4aff1259e204dc2fa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2638350-39632eb9e5f94ba4ab8e97fa2d5a3251/6b3a9a128f40523d7b4663b4aff1259e204dc2fa";
+ sha256 = "1nhpvs47s221k07ix1i5sp4ba8mia36zmqfz66dz2x9yx87xm3gj";
+ };
+ "6b44b6d36ae3887d630357d09ac1f4655e43ca7b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/6b44b6d36ae3887d630357d09ac1f4655e43ca7b";
+ sha256 = "0rmj38k1zz4q2ckwngs38jn6z5w9kaxrghckqv60ajjpn47dk008";
+ };
+ "6b67c4b93edd66dc6876acdfaf991559f2387756" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2615502-35e684f430004977ab5aaed43a0fab81/6b67c4b93edd66dc6876acdfaf991559f2387756";
+ sha256 = "0mq7wi48fck0c8i1f08mkya5fjr5a2sip3g9lzzi4my3k6g0jdlc";
+ };
+ "6b6ea1539e3e10b995b117a201cd14188d7361cf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2528357-44d3814edbb84d09a5279fe4fd30ba86/6b6ea1539e3e10b995b117a201cd14188d7361cf";
+ sha256 = "1y7r4z90rp10b9pqp54awmnxqibx8pr2924l52z2abm3hza7h6da";
+ };
+ "6b990f3e47bfc2ed0ca6a8c68c9188a6788110bd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/6b990f3e47bfc2ed0ca6a8c68c9188a6788110bd";
+ sha256 = "1mwmkci1q5lk8vrqgcrng5p8vdg2y2k18g5x5csgfa0j0harwr20";
+ };
+ "6ba54736caaad91cbe96699871e5e369c615d477" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2528371-50b896349a4f4b48b4cce5ef240b0c45/6ba54736caaad91cbe96699871e5e369c615d477";
+ sha256 = "093pf4kdkisr2k3xkz7qx88503mr70y3crx4170lblax8mji89ib";
+ };
+ "6be690bb0e769b3f7e8d0ea9dc261b06f0496249" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/6be690bb0e769b3f7e8d0ea9dc261b06f0496249";
+ sha256 = "18cidvs8cv9air0l9g65s0010a677qpj3rjdx1z1p19mcr7w9ddz";
+ };
+ "6c0977b3790d44b85c497cbd724ffa4f744bd6b6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/6c0977b3790d44b85c497cbd724ffa4f744bd6b6";
+ sha256 = "0wcypa2p4wx0si460677y544hjp38vf81im61z5kq4scr5l4kwxs";
+ };
+ "6c431edb06befc6eec62ca59cc72f45697da876b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/6c431edb06befc6eec62ca59cc72f45697da876b";
+ sha256 = "0bm4r49wzm0bx5wa0xdpmld8y0cv6jin9wl3djlp7kwg0nix2fv8";
+ };
+ "6cac0ce67fc25ab9057de053ed68e469376a951a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/6cac0ce67fc25ab9057de053ed68e469376a951a";
+ sha256 = "04kbpf0pwsc1a5kz2yhg1azp0ng2zc4ff8dyhc58n543nyla68v2";
+ };
+ "6cb6768eacda17fd4b9089b3667e49c91b543347" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/6cb6768eacda17fd4b9089b3667e49c91b543347";
+ sha256 = "1wj29bzdnf3s0w5vymnj599jq926m5whdrllfx6869z32q8xasms";
+ };
+ "6d0a3530ef64aa77b0e3b1121ab3e5148367b843" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/6d0a3530ef64aa77b0e3b1121ab3e5148367b843";
+ sha256 = "16brrbwwhh9ddjs22ijqkaxrz56n4bmzfbkshipmc74p6ildw05n";
+ };
+ "6d10bf18bc8be763d3e8f14a5f604b8bbc8ba92b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/6d10bf18bc8be763d3e8f14a5f604b8bbc8ba92b";
+ sha256 = "12mw32xsaa1j0lcj5nbir2m7m3bp9sgvjf2022l5rxzs196kncdy";
+ };
+ "6d17b68e3ef2ba04421c03ad37c21c1871a7291b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2468685-6ced80b1c43d4f92b6c325ead32ec577/6d17b68e3ef2ba04421c03ad37c21c1871a7291b";
+ sha256 = "0lb1q5wp4px4kh5lkfbva078jk0jj2nli6nqf6501yq1gbq80q5v";
+ };
+ "6d2192770af113f0d25717171721654f92522bc7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/6d2192770af113f0d25717171721654f92522bc7";
+ sha256 = "0x9ayw21alzjqp5xwlj291klnxdkhqqgbz1wvppklmnw3yrqbha2";
+ };
+ "6d263531086a2ac8abcd381816ca4bbebeb2bb89" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/6d263531086a2ac8abcd381816ca4bbebeb2bb89";
+ sha256 = "10wihlpfq2ilg2a3rj6hdj2109rwsvsnjfs4x9l8pmr0imn6w4pz";
+ };
+ "6d2b2990842e4e124fa1767f5e6fb10dc1c8f0bd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2467022-c410c14385ba462bb86b4995040cdcb9/6d2b2990842e4e124fa1767f5e6fb10dc1c8f0bd";
+ sha256 = "1jvcscijpcpl4g17wl8h39p6jwngh8qys423najf9hxqxvx9l9w1";
+ };
+ "6d7357dd4987e9a687f666583450e9650b6bec3b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/6d7357dd4987e9a687f666583450e9650b6bec3b";
+ sha256 = "0xzzdsb63zb9771lxm845390d23hihgax7ksyrlhjmvj30kxxkhk";
+ };
+ "6d8bf7bc3f485cc58257d2f301a88e430fe47518" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/6d8bf7bc3f485cc58257d2f301a88e430fe47518";
+ sha256 = "1pvs3fl5qschq6gk12ig84wd4568sgmv4gv05kdvda44pnz3fbnd";
+ };
+ "6d9e988311499cbfde8b162b1b772f3ab0826cfa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/6d9e988311499cbfde8b162b1b772f3ab0826cfa";
+ sha256 = "0bp2gbl6b2dimw4izmsa9cpsw2650g1a1apq5pv1j0a0ihahwfjn";
+ };
+ "6dbc1369cf4eb542c999ef1a7dc17798e967968e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/6dbc1369cf4eb542c999ef1a7dc17798e967968e";
+ sha256 = "15vl7c83w4l3jd366lxljgpjyh2dxi22s11sk83bkca9ig8p9rlb";
+ };
+ "6e12c754b5531592e7583c0ddf5ea9f617bc4393" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/6e12c754b5531592e7583c0ddf5ea9f617bc4393";
+ sha256 = "095hbf0bx9iwcyrljr23zg1dwd3n382s4pxgpvalpb6flk346i9l";
+ };
+ "6e4f2760b5d09171b1caf834191e8eff91e09092" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/6e4f2760b5d09171b1caf834191e8eff91e09092";
+ sha256 = "042615c1ssd8jd0swn6qxl55v619ilz3y5549qqaj2qbs2rxgda6";
+ };
+ "6e59a6401cd7e9537de8df24d6923df4897465b2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/6e59a6401cd7e9537de8df24d6923df4897465b2";
+ sha256 = "1pbk0lxx24w1bblnjnl2zvljy2pg4c8pad7xyfp5gwinz9ns045w";
+ };
+ "6e5a4c88769060bd4e1cc4b17dc6944cd5f3d5cf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/6e5a4c88769060bd4e1cc4b17dc6944cd5f3d5cf";
+ sha256 = "0y08zj57v9n6a1hp9rgrvx5zcj63kq3363xi2vfl5g0fl3n0rfn4";
+ };
+ "6e730e7ead3a2958afb3beeffb7961d98b372ba4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/6e730e7ead3a2958afb3beeffb7961d98b372ba4";
+ sha256 = "1d5rkr6qa8h4kxqcxarmvwfmn49k1rnfljvrm4b72yscl3x89pri";
+ };
+ "6e81558b9e889ebb9d8f50cf1f1d5c4ab32617ce" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/6e81558b9e889ebb9d8f50cf1f1d5c4ab32617ce";
+ sha256 = "1ljwpklbqah13l6mvrgfbn4xxwpxqycb4cr2ibh90aigjyjbijni";
+ };
+ "6ebcf68520fb80c14bda307947650ecbe5ed0335" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/6ebcf68520fb80c14bda307947650ecbe5ed0335";
+ sha256 = "1xq7g59xy3a25qiib3dv30in8yqg8667wpq940z64gapbsvjk106";
+ };
+ "6efaf9b48d52aee2c7a89e9fb7c8face3a1dab34" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/6efaf9b48d52aee2c7a89e9fb7c8face3a1dab34";
+ sha256 = "10iv45b9g9l3krxqs8cqkgad5zhvy64n84q94ghkyn86ilg6pmqb";
+ };
+ "6f05a4518d46fff2a081dfff843f2af3e163a983" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/6f05a4518d46fff2a081dfff843f2af3e163a983";
+ sha256 = "07qkvg5g4dnzwjv9s38gqjc5mzsa13xmv0g2d9wii4vwm9ray2sw";
+ };
+ "6f0e8b5effca878a55ca98bb70c7fc5b9c33a7ca" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/6f0e8b5effca878a55ca98bb70c7fc5b9c33a7ca";
+ sha256 = "1whaajzna61zci7cjpw0p3j7z1y3wiqz98qkn5s3lpl0j37l3pql";
+ };
+ "6f3fed4aa88e43e6ccbf7498ff502f8440e1d8b4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/6f3fed4aa88e43e6ccbf7498ff502f8440e1d8b4";
+ sha256 = "0hcsv3588k6ra0cd5l1f64m5r35fl6wbs9a8p9j29nigy3vdmbvv";
+ };
+ "6f51406032cee2275e7da1c749608e097223bcb1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/6f51406032cee2275e7da1c749608e097223bcb1";
+ sha256 = "1lcaxdjbkx2nklln244ljdfyhi4b246zvk7pl6hg29kbjaxh3grw";
+ };
+ "6f7d171cf322dcfd650c55aad7573fb99f926026" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/6f7d171cf322dcfd650c55aad7573fb99f926026";
+ sha256 = "06yn4cdz4rrvh1h483fj06n6n0jamngx2z24mjc1raf63slidb07";
+ };
+ "6f920a415787627f9dc4c1ef92a2a039a21976a6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/6f920a415787627f9dc4c1ef92a2a039a21976a6";
+ sha256 = "12szpcgm9mgddiyyf6yhs8rf6hlwa0kw0m9wzs9xdq1phxwwcvy6";
+ };
+ "701e08162a99eeb25b55b6133dfee51bf36e08d3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/701e08162a99eeb25b55b6133dfee51bf36e08d3";
+ sha256 = "1mffiwbv7qbwadrj6jkm1n4hzkjl5m3fc4dgxdijz7i79d8pgyk1";
+ };
+ "7054b730a39f0d762ba1602fbca946a38a8811cf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2565979-eaaf2006b54843b69b5280979c12ed6d/7054b730a39f0d762ba1602fbca946a38a8811cf";
+ sha256 = "1vmx4g2jyv97k5pbv6rayn8a0qd29dwmvbl60v266m2ld25mv59r";
+ };
+ "705da00d6ddc859d91abda6fb8299b957eb0d99f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/705da00d6ddc859d91abda6fb8299b957eb0d99f";
+ sha256 = "0sizr4r95pddbynh4kns28id4n99hb7cz5dxx5pj5ma8n3w5295f";
+ };
+ "7077b313799ab4557f8c8d9aa345313eb3c6fbae" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2622232-9cbce5f5f69743598cf4bcb212040bd6/7077b313799ab4557f8c8d9aa345313eb3c6fbae";
+ sha256 = "0mhm5c9z63i6v24bfkhci6zdzjzqwaimkd77p5whrnqrfw44iqz2";
+ };
+ "70bb4371a8b8f7a2118ee2f0a7604496b68eef9b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/70bb4371a8b8f7a2118ee2f0a7604496b68eef9b";
+ sha256 = "1sjrdhycvh0dy9c1b2abkpar8bjmm57xqpfp2qznah918mp43jds";
+ };
+ "70bd0e0e4dbec19c4cffb718ebb1ac84e037940e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/70bd0e0e4dbec19c4cffb718ebb1ac84e037940e";
+ sha256 = "0banm0bvf6rsz8jpkx7ivghf47ds8wf6dbcfg17f7nbbcnjg125d";
+ };
+ "70f50e9df2d8e0011bf9748ea4c1df4c8c8c2202" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/70f50e9df2d8e0011bf9748ea4c1df4c8c8c2202";
+ sha256 = "1cw8ykv8nzrvwc1rdr45ilr2cyl8f6crby374n8049dyx1bd2mmx";
+ };
+ "71031e888d4b28104016a406b7ab6e993322d9c8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/71031e888d4b28104016a406b7ab6e993322d9c8";
+ sha256 = "1ixxwv77kbnz8y8z64v0radxx3q7azbakcpq9nl84k8b93lzmp3z";
+ };
+ "716adbc60694f3f72ef5e25a38f3fb973fdc7a2e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/716adbc60694f3f72ef5e25a38f3fb973fdc7a2e";
+ sha256 = "1c8w4k96i6fgkd0jc9vwpmw31p4bcfw88x09c6781ri64qw1asl6";
+ };
+ "71a6745bfe2208e7c0eea0718fc3a06d9ebf12cf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/71a6745bfe2208e7c0eea0718fc3a06d9ebf12cf";
+ sha256 = "1q9ymfkjvbwv1bwvq5m5c31yb3kcvfwvgrsr803wqa6qm4s40zdd";
+ };
+ "71a806e6c281e55c56f6e0feb65e35d553d03b68" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/71a806e6c281e55c56f6e0feb65e35d553d03b68";
+ sha256 = "05065h1wgxihrmih7yc291vxgpyimcj2kgbqn4j8mly43llylp5f";
+ };
+ "71b05376f1ca6f9ebfddddb4cb2258620d57951f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/71b05376f1ca6f9ebfddddb4cb2258620d57951f";
+ sha256 = "09ccxpvjjs3yjc45ygjd6phff9ax7xa0lhr5sb5jzswfnblkb04i";
+ };
+ "71f91c9ee187d974e3f5da3d91a352d568c260a8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/71f91c9ee187d974e3f5da3d91a352d568c260a8";
+ sha256 = "1j2jk0qb9wdczxww1wl3rm07rhz1q3b4n6z23jja3r1fqsn8w50v";
+ };
+ "7210d2acb28ac3185e52b3c854c02db46878b00b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2499790-9469133ca7fa466794728dd13190004c/7210d2acb28ac3185e52b3c854c02db46878b00b";
+ sha256 = "15llgg0n7w2awbbkb0lvb90g8sjip1zj7knca21lyxgb86p4nfbq";
+ };
+ "7214bfbc3129849a9681c342e1873b66020b0420" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621802-1efd555e661e4948aa22f3883712aa6c/7214bfbc3129849a9681c342e1873b66020b0420";
+ sha256 = "0qpkvfjnmmf8bcvd8qddfyyf3hglkp3870z8rhpxcpyqbv5q644x";
+ };
+ "7221d90f16cb54cc4f5be63f68865da103cd4f5a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/7221d90f16cb54cc4f5be63f68865da103cd4f5a";
+ sha256 = "0xzcfz1npvnf3qidc2yffx5xqs587spjmrxsnsra8fqmghy7y513";
+ };
+ "7228172fbb398b4f9cca6ca9b5db85d1a6644b4a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/7228172fbb398b4f9cca6ca9b5db85d1a6644b4a";
+ sha256 = "1d62b5vw3l58667k2nf2dvladpkwpaaa0ai9x58bh46x1gazfdyq";
+ };
+ "725d0cc30e3c4b6a9e3dfac3f320a6c9904dd8a9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/725d0cc30e3c4b6a9e3dfac3f320a6c9904dd8a9";
+ sha256 = "1lq5pdjpa6jgrywfzx92vczlkqp8ggr6mqlnly772c6a4p507xvi";
+ };
+ "72e906fb126222e8269f7d46e2d9f1ac603baa5e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/72e906fb126222e8269f7d46e2d9f1ac603baa5e";
+ sha256 = "0by17bnb94wwv35bqbb7gxn64xppf6m88m50lm6dxyblclizk1sx";
+ };
+ "72e922640673b6171e86c8c7fcdfa148004c1301" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/72e922640673b6171e86c8c7fcdfa148004c1301";
+ sha256 = "0xbd7jd9pj1g3yf4252dy84w1x7czlqa1gxalk6p6awn1n1va815";
+ };
+ "72fc2150939a11815cfa929001ecb00ad565ce7e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/72fc2150939a11815cfa929001ecb00ad565ce7e";
+ sha256 = "1jbhd6mcrxk21dbjavkz6mf610zdql9srkd6c4flb794kfxx0gir";
+ };
+ "72fee8305071d508698fa86e4a89c80f5ee236b3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2608258-d12288bf79ea446a9353c7f9d223b24e/72fee8305071d508698fa86e4a89c80f5ee236b3";
+ sha256 = "1dkbhigrqnbdpp7ixm8fwhn4x294n7zi33xijw9vngysc7kngx7g";
+ };
+ "7305d73041a77bded642dbf6567625ac3c0208fe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2466157-4ecb0085873048178dd6d2b8872eea79/7305d73041a77bded642dbf6567625ac3c0208fe";
+ sha256 = "17l3s1kn54kzjg7ajxhx7rvmw6rsvk1ad748dp9mqi5qd80096bp";
+ };
+ "730822767c19d479de3afc2e926cfd7438e23852" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/730822767c19d479de3afc2e926cfd7438e23852";
+ sha256 = "1hgcf7mzjamjjrs2636zdkz47knwy8hbvf1l4rm4slzi1mr2zrk1";
+ };
+ "7320897f4f1584c0e42fd2546557d85ca8f513db" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/7320897f4f1584c0e42fd2546557d85ca8f513db";
+ sha256 = "0r77s64pcx4585g5s3gbjksfsggbmp552fsipqzs4fv7qmanym5r";
+ };
+ "736ccee7ee45e606201ef7b7c643498cfa13d70e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/736ccee7ee45e606201ef7b7c643498cfa13d70e";
+ sha256 = "0p69pgkm72g46s76k1v8m2k77hh08sb0amx6lsszkipn86kx7ff4";
+ };
+ "73bae428e969b828d72a1c4b71208bd855b67233" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/73bae428e969b828d72a1c4b71208bd855b67233";
+ sha256 = "1x3ikd5ymqixs0zsny0lp6la3jhxay54iajw2m99w4bzfscqdkz5";
+ };
+ "73ee6ef047e32991fff9aeb313c0e8c7faf673dc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605188-b2b13e5f7b3d453eb5d6b0cde31b638c/73ee6ef047e32991fff9aeb313c0e8c7faf673dc";
+ sha256 = "06xm65k8i87crf0dq2iyj6mxwbyp0spmjwqha3n93fv63sgg3zrf";
+ };
+ "73ffe57844e03a4cafc0e9aa8819694c90e1522b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/73ffe57844e03a4cafc0e9aa8819694c90e1522b";
+ sha256 = "0j5ysqydqi51y5yv984wzs4q2y5d2d2cdrraw001yda5ghiidp4d";
+ };
+ "746b744c6a42c0f8af6feef784581873bde794e1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/746b744c6a42c0f8af6feef784581873bde794e1";
+ sha256 = "1wsmy3wazhzjk50yd2n3g9zrivzfwqvl2r5blcv7zvvqwyfhnpax";
+ };
+ "7491079d020d11f40f14eb94536fe09006ff2c16" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/7491079d020d11f40f14eb94536fe09006ff2c16";
+ sha256 = "03aqvnhvbw15kh30384pyg01s4nixjqz22780yjja4hj51frxps3";
+ };
+ "749a111a54b3257ccd4600b6ece1fd86a57efe58" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/749a111a54b3257ccd4600b6ece1fd86a57efe58";
+ sha256 = "09lf0sslsikg4jks8yzb6b9k3y9d0dbig5j45kfk58yjx90mgfhv";
+ };
+ "74a5411261270860b0b2d315c8398df07f956fa0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/74a5411261270860b0b2d315c8398df07f956fa0";
+ sha256 = "1c8zc6kryl6nn9bv77fim2ccd5ikqjnj5n0b75dii63znm8hlp2i";
+ };
+ "74bdfe7b7c5448f6b002b747a29ddf4eb214dc0a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/74bdfe7b7c5448f6b002b747a29ddf4eb214dc0a";
+ sha256 = "10kq66r73gc8ghb3b5jgahbgs9rnv2s3kbvd72vjbdbyz58wacrx";
+ };
+ "74c4761d61aabc4f7e227da3ff18fc3af1ea7f5f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/74c4761d61aabc4f7e227da3ff18fc3af1ea7f5f";
+ sha256 = "176b4fv2dmppcs9zyci4yilvj0kmn92cxybbwjllp2cr9x2ard91";
+ };
+ "74df4c8f82ff3081bd49648cee83a06677495bd4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/74df4c8f82ff3081bd49648cee83a06677495bd4";
+ sha256 = "12brl8hsdyv0gf4hggi7mf9j5q2r19w3najivicrq86rg0f2km1y";
+ };
+ "74f904f20ed3e1cd02cc9d0e07a2778948328274" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2547993-1fb84b9e293242c988e586c599eeeb56/74f904f20ed3e1cd02cc9d0e07a2778948328274";
+ sha256 = "0169jszrsidkhbhz906yc8a10ffkcnp2kxz193r46j9qpv69dk2q";
+ };
+ "75124406de34db23633265523d08e569d7889164" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/75124406de34db23633265523d08e569d7889164";
+ sha256 = "0709ach7hq7qn6452xd7n6jlqx6j5b597yyvzvmcfsbnp5nmn39k";
+ };
+ "751d2649bc4cf19cea075804463f00cf0ae61ed7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/751d2649bc4cf19cea075804463f00cf0ae61ed7";
+ sha256 = "1a5g17mvwa7f8ydwikgc0f4hf8wp8w491fhhzvnn4m4i6jam6hwn";
+ };
+ "753eb938736a4b412147164d4077e991f9c89950" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2618214-623983ec05b34939b08acd26ecfb4f92/753eb938736a4b412147164d4077e991f9c89950";
+ sha256 = "18zkl0jsx165akaxgxxzf3619jmclxc18nggcbyb1iwqmxrxpcak";
+ };
+ "759eb0a64477d1269a2089f229e3f0a2276fb531" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/759eb0a64477d1269a2089f229e3f0a2276fb531";
+ sha256 = "1v0wgzzv2d6mxmkb0s96q7jb9d5knnh2p0ja261kmqhyc6dlzlqr";
+ };
+ "75e0842c76b2e55a861da42ea1d7c4636ab53833" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/75e0842c76b2e55a861da42ea1d7c4636ab53833";
+ sha256 = "05a3azlaw3y38ysr9rdrjk8mcrzm46q39k9xy75jxg52qpbdxmzi";
+ };
+ "76b0c3828b07ab86d995f91647a8fddeda00981a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/76b0c3828b07ab86d995f91647a8fddeda00981a";
+ sha256 = "1jybpkydwa8ry4197hxb43f6lgszv6sl9fnpbd335mipn5gs9das";
+ };
+ "76df9b164d66551812ce65dddef45a44604b8c8c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2736314-83d0b2c86e6940798eae7a6b4a7a011b/76df9b164d66551812ce65dddef45a44604b8c8c";
+ sha256 = "1knls10cjd66hr0z4988gw5p782q7f7lyagpx9f63zxbqjn0l3v3";
+ };
+ "7725a79a9a5f662ca2adf8ae2efb114d32ff45a2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/7725a79a9a5f662ca2adf8ae2efb114d32ff45a2";
+ sha256 = "1vszgcnacspqzz1fj0y38gjj54qavksbwswbz2cmyml0m77h8qfr";
+ };
+ "77352bcc40b2053c8db752c49772dbf0d158af62" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/77352bcc40b2053c8db752c49772dbf0d158af62";
+ sha256 = "1pgz55g9wk1z146f00r6kbij5qkng7cb7ni22jgr6x3inblq28da";
+ };
+ "77464fb66258632d2799ac5491f4316d35cc346c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/77464fb66258632d2799ac5491f4316d35cc346c";
+ sha256 = "0iixcb51kdjnl8llbqiib1dkcv421d8pi9hly1r00clds5b5bpf0";
+ };
+ "7756f8e0698993a2efb94e15819a1d1a22edd9aa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/7756f8e0698993a2efb94e15819a1d1a22edd9aa";
+ sha256 = "0pm34hr3jm8nsvaypl68nacmbpzi2ynfnxm02rkn589f03778sni";
+ };
+ "777419bfd692da1795221b0711a3b11467f5e4ad" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/777419bfd692da1795221b0711a3b11467f5e4ad";
+ sha256 = "1g2rl7j740zhf4y8pcbcdhpzxzw9hcp0vb82zm72nhfw8hp9z212";
+ };
+ "777fe4089b0a02f749411d577a2a17adf635dec1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/777fe4089b0a02f749411d577a2a17adf635dec1";
+ sha256 = "1lvj3lvc20rh4yvwbyafw270chkl16jlardv8pqavil085qz332f";
+ };
+ "77ab57479dfe164e72b8298375e3b9b577e6640d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/77ab57479dfe164e72b8298375e3b9b577e6640d";
+ sha256 = "18qjd9d7d66qjk087xg246d6gssbiiv08y3rq2v1d7cddbsbbzda";
+ };
+ "785a36aff000132218d273b16e36412342def12d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/785a36aff000132218d273b16e36412342def12d";
+ sha256 = "0235bgb8hzg5x5fhk8a5iasdjfbj5xzh0ccxx3iaadmadcn3xgxj";
+ };
+ "786040422666da11604af7280dd6eed639de30d4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/786040422666da11604af7280dd6eed639de30d4";
+ sha256 = "0na97fbmlgwl7kfp5asvj41llyrk6srn11argjq20vwrpzj9c0h4";
+ };
+ "788022e3bc41bf23e517d88df0ca24f715b1cad4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/788022e3bc41bf23e517d88df0ca24f715b1cad4";
+ sha256 = "1hhilba17whyl3iycd906nh0c4v9mia51pb8cgy7kqjiawypcp6k";
+ };
+ "788b132136ad4d08c5f03e4078824ec04b1ac0b9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2622232-9cbce5f5f69743598cf4bcb212040bd6/788b132136ad4d08c5f03e4078824ec04b1ac0b9";
+ sha256 = "1wf1kizj5s4nkkmyhc1xs1mqzzwc1b2vdybbnx3g7rn9p9rq3jgc";
+ };
+ "789b2bc3606dc2558b7cab5dbb62e8e76f20ef74" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/789b2bc3606dc2558b7cab5dbb62e8e76f20ef74";
+ sha256 = "10pzb9ylqbsls482sa1frmk7r8ra7b6y0fjb7x97v482pdskh64r";
+ };
+ "79042a16d0ef7feeccc76315246c5ee6f36dfafe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/79042a16d0ef7feeccc76315246c5ee6f36dfafe";
+ sha256 = "1wn397vwkkakm5q0r2kk1axq3zxfrc1f65cbwqlixzfgpz8lybil";
+ };
+ "7927b5a5a5c57b3801e7d0d4a42fcb142f267b78" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2653252-2bb04ebcdd0e406596c1b14273fe0c06/7927b5a5a5c57b3801e7d0d4a42fcb142f267b78";
+ sha256 = "14w4h37fsmj9mjsfa53hc4ymx9j6b9dfia3n4gwkwmbw5sj8l9gp";
+ };
+ "792a616c0f78fa0b294f67b56549092efbbbeff6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/792a616c0f78fa0b294f67b56549092efbbbeff6";
+ sha256 = "1875sind4si5lwmbypjn3ssbdxn1w5a5wv61kllqw9a8iz76pc0x";
+ };
+ "79477f2a4147dd648f89b314306f5f0346278735" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/79477f2a4147dd648f89b314306f5f0346278735";
+ sha256 = "180qwmv30vf5fx724mn44l8p9j6ipaqqs83fsiwyaifa1zn4kaf8";
+ };
+ "796f0c398bb010288b3688e6743420cfb681a4b8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/796f0c398bb010288b3688e6743420cfb681a4b8";
+ sha256 = "07mj9nfb7ganiv6pc4yz30zsbfbhqpap2x21nrq93f7r75jckssw";
+ };
+ "7983882382ee0785a3619bfda754358f8d6cd5c9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/7983882382ee0785a3619bfda754358f8d6cd5c9";
+ sha256 = "0z3jwzxdmsdwx623fbhzp5jif0yv8v31br3ipbv6d3d8kv0cw90w";
+ };
+ "7996e8351b085aa99ee962c9a0abbbe9b077e23c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2616691-982be94b99b442419e99de37630ca843/7996e8351b085aa99ee962c9a0abbbe9b077e23c";
+ sha256 = "1wsg1f8y22m01m1x8ryxzbyqzgrk0v8wssvpzcdg95ld4n46z6ps";
+ };
+ "79cbc648416e750ee538d57d6b608e3b7bd7717d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/79cbc648416e750ee538d57d6b608e3b7bd7717d";
+ sha256 = "1z5ibq34jhlyszxxllfn1ffmp8b0y7w7cqmxridnq78b1zirsj65";
+ };
+ "7a02f98f23ebb4382454f2813a70cbb932fb9e13" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/7a02f98f23ebb4382454f2813a70cbb932fb9e13";
+ sha256 = "0k8ayk7rh6kkxf8bk9hqy4wa7zh1m5gzbxfds6cc0zd4kr150sqg";
+ };
+ "7a7d7497e9f19ef7a2e4e35a37308b21cec9f982" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/7a7d7497e9f19ef7a2e4e35a37308b21cec9f982";
+ sha256 = "0ba05lnjy3ghs3jy519pcjyav5r75lpall461qns2bppzpm4a076";
+ };
+ "7a8446207acdf4eaf9676898ddacf9bdbf595de9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/7a8446207acdf4eaf9676898ddacf9bdbf595de9";
+ sha256 = "1lndbrl5sp0gj7fasrzsc2yz4vmcr8q29yvp8cva2b9691q8gj4i";
+ };
+ "7ac1ecd1bdbc99aa980807c5645a78ae48ea9577" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604998-3c15fbba3f5f4174942b1436c2db55e8/7ac1ecd1bdbc99aa980807c5645a78ae48ea9577";
+ sha256 = "04m1a8g9w4hyclfx1nc6prd02kicjdsnzg4spwk63rgv3lamjqd0";
+ };
+ "7ad6959d0c1c635355409e72473d108d90869dab" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/7ad6959d0c1c635355409e72473d108d90869dab";
+ sha256 = "19nr57sy463g1m2fbrdhpb8p5yd5dls64gw9zq2zb4jyjj7y8fia";
+ };
+ "7adad32ec30d0be94dcf1a19012e273b9971057e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/7adad32ec30d0be94dcf1a19012e273b9971057e";
+ sha256 = "13f8c98an8ycv27kglnc46jl6abgyvnq6dm8xpzzlh28fj88gbjk";
+ };
+ "7ae477712090513005fe5af06c6026b245d3c946" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/7ae477712090513005fe5af06c6026b245d3c946";
+ sha256 = "1w1ihg63ks2ba8x4m04yblbc7d8ycgbczsjz2lp28j5dy7b10i48";
+ };
+ "7b091ff0e3269cd3b11fb00a394f82b1604095c7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/7b091ff0e3269cd3b11fb00a394f82b1604095c7";
+ sha256 = "10cysl5b6iagx699w1kw5xfa51flr433g4wl55bjz9bdjw4ln51r";
+ };
+ "7b6219b2124e3663a1f4383de616fd63676c9693" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/7b6219b2124e3663a1f4383de616fd63676c9693";
+ sha256 = "0260b4p3ng5jdjb8z22cpp2376wahvh4gihjxcghlk3bal5k743c";
+ };
+ "7b7d2e469aa46e6b7a1550e355690591e4ac54fa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/7b7d2e469aa46e6b7a1550e355690591e4ac54fa";
+ sha256 = "1nyx2fjbcpdfrlbqb966x2zd1rbk7kx9x61knrfhhz7r5kb1z5bm";
+ };
+ "7b83af4328df75db5202d9e02c057d139ca1a9dc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/7b83af4328df75db5202d9e02c057d139ca1a9dc";
+ sha256 = "1igfygl9hk0q3ndjiji6bfgb4p77038bbk31kgrdy4gvky3qz21l";
+ };
+ "7ba89ad415dac138be18aeefe3423e3ebd56c0ee" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2448689-7792f1b8be254cc19b4c3379509684cc/7ba89ad415dac138be18aeefe3423e3ebd56c0ee";
+ sha256 = "10yn9d19andj61gj8x771yyrl2y7l0rgqg22mm53hkbdkfghml8h";
+ };
+ "7bc9f224a762158a310d9dd9c355f21bc20cf5fb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/7bc9f224a762158a310d9dd9c355f21bc20cf5fb";
+ sha256 = "1rxd81p9gd5rwqz9krv48bl5qzdqdb08xlc3ikn85mk847n6riyq";
+ };
+ "7bd4669f05c73f4cc2d165c712eeb0cca6711e7c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/7bd4669f05c73f4cc2d165c712eeb0cca6711e7c";
+ sha256 = "1ps1j2vywaxxcprmxbyzi3nzvks9gxviqjcvha4wv8p4igm7p861";
+ };
+ "7be14b1c31f9c742d61528f894b5a0faafdca608" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/7be14b1c31f9c742d61528f894b5a0faafdca608";
+ sha256 = "01snf2y4scl2vhbbmzs4hjayjp7hkydr7a2kbjgwc1kb41vcvvmg";
+ };
+ "7c8c84dac9bcec95152cac9aa9acac67f7702d08" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2639799-4ac82b5356a9467b8556f714f8dd9e00/7c8c84dac9bcec95152cac9aa9acac67f7702d08";
+ sha256 = "0w0ry83bxhw07l0y2zw3s1szx6gbhh2zbvwnjnd3qhjdic8abvzy";
+ };
+ "7c963542515f21d8db5b961bee100b6412d597d1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2377358-53c9e09a80d741708f589736e8974c22/7c963542515f21d8db5b961bee100b6412d597d1";
+ sha256 = "0y6186f5l3glsnnqv23npj6b1m23jxy18j6mg30g38g4lr2vk0ad";
+ };
+ "7cc355b9c369e318b838b18f749c24e2afd259c4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/7cc355b9c369e318b838b18f749c24e2afd259c4";
+ sha256 = "1jiz1n0wy6mqnv2m7v8mksrh3v6vwliqc8v6jjv7rxz1x4zclinz";
+ };
+ "7d8e31de63a57ce9a9e79c5263a63d5d46615baa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2706207-4f57365c766141c988cbd0106cf38f5c/7d8e31de63a57ce9a9e79c5263a63d5d46615baa";
+ sha256 = "1iz5vbwxajss32yvjwdss1hfczp3viz8nfl9xsk35bh5q5az0mfx";
+ };
+ "7d9e9a2f89c7bbc7404f79811bf83f4076b5bc32" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/7d9e9a2f89c7bbc7404f79811bf83f4076b5bc32";
+ sha256 = "1p37wspipadj5qicv6bs3rg3vqiqx49jkd6q3pgkb40bp0gs70ld";
+ };
+ "7db350110118d3076728f890e80db47042b1c9c4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/7db350110118d3076728f890e80db47042b1c9c4";
+ sha256 = "1x5j73m7lvz6dacd7cl1g6x0206pmh394l650aidzmmywnmpni5y";
+ };
+ "7db51b6372a7e6ccd911890e40586056b5c3bf70" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/7db51b6372a7e6ccd911890e40586056b5c3bf70";
+ sha256 = "003dg3cglf6dbljyfdamahznka718qcpsfbkvsk1kbysa6nz0kcd";
+ };
+ "7dc9a4ae40e2c039f47bfa781f706c6ba93f5e77" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/7dc9a4ae40e2c039f47bfa781f706c6ba93f5e77";
+ sha256 = "11bjnjh99mdh9fqcrnddnhgjr1znlhi11rbqajc1wjwk4zrs7h51";
+ };
+ "7ddc7ee608268e6d717f879cf6b6b7305f636cd2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/7ddc7ee608268e6d717f879cf6b6b7305f636cd2";
+ sha256 = "16cz1bvq3za22myf04p2al6im72x6al6a2y5sv5mgz7nvnhi0q4d";
+ };
+ "7de52ed6339fe756210b171c838332e276370e70" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2619995-d5e097f793bd479d8592679759fb98be/7de52ed6339fe756210b171c838332e276370e70";
+ sha256 = "076p1hj2bjysj1yk45ywrahrz9d9k8q0cvw52g0141985g9av8fs";
+ };
+ "7df9510763997f0e8873568712dd0de573058bf3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/7df9510763997f0e8873568712dd0de573058bf3";
+ sha256 = "0iy45rddw5cq5w9qm6vd6lxjnf2b4hm4abnna0ay7qnmdkcxy0zp";
+ };
+ "7e1d5652590c12db0c440eac59f69a777425f9bf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/7e1d5652590c12db0c440eac59f69a777425f9bf";
+ sha256 = "0j3f2saflmsylyi4i2w4z56kwzpdvimi9na49m3nfd16d5m50fnz";
+ };
+ "7e6ab4f547b9d8bf5f8a35a74d335d500588d8d9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2431986-5a8dd079cf514ebd8b20693fadfa5a4e/7e6ab4f547b9d8bf5f8a35a74d335d500588d8d9";
+ sha256 = "0m45dhadisgl1n32vbj71vhj1avn9mcl3gx7dsrgd5pyj2cm0v2v";
+ };
+ "7e741bb7378733b67fd4bf594a5798fdbbf4c06b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/7e741bb7378733b67fd4bf594a5798fdbbf4c06b";
+ sha256 = "0090i1z4ggh0rjka4lk2nyh8vz6w5kbxrf5y8sb4lyhbggshypz4";
+ };
+ "7e74577c3774e9eb2328f96f667ae7df976b62e7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/7e74577c3774e9eb2328f96f667ae7df976b62e7";
+ sha256 = "03p73gsai1gzazyhi0s409d88b0vlnvap2dy5qas5xazhsj3s32v";
+ };
+ "7e929e26670125eb017b7f33f7906adcbf8cdbe9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/7e929e26670125eb017b7f33f7906adcbf8cdbe9";
+ sha256 = "04dx7sqs1s3h8msjfah395hjx4a2x51k0innh4np11zr0chw4rf0";
+ };
+ "7eab47f1da799465d08b68e26c7ae336a7b07a47" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/7eab47f1da799465d08b68e26c7ae336a7b07a47";
+ sha256 = "1nkgnvif8ysz26rwhxmr3kfk5xajr7z5nbbx4givpv16fmr67hp1";
+ };
+ "7f0b7231a2a6fd1df206769a4acb8cb861b09f02" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/7f0b7231a2a6fd1df206769a4acb8cb861b09f02";
+ sha256 = "0fbsqakyam8jacxw9kmifddmgilr1rlvcxp0dskvdlb31pfzzlx7";
+ };
+ "7f5b42e091a41c16eb4bfdfb2de3a36670854201" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/7f5b42e091a41c16eb4bfdfb2de3a36670854201";
+ sha256 = "1qbwixy33i07qcicgc2xra46nhb9jklal25pw0wrc0r7migxv9f9";
+ };
+ "7f8b724b75c6f29c33f33a1f310cb495e079aaa1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/7f8b724b75c6f29c33f33a1f310cb495e079aaa1";
+ sha256 = "0clv70849r47m9y7l5515xn9z2qn4vazkkpfpwdrgmbh8wjb0xnl";
+ };
+ "7fe64241b07105e31272f224ac763156f8b8296c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/7fe64241b07105e31272f224ac763156f8b8296c";
+ sha256 = "1h4b430rjv86bv4vcrj6hrza71b5hrrivllxn7an78yi7rigc761";
+ };
+ "801295549915c66473e6cd436dc1623ad50a6868" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/801295549915c66473e6cd436dc1623ad50a6868";
+ sha256 = "0d889wz1r7l3801gdcmdchnij3z3ch8adw0rn5rc613r3nz613hh";
+ };
+ "806cb366cb892bd749bb1e697026060f9943b794" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/806cb366cb892bd749bb1e697026060f9943b794";
+ sha256 = "0k470mdbdk4r7ryrm7b2m2mnmiwg9bqn6xrm9f426vj6409sh3bp";
+ };
+ "8083297580223f34923e3ed275ba2082cb6ff1b6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2639799-4ac82b5356a9467b8556f714f8dd9e00/8083297580223f34923e3ed275ba2082cb6ff1b6";
+ sha256 = "0rl4vw9nnarpbg9in4kj08yjran73yk821q03kggxjs9kd3m6p9a";
+ };
+ "80cd8c5c566432905a991761c25be7e43613ea68" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/80cd8c5c566432905a991761c25be7e43613ea68";
+ sha256 = "08d0cchndgs7z1m1iw78ri9b740z06daclbb1krnd9jbjbr72540";
+ };
+ "80cf2aada6b342c76be1c6617a893008f7a2e992" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/80cf2aada6b342c76be1c6617a893008f7a2e992";
+ sha256 = "1is1wl3m8l1gnfnhadnig3h4p3lg2dbrhx0j18zl01s5y5l5dz72";
+ };
+ "80fbbdd5d2b95966d99e270b260593880769871c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/80fbbdd5d2b95966d99e270b260593880769871c";
+ sha256 = "1dcag3ris9wpm0vfk296902arm6xph496gi13xr1lv2ic0ay4ajh";
+ };
+ "8113584b3d880586f19985a5103712b5251a347d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/8113584b3d880586f19985a5103712b5251a347d";
+ sha256 = "0qgsp5kjlbzmp2v979wnc30isn10mv8w42riynpkia2waqq1yypf";
+ };
+ "81306b38538d7e69e278eb4d4a1acb25c2d44dfc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2505717-ca6614fe3fb64e47b28005ce3736302b/81306b38538d7e69e278eb4d4a1acb25c2d44dfc";
+ sha256 = "1b3hfip5h2ra2cj3c80v87fyn5g52kfl8hi7l9ynx6rbh45jd7cp";
+ };
+ "81594c92fcec0b95d7d0b47ad36aef8d2605c8b8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2466157-4ecb0085873048178dd6d2b8872eea79/81594c92fcec0b95d7d0b47ad36aef8d2605c8b8";
+ sha256 = "0cj2l82yi6yp8x2rsv5ga7cl5jrmnl7wv68608ymrdimnrg1l19j";
+ };
+ "815c7f4ed8653c23f02829438b553e4e310c1185" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/815c7f4ed8653c23f02829438b553e4e310c1185";
+ sha256 = "1bd8y1165dgw5naxwzh92plkx24v468fz8i0afaxk8cpqvjcn4b4";
+ };
+ "815ceaba7a67e678c4a7187990c7367805ed6d7c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2616691-982be94b99b442419e99de37630ca843/815ceaba7a67e678c4a7187990c7367805ed6d7c";
+ sha256 = "0zrlxcqp7arscfbjsffganmr8ykjy9kavkq6r0sjv33nf2wahcxw";
+ };
+ "81bce187e69fb02baaecaa20027bd477eb1f990b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/81bce187e69fb02baaecaa20027bd477eb1f990b";
+ sha256 = "1pmpm2dppzr71qvrfb8h5837mxgl654hiihymh2aw12bh1hl84dk";
+ };
+ "820a14581d58bc24e04e70e2d050e8568367b29f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/820a14581d58bc24e04e70e2d050e8568367b29f";
+ sha256 = "0h5kl259s20bv2y8k0pklvl5lpv4qc2y742nfyph04d8gh44i11r";
+ };
+ "823786b849304f4f046e804e4c7a9578b0e7dc4d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/823786b849304f4f046e804e4c7a9578b0e7dc4d";
+ sha256 = "1nxcnkv4p6m57rwr4wj4pz19z579sf9mqay6x64ddbnlc0d8ijfv";
+ };
+ "82752934d29486bef3008fe2e7e9953dacd3a238" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/82752934d29486bef3008fe2e7e9953dacd3a238";
+ sha256 = "0i7l4yw0qrp29ax36lp3sgyqbqshv5v0y2y4jp9g8b996rr42ypp";
+ };
+ "82896a288bed5637b5e537aff3c81d9a146cad8b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/82896a288bed5637b5e537aff3c81d9a146cad8b";
+ sha256 = "0g2nh96n0k2mv4fdaw6sqlav9diclhmljsixvfbp0550p44i3dhf";
+ };
+ "82921dd1135940696b085da4d09cdd25eb6b740d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/82921dd1135940696b085da4d09cdd25eb6b740d";
+ sha256 = "0i7yiz8d1qqiy7i6yy389b44v29i3zl479jarss0x77m7nzlpi7v";
+ };
+ "82b74cc467fe5e422dffc6ccdaa2746b68a52fde" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/82b74cc467fe5e422dffc6ccdaa2746b68a52fde";
+ sha256 = "057npy7g6dvcqkj4yw89cpci8cizg636gah9qq82h00684215jsj";
+ };
+ "82db6fcd53c153656a49118fc20771a50c406e2c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/82db6fcd53c153656a49118fc20771a50c406e2c";
+ sha256 = "0wmb1vn704srn9w5a61bs7mb3rp3azgv5bh6rl4hi7wa9wffwmbi";
+ };
+ "8305a66fae9404fe58331fbef287d0215d05f2b3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/8305a66fae9404fe58331fbef287d0215d05f2b3";
+ sha256 = "196zwpsd8fz1s6gkd35psacb4v6bik4zjgbaqy6ff2118bg3l19y";
+ };
+ "83080f6144d571a9ef0996315476290d9c3fff68" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/83080f6144d571a9ef0996315476290d9c3fff68";
+ sha256 = "0rmk1xzs86dvr9k971mb3d5d9q0nbyxr6lh753pf5bqkjsrwirp8";
+ };
+ "83095c9481a4bebd25dad78e6ae747bd3674e086" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/83095c9481a4bebd25dad78e6ae747bd3674e086";
+ sha256 = "1r2p3xp0rv19i9dyrf0chc5n8f736d90w5paq90fdxvfzzzx562f";
+ };
+ "8309626bf9429a32adfd8e1526f7dcbfb250ca49" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2640065-e0e714c2e4584d65837eabf6f55a41ba/8309626bf9429a32adfd8e1526f7dcbfb250ca49";
+ sha256 = "02n8g65lp6zbqprxswz598076syxav2vy350yq2gvq6s2p1ad12y";
+ };
+ "831c19b0009bccd44d4c2837f3c8ba6e08753be0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2579917-73d6be760fd9486fbc9abe582732eb6e/831c19b0009bccd44d4c2837f3c8ba6e08753be0";
+ sha256 = "1b0gsmrzb0bh8mrjfmmxlp55867x5fhqm18wacqvzx2g62zmm0f3";
+ };
+ "8336cdf6f693aca7ab55371790ccf0bd5043c224" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/8336cdf6f693aca7ab55371790ccf0bd5043c224";
+ sha256 = "0bqsgbzhsd8dfjlfafs1yx833gwa8pm9jhgq72ymnk83kijhj01x";
+ };
+ "835db4359138adfe88490eae6e8d8c90b322dba7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/835db4359138adfe88490eae6e8d8c90b322dba7";
+ sha256 = "1wbs8pnhyyx84bb60ck5l18fljc37fma5131ijzmjqms84k34rqf";
+ };
+ "836ee88c57cc1b5617f36a2b9fb19db420285b69" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/836ee88c57cc1b5617f36a2b9fb19db420285b69";
+ sha256 = "1yiypr57ik8wpq2w7x5yqib411j2qphk6mnpgpraqydfc22qypca";
+ };
+ "83960dda908738b13095ce2b7d9b31fde2baf36a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/83960dda908738b13095ce2b7d9b31fde2baf36a";
+ sha256 = "0dld18rdn6yjmqzpy3fg36ih3dzr63jma237skjb2nz2d554nkvp";
+ };
+ "83b8a24a4c385e1b384d645d948485842fc3cc76" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2426077-b850b68463b841e5964d120c64b8bf13/83b8a24a4c385e1b384d645d948485842fc3cc76";
+ sha256 = "1z2a60b2h039a99ipx5gs299s5dbrmy23dgwpw4nrqksh0szzrhx";
+ };
+ "83c26e75614987b0816315db03de7aca670aae61" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/83c26e75614987b0816315db03de7aca670aae61";
+ sha256 = "0vsvf3yhc3gv4vcif0qlsakzmxdrziqjv575xpzbx421pk2sg809";
+ };
+ "83cf82ec1c25f57a747c78a0c0ee954463d3aaf8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/83cf82ec1c25f57a747c78a0c0ee954463d3aaf8";
+ sha256 = "180f440v26v4bmj6hbm162jj06vw9sd4kyvarnrazyiq4vmbx3wb";
+ };
+ "83d99abd11bcb8782d32661775471266e6254ae4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2638350-39632eb9e5f94ba4ab8e97fa2d5a3251/83d99abd11bcb8782d32661775471266e6254ae4";
+ sha256 = "0h49cfl1ybxvxgg9p5jq0nb93rqjlqbjabhsjkdzhb4pv9gm1fcf";
+ };
+ "83da0ef16746ffdc1151ecbda04a0b161e3f119e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/83da0ef16746ffdc1151ecbda04a0b161e3f119e";
+ sha256 = "0d4bximz6dkr5q5bbyzlnl2py330qij4i0w5pvgc76asyxl11s3n";
+ };
+ "83dc459b2d9c7905eb6f80c6ffd7c0c912a4b007" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/83dc459b2d9c7905eb6f80c6ffd7c0c912a4b007";
+ sha256 = "1xshwv0v6bzkn2px64jy5kzbwsh9mqmc9salvqdhw7c594gi1lki";
+ };
+ "83e36792413d3e3b767aae667cc67fd3b02ee133" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/83e36792413d3e3b767aae667cc67fd3b02ee133";
+ sha256 = "1vpvk4r3bxrb54ibpjffrj3wg37zp44xf8mz9fk3cn4gz8v18g1n";
+ };
+ "83eae7ee8ccb30a23878582ea6466cd8487f17f3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/83eae7ee8ccb30a23878582ea6466cd8487f17f3";
+ sha256 = "1s011h62ql0w95lkwwa0pwk2x4d086apijgw0zgmh7cmlzknppvk";
+ };
+ "83fd339d2e91415631d3bbe960361fef5a8a1d1b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738476-1eae05647f894f068d67ed64f86505f8/83fd339d2e91415631d3bbe960361fef5a8a1d1b";
+ sha256 = "06zcfs55vhpy9jh8330b1zrmsmf0j2f8w92kpxvgd8zi6xz5y9bs";
+ };
+ "841906d093cebbe152a1ae20fbab8decbd282e19" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/841906d093cebbe152a1ae20fbab8decbd282e19";
+ sha256 = "1zjl5jvq80cgr8lb03k687slrq9l336dryn2dwvwsrfc32rnpynl";
+ };
+ "841af4efd38ead50b821af773faa68345269e26f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/841af4efd38ead50b821af773faa68345269e26f";
+ sha256 = "0zrv8difxrfkkhhzni7qc91s1k30dwp6462c99iaxds8ly117p89";
+ };
+ "8460d3dfed9655b4e8ce53fc3cb879c8905b05f4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/8460d3dfed9655b4e8ce53fc3cb879c8905b05f4";
+ sha256 = "07cgvrc4yhakjs4p2sbkx5c3mch26krvvdx6ag0ijm85mx0gdl8l";
+ };
+ "8463cbaaa73774638635ddfac40864bed92f3c29" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/8463cbaaa73774638635ddfac40864bed92f3c29";
+ sha256 = "1si653ab54yh0fxfxh1wfwfzdq3v8wsxq2vzppl2l2wj96zc8cdr";
+ };
+ "848145830d667120c6b744edf11f9f6c7e2f8b7a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/848145830d667120c6b744edf11f9f6c7e2f8b7a";
+ sha256 = "0vvbpaksh7qdgiwcahdm9h9skp51qxiipzg3gdadam8v10a1g1xx";
+ };
+ "84a55e9bd6ceea8c4b1ef30457675290b8de8b27" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/84a55e9bd6ceea8c4b1ef30457675290b8de8b27";
+ sha256 = "16zjckcf8851kf9cnzij7mz6iwcvld7g7gxrs750gdp01i5wjpbn";
+ };
+ "84b6f854fbee939820a32e6dc3d2b219b84bd6a1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/84b6f854fbee939820a32e6dc3d2b219b84bd6a1";
+ sha256 = "1xd3hcs0nshn7c21kr1jhaskrslb6z91rp5rrlsq3pzclx740ssm";
+ };
+ "85317d647433d1e73e61ca6fe79b44f9b3abca42" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/85317d647433d1e73e61ca6fe79b44f9b3abca42";
+ sha256 = "0ix9vagi91lpqgn224qfxb4h1wvjc6jf3yz5zx4asv6c1bdx7x8l";
+ };
+ "85393f1f0730c3ae240238686b47d7643899d34d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/85393f1f0730c3ae240238686b47d7643899d34d";
+ sha256 = "0yy91726kxdpifa3pfhf987m1yya025q6ybh8c3650i0h9z2hzsw";
+ };
+ "853b10bea00eac17238cb14c6b39474e5d2d1518" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/853b10bea00eac17238cb14c6b39474e5d2d1518";
+ sha256 = "0lhld9bb134mphx4g83abrxf9syz5dx2hmjm701dnx7dsayfl5i9";
+ };
+ "858f8eae96cc6e3a7d1fc624e44ef972c47011b1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/858f8eae96cc6e3a7d1fc624e44ef972c47011b1";
+ sha256 = "0j9h3ysp390psxrc3g71029qsfy21j9jlyqqxgdsns465q0fb031";
+ };
+ "85b191ae1844ad6da93fa57876c8850de342b4ca" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/85b191ae1844ad6da93fa57876c8850de342b4ca";
+ sha256 = "0v5i8fznarbq8zdgi9kvg8hl8kb2293vfj6504a3km1my7frww96";
+ };
+ "85ba3d3276f5f01cc86df8c39d7cd730ed3b9a4d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/85ba3d3276f5f01cc86df8c39d7cd730ed3b9a4d";
+ sha256 = "1i53nv4v3wyy8vpgaglj865d8krmfd2yc8my9wq2yyyyiq9zvr3y";
+ };
+ "85ead6085f10e657e1a91326f3704d60b31164b3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/85ead6085f10e657e1a91326f3704d60b31164b3";
+ sha256 = "1xqzxrys82qxihz27s1p811gqhhswqjalzgdfafk490diah527ss";
+ };
+ "85f7ee1e6e05e198cbb99f56c5a3a9d81b41276c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605823-fed77bb1e455453286ca4bfc444c86ac/85f7ee1e6e05e198cbb99f56c5a3a9d81b41276c";
+ sha256 = "03qfjg299d6dx0xzgm822js1mwqs8n9v8hvw9mjc883y77piasgb";
+ };
+ "864bfa01d63681c131168385b66aa9d3e6b7e23b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/864bfa01d63681c131168385b66aa9d3e6b7e23b";
+ sha256 = "0lfc8a5f5skbdx263jh5m55fqnslva2pkx3yvifnzsgf396872bk";
+ };
+ "86a3ef300ab5182d7d6f3c7e1dec1ab017621176" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/86a3ef300ab5182d7d6f3c7e1dec1ab017621176";
+ sha256 = "1b8a7pm5bxf6gcrrx8d4ld19qgck19gd2nhp01dyjm7vqc8cl201";
+ };
+ "86ad290cb6e4e954f3e8ad5203151d7614279554" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2515854-a6b06d306d9743a78268eae33a3084ae/86ad290cb6e4e954f3e8ad5203151d7614279554";
+ sha256 = "1spwcj4yb5hc94m0f2hx13yfjrzsvkhcvgbmlj10ak9bvpkyx96m";
+ };
+ "86c299a2f4f573039b2558718ba45d95ff08ade1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/86c299a2f4f573039b2558718ba45d95ff08ade1";
+ sha256 = "18qmy1kl7x4jvyj0d9rsyiaq9gszjpx2v0983vbgdqszbgics4ax";
+ };
+ "86cf1c73f3f607e472fa7ae7be4709c191878044" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605596-b0ea63cedf984da9bdd8cabc290cfcc0/86cf1c73f3f607e472fa7ae7be4709c191878044";
+ sha256 = "0avis11c8p42c28k8pdvfns3m397mraj21kk2bnbaw9hmv5difzv";
+ };
+ "86fca9c30e8dbd28a791714c1385aea7dc583091" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/86fca9c30e8dbd28a791714c1385aea7dc583091";
+ sha256 = "1a91dlqcfrqck0q5285cljzdr9zi14g5dgbzy9772gabc49c01fq";
+ };
+ "8741e3f2519f1221c2f8bdb966cfa4504f3ba5a7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/8741e3f2519f1221c2f8bdb966cfa4504f3ba5a7";
+ sha256 = "028fhjrjcqnrjqx9i0v17mib24l20pd1bcpl8sc1bipa8yc0lk81";
+ };
+ "87758c549dbc2d3ff96e0ee0b82d6d99f20c0ab1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/87758c549dbc2d3ff96e0ee0b82d6d99f20c0ab1";
+ sha256 = "1jl52dabxi8rqhfadkwwrq68yiqxfvc2n82f9qvmc6viydjdrmpz";
+ };
+ "87925181e3a8b737757401a6114a8acf82625a49" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/87925181e3a8b737757401a6114a8acf82625a49";
+ sha256 = "1xkykqs3fzvkwf7hm0qxrbhjx1cibyns81cm4lcpad2b4f4a29nd";
+ };
+ "879da85ee7839263b362a6d69f41f3d4477d2263" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/879da85ee7839263b362a6d69f41f3d4477d2263";
+ sha256 = "1d89w13vkl8wjp0x22fsnz9yf7ln4jiadb3mfxfzykix884jr79w";
+ };
+ "8817e4ce5e9049b3ef1374d0f56fa509fa491f73" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/8817e4ce5e9049b3ef1374d0f56fa509fa491f73";
+ sha256 = "1ip08vk00921qgz5q70v60zsykyapjjxg7hghn2lbw54ylfy755r";
+ };
+ "88192934143593f3b9bdf82185f4ac7a7373da7b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/88192934143593f3b9bdf82185f4ac7a7373da7b";
+ sha256 = "0p4y1fi48k2jh288d2axriffynn4w824ngh0vfcd1wlrf988gcvp";
+ };
+ "883890e30ce2c617da8433831db3b480780ce910" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/883890e30ce2c617da8433831db3b480780ce910";
+ sha256 = "04knac1hybywc9rmd7cq11scg8hc3qn4yszf7hbak6z807j0abd0";
+ };
+ "885b477d70802077c49ab7c32a784bacd55ad24b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2467022-c410c14385ba462bb86b4995040cdcb9/885b477d70802077c49ab7c32a784bacd55ad24b";
+ sha256 = "0acf1z7q9wyvshacv9mfgc55kkl1fa4c7a3gv94jmk0jccmf6lkd";
+ };
+ "888feb5c0fbff7928f650be69fab3ac123ebaa26" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/888feb5c0fbff7928f650be69fab3ac123ebaa26";
+ sha256 = "1rj3434znf64z0cgi0dwx3pz5dhziqgm7gpcrx5ag2chkzixl7b0";
+ };
+ "88ea146643258d378d159b9f928c783774ea9c53" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/88ea146643258d378d159b9f928c783774ea9c53";
+ sha256 = "1wh8zfcswfp5ms94lgvl8yn0qjkbrznh95wln2hi9civ7594j3zs";
+ };
+ "88fb7a15bfd879a0c14ff7a16e321cc2b8896c38" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/88fb7a15bfd879a0c14ff7a16e321cc2b8896c38";
+ sha256 = "107xs4qhzjn2305hd84cbp2xnymba6sr8axd5snwwa9dzl39yaaz";
+ };
+ "8901801fb587b12a9aa6263540cdd95b46710f9c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/8901801fb587b12a9aa6263540cdd95b46710f9c";
+ sha256 = "1msg49v9hyvfy5ms00lyq9x322qwvw6akzpz1v6kylrakri8nwvr";
+ };
+ "8906ef4c42cb5d492b620e5d8dc2118dd976ea12" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/8906ef4c42cb5d492b620e5d8dc2118dd976ea12";
+ sha256 = "1xibvx905vvfvs0cdyjqbjy7wb3pvimzazd9ii5rwyvci6gj1vb8";
+ };
+ "89080b8cfede13b245eaadefec0b89e901ff8646" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/89080b8cfede13b245eaadefec0b89e901ff8646";
+ sha256 = "1103qvaxr40xq97p20x8zfv32hkz3nnv53lc8624qkjyhnqwni8c";
+ };
+ "890adf51623c1e158f5c9f34db7f7f686e7005b7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/890adf51623c1e158f5c9f34db7f7f686e7005b7";
+ sha256 = "00cb7r13zpgiw9x0ahiimx915ynikicv4ixlxgxrfyfvqvkb2w7b";
+ };
+ "890f859d20731989f0ce0e2ccc89da28cf0f8dbe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/890f859d20731989f0ce0e2ccc89da28cf0f8dbe";
+ sha256 = "1sfsps751hwql9akgqvsxvbfp0hzzlgcxg4pf9wzv0fmsm5zk910";
+ };
+ "89550f66a2a48a9f1b9089703e9b33eb14a23ae5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/89550f66a2a48a9f1b9089703e9b33eb14a23ae5";
+ sha256 = "16bbs2r4i3bl6i0qp7snlifjh9s3gy33pdfjjpvnv0357wzama9g";
+ };
+ "89a680846da64558e5147c08cdce03270f11e7a4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/89a680846da64558e5147c08cdce03270f11e7a4";
+ sha256 = "119sjc3c9nqc1g8jij70kaa2rj2q4q6nd8dm4m4xmk32l9vf98rg";
+ };
+ "89be40342b7a93b0b11a6d495aa56ff3b8aebdbe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/89be40342b7a93b0b11a6d495aa56ff3b8aebdbe";
+ sha256 = "0lbq80772si922f6s3qahsx89hdyzvd8351j2pqr019pnasgpic6";
+ };
+ "89cf6e0f862a93ef9e543780d100517db3f3327b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605642-f320d1a5ef22435181fcba597b91c63e/89cf6e0f862a93ef9e543780d100517db3f3327b";
+ sha256 = "0b5p8gphgwx322ddyizq83mlwx318m8ndw8b6d10pvh6kfzf5ry8";
+ };
+ "89d28cf4154268be0856af7d9417e5f4018f65b9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/89d28cf4154268be0856af7d9417e5f4018f65b9";
+ sha256 = "1mksxkj5hx9wbnswb3dal0qqijlnrcrxprc7ashz0cgs8svhvkj2";
+ };
+ "89e79ac4565d509ccc57badb152f9d534469f4e6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/89e79ac4565d509ccc57badb152f9d534469f4e6";
+ sha256 = "1vinxn36cb93zpri4zk8jxhbjnb11drb13fw7dxvjbivqdzakahl";
+ };
+ "8a1ff4c3dc8b96b41c8fca1325ddf964f3768446" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/8a1ff4c3dc8b96b41c8fca1325ddf964f3768446";
+ sha256 = "06gan1mbhj26z6flw0p1mw2qijv0nc8hpxl5q9dvwdmv5j1s937z";
+ };
+ "8a251169614945698a2c1990c0898641d380b289" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/8a251169614945698a2c1990c0898641d380b289";
+ sha256 = "1bd15y5ka1pzmj0y0i19w5r4pvgx36py84sfq097gvsbffx3ik56";
+ };
+ "8a7c6b0f9cc883870556fb456f20715ed40367c5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/8a7c6b0f9cc883870556fb456f20715ed40367c5";
+ sha256 = "1gd8mxmr9874577fzyhl5cl6rrx0sl4g8c7j8is3jp97zcng853g";
+ };
+ "8a933dd63dadc44c26fb7afa83573b5ab52aaf33" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/8a933dd63dadc44c26fb7afa83573b5ab52aaf33";
+ sha256 = "19fjz78gjlp50xq490wfvkjzpay9rrf78jnv0x0gs6kpnyd56x35";
+ };
+ "8abd833e1a283680a6e19d7896cda23b4f559012" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/8abd833e1a283680a6e19d7896cda23b4f559012";
+ sha256 = "0xq3c1hcmlki59g6y36zpfq6pm6cryg88sy364rayihlzgbc2dra";
+ };
+ "8ad5dea631af368fec9f5f42b6f235997a8131e9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/8ad5dea631af368fec9f5f42b6f235997a8131e9";
+ sha256 = "1hwnldwf0g7k34wg19yvzfz6939qc9kw9758fq7dsi0737cxykqc";
+ };
+ "8ad8c126595c03e31b971166788c82bdc9cf0544" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/8ad8c126595c03e31b971166788c82bdc9cf0544";
+ sha256 = "17vvcdpba4mijzlpi97xx7d022knpdw918npwq40vcmswmn758vg";
+ };
+ "8ae41d0c7d8fe2a00251726554c48ce1dec9ca04" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/8ae41d0c7d8fe2a00251726554c48ce1dec9ca04";
+ sha256 = "04dmv62qlczyj67rrfjnm790ksbpfwdgzl05zgqgi9lyrrsq3m8c";
+ };
+ "8af47f724bed2b5bd921d98f1d04d577d07ad781" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/8af47f724bed2b5bd921d98f1d04d577d07ad781";
+ sha256 = "0jy4dvz4fdf50283w6mcycq1hd7rvc3nawv9zylvb0pgxs6bvlnm";
+ };
+ "8b025a64e2081e1caa1c37427ec0e6194ec0275a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2517611-d0c4506b0eb74bb5b22fcaa18bed9682/8b025a64e2081e1caa1c37427ec0e6194ec0275a";
+ sha256 = "1pm6inqkiqwjf1yjc38ncky6ibm22ha1pj9r84mpwxc1c7f9js6x";
+ };
+ "8b0519b8991a39be23e66177b1f881b62f967cb0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/8b0519b8991a39be23e66177b1f881b62f967cb0";
+ sha256 = "1x5zmgn9h2hxnjsrip75mvj8qs5q5mws8zb72v6rlw8iy7hjf8vh";
+ };
+ "8b3162447aae7621530652ee14ce8da1c287d6b0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/8b3162447aae7621530652ee14ce8da1c287d6b0";
+ sha256 = "0r2377k0a3jjn73x5fn1g4ppnjdywzkfxgdf801wk06zdkn41gpk";
+ };
+ "8b8340f444f8bcbe6806d7f4b2a6d3894354baf5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/8b8340f444f8bcbe6806d7f4b2a6d3894354baf5";
+ sha256 = "0yqm3ib77952dsydjvw5dmw7fw94iny0zj1y4kkl8wpbcj414kk0";
+ };
+ "8bb26a65444fea08370321879198f39f86ba188c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/8bb26a65444fea08370321879198f39f86ba188c";
+ sha256 = "09912hlzrsgd7pickg9kgrc4rag393h1xkxybm5vnr3iyhd20wk7";
+ };
+ "8bcf71af2f119d1ff9d3b09fe4ddcb08fc1a7d95" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2700683-67efb93bd15f484599a98be1ae830afc/8bcf71af2f119d1ff9d3b09fe4ddcb08fc1a7d95";
+ sha256 = "1zs71smgc45hh3sr3f22l98ch9k5f1z6hppx0dbs2lgg2s8bgkfn";
+ };
+ "8bdaed33beb2fa505dd0ba8f7d9ca94208ec44a9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2468936-39e1c39556f84e60be8d850c452aed67/8bdaed33beb2fa505dd0ba8f7d9ca94208ec44a9";
+ sha256 = "09x8k8apm7kly0kb04ladywwzyy90nzjvnd6hh476ir9mss1mjj0";
+ };
+ "8c062ee2e53c0fdeef88071aad2ed5ca1787cc1e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/8c062ee2e53c0fdeef88071aad2ed5ca1787cc1e";
+ sha256 = "1ymf1zl36xfsc0wmipsps3l90jx04qgz8ri7hmwpy4831hc7r594";
+ };
+ "8c220042a37dc4cc1b8b05afb13afadab972b12d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/8c220042a37dc4cc1b8b05afb13afadab972b12d";
+ sha256 = "1hjg7wwfb217dansimncjya4ll7lsxshi0yvnyi2f2f9bm7jijd9";
+ };
+ "8c9f2e92d67f683596da321c8af36ece1d8ac774" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/8c9f2e92d67f683596da321c8af36ece1d8ac774";
+ sha256 = "0hiq4c2w47msrn5fiqggb7gf6fn59rk708xxl92jid8wa4h6xipa";
+ };
+ "8ca8fc4f81c127e4c748fcb899af430506bd0b01" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/8ca8fc4f81c127e4c748fcb899af430506bd0b01";
+ sha256 = "0y551cnm9r4jm05iqiwi8ysglkny6c78mwxrmxssabknlh0v15vv";
+ };
+ "8cd8b767b771e6d10c8f1f0b54ab812881f22fcd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604000-fac6782aa4fd45888363b062a8353761/8cd8b767b771e6d10c8f1f0b54ab812881f22fcd";
+ sha256 = "1wp04cwi17h2y01is0wvv02nhcn8nyb1f8c28hcm7dqswyw738j5";
+ };
+ "8d5fa95a3df6eb36318fcf2a135f464a76257cc5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/8d5fa95a3df6eb36318fcf2a135f464a76257cc5";
+ sha256 = "0axx62bip7rfrm0gbvdszdx1ik4mhxqxvi4ybmlbfhf2c1b26grg";
+ };
+ "8d8a695159bf666e16ab7b3558bb1d5e4e3b4698" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/8d8a695159bf666e16ab7b3558bb1d5e4e3b4698";
+ sha256 = "07c4p0dsl575zxamvvwh12hin7qnhk9lcd4aivnbbmrlhlrb23cf";
+ };
+ "8da60707e5826860752528702f9a7256a5d2ef81" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/8da60707e5826860752528702f9a7256a5d2ef81";
+ sha256 = "1701n4r1713crfxkaa0n2id346j1mf5nfg93givnr3c2qqlqz5yq";
+ };
+ "8db9bb91759363ec605c3d44273194136ce7dc1f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/8db9bb91759363ec605c3d44273194136ce7dc1f";
+ sha256 = "06xajy55psab26x65cvxyji5bm4cxyh4qb1kcg9a9qpfjip7wfjg";
+ };
+ "8dbbbdecc05ee43425e31b4f4eafb33b90db30ac" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/8dbbbdecc05ee43425e31b4f4eafb33b90db30ac";
+ sha256 = "1zch7l01gxhwwkm4i9a9dwa577rrp37vr6nkn1mkhakrjfirfams";
+ };
+ "8dd3bfc182e5277d4408943dba3520659e2928f4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/8dd3bfc182e5277d4408943dba3520659e2928f4";
+ sha256 = "02f3h1lsn8vkrixyb1lx1cbwffvby3i74ym71a05higvhw61mxaj";
+ };
+ "8ddadc13864ca20375d4b0f4ea443c123c3df3b7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/8ddadc13864ca20375d4b0f4ea443c123c3df3b7";
+ sha256 = "10vbj0h5k6s3ka3dqzfwz796cpx1ic5dxbaipcwyc45k2vj6ni4x";
+ };
+ "8e039420fc01a77f694997d93310f9ae83f1b6cb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/8e039420fc01a77f694997d93310f9ae83f1b6cb";
+ sha256 = "0jpxci1p47inn5qyp0jjh69ja0s7m5k07jhqvkpyvhy7pgdk0m56";
+ };
+ "8ec6e7ee9b649b9774e5429add4c5058fe492fd1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2791326-4a233957ffc54c94b38c9ceaf84d58de/8ec6e7ee9b649b9774e5429add4c5058fe492fd1";
+ sha256 = "1b29i8b6fh4siq5h8s48d97s0az2761l77z8vzykb4h0psxpzmy1";
+ };
+ "8f4c0d2091f953f5c7ea8154eaa6e6d04add923a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/8f4c0d2091f953f5c7ea8154eaa6e6d04add923a";
+ sha256 = "0sc09156h0vjc6jc67q1sp0khpzzkkvy9c8bh62rg7rbzlldlgiv";
+ };
+ "8f92c27e6fe54071ccf92649c25ae44991ea42c8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/8f92c27e6fe54071ccf92649c25ae44991ea42c8";
+ sha256 = "1ndfkv2zcamf377pbg67f257c4rqxh7ri06r4x2xqc4a5q0s60zl";
+ };
+ "8fb54a6908a0bea0b6a901eb32dd120dd2360fe2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2611810-c0cf8ef9a734410da79e56e1df15e175/8fb54a6908a0bea0b6a901eb32dd120dd2360fe2";
+ sha256 = "07dgqsshhamlgi79884dllr4253yr29ni84dhnrcfn540vpxbs5k";
+ };
+ "8fbbdcccea26e1c7cbd56a84637ec3564aec691b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/8fbbdcccea26e1c7cbd56a84637ec3564aec691b";
+ sha256 = "1vnpb1d239wp1nyrvwiv57rr7qwr2rplws6zcxfnl3rxmmfhkman";
+ };
+ "8fc77c86e05ff31bec85d8974938b0b5aa12fd1a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/8fc77c86e05ff31bec85d8974938b0b5aa12fd1a";
+ sha256 = "1v92ggrafax000jrdc6yhysyr8mridvdcss8zjc8ib5bwism9sdm";
+ };
+ "8ff23362f6d2fe2b1e7f422a3f52c13797ef128e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/8ff23362f6d2fe2b1e7f422a3f52c13797ef128e";
+ sha256 = "0faigq1s7yjji1khqm2g5bi6fm6217lm7lk5gy61ddwxqz1jkf6k";
+ };
+ "901760156bc3f4720396fcb487ad396709e18d9b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/901760156bc3f4720396fcb487ad396709e18d9b";
+ sha256 = "0sgp780bfy2gri238s8fsnbh7vbdrg5mdxla39j15nllfr1ybxfj";
+ };
+ "904a3b18b20eee856202f89aa46a20df12388dc1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/904a3b18b20eee856202f89aa46a20df12388dc1";
+ sha256 = "0ncm73g11s6x5lp5pz5b4xm2kfn7254hp4nzdfxwd841l96b4b7s";
+ };
+ "90874ee4cf89c6b1658479cf16716dd6d9f3391f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/90874ee4cf89c6b1658479cf16716dd6d9f3391f";
+ sha256 = "0hjrsp0jq1qgm9v31kdh7l67z9w54415a9f73lznsb1zmw1phz22";
+ };
+ "90d2bac8a115eb18639fab5f7840138c63cf9b8d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/90d2bac8a115eb18639fab5f7840138c63cf9b8d";
+ sha256 = "0ifayjg539ki273zzxx7b5jpjzdy50pyvb8d2a3r84216anww3qn";
+ };
+ "91475080ede727f0185da20abde65457b43d5476" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/91475080ede727f0185da20abde65457b43d5476";
+ sha256 = "0z6ql3zfvpiay87g3h14pfv5dyjx6d4r7n7ks0pvx829yb2h0n4c";
+ };
+ "9148d7be7b0930b397ef995a2e8cfdc6c7e2617f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/9148d7be7b0930b397ef995a2e8cfdc6c7e2617f";
+ sha256 = "13cw8rzvf6rm9dvj1d7q86l5r3bs4q23z588yd6imlvpf2pp7f5m";
+ };
+ "914d43c1dd28877dfe0d8b3b2fe4dca1ea17a575" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/914d43c1dd28877dfe0d8b3b2fe4dca1ea17a575";
+ sha256 = "1m7y3m9b1vvvvdw05g6hcs2hv9jh0947l9gjhr5zdj9adqf3aa72";
+ };
+ "9157e95d94d3ff3b40e3e507ef12528e8574f8d7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9157e95d94d3ff3b40e3e507ef12528e8574f8d7";
+ sha256 = "0n825h58ygdqv93naavg0xm7p3ncxlyzp2c89dlfzzq4cs7mnvaz";
+ };
+ "91639ede60c084c481daea6546adf05ba88aeb17" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2618867-a941974a307a4d11a35487de88a65fbe/91639ede60c084c481daea6546adf05ba88aeb17";
+ sha256 = "0r2s4k616aj3y5q4cc6wmg1im4sd9qbi477kk4av2yxf1db078vg";
+ };
+ "919773af16fc549ebf79e9b9629c8d0c79d37927" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/919773af16fc549ebf79e9b9629c8d0c79d37927";
+ sha256 = "01xmmimdnzywvlnp3j9417iszkqmprjsb07gkh2rb6pqbabbjh3g";
+ };
+ "919cacfafb5826d92667b345276a3637499d8eac" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/919cacfafb5826d92667b345276a3637499d8eac";
+ sha256 = "00yyly9c0ggpl793mkzsa8dlbsh4drdagdhhv8vwdkldq666jizy";
+ };
+ "91eb46476dcb659fc2275fc18c2061796b561bed" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/91eb46476dcb659fc2275fc18c2061796b561bed";
+ sha256 = "020wajrnlvqk2c4pjpxf7562acryacxk1535fib0f6250wjhmh8r";
+ };
+ "91f1332208a164cfc7739215d515dc4574548eb4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/91f1332208a164cfc7739215d515dc4574548eb4";
+ sha256 = "1mxhnjf7vda1cxny35rw3ib4kp9i3h09a5lv0r70pazqj1ir23zi";
+ };
+ "91f5cdeaacc7b2be3fe926cfc1b9d3a054e143f2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/91f5cdeaacc7b2be3fe926cfc1b9d3a054e143f2";
+ sha256 = "0cvqrr7wvlgyvhh5bz61laigv9dy7ra65hdszi3sg467zy35b1dy";
+ };
+ "920bbd06b0082189854b0b43390a039f451bf843" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604998-3c15fbba3f5f4174942b1436c2db55e8/920bbd06b0082189854b0b43390a039f451bf843";
+ sha256 = "0r4wh2iswm4w1zgnjbmw8x4jpgd9zr2c1azy2nvgwg2rcja73adw";
+ };
+ "922b2bdba29589b9fa7f0b9dd3668e5703e9c88c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/922b2bdba29589b9fa7f0b9dd3668e5703e9c88c";
+ sha256 = "1af3n4b4h1yd92y4w660kslpz0nkvpsvinfs3p9l5yv1jfrz2lxi";
+ };
+ "9230b9bb873b7a7cfc1fd2410d1749427c7c3499" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/9230b9bb873b7a7cfc1fd2410d1749427c7c3499";
+ sha256 = "0c6c6rahp2x4n5vahs2csgx8gyzgqzajvzwx0dii1p44crb4cc2h";
+ };
+ "9241f4cc15ce04da3b203bb3ef60aa2a71cb19c4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/9241f4cc15ce04da3b203bb3ef60aa2a71cb19c4";
+ sha256 = "0v7xa1wzsd2rif4dikbm7dzzzw2k7c70vr6rp7l0wv3d978p9fr1";
+ };
+ "925f53a8ddf5e922520fc19cf6a17b00419817e7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/925f53a8ddf5e922520fc19cf6a17b00419817e7";
+ sha256 = "0p4l1r57w29bkir2k9y3pl50ycr5q3436ldrrm0dzzqb8ag5bkfd";
+ };
+ "926540c5a0b84439444ce2305aa3737763bb95a3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/926540c5a0b84439444ce2305aa3737763bb95a3";
+ sha256 = "1m1bsgri6xi5ijpyhpybrir760qrqy2hmwrsbifw0j5yxwxlvyrz";
+ };
+ "9285328e0b04faaf9fdc22bd27b76ef259020492" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9285328e0b04faaf9fdc22bd27b76ef259020492";
+ sha256 = "0c2jz4pjf5f62ga9nlac4m3q92n9wgccjcwbyvr2scangawjh7sq";
+ };
+ "92abcde8582abb2913e4531cf3ea720b0e8c7d33" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/92abcde8582abb2913e4531cf3ea720b0e8c7d33";
+ sha256 = "1h66p5sp1j2l1jm4d6pjg34ng9k0d1796mns38gkcily554v4v6n";
+ };
+ "93423a9a78f3eaad42d062f8d2ff25e901ff455d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/93423a9a78f3eaad42d062f8d2ff25e901ff455d";
+ sha256 = "1hc5hwd0pazkcscicn8dpyyy9dc0aysbz9z95fwjfqsz1l7hg9k2";
+ };
+ "935837a33fa46d5ef7713fd4a123c61845ce49e5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/935837a33fa46d5ef7713fd4a123c61845ce49e5";
+ sha256 = "01dchcyd4z8a6vhk2j071a5rw3hv529cz5fhjkasplfqvl1dri7y";
+ };
+ "937a8d559bb1eaa790bd343ce8439885289660ad" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/937a8d559bb1eaa790bd343ce8439885289660ad";
+ sha256 = "17050dmx7pmsvxv4agmphln7xcy5bq058pmi47pqwlsf2njqskgm";
+ };
+ "93992b5277a20ed987f224c8f23f713677e0e25a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2546088-6cf476c573f0461594db3f64f59ec9cc/93992b5277a20ed987f224c8f23f713677e0e25a";
+ sha256 = "0v60rm9bh086p2agj0hl924lhmzsdbk6akycra97vvjf8riaznmd";
+ };
+ "93d5d44b151da63343cd4f052e5efab5039f13f8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/93d5d44b151da63343cd4f052e5efab5039f13f8";
+ sha256 = "0zq57rg4pw8ly7vr8wjshq5zjp93n4zgzzjqkwgh1lz542w8jrli";
+ };
+ "9402187f503c2f391c471ecb84988e49b0cac918" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2603097-3140b87e2cb94286beb08198353da9a9/9402187f503c2f391c471ecb84988e49b0cac918";
+ sha256 = "0qvxgvjr3fk8v4i5fcsz8vlxzw07hdyy0q94psngzjpvp0f9943d";
+ };
+ "941fcfee8a4d9b5b95af5e64593a01405ed864b8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605823-fed77bb1e455453286ca4bfc444c86ac/941fcfee8a4d9b5b95af5e64593a01405ed864b8";
+ sha256 = "0ipyq7ycmysav0p4n285w49394nxrq4nqqpdmlmd6gcjppv2hsd2";
+ };
+ "9480aeff10931a3129abfc074e9d75dc46fb60b1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/9480aeff10931a3129abfc074e9d75dc46fb60b1";
+ sha256 = "1mjpiaf4jh4fh8bld18gh97bnwhflyqyqb8zmawngbd0f686jhr6";
+ };
+ "948831f2786e73219fac5ebfe8a92939c3ea637f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/948831f2786e73219fac5ebfe8a92939c3ea637f";
+ sha256 = "0z6gh9j67d0as8x8v62n07w5xj2gj6x6k2pgynx01jp6z6k9x4dz";
+ };
+ "94ab4be561c4e5ce07253ce94aa3794090a44428" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/94ab4be561c4e5ce07253ce94aa3794090a44428";
+ sha256 = "0j0nwdwk46yskmmgx3y84wcr50ak801zdfj4mxwlai3bvb04f38n";
+ };
+ "94b9d86dc4aef7c178c2f9b2cd5360412b13b2df" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/94b9d86dc4aef7c178c2f9b2cd5360412b13b2df";
+ sha256 = "0fmkvvqy0v4wsd58hqlgrcpvm4a4qsrasfy5fy5h5b7j8z5q3vcl";
+ };
+ "94cfed4a88c4801ef537b65413db4cc3326b0a89" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/94cfed4a88c4801ef537b65413db4cc3326b0a89";
+ sha256 = "0smaxw3d54i6yymcil00mkdc5mp5yw95p18gc65sx0ir0yycviyc";
+ };
+ "954237c72446f3cdf8886043123658ca943e6a89" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/954237c72446f3cdf8886043123658ca943e6a89";
+ sha256 = "11rrbx70dmjyd97sk964lzjbpcyjg07zjfjnvn25z6v9bv3a49xb";
+ };
+ "957337ec86f032a91c82dfc2f859843e3a1c1e88" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/957337ec86f032a91c82dfc2f859843e3a1c1e88";
+ sha256 = "0gz05g4nh8645h4zdvrhmkpw9m3jlddk8ggd2h203h4zx51l3aav";
+ };
+ "95b668ea9989cc5ca54f2f7db9aafc7ae8277fb8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/95b668ea9989cc5ca54f2f7db9aafc7ae8277fb8";
+ sha256 = "1rprhq2rjgd5s4r8jn5f5nz6w20yckr79sh9mwmsfkx7zxkwda1b";
+ };
+ "95e4d7dc9cb01e3491442f9370e98e0d6361f556" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/95e4d7dc9cb01e3491442f9370e98e0d6361f556";
+ sha256 = "0w86a2dcdm4r0yqdy1ibdrmgmnb122znhacx9cz7jm2bsjb81nh6";
+ };
+ "95f7b61131b0b7361bd6b788845382016a65618d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/95f7b61131b0b7361bd6b788845382016a65618d";
+ sha256 = "1li07rkzvnasm9qc4qza2y6vyw7xhx33wmjzqbc2gwmawxjpl6an";
+ };
+ "960e4509e3bf35c6ecf5e52ebd53c18379354b18" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2634249-f2b4469cf0774eac818e7cb4565f1224/960e4509e3bf35c6ecf5e52ebd53c18379354b18";
+ sha256 = "16y0ffz0kn1k723xmr4vmna8giqsl6pqgp83a7w1hp8slmg1z1xs";
+ };
+ "960f838a00eaece74604333768e1901f77dc91e7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2597177-394deee1ae174b2db1462326aa83252a/960f838a00eaece74604333768e1901f77dc91e7";
+ sha256 = "08v86w4b8jx5af5agv2cyhxwc3a3w9xzr69lfvdljms51991qmkv";
+ };
+ "963f0fd12da9d6cf7d35a71dce090f7d5271d802" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/963f0fd12da9d6cf7d35a71dce090f7d5271d802";
+ sha256 = "133mrcxjpqhrffjbhiviwn91h3x5csqpk1fhhzlmc0spyf9bnswa";
+ };
+ "96421d48a3164d2d4259c4c9500dfbf44d9b90fb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2483157-ef88c8fb9abd408b8fe496d060749077/96421d48a3164d2d4259c4c9500dfbf44d9b90fb";
+ sha256 = "0kvplc4pwnjv7j240d2bcggwibrws3afamx6wh32lap5pps67d81";
+ };
+ "9653a9d2aef2e0fff14e4e16ca9058b38f172dd0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/9653a9d2aef2e0fff14e4e16ca9058b38f172dd0";
+ sha256 = "0d2z11fpnvx15yncyf840n7ww4vaaypyn4r7cg2ddscg8llp7056";
+ };
+ "9690133f46e7a766b46b38365897102baf062020" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/9690133f46e7a766b46b38365897102baf062020";
+ sha256 = "1jim7i5ih76c4wjm06y75iqw9ldcmc5wr0gs5vichdhgdj1y0ay6";
+ };
+ "96a0e755dc47a57b85791e7d748fe25e7258173e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/96a0e755dc47a57b85791e7d748fe25e7258173e";
+ sha256 = "1ibam8hh271ci3fp18baiw3jsll89i1w1q8z87gmi7y5qdasar02";
+ };
+ "96e618ee3726b5d13ee509923aeff0bb6272498c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/96e618ee3726b5d13ee509923aeff0bb6272498c";
+ sha256 = "13xa397xfya40cypwl20j332bp0rcljyj66z8vwdc10vxwwrdqv1";
+ };
+ "96ec8bc282d262d4764767c1478400c10994bf5e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/96ec8bc282d262d4764767c1478400c10994bf5e";
+ sha256 = "00x67b5sd3230k6q08z8n0ad95ia3fxzk0mssz6lmbi0zqqsvvbl";
+ };
+ "973fb0c29b2e3a44d2d370a545ef1a38a81ed07f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/973fb0c29b2e3a44d2d370a545ef1a38a81ed07f";
+ sha256 = "1n7kvxc135za5a2lzmrp18kpyka2gc2dynr30fpn1m1lfa09985b";
+ };
+ "97772a52cd613920ec0a84f0c8b57d0c8e88b1b6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/97772a52cd613920ec0a84f0c8b57d0c8e88b1b6";
+ sha256 = "1l262n4qq78fbvgrd6qilmp70rx4x5ciw444nw6qdjvbxag2va6g";
+ };
+ "9788909a70709303adf419bf0340b73ab037600b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9788909a70709303adf419bf0340b73ab037600b";
+ sha256 = "1vw1a4nlwq6arcddbfiid9lmkfv8ylaakpggzb706hgr9jj1qi7h";
+ };
+ "980f3e90adc8557d71bfbef57bc146374612493f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/980f3e90adc8557d71bfbef57bc146374612493f";
+ sha256 = "1xvybmljiw3p3rwy91fi1dk7fmcpdys8b1c13yw4sij7ym0dqjkf";
+ };
+ "9851cf052473a71589aa7577f62e6b82f0298832" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/9851cf052473a71589aa7577f62e6b82f0298832";
+ sha256 = "0kd2bcr3n9l3qjxjij06gm0rgv5dhvrq3mdv6sqwmv3f28q1r8bq";
+ };
+ "985271d1e9b876cc6b98ce871d8efed7b2b3cbeb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/985271d1e9b876cc6b98ce871d8efed7b2b3cbeb";
+ sha256 = "1mh8jr05wk2wg1830bv1yq30ifxngjrb8nnilw2hwl1g6dmss3g9";
+ };
+ "985fcff275609870f5fa9ace4a4e31fcdef7eb1f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/985fcff275609870f5fa9ace4a4e31fcdef7eb1f";
+ sha256 = "03jw2kr34vxh4rpjq58rq00h0vv7mlbi3pc63aq6914yqwzvv36v";
+ };
+ "986472c357451eab93419161f5ccadfefcbdb41e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/986472c357451eab93419161f5ccadfefcbdb41e";
+ sha256 = "05arp7raj4ins0azci930klihg54zmj2b0ykhmnp91z6mdqw3nx0";
+ };
+ "98bce6b328014cb7a038cf71a5c84a03c88f3b63" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605596-b0ea63cedf984da9bdd8cabc290cfcc0/98bce6b328014cb7a038cf71a5c84a03c88f3b63";
+ sha256 = "1b50jfk9cz2x13378pbyd8lcg0m9jahhjwc1a9zfg68y6pf08rbm";
+ };
+ "98d4e369b78b0733da5369ef5d9a3d0821224bd8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/98d4e369b78b0733da5369ef5d9a3d0821224bd8";
+ sha256 = "1mdsmf24lwsbybjy687lsqhifg0d1za7vc6vaggba2x4gbb2rh2s";
+ };
+ "98dd7a062fbe1436797395825aec70ab45a9e01f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/98dd7a062fbe1436797395825aec70ab45a9e01f";
+ sha256 = "05xrlniqxkkw7c08r8m5ph88pmwsz1jbp0y437nrh4lz7z8xk6i8";
+ };
+ "98eaec4f30d9a8b65a6d9865fe0b1e5b7df1e740" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/98eaec4f30d9a8b65a6d9865fe0b1e5b7df1e740";
+ sha256 = "0kkzj77y0n39diqyfzx29rdi47ayg0f5cr6yi2syyimbq9i8vmb2";
+ };
+ "98f6aead047382d81ea82cfcf7d678c3d279b6ad" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/98f6aead047382d81ea82cfcf7d678c3d279b6ad";
+ sha256 = "0n6v34qn2v5cvqgzv1agp68hllcm9qjdl6928llln8mx56byr1y4";
+ };
+ "9905967a7ecb273ea4c135e170605bb12051e395" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/9905967a7ecb273ea4c135e170605bb12051e395";
+ sha256 = "1yn3gqiqdbbmxn1yn36d0cyf7cb8c74r0kq586fa9kyfq1kp6hcj";
+ };
+ "99408ec397e6f41cef3cc1118a42007c42240b73" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2483157-ef88c8fb9abd408b8fe496d060749077/99408ec397e6f41cef3cc1118a42007c42240b73";
+ sha256 = "07cx908z756kf2b7cbihipabh21zln8d58jaj0vh11fi7znwln7q";
+ };
+ "9960c14a54da2eea43d72be9aefeeb85b8cd4e7c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/9960c14a54da2eea43d72be9aefeeb85b8cd4e7c";
+ sha256 = "1wslww24dria8ka5d6a6by0ix81yg74783b2l8k59afjry3d4gn7";
+ };
+ "9974452a9032d4ef1911e1347776b088bf0f03df" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2579446-f2ba68e6c4fe40608f55a21e4d359a29/9974452a9032d4ef1911e1347776b088bf0f03df";
+ sha256 = "1kvgca25l2bbp416cqqw7ghrjq9mmwgy33qhbmkd665kyi3xcx02";
+ };
+ "998f25b9ce65d4cd484598d5f49cfdb023205ace" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/998f25b9ce65d4cd484598d5f49cfdb023205ace";
+ sha256 = "11m90pb307bpkd1cplzjavhbz76j8ywfwc1lrdp4zl5yb42avj7p";
+ };
+ "99985696491968b007dbff31cfeb9439637ad92d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/99985696491968b007dbff31cfeb9439637ad92d";
+ sha256 = "1n1rgz44hairjjvjc3937pin9rhxxa44sssi87z82965kbhqwmq3";
+ };
+ "9a10248ffa6ef2de0ff39750b0126e7d0b1557b6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9a10248ffa6ef2de0ff39750b0126e7d0b1557b6";
+ sha256 = "1j4m3dg8l69iyxhy9gz915rinaas4a5mflj9a70lwciq01py9fad";
+ };
+ "9a27b682ddf08347ffdd2673c005febde327223b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/9a27b682ddf08347ffdd2673c005febde327223b";
+ sha256 = "050ywwrsm40br2mnqckg3jrgc2q31j8xf4h0za2l5ih2h3vq2ymn";
+ };
+ "9a6f36fd2204a5938bfaa23310ac94f3eac70d91" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/9a6f36fd2204a5938bfaa23310ac94f3eac70d91";
+ sha256 = "0ybib9bi9lfdxfb9ql3jip9fbfglzczyp8r9fsycfbwin33nqn6s";
+ };
+ "9a709e39d73f4dd05adc8a171c9e771ca1facd83" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9a709e39d73f4dd05adc8a171c9e771ca1facd83";
+ sha256 = "1qrv0r9srbrqqwzw96ndirkn54my1ypyinsd1vdfvrwd19amwdpa";
+ };
+ "9abf05827a71d1c0a15a65473fe44db0a9c8676b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/9abf05827a71d1c0a15a65473fe44db0a9c8676b";
+ sha256 = "0x3kjyy72v9hx55bfj5yy5bhzip3i7fkpd0q6kgqi408wvz8345j";
+ };
+ "9ace33ad3d9ba29d499d254c077206230291f79a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/9ace33ad3d9ba29d499d254c077206230291f79a";
+ sha256 = "0jw0d0ck3p5h727apyp7190dm21q2mvf4kcipbaaa0rwdkynq70b";
+ };
+ "9ad3062b35efb39cfe52f02269e5e28c03df86f5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/9ad3062b35efb39cfe52f02269e5e28c03df86f5";
+ sha256 = "16lg92frzz8jqnvdw2r9w6a3fjlgvmndr7m1jlhq66k034d7jwia";
+ };
+ "9aec8735040beb57da24cffa27ef5d254408275f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/9aec8735040beb57da24cffa27ef5d254408275f";
+ sha256 = "1qgbkjhvhrsy7iy0r0gvs41m88har7i8m3ys03y5lrbmdazgb3q9";
+ };
+ "9b2025a39ed5dc7d0f745fd5f484fa5bd2f9b319" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2514423-e0ca01e1f08b4e2480fb868bca2e338b/9b2025a39ed5dc7d0f745fd5f484fa5bd2f9b319";
+ sha256 = "1jnlw9ifq8iyfvz8yn2jigfdq5qmhviy48vh461kfpx3isl1wvq3";
+ };
+ "9b367562030fc7238553c6aebec57181c96d88fa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/9b367562030fc7238553c6aebec57181c96d88fa";
+ sha256 = "1jdr332ks1d1gqi9ygxdmjyr3lingzzb1pdgrnxkg7jbl9i7y4l7";
+ };
+ "9b622139c6c9738ed9a9c4bca74a20d18bea5a75" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2700727-ab54589e54a547ecb0e365d946b4351f/9b622139c6c9738ed9a9c4bca74a20d18bea5a75";
+ sha256 = "11i6g22ncsjn50yq3fmhv2mm6inxw6zhi0zznv0y7gwdyjrisasy";
+ };
+ "9b6f3a80dd242ad667ee7c33f54385d4fa791086" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/9b6f3a80dd242ad667ee7c33f54385d4fa791086";
+ sha256 = "0lb42d3a79q1k35jfa3b1c1z8n774nxkcr918cp9bay4saifvfzw";
+ };
+ "9b85c2fa156837a820c7e7ae27d2ade465850441" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/9b85c2fa156837a820c7e7ae27d2ade465850441";
+ sha256 = "1klwhr444j1pqn44fnjyq2nvlaiaib04n0dwykx181bz2nkjqdqv";
+ };
+ "9b8fbaeb9433a52f4f65397b66bc6da378e067b7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9b8fbaeb9433a52f4f65397b66bc6da378e067b7";
+ sha256 = "1l4x5r8ghf70ddfyz1q6wpqlhrc10l41h33gmfhkjwm45fkvkxdh";
+ };
+ "9b97586a3c9bf005cab1870015b75587e39f94da" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/9b97586a3c9bf005cab1870015b75587e39f94da";
+ sha256 = "0a2nw9ibdv51n2b7a9x0jnx8cqxilknm79x210pr3h8p3fjdzlb7";
+ };
+ "9bb171f0382c86c213e8f4d3ffafe1e676490b21" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2718426-3062c3938efa4be7b8cd7493e66818c4/9bb171f0382c86c213e8f4d3ffafe1e676490b21";
+ sha256 = "1hgfyfwn19k47y6garrdfy4jlhis0mi1h7zfnab8x43w7pqjgjpv";
+ };
+ "9bb63a05f1dd1d7171eeb8018c29c90d81773605" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/9bb63a05f1dd1d7171eeb8018c29c90d81773605";
+ sha256 = "18cfpjnyamzwnrmz4i06iwir58dx6657gy4i8jgk8ga736j31vxr";
+ };
+ "9bdd5448dfc6229ba9d0261514a078236c882986" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/9bdd5448dfc6229ba9d0261514a078236c882986";
+ sha256 = "129pclb41yip44m87pr8l1rhdajhgnzcarh84j5w2kgqqmma9h8r";
+ };
+ "9be02ac4f895d7559b0cba2d4b65f8ffb5626236" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/9be02ac4f895d7559b0cba2d4b65f8ffb5626236";
+ sha256 = "0dh8vcf5dm36j4pjyc7m0i9f4947mk3r91ldbj6mhxfi90c6sn0j";
+ };
+ "9bfa76eaf50a585e99981b54ef5628fd89b397e7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2499980-1bec026979484bddb8aa39afef8358b9/9bfa76eaf50a585e99981b54ef5628fd89b397e7";
+ sha256 = "0rmv4ibakmvpllmq5cs1ihfkpvy1brkn8l42kmls66zlz478115l";
+ };
+ "9c2836065510901f9ba07928e4c7e319dd33b670" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/9c2836065510901f9ba07928e4c7e319dd33b670";
+ sha256 = "1b6igbp0mn78hvjgg33xyi6v7gd7nqvl3f4hgq5wfr8dzghx5gky";
+ };
+ "9c2b99ebfed2e931067e8842161b2811d04206eb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9c2b99ebfed2e931067e8842161b2811d04206eb";
+ sha256 = "0j0p40hjbc1v0ld3halwhic0573n1z58sgpy112rqb1m667q87q6";
+ };
+ "9c45f6155855d24fbb8f12e7a40895df1e55b205" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/9c45f6155855d24fbb8f12e7a40895df1e55b205";
+ sha256 = "08rpzwbnxwpk5gvybxv7q0s9k25gn8vcm77k7s69r5wva0p8hl9r";
+ };
+ "9c46b9b756ef22a0a9aad7d5efcf7e670cf46b3c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/9c46b9b756ef22a0a9aad7d5efcf7e670cf46b3c";
+ sha256 = "17jc44fj6vs0kqxk568vn6vjapyc1r7k9b88pc5l96m53bdkn7cm";
+ };
+ "9c8dc173e3087266551343fc43db0a118e573cd5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/9c8dc173e3087266551343fc43db0a118e573cd5";
+ sha256 = "1np5grzkj4cib5mzwxksqh3crbfllwgsk3ss7jz03s5hgh8jk2fa";
+ };
+ "9cb4e1d5ca0e7935f8d937f678a9245ca0a8baf1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9cb4e1d5ca0e7935f8d937f678a9245ca0a8baf1";
+ sha256 = "0wpqjvls8rdi6g47w8xzs71ynfg1aiw7jw1g160wxk11qvn17rid";
+ };
+ "9cdfcaa36a081486e8c591d1b0de339f20e19712" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/9cdfcaa36a081486e8c591d1b0de339f20e19712";
+ sha256 = "0y7h2ass8kgfabkvdwr3jcdi4znc6mcg4zklvw4yr3420d5h16x3";
+ };
+ "9cf547b1a8d0349c6997827cf3b1c76934a8f7e1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2714108-1287c19490104fa7a8ca7bc71daf7ae8/9cf547b1a8d0349c6997827cf3b1c76934a8f7e1";
+ sha256 = "1hh19pkjsnhjcsd8vj7d8l5nlk01iyp4kxf5hn2ymf0j1df0xns0";
+ };
+ "9d0629861bfc4948fc177763e87dc1ea3ac042ba" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/9d0629861bfc4948fc177763e87dc1ea3ac042ba";
+ sha256 = "0bal97q5lyz4s5z39jnxbabhll2agydcdw3mx0sikwr666aa8hac";
+ };
+ "9d238c0aed4cd73464dbba5fbf034030858fe441" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/9d238c0aed4cd73464dbba5fbf034030858fe441";
+ sha256 = "1n3fj5dsc4b9i8jwb1nzlnk1vbjnzlva3ljwkd16z8xfcdq3aqjd";
+ };
+ "9d2a8629491c47d32fd852ad683ba3be0f91dca2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9d2a8629491c47d32fd852ad683ba3be0f91dca2";
+ sha256 = "0csiwyx12frg2bzyp72is2h6fi2vv961byc23k30p0yz22cybr6c";
+ };
+ "9d4088ad171c93938ed41b2c224a98da2eb8e600" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/9d4088ad171c93938ed41b2c224a98da2eb8e600";
+ sha256 = "02z4578c3939zq6m6l9ckjf0kiyf9biq98yqb6dmp93lanr9sahc";
+ };
+ "9d48d62d8894986890f0f871523b546e25618a96" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/9d48d62d8894986890f0f871523b546e25618a96";
+ sha256 = "12j6p2l09n1yv388h0ynxl0p1bply6217600ix7d8mpm4jjri9sa";
+ };
+ "9d6293584ce78fd938acc5ddf91597dead7b8ff0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/9d6293584ce78fd938acc5ddf91597dead7b8ff0";
+ sha256 = "1qxm6h3nl2aawl9z04gn1kzlaiaajccyh0b9gr85d6x8x2dwxjpg";
+ };
+ "9d8150632d85b43bd2be46924eb71dd19d5b444b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9d8150632d85b43bd2be46924eb71dd19d5b444b";
+ sha256 = "14yw0xbyg1rq18xyfydfy3z0gnvkzr27f2vscsgiw1xmps0fsa6h";
+ };
+ "9d835adb6f30382cec8e1701c61f3a305fe5ebe5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/9d835adb6f30382cec8e1701c61f3a305fe5ebe5";
+ sha256 = "0vq311bgcj0zcicb05l5d1pl5jw1vqbblfzmzk3h6nf0hgn2db24";
+ };
+ "9d8f4ef5363610f4b47829299c0824147fa3c486" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/9d8f4ef5363610f4b47829299c0824147fa3c486";
+ sha256 = "0p5kp49clxg0ws3l3dslff5j54gi11bdpbsks2nh9081pfddla5z";
+ };
+ "9da60f5683310aa2ed53d90b2a9a246879223099" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/9da60f5683310aa2ed53d90b2a9a246879223099";
+ sha256 = "0zgiz6m2g1i5884izczyigh42bfw0xbkvf1r6jmavays26r83lb5";
+ };
+ "9dd86d52ca2bc2688244bec708a9054313d175c5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/9dd86d52ca2bc2688244bec708a9054313d175c5";
+ sha256 = "0viis6zccnxasxwfbi34xpqf4rnzr0w439qsskx7mbhg3zi8p0hz";
+ };
+ "9ddf004692c477b60fed575d57551fabdb00997c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/9ddf004692c477b60fed575d57551fabdb00997c";
+ sha256 = "1ij1pdln5llxl6cxsiz6kbfzsgqmk901mrgbzsdki3ibs75dzr1m";
+ };
+ "9de93e74f384195b52fb90f9e7767ece5fd84570" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/9de93e74f384195b52fb90f9e7767ece5fd84570";
+ sha256 = "1mj2syhcxq5qg23li9rh3814wiws421yasjw83j7b63yvpqbnyvl";
+ };
+ "9ded54d67930bcf5c3e95a10d2176c6106f2a3f8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/9ded54d67930bcf5c3e95a10d2176c6106f2a3f8";
+ sha256 = "0csk1i20kwp4rd1j6lci9v4wmc9jx3ji1i1m051iik0dy0553z3p";
+ };
+ "9e3075eea5e5e885d9aa9e6b2952ebe61a8b60a1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/9e3075eea5e5e885d9aa9e6b2952ebe61a8b60a1";
+ sha256 = "10gxi4n3k6fjsigv12603xsjp097b09bl6lli308xngjkiz55syp";
+ };
+ "9e397995b47d5acc37d38c9fa4935abec922ba48" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/9e397995b47d5acc37d38c9fa4935abec922ba48";
+ sha256 = "0cqayf9ag0snn0fab83fz3l5fqbjhllv86ik3vzx09zmg4i0d7n5";
+ };
+ "9e728c35e842f7af53a3e822acd469326d7cd52f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2677283-a70890a1537c42869136794b62c332a4/9e728c35e842f7af53a3e822acd469326d7cd52f";
+ sha256 = "1brpgrvcshwcrignfc257zg2jchav13kaz94n06i6i4fvd4la6ix";
+ };
+ "9e804a449e34aea4d5227c2a0cb3d96352a82de2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621793-1958bfdd4e3b49f3a0ca6a4c08a60a0a/9e804a449e34aea4d5227c2a0cb3d96352a82de2";
+ sha256 = "1rfn257jpdl61g0qf92lqybhj9j81gxq7h8igb7x5kwswa74c7ws";
+ };
+ "9e9a678ef5fe8d87a10fc7621ae8dd3c501e6236" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/9e9a678ef5fe8d87a10fc7621ae8dd3c501e6236";
+ sha256 = "1mijmzfvnxnii8z805a5hnhbiwwh3j16p8i7i0rhrmvkw5gnd68r";
+ };
+ "9ef14ed15fba71337b14c1e33972d9cd36fa9278" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/9ef14ed15fba71337b14c1e33972d9cd36fa9278";
+ sha256 = "157dz7i640q6scfpzqjw24i8qwlwjvrbdxqi60sx9hgkax1xw0n7";
+ };
+ "9ef93659a347d11fc1e9478c37043a0236e34ba5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/9ef93659a347d11fc1e9478c37043a0236e34ba5";
+ sha256 = "0qn4vd5pyjrsaa75n5avy0ri1s71nwnnkgn66qcdc2x5fckq6p3j";
+ };
+ "9f07f59f3c436bdfae1916ca914e86d02a7239eb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/9f07f59f3c436bdfae1916ca914e86d02a7239eb";
+ sha256 = "14qyjvd23zqc5dhv15z8sp9yl324fsfzy9p7x2nl35x14j667l8j";
+ };
+ "9f3ea83f4797ad2eb48a62d176d4849ab3b11b4e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2616691-982be94b99b442419e99de37630ca843/9f3ea83f4797ad2eb48a62d176d4849ab3b11b4e";
+ sha256 = "1fiah07i0wyvya8dwnlkfyq6csg9f0yly1x51j9s6jazy45xffrb";
+ };
+ "9f67c39f021b4b42e5fa8aec0f0be533c8341cac" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/9f67c39f021b4b42e5fa8aec0f0be533c8341cac";
+ sha256 = "0p4a43z84i8qjpnpich9rdxg0gsycblmif3slsad8ydabj094vkp";
+ };
+ "9fb4a9e94f7c935385fd64a3d3c2f58144e7118a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/9fb4a9e94f7c935385fd64a3d3c2f58144e7118a";
+ sha256 = "03hyf8kladlf5hwc1rija042pqcyzlbmla0c3pysrla33h4ca5qc";
+ };
+ "9fc2d2e4632111eca96621a257b4547fddf03746" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605188-b2b13e5f7b3d453eb5d6b0cde31b638c/9fc2d2e4632111eca96621a257b4547fddf03746";
+ sha256 = "0bmg6jvpwq02azazsh98mdh0x716lxslqai6g2b8icwxxi84p20s";
+ };
+ "a003e87a1243a65a9d38ce8666ba05cf9dff34df" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2634249-f2b4469cf0774eac818e7cb4565f1224/a003e87a1243a65a9d38ce8666ba05cf9dff34df";
+ sha256 = "08cbncxgcr83mld0qv6zc6mzjc00jjx8za0ii2v8r7a5jhr7hcr7";
+ };
+ "a00af92cb7dfede2f60df7468c841462cd3ef7bd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/a00af92cb7dfede2f60df7468c841462cd3ef7bd";
+ sha256 = "13arcphd636ahrdbxlxwb6yrximqgm9ixl745yqp83aihk2wwls1";
+ };
+ "a037040fb7bcc432add0b7d65dc1d3b078b6f143" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/a037040fb7bcc432add0b7d65dc1d3b078b6f143";
+ sha256 = "1jjcbw831yijkabzavbi4vmw3ba8vk248dnaqsjm5gkcajgwagxp";
+ };
+ "a04dbee3efc3178e3a175b2fb572cc36210ba9ce" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2599079-89300969452d4a5eaefe1ab4af976839/a04dbee3efc3178e3a175b2fb572cc36210ba9ce";
+ sha256 = "0xwqk4czfy62r9dh5yyan4kggijy5hgvbq084zbz3fc53cxrj3kc";
+ };
+ "a05558cf2d18454f06cd9c1a5b610a654ec0294d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/a05558cf2d18454f06cd9c1a5b610a654ec0294d";
+ sha256 = "0m9pngd6gnndqbww5xnwcfdf1gnkyipccixi6w4msps20s2bbkfr";
+ };
+ "a056afc246a9cdce5d7321930c97ccf0b9f19f15" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/a056afc246a9cdce5d7321930c97ccf0b9f19f15";
+ sha256 = "1y41y758jn47y9zy46f0inxlzl0h8wrdj4fm9937ypd2fyfw6nmg";
+ };
+ "a09bd78594e737689115679ea7f6a09ed557d18e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/a09bd78594e737689115679ea7f6a09ed557d18e";
+ sha256 = "1b1kivdj0qz5cr5igqmzbcyrmhbygvdavmfrqlqlrs1775411b7x";
+ };
+ "a0d83db11d6b2a64fdb82cc496d07a03ccaa142f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/a0d83db11d6b2a64fdb82cc496d07a03ccaa142f";
+ sha256 = "1qqrpmmdc0zg13x6qvjzi6zk6wvq0khiml4ksrhbn60si3gr8li0";
+ };
+ "a0de04466a75125d3528739deb44e12686e7a970" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/a0de04466a75125d3528739deb44e12686e7a970";
+ sha256 = "1k6ivx8bi63yivbw36lrpz8sv8gc2gzslb6pq2hq19jacl4v7xwy";
+ };
+ "a0f7010e4bf1452ec48d287d971a48198a78da69" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/a0f7010e4bf1452ec48d287d971a48198a78da69";
+ sha256 = "06s4hiwd7vr3n18p5pg34h1irzvq575n2pw9l2sskz6fj82m2fv8";
+ };
+ "a12df808dfee07a06515eabdd6c1b0124a7385d0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2619995-d5e097f793bd479d8592679759fb98be/a12df808dfee07a06515eabdd6c1b0124a7385d0";
+ sha256 = "1xnjwnfzaja205cm6c54nc53m3nbjfqk28ggi7h2rxg9cdjcv59y";
+ };
+ "a1820034a04f046e5f0c74444f653ee4869647c6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/a1820034a04f046e5f0c74444f653ee4869647c6";
+ sha256 = "1mi6z4s5wz9j4y097b27xp9038nar7nn2gmc1x7yaw97kh2z76n8";
+ };
+ "a18cebf9d16dc2e5a99da03353e404d64bce3ae6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/a18cebf9d16dc2e5a99da03353e404d64bce3ae6";
+ sha256 = "1g0arlnn0f4zhhj9lwmj3mjlwjwvj0gw8m8fbr2jw6rylmfag4av";
+ };
+ "a1c1fcef149d29408d496f35628d18dd9bd2e6df" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/a1c1fcef149d29408d496f35628d18dd9bd2e6df";
+ sha256 = "1b66dsbjjvz4gm7vm4vaapykhv7ni2y5rkycbfahzcigi5kasf57";
+ };
+ "a1f9df46b4e95588043a59820ba65fc28a8eea7f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/a1f9df46b4e95588043a59820ba65fc28a8eea7f";
+ sha256 = "0fbzj0bkkbm7rxdi6lva7g2qhgqmj4y2mhg72z1iw842bikr4l2f";
+ };
+ "a1fc05440064b28d5deb42b383bf1960ca27cb3b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/a1fc05440064b28d5deb42b383bf1960ca27cb3b";
+ sha256 = "1b0xagh5f596ww8g6yng6frrvkrs8vrhzzbnl59ab1cpbq3xn7dw";
+ };
+ "a21a78f021d580176e09c67d0643b83e80ca2744" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/a21a78f021d580176e09c67d0643b83e80ca2744";
+ sha256 = "1xjclk357lm9rydmhzvznq8rd4yysr2jzh5y1bvrbpvxpx4hc3if";
+ };
+ "a243a00aa61675be8ae46cdba7db99c8e8195984" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2615502-35e684f430004977ab5aaed43a0fab81/a243a00aa61675be8ae46cdba7db99c8e8195984";
+ sha256 = "1lvmwf0ajkjsdz68n22dhiihddv4ric0nch46ixvqg8di50fanj2";
+ };
+ "a24d76c382036592b023a22d61abbe88d52cb526" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/a24d76c382036592b023a22d61abbe88d52cb526";
+ sha256 = "0brdmg3xp6jgfhralw483pkyvgd305g3m4bcqcpg9vazsrwawypm";
+ };
+ "a2587b8104dccd8347dc49a52bb5643842856a16" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/a2587b8104dccd8347dc49a52bb5643842856a16";
+ sha256 = "0j8pwamzj2icivglw0ylpvbx76c0xyys79l049l7lpirp95y0hb0";
+ };
+ "a260cd8d85a752caa55d8857af979f5ae8a68d97" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2597174-0975f975d1f0463f931b68ea4b0ef6d0/a260cd8d85a752caa55d8857af979f5ae8a68d97";
+ sha256 = "19fijnc4j8pr726j3v3c0x35k8mnswk8jfjjzmgxdn6s95c6q9pm";
+ };
+ "a2731fbc3c50dde19f92ac5706a3b73a2fb50c05" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2761703-4d21a69f627145d58d1b542fa90eeb3e/a2731fbc3c50dde19f92ac5706a3b73a2fb50c05";
+ sha256 = "1adi6x27znln5qqkcl1x281csw27v5xd981n0az5wxqxfpssxriq";
+ };
+ "a2b0d085248240cde57087bc35816b078511c856" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/a2b0d085248240cde57087bc35816b078511c856";
+ sha256 = "0ksv63yssyqhphll4glyrizrsylkk2p82l2n653sw0jjrrbp5m20";
+ };
+ "a2b1b97c80248fb89a7ce7322cc399a4fdf3173c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/a2b1b97c80248fb89a7ce7322cc399a4fdf3173c";
+ sha256 = "1908grxgwb9sy4rd02jzc4zyi543dkxhynx0wkc0imfw4x2l9ixa";
+ };
+ "a2ce002a2a6a420e4c746eae8f553665e409a116" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/a2ce002a2a6a420e4c746eae8f553665e409a116";
+ sha256 = "021q59y3gi3f6ygddr736l75japm8zky3lz21z4bzik7kmirxq98";
+ };
+ "a2d4c282439a7d50a9b7005e9c3feb136cc093e8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/a2d4c282439a7d50a9b7005e9c3feb136cc093e8";
+ sha256 = "1wbn5yxpmfq5r20j9h27kpyc1v66a78dil39b83cpp4j7jkv687c";
+ };
+ "a333e2129a0a7518d47d81753d193ceecc5b881a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/a333e2129a0a7518d47d81753d193ceecc5b881a";
+ sha256 = "1ih9hbcsslfslb9wr1i5f2vk9746zczygn54lac2m108kf6y0jk4";
+ };
+ "a353e5dd34009fcbd0a5f9eced792d02ffd2cb97" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2710757-d76358e2c5474af8a7d14e3262b517a4/a353e5dd34009fcbd0a5f9eced792d02ffd2cb97";
+ sha256 = "1wf8zzpyp45c9bq2zwfcy5j33yj2gzf73zbfqcppxz89knyakic7";
+ };
+ "a36932c96e52dc3b154313d65c128fc6efa79367" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/a36932c96e52dc3b154313d65c128fc6efa79367";
+ sha256 = "1j2qd8j6sp3vj2rm8cxbli2d0l741i786widws427bddp1ma805y";
+ };
+ "a37744cecf38c8c2ca371eb33120654f8a53b5a3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/a37744cecf38c8c2ca371eb33120654f8a53b5a3";
+ sha256 = "1gi17xrvy9hl31z1bsxdq6awy93hllizvc4hbdc74xmpxdgnnqkx";
+ };
+ "a3891b8c154921b18b27b3c7915a8bab0b886565" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/a3891b8c154921b18b27b3c7915a8bab0b886565";
+ sha256 = "1ak3n4yyxpj34v9cjlglgpy0q292xrh7363p26xbkln39il8h51w";
+ };
+ "a3ea753b468f54a0a4c306c03130572f0ec0eee4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/a3ea753b468f54a0a4c306c03130572f0ec0eee4";
+ sha256 = "0fc6xv7d20c1nvzvw8dc1mwh1c51447y9fgl6z93c6xabvijc2q5";
+ };
+ "a3edc07dfea80da6d7d09067737fc4630c4bb81a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/a3edc07dfea80da6d7d09067737fc4630c4bb81a";
+ sha256 = "11wh3glqpficz5wj9cgif1kjpmcbziapza719gzadkcrjc1vasbl";
+ };
+ "a41d00077f02fab1c6a05e4607094b4eea3b6ad0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/a41d00077f02fab1c6a05e4607094b4eea3b6ad0";
+ sha256 = "1xrf0szqj7wxwqcw7lw43fpzqjq9lh3rr04jyfmnddasxd6qzfwz";
+ };
+ "a456f0111a1d9a6fb8045d0e5e9450b7c36f9374" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/a456f0111a1d9a6fb8045d0e5e9450b7c36f9374";
+ sha256 = "1p9bhg7sjvc70jsansrf9qa2wnxwk9dn4ic5k9jai9alcr48bjan";
+ };
+ "a46938a8170197df7ac0c8d9ca3c7e5aca696271" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/a46938a8170197df7ac0c8d9ca3c7e5aca696271";
+ sha256 = "01ipp4xnpgnnhlkqh1hpman6ifj77jij5b9mrra87dkcy83wd7j2";
+ };
+ "a4d7e28c74a63f10107957b9b6af00486f1e7358" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/a4d7e28c74a63f10107957b9b6af00486f1e7358";
+ sha256 = "19ldb1kdwiji7bwjz6fx8rak2dk8gpnvib5b3s3ywl0dxa85yv13";
+ };
+ "a507276db67feeb197bacced284be29d92bfb2b7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/a507276db67feeb197bacced284be29d92bfb2b7";
+ sha256 = "1a46d8km3ci1jy1hgq7mxcq0bhkd2n8bqrdd7x1nyybvh5r7hjn7";
+ };
+ "a561c854b1abb49bc710438edd6a17feb5370e73" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/a561c854b1abb49bc710438edd6a17feb5370e73";
+ sha256 = "0s9sw7kx3gj4xrckivfl2w2dvw2criwwm0bibh6dmajsj058pl84";
+ };
+ "a5a4b35f662228caee7476ddab2567611de6c35c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/a5a4b35f662228caee7476ddab2567611de6c35c";
+ sha256 = "0580qlzrvf1vw8rfncc50vyy9y5g79rwcvj8rjaxvdwmg1n4dpw0";
+ };
+ "a6287affa4b828301aafa84f7bd9ce71935997b1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2616691-982be94b99b442419e99de37630ca843/a6287affa4b828301aafa84f7bd9ce71935997b1";
+ sha256 = "06kdx9x2a4230k1c1b60cwkadarg62rnsbycgbqzhgbp6h4j8awn";
+ };
+ "a717434c111c75d501e35d8a5f4de2b75e299566" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/a717434c111c75d501e35d8a5f4de2b75e299566";
+ sha256 = "1410w7shpi913irx8b48mk7004vdsf0xa3hrh21bvd70askxn4ci";
+ };
+ "a74403ad656c7c68733bf1d09d994d0e8dccd94e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/a74403ad656c7c68733bf1d09d994d0e8dccd94e";
+ sha256 = "0b8kcrdcd4jmn2anxgd0x04szkf2k1gkqkl8srkbf4f5hh7aj27x";
+ };
+ "a744790bed001ed939d533b58c7d7132d8599ee6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/a744790bed001ed939d533b58c7d7132d8599ee6";
+ sha256 = "15gxpbd7p0pj67b1dwgnsq841zdfmzw27qvpzpg15nbdsm4bqknq";
+ };
+ "a7460f75270bd4946c7e856b9cba426bfd756474" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/a7460f75270bd4946c7e856b9cba426bfd756474";
+ sha256 = "1xl68yyf67zr08390y11p8il1g99crr9j71m7bqkps4sr236iv1l";
+ };
+ "a75892ec39777f5deec95c7ab34ac829e42f61f7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/a75892ec39777f5deec95c7ab34ac829e42f61f7";
+ sha256 = "1x83zbrnqx9856s515lqix9na8ir8991whgszbx84xjzs7507wag";
+ };
+ "a7675f8de766ef5fa71fd6c904b6000b880a463d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/a7675f8de766ef5fa71fd6c904b6000b880a463d";
+ sha256 = "0jmc22yiaw09cqx0wanyzbh46iblxpjzs9v1bl8hhicv360rq1ya";
+ };
+ "a7c85f34f7555c16973a534e2c21b5d0bf278e29" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/a7c85f34f7555c16973a534e2c21b5d0bf278e29";
+ sha256 = "1a7zbrmj2gdq61q2gw6jr6j3848mg85snj8hghmajndww1wspjlp";
+ };
+ "a8278a17fc9fa29308c59351a8c53b8330d33e88" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605188-b2b13e5f7b3d453eb5d6b0cde31b638c/a8278a17fc9fa29308c59351a8c53b8330d33e88";
+ sha256 = "0d391bz9b9c73xdnkxm3l8zyz1zjb6nv0vn5m3ihpgb7hkdgfxgz";
+ };
+ "a82d5d8a7e63a42fa0e2414ad66c400a3beb640a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2498161-1c427a8c10084d53ae743a11e6148406/a82d5d8a7e63a42fa0e2414ad66c400a3beb640a";
+ sha256 = "1cr9k5zlj9kl24ph9inczwm84rbch1vkvrkycs22yhqblgwf5zid";
+ };
+ "a84e9f4455088def00bab0652ca92a80ecce5e57" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/a84e9f4455088def00bab0652ca92a80ecce5e57";
+ sha256 = "1ks51i2490lymg2whdj1807z9asyl6gpsgbshw4bgdxd903aka1l";
+ };
+ "a8e8deae490071080b69408bf16c09b087801323" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/a8e8deae490071080b69408bf16c09b087801323";
+ sha256 = "1v0aaimfzl3f52cajgzv9v6wzjn4jpf95y40kalqbj2w7qvyzz4i";
+ };
+ "a980d01787b472fb299cc01e49a8a9da740ce81d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/a980d01787b472fb299cc01e49a8a9da740ce81d";
+ sha256 = "1laqjx21ik77p2xggii4pbcj7np9a6bpn8wlhivzk23zg0jnp0xz";
+ };
+ "a98192f145db4e2a545f79bc9d595f8f5c7fda34" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/a98192f145db4e2a545f79bc9d595f8f5c7fda34";
+ sha256 = "0kwb4jawlfvql1n1fbw04kqik33gmlzci7zc236gyhz4mhb86xd1";
+ };
+ "a98819bf37317dabf20f86b0fd6800a911717698" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/a98819bf37317dabf20f86b0fd6800a911717698";
+ sha256 = "0lh1288ab45p06082lb1a4cjh1k3gqmpxnbsilq5cgic98x7fwr9";
+ };
+ "a99daa4bfd46db4b416f47b4fc1972b221ea57e7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/a99daa4bfd46db4b416f47b4fc1972b221ea57e7";
+ sha256 = "1mk3s8g5vgjpmhw6pb14akvipbm31il3887f4qqgfxcdfgkj261h";
+ };
+ "a9c62ffacb1508452705b057c5f796573d47c78d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/a9c62ffacb1508452705b057c5f796573d47c78d";
+ sha256 = "0c0gm8yqkwbzbdlx625bng0hwg9l8fnwf02fkm7mai8qg2xbb76z";
+ };
+ "a9c93107f208faee20ff396148c3b9954b33aa06" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/a9c93107f208faee20ff396148c3b9954b33aa06";
+ sha256 = "0qrg2k8rf3ic7z9y0pv0mainwbqmhn4p5q6jajf08wndz2k3plr3";
+ };
+ "a9dfe0dbd869009eeca3fb67d49ce2c691877dc8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/a9dfe0dbd869009eeca3fb67d49ce2c691877dc8";
+ sha256 = "0i84q4qa7jp3yils2hi8qd9mp0xpazdmnr93739sqhd8wrvi3isi";
+ };
+ "a9f9260691fe2d9ade072d9589f478dbce491a25" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/a9f9260691fe2d9ade072d9589f478dbce491a25";
+ sha256 = "1bkkfvnxxxscv1rglxn9174h7zfa093j0ilq3wpc682hlihg1c7s";
+ };
+ "aa0999ac4a6e388aa9547c455a6ea08c98d7036a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/aa0999ac4a6e388aa9547c455a6ea08c98d7036a";
+ sha256 = "004gm6cfkrv1hccsqwd9qzby37rjjb5cmhz8z8a4wyr52vcccp6f";
+ };
+ "aa212839e3606b3a1bbb68c9c1353c627853d8d5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/aa212839e3606b3a1bbb68c9c1353c627853d8d5";
+ sha256 = "166y3z7h9ncjz34g9ljbch4knqgi8syhsyl1gkh5wnqwkhsdkyjl";
+ };
+ "aa40eee6849fd0b67b4a01d245e14e6f9cb562fe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2481391-2b0dc74bc6d44dd4917420631716dc19/aa40eee6849fd0b67b4a01d245e14e6f9cb562fe";
+ sha256 = "1zhfxhr1ngxkigy2kbr0x19qa6bfh5jqh2kb04x6b5c5cl2rxnx0";
+ };
+ "aa7f77e42dedc93399b370b494f11d5cafe3ac1b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/aa7f77e42dedc93399b370b494f11d5cafe3ac1b";
+ sha256 = "0zj2dqfl1zc15i511n89g5gbjkxgr7ivsvjjnyxdw6pdcbx3820c";
+ };
+ "aa92bb8c104afa015ba28312d3eb02c006426dc4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/aa92bb8c104afa015ba28312d3eb02c006426dc4";
+ sha256 = "0xw13lfrl0nbhjr1haz9k5yf6vra4h2q72mf213h5aar0h2sfivl";
+ };
+ "aab7c2855fd330fbd2d86fae15fb7fc38e8117a4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/aab7c2855fd330fbd2d86fae15fb7fc38e8117a4";
+ sha256 = "1g615imqp4nvryqr7fzdg2xd62nv6nkq0n6a9s4vfl8di3hfywaz";
+ };
+ "aad648813ec7c3909fab2cba04e54a790f99d97d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/aad648813ec7c3909fab2cba04e54a790f99d97d";
+ sha256 = "1056xhjfdpyg3x778w33wmydzacgv24p9mrcsb0h1n09lkxbab5p";
+ };
+ "aadaaad6c3a74db06ec29a860e4cbdb518a7e965" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/aadaaad6c3a74db06ec29a860e4cbdb518a7e965";
+ sha256 = "1xyx0sr4vgbkyizvmjsykn3lg7mg0rgs3ha8xcvkn4m4wzhciwxs";
+ };
+ "aaf3a012f48b24c193628af42ef3302d96784c3f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/aaf3a012f48b24c193628af42ef3302d96784c3f";
+ sha256 = "1idl0rsr7waqbgydsbnlq7bl26s202arhzv5bzmcghy2jlzgavj1";
+ };
+ "aafb65596f063aac27c03ad64646b10e9cbd9e5f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/aafb65596f063aac27c03ad64646b10e9cbd9e5f";
+ sha256 = "0gmi9sd9sgzb1bmwgyaghslz2rxyba96qyvzn9mdxnh661cwnwsk";
+ };
+ "aaff771bff40e67acec754ff6a73103840091d71" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/aaff771bff40e67acec754ff6a73103840091d71";
+ sha256 = "15f92i5jph2hiihknkbyssif2gwlcm59vkqwj155c164g6fghdsc";
+ };
+ "ab091055311fa9bc429f0aacec0cc24290af3166" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/ab091055311fa9bc429f0aacec0cc24290af3166";
+ sha256 = "124wr5mfd3n11k6rdd60177hfjbjicyn57fccwzn2sxhq3rdxl7p";
+ };
+ "ab0a48b5c47c246a0d31750e9ae6b073ad35963e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/ab0a48b5c47c246a0d31750e9ae6b073ad35963e";
+ sha256 = "0ldkcyzq6jsjkb1w8qgrjjjz9sgpfa7syvmfnr4micv2jna867vc";
+ };
+ "ab0accca4b2e0942f55d408ed30bb84183371d99" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/ab0accca4b2e0942f55d408ed30bb84183371d99";
+ sha256 = "0j2pc8bpm3ikwzlkssgmbk1wcqskkbv9akyb07742vl034vzzc5z";
+ };
+ "ab199653d5f9dea6b89095016907a7ada2eea972" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ab199653d5f9dea6b89095016907a7ada2eea972";
+ sha256 = "0fk560jgq4avnlqvrj6y3qbd9r1zcyjxpvvpdcbwr57kqxqgki5d";
+ };
+ "ab1c1bb528f1ce09f2cd32ba886bdf658ee6ef6e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ab1c1bb528f1ce09f2cd32ba886bdf658ee6ef6e";
+ sha256 = "0jkdyzxqffi9zyfhi8pmh5z57z5cs4inn5cw92gbgh1fx760shx6";
+ };
+ "ab56f3655c7511b5ce622c56fc8f769b82720a77" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/ab56f3655c7511b5ce622c56fc8f769b82720a77";
+ sha256 = "10f5kb8yswwd8178104jz5ph7s5j3hzmicfggfsdmviw4760iplm";
+ };
+ "ab5d351cc1959e213540cc41dbe93cea75dda4d9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ab5d351cc1959e213540cc41dbe93cea75dda4d9";
+ sha256 = "1br599a6lsg7cq8a1zy7wicpjjmg1pvdmd9wph6xd4a4i5r5msh9";
+ };
+ "ab6ec6af0e90d693b32e063348193dfc34a5d608" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/ab6ec6af0e90d693b32e063348193dfc34a5d608";
+ sha256 = "1saj3cr67jik0xfak36j394irs648w4ws8yg1bzb2i4kxl4x4qjf";
+ };
+ "ab9668aa1cb36fe03fd80ec800264850f247911e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/ab9668aa1cb36fe03fd80ec800264850f247911e";
+ sha256 = "1z3sq5jnxannf084xrd5sgm64d54n5w4vhh2jcrch53vylkkf771";
+ };
+ "abcd992f6c90c47b9150148778b5e5dd0be366f5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/abcd992f6c90c47b9150148778b5e5dd0be366f5";
+ sha256 = "0sxcxwpz4xpxjnr5026xpp7m9jagvqb4ff0073r46a9jzp0y0nwh";
+ };
+ "abd31f5aa1a5bc7ad21bd97551365c4785a30537" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/abd31f5aa1a5bc7ad21bd97551365c4785a30537";
+ sha256 = "1si98cl159fdlqpqaagk3bsf8295nwbyf1x12fps78fw8svshhps";
+ };
+ "ac32cbcbb8641f87ce0f4e5e8ea11cdb33568e98" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2700710-7fab47bfec3142a7b4fa395fdd001748/ac32cbcbb8641f87ce0f4e5e8ea11cdb33568e98";
+ sha256 = "0vvxrykslg2klrfmg8nczaxb2picf30fiz19vnwrmkc2hdx8ipj5";
+ };
+ "ac90a77a8f7a8cffa48d869e60f393981eeb2ff1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2620418-84d187e8202a426594ec7cac6eeb85a1/ac90a77a8f7a8cffa48d869e60f393981eeb2ff1";
+ sha256 = "093cl6yhppbc6xqgfiy46rm2wip3cpvnkzxgff0k7bbb8chxp3al";
+ };
+ "ac98ab61a879076754296cafc03b793203fb6701" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ac98ab61a879076754296cafc03b793203fb6701";
+ sha256 = "1jcm9grs9s7prn4qxhpaw5np56g6s6k0z2xa8ky64i1c9rq0dyx4";
+ };
+ "ace785dacecc7b1203d5fd7ca358003149131381" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/ace785dacecc7b1203d5fd7ca358003149131381";
+ sha256 = "1i5aiksqi4hvjyzlrflh9v3dw9n4n4f38aw62flr92psnfy0ahr0";
+ };
+ "acf6558b1e3950d55a31da4e8614e4a357aa653c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2547993-1fb84b9e293242c988e586c599eeeb56/acf6558b1e3950d55a31da4e8614e4a357aa653c";
+ sha256 = "1gsdlhcwdd5dzl5qm8hsrgyg9bjmp0iyaa863fa4h40ammj0kg7a";
+ };
+ "ad4246832e88a45f0bdd6f9cafffd383ed378120" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/ad4246832e88a45f0bdd6f9cafffd383ed378120";
+ sha256 = "00g2y2p4aavw5bfc116k4qj49qkw2gprg4cxv2mnp1ldj9jh81fc";
+ };
+ "ad48b0d39c84ad3a23ee670e06d009fd1ef406ae" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ad48b0d39c84ad3a23ee670e06d009fd1ef406ae";
+ sha256 = "0a396fmil6q217fh2vr6wwm63wyq74j495dxj7y509swjsjf6zsc";
+ };
+ "ad735ce413f80f79900a87098c112c355b2269b9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/ad735ce413f80f79900a87098c112c355b2269b9";
+ sha256 = "1qgccwwrhkljak4xks9qnf0zq4j4q36n4134xs3nvmzbma9l6xw2";
+ };
+ "ad8485d0661bcc3b36bc884373baac7c82c1db1a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/ad8485d0661bcc3b36bc884373baac7c82c1db1a";
+ sha256 = "1w441r581slp32qhpnrpm2hacy3db8y7v5by2z0xycl2nfz25n1l";
+ };
+ "ada3dc17e0a699e9f0888f167ab43c95b9d087c9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610954-bd0fcbe6f0c748508fe9438073c40b27/ada3dc17e0a699e9f0888f167ab43c95b9d087c9";
+ sha256 = "0zzk3laz8wv0sd4gqc54p5hw86wvbjmy8vrdlq5hpfhg6z046cch";
+ };
+ "ada964ecffeda8e2a6db59b92272ea1e22dd17b5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2791326-4a233957ffc54c94b38c9ceaf84d58de/ada964ecffeda8e2a6db59b92272ea1e22dd17b5";
+ sha256 = "0s23ag4qfdy2h7cz7184i2vzbbb3bm3j3655vs8yb8gfjj1rbiyx";
+ };
+ "adb1f445a4a127969356b6635da51f637f54a0ac" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/adb1f445a4a127969356b6635da51f637f54a0ac";
+ sha256 = "1h5siwqpjjgqi695gsmbkdj4qx9cd3w4378i7w59dxv512zgkgrz";
+ };
+ "ade00d1c90e8988488643bcf563040510c4be517" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ade00d1c90e8988488643bcf563040510c4be517";
+ sha256 = "07wc8b6i06hqp5mas7jjhs71ag0lb00z3w5gs25zrmz36ly898hl";
+ };
+ "adeb881928e136d07bc7684746ce44d02956f822" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/adeb881928e136d07bc7684746ce44d02956f822";
+ sha256 = "1bs2z2aw2pqiygq6ykznncfd029v483za1ii6sxbxdg59am4brii";
+ };
+ "ae2770ddebf925141015b1cd4b1bb15fe7ece06c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2659695-e878a65d22304b68a9e6878b07b5db24/ae2770ddebf925141015b1cd4b1bb15fe7ece06c";
+ sha256 = "074dv8w0rkv95qcjxrwsbr6imx41w5ywfx7vcd73l3llzdgfk46l";
+ };
+ "ae70c01ba3575e5558b7bde673a82e53494df34b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ae70c01ba3575e5558b7bde673a82e53494df34b";
+ sha256 = "14qd1wbnp3zkfb2ni0dghjbgca4w6c8mnh90f0ijfxwnywk1myba";
+ };
+ "ae8089d30509415ded81477eb41b29f55a431272" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/ae8089d30509415ded81477eb41b29f55a431272";
+ sha256 = "10y28v1pfxz5vdjxvb5kah2756lsl70z9grmda57l5wd4s9qmy91";
+ };
+ "ae874d3eb1af9a5081c94361a989f0b77e0ecf1b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/ae874d3eb1af9a5081c94361a989f0b77e0ecf1b";
+ sha256 = "1r3a0qndxy43pgwsjcc7ia3njip4zvh0419wbm502006amj07yrl";
+ };
+ "ae901fb15f84f70cf6979dafda0d8f5dbcc5c269" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ae901fb15f84f70cf6979dafda0d8f5dbcc5c269";
+ sha256 = "1jipsy7d39z9qmz27ib75yixmgp0qqfazljgmisiw7kyii1m5fpp";
+ };
+ "aecbc01c44a31c0809a43e68b99e44ed1a66bd00" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/aecbc01c44a31c0809a43e68b99e44ed1a66bd00";
+ sha256 = "0vxvjjpr0hvivfsszf94ii8xl67xnb262mxfwm5xmml7472xzhsn";
+ };
+ "aeeedf07121752bb79af7caf8438e5c3d612cd7f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/aeeedf07121752bb79af7caf8438e5c3d612cd7f";
+ sha256 = "1dk4xvniy7cr3xss4s9nrbjgbmibbsb9s7plw20hlg0gzcyg24pn";
+ };
+ "af0b9f348ea115df7f34f8c6a13da31e75e76e16" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/af0b9f348ea115df7f34f8c6a13da31e75e76e16";
+ sha256 = "00y3h6bw7ljrnvy1d9fxff6ncsvgpqaj3hyp44q41w3xlwilsyq7";
+ };
+ "af0da89763358318771d8aefcb742e3416f57423" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/af0da89763358318771d8aefcb742e3416f57423";
+ sha256 = "18xak3xnl38n8mbqa5rv3m70595y36yy2l5rwlhy1k9g66lfvwf8";
+ };
+ "af313d299a6ace9cd07fe010e73680f12b0b5147" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/af313d299a6ace9cd07fe010e73680f12b0b5147";
+ sha256 = "151bsqly7rqy1isklgjvy39bnbxqd3vyjbqaf60lgs6h81ggj5fn";
+ };
+ "af32114b8b970d1d65271ed99052f0de3d4651eb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/af32114b8b970d1d65271ed99052f0de3d4651eb";
+ sha256 = "1pg0r81c1rg9r6m80k3907s77j9mqh8xy2zaym734r3zvjamwf54";
+ };
+ "af412e3bcac064293cc367941ad02eddcc3e5a44" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/af412e3bcac064293cc367941ad02eddcc3e5a44";
+ sha256 = "1gzy8vni5d61pp6v5ns1ykmg2xcgcrm6gd2w90bxgjn7fjxbm6y0";
+ };
+ "af915ecf45e7ce1cfbc694f16a90c5131e953240" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/af915ecf45e7ce1cfbc694f16a90c5131e953240";
+ sha256 = "192x7nbj1mkzvwcjmhaw65wpq0gkjsyx709dh4mkcrm6djw2si6v";
+ };
+ "afb2a10bcf6c13c0cfc4506cce58b6a4e8a8741d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/afb2a10bcf6c13c0cfc4506cce58b6a4e8a8741d";
+ sha256 = "0zqjqww51znppvgkgqinxa91zpwva3jwc8rd7x78f319f3wpka24";
+ };
+ "afb9d2946f9c3633fb9df0e2acc0f5a2cb5a7753" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/afb9d2946f9c3633fb9df0e2acc0f5a2cb5a7753";
+ sha256 = "0z2c3ac6ja8r82wr7fgbh6j9gpma7p1wxrwgqxdwysgys39z7dvr";
+ };
+ "afc1c36f600c80efcf810f3f49289880b32ab502" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/afc1c36f600c80efcf810f3f49289880b32ab502";
+ sha256 = "1clkj01cmpgx51zlqbypjdarm1anispwmch98y87gsmhpbgmgm7l";
+ };
+ "afd3591b1c847bb2dca52c7bab74b7f00043a210" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621658-dcc28ef36e554dd28b121fd140f310e9/afd3591b1c847bb2dca52c7bab74b7f00043a210";
+ sha256 = "1ymdczzqabd5alr8j3gmisrljfvdlncb79d8n62dkxkgp0f894ix";
+ };
+ "aff26a6b13744512c90c853c58676ace9431b24a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2612065-7518df1e66b64067baa9f5dbe835628e/aff26a6b13744512c90c853c58676ace9431b24a";
+ sha256 = "0g66byknihd0fkcd7h1bb7vbgzz8rsyjnkgf61sxbidxdis9v722";
+ };
+ "affb2ac1292b281f85114871becaf2e7a7adfa7e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/affb2ac1292b281f85114871becaf2e7a7adfa7e";
+ sha256 = "0s90sfpjphy4zs3ccwfhhxjh9irr0x4sijjg1k9r5ixzn19klb77";
+ };
+ "b05b1e539b6610459cb8b45e8d0b48d4de00fa44" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/b05b1e539b6610459cb8b45e8d0b48d4de00fa44";
+ sha256 = "0ac90aqnhkm3dvcm5ql5wg959v8y7pyjibppgran58sf0jph91v8";
+ };
+ "b08e33bfe04cad899bb61fb3d822e79b9203df59" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b08e33bfe04cad899bb61fb3d822e79b9203df59";
+ sha256 = "126xswxfgsv1yp33hvpxjfk4m22j3dvs4dhr83rpwqvyw139bxc8";
+ };
+ "b0ad17ab6dad98419386251c9553b4a5d0a73fad" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2597177-394deee1ae174b2db1462326aa83252a/b0ad17ab6dad98419386251c9553b4a5d0a73fad";
+ sha256 = "08rnn13hqbz2j70ldigc3ksa99jmc8gg9x5a2am545s5qw6p5myr";
+ };
+ "b0b3d44fba913897d01ea2ef6e8089c64f988ac6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/b0b3d44fba913897d01ea2ef6e8089c64f988ac6";
+ sha256 = "0lq9vbdkw3cqn0w7zd78n1wpnldxkr3azp02786gqrcx3lgwxffr";
+ };
+ "b0f0802f90e19b137dfc3482c478ce06deda9019" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/b0f0802f90e19b137dfc3482c478ce06deda9019";
+ sha256 = "0ivpnd7z9pl4pkdxsmfn0qnxh5ny19zxh2jvsdkwzj6qk49r7w8x";
+ };
+ "b10f9ee97120ca6711610befa4e7fab7977b88e9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2791326-4a233957ffc54c94b38c9ceaf84d58de/b10f9ee97120ca6711610befa4e7fab7977b88e9";
+ sha256 = "0mf5w54jw7vsk1l8x613zhq9060cd6xj03cjk93pbmkizvy0hxc1";
+ };
+ "b1554d1196eebddea596b1a7274981d7a2670be4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b1554d1196eebddea596b1a7274981d7a2670be4";
+ sha256 = "0rsf740756cc4samd688c81y49fsw1bkiipvahpj1h4kpqys8w4v";
+ };
+ "b16036ff8aa037d50175f1e65bd5504964b26e9a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b16036ff8aa037d50175f1e65bd5504964b26e9a";
+ sha256 = "034rljnxdmy11xhr3rpgzv4sdab87z3ybbrww0gvl0av3chmga5g";
+ };
+ "b176340bbc5d5b5bac78f855162c5a3ff0ba19ce" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2615502-35e684f430004977ab5aaed43a0fab81/b176340bbc5d5b5bac78f855162c5a3ff0ba19ce";
+ sha256 = "1ckgycqh4s28c0yq593d8405cz1g7pnmjpnnfvn3y8gn0yh8qb56";
+ };
+ "b176ee25e0ebb7afdb44613dac3f4254dc99ce2a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/b176ee25e0ebb7afdb44613dac3f4254dc99ce2a";
+ sha256 = "0jb1vsabmj29s03ghc2g48r9sjz2h4s96lvhkf6xgfgqi26nx0vq";
+ };
+ "b17f3e987930d01e04a825ded615a345c7af5ef7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/b17f3e987930d01e04a825ded615a345c7af5ef7";
+ sha256 = "1d4ibb02h26i5za5z7a9sj2cirvz8y93h2jxrb0llq9hfazzzgpv";
+ };
+ "b1bc628c3ffbbceef6e1ef0dfb467b793da712dc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/b1bc628c3ffbbceef6e1ef0dfb467b793da712dc";
+ sha256 = "1li9rf71003ixz42k3gcavfnnjjfgbp69qzxmddv7w8iykas5vli";
+ };
+ "b1cdfd2a0b486252f482eca80d3408be44b15168" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/b1cdfd2a0b486252f482eca80d3408be44b15168";
+ sha256 = "03ipjskn7j0ar4hz9n9w8r6m1wp3ag35n21sx3v594b332ma25cg";
+ };
+ "b1dfb94e146a98148e1f9ba9a56d7114a84628a8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/b1dfb94e146a98148e1f9ba9a56d7114a84628a8";
+ sha256 = "09imd5nsrina53my95vsd4jm9400qz0kc7vik3aafga9648h5nj6";
+ };
+ "b1f44610d6ce19e42537f436c4bfc70e275b432a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/b1f44610d6ce19e42537f436c4bfc70e275b432a";
+ sha256 = "1bfgybl30pgmjzvxiisy0bm6anh2nif2gc67a43ij0gxmbiigwyd";
+ };
+ "b20c27d04963b4b8e0c5dcfd81e51dfc59e30db2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b20c27d04963b4b8e0c5dcfd81e51dfc59e30db2";
+ sha256 = "1sfrx4dnqmp5d7j7xid8p0iv6fglbv7zsas1d1ig0knda2gc5c05";
+ };
+ "b24bbd337d9a9cf1085d4cd1df1e43e928749b90" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/b24bbd337d9a9cf1085d4cd1df1e43e928749b90";
+ sha256 = "0qsi9g0vn6q49w8xkfghkrjhb32jczinnjiyp5isyb19802zc6vm";
+ };
+ "b2b40485507860ae0f1ba756693b78123347a60b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b2b40485507860ae0f1ba756693b78123347a60b";
+ sha256 = "1y9i6ly60x5cyqf429ay00sy3f796ha65wcinjvsmixpgsqivm8h";
+ };
+ "b33175575bd5fbb07b2308fa24fbf8f548763435" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b33175575bd5fbb07b2308fa24fbf8f548763435";
+ sha256 = "120489jn9bnsj3v4v6icl3pvcpzm27g3900l3k8f263b8qz52jpy";
+ };
+ "b33dbe936d08959ce00d8d551c9861052b05a0e3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2468936-39e1c39556f84e60be8d850c452aed67/b33dbe936d08959ce00d8d551c9861052b05a0e3";
+ sha256 = "13l63iipsscfz4iqm9jsp68y0w1l2pmmg2skv5mnmlfm4ryq5dc5";
+ };
+ "b3643e64562cf8928fe74794820c500f305fac17" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/b3643e64562cf8928fe74794820c500f305fac17";
+ sha256 = "1gy3p72p0v67psb8n5gqmw6skxavcamq7c5i3mgc5pmys2jmspqd";
+ };
+ "b386d93988dde07a87de09757eacd3a2ecfd6202" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b386d93988dde07a87de09757eacd3a2ecfd6202";
+ sha256 = "1nmsqsm0g8zz3x4x5h3m2nf5ii5cqpr5x3kpcs5x9dpcsz1z5q9f";
+ };
+ "b3a267c43c45f392523e300a6f61318f4ae52d99" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/b3a267c43c45f392523e300a6f61318f4ae52d99";
+ sha256 = "1grivshi7cgmin5cab447s30byjlapnlcg010assxx36vgkhpihp";
+ };
+ "b3ba54dd3b4a9c7c235223aca9ad7d6007559484" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/b3ba54dd3b4a9c7c235223aca9ad7d6007559484";
+ sha256 = "15as68yknbf35zv5638qfc8j4pwry8zbmhn8k0ycjzyi7c5gqqpv";
+ };
+ "b3df044bb928c0123e3067b6ca07bc8db2c7c93c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610298-3f4939c916b54d799ac5de807895697f/b3df044bb928c0123e3067b6ca07bc8db2c7c93c";
+ sha256 = "1zcc27kh9mwhawpkfxishqhkngwp0ixasw091g0ydxvsawq7wikb";
+ };
+ "b4179284c669b70deca0e515159443b89dced17a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b4179284c669b70deca0e515159443b89dced17a";
+ sha256 = "1yi9jlqh5chhq5zrsi6581d20hy4wva56dwvik7p5azcwkv7jh2i";
+ };
+ "b4411a92ba0b237e9dee0988897930e64daca1a7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/b4411a92ba0b237e9dee0988897930e64daca1a7";
+ sha256 = "17ffzs8zmcwf3znbc8jzja6db4kcgj4mnzf90g061k6bx29rrnxi";
+ };
+ "b44f92d2adf2245433cfea594b8718a8a1d0935a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b44f92d2adf2245433cfea594b8718a8a1d0935a";
+ sha256 = "0r5mqhyn811cbwspbi6l9yssx2w8pg6brv52g8qhwjiapr70p6xf";
+ };
+ "b453a1dc5c79a3ef309710fa63d80177fdb4c947" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b453a1dc5c79a3ef309710fa63d80177fdb4c947";
+ sha256 = "0c331fw0hzzh15b0s1i0x52bmdlwwzyjxr9gj1rflm9i0h83xqk6";
+ };
+ "b4815536b7d3c4f5a1a07bf7a0a85f780d0a9a8f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2616691-982be94b99b442419e99de37630ca843/b4815536b7d3c4f5a1a07bf7a0a85f780d0a9a8f";
+ sha256 = "18r4lblc3zg86sfj27izlbgjdap2aw1hhx64s9aykj32k0slhq3k";
+ };
+ "b49270a6fb0733c3b9a3e6627fdc96c5b2b400f7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b49270a6fb0733c3b9a3e6627fdc96c5b2b400f7";
+ sha256 = "11v6h8xgr5lj7x8aakirdny73fsdidshg9ijhck7lq25sqrpg681";
+ };
+ "b49ba6bcffb62e7245700758aeb276ae404637e1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/b49ba6bcffb62e7245700758aeb276ae404637e1";
+ sha256 = "083hj8s2ihr85gb1lpy6zy2xfd7ilr3yr46jvv62i2v8v551y2ri";
+ };
+ "b4a7011b1f4b663e34e08b5caa1fe927463eb914" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2615623-07d97909df1d48be99bb54a411313382/b4a7011b1f4b663e34e08b5caa1fe927463eb914";
+ sha256 = "1442aqg7ds4xxq80jsk7y2bhj2dgnm4bk8ma0kcdhy8qnmhwwvz3";
+ };
+ "b4b01b3870e9301073475bb924e5463d76e87c0f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b4b01b3870e9301073475bb924e5463d76e87c0f";
+ sha256 = "0720v8f1mgqrkxgdk85w3bj68kai90xy6i5gc5b9sbg3dgw1giss";
+ };
+ "b5b76e5c16852517072b42a8cb51945d692252b7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b5b76e5c16852517072b42a8cb51945d692252b7";
+ sha256 = "0cxz5vh3j0mf2vfr94v535zl3aa41m0ynydw3phmi45nws9rqck1";
+ };
+ "b5d004587689d2ebd79e34905d174a376e575f5f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/b5d004587689d2ebd79e34905d174a376e575f5f";
+ sha256 = "0gj82721n05pymy3fpghics0v2pi5ck1liqv0d6976y89anz7vlj";
+ };
+ "b63ccd1617b08574d0129948ec7ad1e48f94a220" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b63ccd1617b08574d0129948ec7ad1e48f94a220";
+ sha256 = "1i1l5aq5da080145qxraaj8mh5hpjwk3l6cdl1k3acn3y8rdyb27";
+ };
+ "b66bb0fd25eed1110f4b97f5f4c3cccd294cb884" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/b66bb0fd25eed1110f4b97f5f4c3cccd294cb884";
+ sha256 = "166m1j21yq89qpf3g8h7rdkcdzcnhcj6aps29n5yx1zgay6kq9sd";
+ };
+ "b66faabd2faed41ddcfaa83fbc45e1c038712800" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b66faabd2faed41ddcfaa83fbc45e1c038712800";
+ sha256 = "0lg35984x9q9y0binxrkdwnj4c910nj8wj41bsggwsmfdxz3vi1b";
+ };
+ "b6774cdd5b050cfcaac3143c0a8f89705c6bde71" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/b6774cdd5b050cfcaac3143c0a8f89705c6bde71";
+ sha256 = "0xllvgabdrafyy0gh1plqnzbr9lwxw5xn357dc4bpz7a8nllnzpl";
+ };
+ "b6aa88050eb1fb1e9317e28c1342c6ea4ab7dbad" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/b6aa88050eb1fb1e9317e28c1342c6ea4ab7dbad";
+ sha256 = "1yxxvjhrj20m6jj26y53azikjw1jmdb1sc0l5876bkmwadl7rkyh";
+ };
+ "b6e51c5ce4619cf24deb50699e19457246a65fde" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/b6e51c5ce4619cf24deb50699e19457246a65fde";
+ sha256 = "00q6pplg3rq5wy73nj9gi0h14dvcnvsi0b51xbbbsvd6qnpgf9in";
+ };
+ "b751385c56ed5ce096df337d0a736bdb517071c0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2468936-39e1c39556f84e60be8d850c452aed67/b751385c56ed5ce096df337d0a736bdb517071c0";
+ sha256 = "134snqqpd11yd05jgw199fpv41pnw94kh8fig3gmkv2rc0ppdrqc";
+ };
+ "b76100c79e2052b6a9156a3a3b44dc46b73ba80b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/b76100c79e2052b6a9156a3a3b44dc46b73ba80b";
+ sha256 = "02igaa6r8rs8qk7235jvbryycz2v3cl4pd08ifwhg471w65zrwz9";
+ };
+ "b774b3a6af176fe17e8988b8ce8aae6fac0081c8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/b774b3a6af176fe17e8988b8ce8aae6fac0081c8";
+ sha256 = "1vjz9m66hfr3anm75vfb815i0al393rq0y0w0nbi8l5nxayl2fr4";
+ };
+ "b792f771ba89b6e97aa0da38cab7975e31240901" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/b792f771ba89b6e97aa0da38cab7975e31240901";
+ sha256 = "0wjqqiaj00ngyl6mzxqqpk4jbb4xngk6zcahs9jgiiwvr0fs31gr";
+ };
+ "b7cac0682cd1b758954a6990731d98ac60e931f4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/b7cac0682cd1b758954a6990731d98ac60e931f4";
+ sha256 = "1sjhah3cj62frm38rqs3v3mm0jmab39qx0ys39kgq15wl4gyhrs3";
+ };
+ "b7d98916d7231a6cc8fa4b5ba6d9a123af873b7c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/b7d98916d7231a6cc8fa4b5ba6d9a123af873b7c";
+ sha256 = "1y0iwjm5hkwqxz17b69xfvl200nsyf86i2fdm4kcyf8wq99a905r";
+ };
+ "b7e5e66ec2b311c32f25563c90d3883eaf9d7f01" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2386906-35f20c2d3732491bab9f172643aaf695/b7e5e66ec2b311c32f25563c90d3883eaf9d7f01";
+ sha256 = "02c5s02nj5zab4w019bawz9xf3z253w2kjwsnxx0pjzcgzn5dsic";
+ };
+ "b8063b5f31f092324c94ccf41e3dbbca020714c6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b8063b5f31f092324c94ccf41e3dbbca020714c6";
+ sha256 = "0sx6wmnjqmka3838541dwi668lxdyf4z8ddyy3x94qcg7xr67hx8";
+ };
+ "b8147ae4f4e48c66013e2ce160e307bdbf8bb643" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b8147ae4f4e48c66013e2ce160e307bdbf8bb643";
+ sha256 = "0p9sv64h64pjq8g2p2wb7yvmfma1d3dyp1p26vq9pxyx5vaj6c0h";
+ };
+ "b8280b60d889420165c4849a608f2f77a636a96e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/b8280b60d889420165c4849a608f2f77a636a96e";
+ sha256 = "0vqj80qdwi1dfxgijzjgk9wwfkvf07khgyjjw05801vkkjj75nyb";
+ };
+ "b832b94004977756477412eec3019f6cb37e62d1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/b832b94004977756477412eec3019f6cb37e62d1";
+ sha256 = "1vja9zxjlil78d20bmwq1cnzb99q2k3g2g75bpz51v6g5smnwwzm";
+ };
+ "b8394a23db9e6efd8594d13cde39d95e60a2b46d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/b8394a23db9e6efd8594d13cde39d95e60a2b46d";
+ sha256 = "199qs2a3ii5353ijcg7vrd2qjz1ig0zs58qpywjkqq5gcx1h3d3a";
+ };
+ "b8692885cc79308225c50faa58244e7006dadf91" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/b8692885cc79308225c50faa58244e7006dadf91";
+ sha256 = "0dmjw6wr6mb0y6ika02fnqngk9lghkm4hdwl2khlhzp25hn2ki6f";
+ };
+ "b88c8f32e5693eade30c534bf94f295df40e1d87" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2474673-cc4b4abcf8d5453d9c14a5ad304063e3/b88c8f32e5693eade30c534bf94f295df40e1d87";
+ sha256 = "0br9zqlnczmdcnay2lja9j6wahsi13182jvd823q0c5rz8r7y9ha";
+ };
+ "b8b07927a65a87a42232ceb51c98a8b5d6893348" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b8b07927a65a87a42232ceb51c98a8b5d6893348";
+ sha256 = "03kgb1qbibsrhf1h1xx6zlm0dckjymxbjkd0rr3r896xg10rgr5i";
+ };
+ "b8ddc52b5bf66003c85e7e259287f4741bfe8119" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/b8ddc52b5bf66003c85e7e259287f4741bfe8119";
+ sha256 = "1207ryz0lz26nw1vjnhicxn94xzf6i55h312xqgl3w1mz3l6m4pw";
+ };
+ "b8e153475935a408d91ca55c8e98030d5cc99ceb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2435859-13d694fe2b4f4b1b838326ec956dab4d/b8e153475935a408d91ca55c8e98030d5cc99ceb";
+ sha256 = "1rv2kj03nacyhh3bddn2vsvh98ld3f1rizx71hg5q5qx5ikihabp";
+ };
+ "b8e9ff6bec00725cf169b237001ce72af9342600" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/b8e9ff6bec00725cf169b237001ce72af9342600";
+ sha256 = "19cv6afmrykdhfwci6532yx560pc1l6a4z9k7fjh2y9zcgz5v38h";
+ };
+ "b8fd57460311ef331feabf98c510f76f80053855" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/b8fd57460311ef331feabf98c510f76f80053855";
+ sha256 = "0xki6y0slv4g5wg8z323pa09z2s0v14pkmkas9h7j1z8jh2wczwi";
+ };
+ "b94c9f0d77457d47a979c48f936f9be3c11930e0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/b94c9f0d77457d47a979c48f936f9be3c11930e0";
+ sha256 = "1nlg8bv50idaxxhawrxnwdr9s2cq31ac46s383lqmnxmbiyinx9q";
+ };
+ "b955f5ba1db0d7a6f27b22a2a79e008593d687e4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/b955f5ba1db0d7a6f27b22a2a79e008593d687e4";
+ sha256 = "0ywsp3g116w2cbavbm6hiv6sm60zm74lix5j1ipliq9nlkkjfd6a";
+ };
+ "b9e5928d9d628a4f6a0795a3f4947e59fd82874e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2468936-39e1c39556f84e60be8d850c452aed67/b9e5928d9d628a4f6a0795a3f4947e59fd82874e";
+ sha256 = "1p3sb9hzqi7isqpw3a4mzra1a56qrzvhrsc483qb8dpj85a134cr";
+ };
+ "ba2567e2e68ba6bc101c3614005d68fd1d0ac2c0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2624272-fa13935f6af5491e88fc623f350f6d60/ba2567e2e68ba6bc101c3614005d68fd1d0ac2c0";
+ sha256 = "055hiysma8dhw6fxclbc87s8r24sqrs8hddri0alc3x3ckgx1xvr";
+ };
+ "ba59a62dae63fc2d143e0cf4c7c65185055b6cfc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ba59a62dae63fc2d143e0cf4c7c65185055b6cfc";
+ sha256 = "0ds72np4k5a83wdianr988wl3l83ml4mmrv7xhq7knmxga11zgww";
+ };
+ "ba6332a94c99ed09c2a9e428e54763da5b1576f9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ba6332a94c99ed09c2a9e428e54763da5b1576f9";
+ sha256 = "0hq06wfzqwddzmji8iwl93gn1h7bsrm5wydfhd2jdkvbchdjrng9";
+ };
+ "ba6a5b201e1374856d563e960e0a5f7a935cf37d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/ba6a5b201e1374856d563e960e0a5f7a935cf37d";
+ sha256 = "0i3lsazrz4d5y8k4569jc9qyr45r5mkp1bkm705ah2ykli1mwvgn";
+ };
+ "ba8f3a342d5ba472b330c322376f9f3d7921dcd3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/ba8f3a342d5ba472b330c322376f9f3d7921dcd3";
+ sha256 = "1m04gn311csvzbn4qmass7v0zpwgc6gb9bh76xk1nqirzm1sqjjx";
+ };
+ "bad3d27e656261f89d7bfe9409032b1623077a17" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/bad3d27e656261f89d7bfe9409032b1623077a17";
+ sha256 = "0j6q8pjr2iazpk2ljdxaa0f4m4nsw1bvgpqbnl3l7s8514r98yj5";
+ };
+ "bb049becabe678eba91b10ef8dceac666811ba85" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/bb049becabe678eba91b10ef8dceac666811ba85";
+ sha256 = "1gzd6j43gq4w5zrib4ww8ipdhkh8zmzfkiq55wwmfk6jpqqxyaxv";
+ };
+ "bb258d693db2159bec8923eb69e53769e0082936" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/bb258d693db2159bec8923eb69e53769e0082936";
+ sha256 = "0pgvj37zvrrxrpkd3a3iwp7d2kyd5c854vsbksq24cpjbdmdiazf";
+ };
+ "bb2be5134bddeb480f0a728bd702988afdd4811f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/bb2be5134bddeb480f0a728bd702988afdd4811f";
+ sha256 = "0z85frk7i22ql1flrnyipp5vwlyy2j5fw6nyx04pjhv8i0d86ims";
+ };
+ "bb5ab39ad700a8ef35bb3bbd27b4c382839c69ea" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/bb5ab39ad700a8ef35bb3bbd27b4c382839c69ea";
+ sha256 = "1p8q27cjb4mxn8y3x4l61z880bxs0swn6a8zgrmyzdmcxxnrkbck";
+ };
+ "bb77f99554309b937e1c3bc3c0569d3ef0568a00" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/bb77f99554309b937e1c3bc3c0569d3ef0568a00";
+ sha256 = "12kyhxb2sxk0n0j7xnsqccrmf6svsblpmg9hgx5p84qr1wwi3l8g";
+ };
+ "bbb17328cc23f4bf942377d41807a13a7b852229" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/bbb17328cc23f4bf942377d41807a13a7b852229";
+ sha256 = "13nj59zrhss1z8czcahqsljdgjbpcrn7ajyz2v0nvhlxv5zvqk56";
+ };
+ "bbcf231dbaac1a61eba6aa76798c72923c7ddc56" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/bbcf231dbaac1a61eba6aa76798c72923c7ddc56";
+ sha256 = "1zqi6x73wj86nzsnq3gc19f25s0hzjc72zhhn3k2mmmzg6c5rk06";
+ };
+ "bbd3ed12cac3a5812ed814525f0d0018011bcd2f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/bbd3ed12cac3a5812ed814525f0d0018011bcd2f";
+ sha256 = "13k4nj6cls0bm9fbfznanlpaxi6rf5cl96fjzdh5knakhr5pg4vb";
+ };
+ "bbdc2b6ed549549505ee1860ea5068ae5bfc7db2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/bbdc2b6ed549549505ee1860ea5068ae5bfc7db2";
+ sha256 = "04vf62h854l2bby4a101c4wcngvzh04n0agv8kckjbxd4484kqkh";
+ };
+ "bc249eda4e4d0e13fd0e6a660e8cb471ace80c0a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/bc249eda4e4d0e13fd0e6a660e8cb471ace80c0a";
+ sha256 = "01saqqwf52fg5cv3cbf7kx80pa5lp6n70wjc1vzkx322sz1d37wc";
+ };
+ "bc927fee31049f8467d1a02704ac805cef57cb71" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/bc927fee31049f8467d1a02704ac805cef57cb71";
+ sha256 = "03zny0fk95qr83wrdhhnb6knygc8m4y4z1b45m89gvxjz3s7qz9g";
+ };
+ "bca8b698f2e07aaa627a4e94587fdef669602b23" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716370-1fe4be93d0274863a43a7797419557e3/bca8b698f2e07aaa627a4e94587fdef669602b23";
+ sha256 = "1rdpv3fci2l9q3802wajkr1b8as0g17g1mnzyzndsr68jwafn4sf";
+ };
+ "bcb92df46de5890dc5538dd7f0256a6504653c01" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/bcb92df46de5890dc5538dd7f0256a6504653c01";
+ sha256 = "1rfdcc2ap488hr67sbpdafc3g4kpxhqv49yjqm9aygj9pb237amw";
+ };
+ "bcc1b9fa37b696e2b1e09da24ada79401007ef3b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/bcc1b9fa37b696e2b1e09da24ada79401007ef3b";
+ sha256 = "1g113bj35nm7nm0xabfdsrbx5p02cqynp2xr5m656k3iln0q57fg";
+ };
+ "bcc352fe44e93b30ce97deea8345406542f840d7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/bcc352fe44e93b30ce97deea8345406542f840d7";
+ sha256 = "0m5vf9x58s47bm4x1vrrs0hrv4pjiy1a6qxx36qrsrqfv6shb6k0";
+ };
+ "bcd0cabdfbee7db486a249459af2c96bbe597c9b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/bcd0cabdfbee7db486a249459af2c96bbe597c9b";
+ sha256 = "1gl16fgzp7ljwablwn7n7l6d27m2vfiwycwpqag3nmvcqmsa236c";
+ };
+ "bd11c74bd2655f16eff2974a9ea3299f642a52cf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/bd11c74bd2655f16eff2974a9ea3299f642a52cf";
+ sha256 = "168rzxjij3dpqjymrqyqqgablffs3mgqfhmi4fnd31mpq1cmx7lf";
+ };
+ "bd969e12b2d210ce0b8817860e18034a3a30c510" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/bd969e12b2d210ce0b8817860e18034a3a30c510";
+ sha256 = "0yal1m4cpkd4nqfarccf5z7szaz46k1cflv9v0797dlk81zgrwjh";
+ };
+ "bdd022a7d16d25b6d56f693ab8ddb909273da156" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/bdd022a7d16d25b6d56f693ab8ddb909273da156";
+ sha256 = "1zqrs5nan5ipaxf392f25ynyppxfc5zq9nafq15ic4z7a5az2nz7";
+ };
+ "be2367fa9ac1bcb508f247e19ea18ae92e277583" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/be2367fa9ac1bcb508f247e19ea18ae92e277583";
+ sha256 = "1pffz2clg1ql5d14an4y6g6i148vxiai2kq2hzkbvv23hgmhczlz";
+ };
+ "be250ea55f51ad2bfa64247db8ab7f7ba22bcc99" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/be250ea55f51ad2bfa64247db8ab7f7ba22bcc99";
+ sha256 = "1hrj2ggi584mlc8nxpniczsyj4xcgygf3adi7xql5vmmb5h8gvim";
+ };
+ "be6492e4410913060da03bbab7fc0ce412e8bb38" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/be6492e4410913060da03bbab7fc0ce412e8bb38";
+ sha256 = "0mpw68bffg01n0g5706nllhck685n32fy1fbg4fs6hk199ddz252";
+ };
+ "be6c1ac56f7b742b9f733b29f46549c5b46f7644" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/be6c1ac56f7b742b9f733b29f46549c5b46f7644";
+ sha256 = "1m4kszd8nqb7xwgmbf14d5ndfpjf1li2w7wsg00km3d5plsl1458";
+ };
+ "be8aba4af0c0804bb17d6ce660ccc3973fb6c35d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/be8aba4af0c0804bb17d6ce660ccc3973fb6c35d";
+ sha256 = "0y77nmzw5hg874iw4y69qmyiz5xg0kr685gprs4nhx09ia4j0c91";
+ };
+ "bee8e68740f8d36a56d9f09e880ff29b5adf0496" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/bee8e68740f8d36a56d9f09e880ff29b5adf0496";
+ sha256 = "1xkdq0792shkjmgf48j4cy4pf3d710zx91g2xmbjfax892n5k1lc";
+ };
+ "bf03069e8d65f6b224763824352cf754ebcbc339" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/bf03069e8d65f6b224763824352cf754ebcbc339";
+ sha256 = "1kv8kfwh0bki0zdfimhkrhib56p2bj02by25dmhqvg39r480rs36";
+ };
+ "bf03cada636a04cf211c2e10d586f47b2dda7902" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/bf03cada636a04cf211c2e10d586f47b2dda7902";
+ sha256 = "085zw12vjkdg9r3lki1wnzm8981d7mlzvsgihb7v34zh77idy2vd";
+ };
+ "bf30590744b68cebf21b6124ffdccdf6964f7163" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/bf30590744b68cebf21b6124ffdccdf6964f7163";
+ sha256 = "08dd0mg3p60gmzqh0dyfj65icyaa7q44daidqwdbd62h9yxxf9c3";
+ };
+ "bf49c9dd965903acaa8c00eba5613c4de5fe0250" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/bf49c9dd965903acaa8c00eba5613c4de5fe0250";
+ sha256 = "08ga8yhh586h0yc0i2n3a28wmwbzlhz57va40rq269dx93gap3mn";
+ };
+ "bf4dda70b776a7efb6c3302f7abb3d24e90652d7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2579917-73d6be760fd9486fbc9abe582732eb6e/bf4dda70b776a7efb6c3302f7abb3d24e90652d7";
+ sha256 = "0m11crr85b0315yvb4n4pwvzg24zdwgqzw0c5yf1kvjdzkm1z8w7";
+ };
+ "bf920c60bfd2a78e29432783f56c62f419515f85" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/bf920c60bfd2a78e29432783f56c62f419515f85";
+ sha256 = "1rvkpgzckmwrn4bndlq6zc38kc0wj4y6lv0xv26harw3z467fzbp";
+ };
+ "bfed7e9e92de3969ace22aefdf5d85a45b2068c5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/bfed7e9e92de3969ace22aefdf5d85a45b2068c5";
+ sha256 = "0srdb9aahfik14g4s2b7j6ff73g139iqx36fnm86nalf09digdnp";
+ };
+ "bff70448477367ce462c3ee06f051b1f047549ad" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613445-f4cf430b68ba4dbf80d97361d7c5dd6e/bff70448477367ce462c3ee06f051b1f047549ad";
+ sha256 = "1z2jva1iph244fay5f84srg2wpji4gyfv6qss3130i0yzwlbkpqd";
+ };
+ "c0078092106c7019d3c1a17afb492202a59101b2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2468936-39e1c39556f84e60be8d850c452aed67/c0078092106c7019d3c1a17afb492202a59101b2";
+ sha256 = "0k2i5d1lylbjq7wzi7hzazq5hhyiav9yjpc5y26dz5d2l06nc43i";
+ };
+ "c007855aa7a0479a01364a56f831920abf69f840" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/c007855aa7a0479a01364a56f831920abf69f840";
+ sha256 = "1cjd5amlgpgqr7fm98g515qd3hl169mw4lg7i7hv9h4d6jrynxrh";
+ };
+ "c02b5a7580fbfb67eb000c6b641d7431e90ce87f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/c02b5a7580fbfb67eb000c6b641d7431e90ce87f";
+ sha256 = "1iri4r9nrv07sd060d1iy31pp584svm3470rxb0a82wdifh592k5";
+ };
+ "c0476a6a0442712d3245a0babbf62c40e8e75b95" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/c0476a6a0442712d3245a0babbf62c40e8e75b95";
+ sha256 = "134j96dp2yy1n19mbh15cdbwwfi5kfi37bb36vc3jbpbispgbiw7";
+ };
+ "c05811bfedda9e7307a79810ed22e36c9b1e3639" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2728442-495b054ed4db444082c281db65b26f74/c05811bfedda9e7307a79810ed22e36c9b1e3639";
+ sha256 = "11jrzgkzjhnvzl26rq4cg64rn1w354fivkp0kmpn4l323ih89hlw";
+ };
+ "c059220dd6a95113a01bfba79f5ed3d5e1766535" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/c059220dd6a95113a01bfba79f5ed3d5e1766535";
+ sha256 = "1hlhsmrqkmivz7cgsj1r7g041fkgjqvff5dcafm6zfh9invjminv";
+ };
+ "c0890e191c0abbf571bc8e71dd0996ecee557a66" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/c0890e191c0abbf571bc8e71dd0996ecee557a66";
+ sha256 = "0gnmkajymhhvkygd35qbqbdfza3msjpsziwapr4l7fkzwn9nw4b6";
+ };
+ "c0c041729c29323273ff25722a4fde1aa90a2b9a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2388509-1346da53605048a5b86087c481124153/c0c041729c29323273ff25722a4fde1aa90a2b9a";
+ sha256 = "1kg32w0qqnsz45fpwj9vqcnnvn03f6m7ngswi5gni3asg3xxnlfa";
+ };
+ "c0c56d20bbce88d3e626d132185502535d37ae8c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c0c56d20bbce88d3e626d132185502535d37ae8c";
+ sha256 = "1zijd325z8zvmz78qi34vn7bwc6glw0bv07av8kyxxl3q08yyi5y";
+ };
+ "c1023e403c67693d0cda4a7067f08cc4868b331f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/c1023e403c67693d0cda4a7067f08cc4868b331f";
+ sha256 = "1z1ridxkw4v62r7wpy8p3a2pvbbk5s6fvnb3pj6risyd2nalnx84";
+ };
+ "c1348ebfc2f62edbbaf065a9987835d16f3faebe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c1348ebfc2f62edbbaf065a9987835d16f3faebe";
+ sha256 = "1rbz1jawc4rga0r0153w48n10b5gvamv0356iw79pjag6naylb2z";
+ };
+ "c1621ab3068dbffadc595d03ef2ca486f7a5d484" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/c1621ab3068dbffadc595d03ef2ca486f7a5d484";
+ sha256 = "005d8nk35149kqw2jy0bmfkgs036ymj6khdpgyhybafyqns3kxl5";
+ };
+ "c16c7518b7bf0b8838fb4ec5d024020f7d7dcd2c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c16c7518b7bf0b8838fb4ec5d024020f7d7dcd2c";
+ sha256 = "0v3frxr6pb15y1m6lvkblhhy08k67vbcnjxb0r6pldqqgr10w74d";
+ };
+ "c18d93c3fb088e46dc560285a889e191b2350e3b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/c18d93c3fb088e46dc560285a889e191b2350e3b";
+ sha256 = "1gpivr38hx21v5vclbgrbzjdg0ly1ksrdx03vnkjzm2f2564qany";
+ };
+ "c1aea1c747a9068d40e613d94eaf43b511d8008c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/c1aea1c747a9068d40e613d94eaf43b511d8008c";
+ sha256 = "0b7vs9yh0hl73zn5q7lxgwj898rh3qmphsmrab9b2byfbj4mk76k";
+ };
+ "c1d09face93090ba4fb6700351d2c5202a35a2f7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/c1d09face93090ba4fb6700351d2c5202a35a2f7";
+ sha256 = "117cl93bgd91lpp7xd6sr87xcr1j8bsam637khgdcw8mj5k3npqz";
+ };
+ "c25bec168e93ab9183b4187a3172187d41e8b094" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/c25bec168e93ab9183b4187a3172187d41e8b094";
+ sha256 = "0pgzkljpjj8r7l7b6bqqrvqhqcv67r4drbdlq0fqw1cgpspvk9zi";
+ };
+ "c260984388b36733a83e5c5a2d1bddf9202de51e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/c260984388b36733a83e5c5a2d1bddf9202de51e";
+ sha256 = "1qd8vzscnfygqbmwxf61df75j565jr052igscsrq2jy79ls6gndz";
+ };
+ "c28e42653d329ca15b9b65ef130aa7e18df44da4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716370-1fe4be93d0274863a43a7797419557e3/c28e42653d329ca15b9b65ef130aa7e18df44da4";
+ sha256 = "0bsbd40nwyx5592fs2clf6bf7am52fswa68lkpqdimq5srabwcyf";
+ };
+ "c299da387c827b828bdc3e81fb617c8992d1ffbe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/c299da387c827b828bdc3e81fb617c8992d1ffbe";
+ sha256 = "1lfv6s7cjfibbyn89pwc15xfmz0ismcsd8hjna9a9isbi9bfqf8r";
+ };
+ "c2b5d2cc4aa67357f3ee15def8c1d137016f723e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2706207-4f57365c766141c988cbd0106cf38f5c/c2b5d2cc4aa67357f3ee15def8c1d137016f723e";
+ sha256 = "0y15qbgnfx0av2qlnff4xj0n1njnq00agxlr7sr0xwqabkkzlm9y";
+ };
+ "c2c0e9b8e4352e01ad72f4a6d2ce4e6c0c26878e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/c2c0e9b8e4352e01ad72f4a6d2ce4e6c0c26878e";
+ sha256 = "1b50br0m1ff7haidcqhnn3ggxa0jf57bsnzq1h90320ciszkk3rj";
+ };
+ "c2d1aa057a438fe3a8996316005b4f584d087df7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/c2d1aa057a438fe3a8996316005b4f584d087df7";
+ sha256 = "1fdgibvi2aiy9xd3xjvv6fm5qvz2bsmax9v648sb8gdlvp1a2s1i";
+ };
+ "c3390a1d1d84fd03f5aa0a105422b669c9f6ab91" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/c3390a1d1d84fd03f5aa0a105422b669c9f6ab91";
+ sha256 = "16gmb4j6ky53h7lzyccd59aidqxyvjiq9bh43m326jwvbnmcr7lg";
+ };
+ "c3a4ce7861427e417e289e118620ba02ecec6995" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c3a4ce7861427e417e289e118620ba02ecec6995";
+ sha256 = "03qqa0w3p8isci9243jsivlrzzw0scf5w6371jfs4h109fw0qg6b";
+ };
+ "c40ca2cfe00fdc980844d0a02dfb2571b7fe48c3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/c40ca2cfe00fdc980844d0a02dfb2571b7fe48c3";
+ sha256 = "0cxr3qncsx37g69labw8lz622yn9rjxybagd6wrf1bgvacg9f8kv";
+ };
+ "c430a47ee45e5afb9a0831bf2ea38b466b497549" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/c430a47ee45e5afb9a0831bf2ea38b466b497549";
+ sha256 = "1bz6j9s06jn1nwyiczama8axg707vd5ny6p44i905z7z2r46s5nj";
+ };
+ "c431002fc0e408cf00a8650910c2f4bb3b85df53" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/c431002fc0e408cf00a8650910c2f4bb3b85df53";
+ sha256 = "01dc7m14cdf4dmc389d3wng39chqj7wiisxzzm83knbjdihrhfrp";
+ };
+ "c461017451f8ce7d5833a200e5d6fa969138fc0f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/c461017451f8ce7d5833a200e5d6fa969138fc0f";
+ sha256 = "1bm0alxlmrkzrrv23s2qab55wxccl3vkhq2srzcw2fnvi407gzif";
+ };
+ "c467b9d4b67580014c04e62e822a99d7cd7a6dbb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/c467b9d4b67580014c04e62e822a99d7cd7a6dbb";
+ sha256 = "0jw6ppirc57wqn41x1c4c9x6i8xrxy8yjwk999rz0swf4dwambx0";
+ };
+ "c4ac8e5f2224886f32727c69401d26eaf54e6d17" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/c4ac8e5f2224886f32727c69401d26eaf54e6d17";
+ sha256 = "05lsv3lpg7sa57q6vm98iskxmmza487nppahzqnc4g7h16k7x0v9";
+ };
+ "c4d70abc45c0067c48d200a7195e87cb07990867" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/c4d70abc45c0067c48d200a7195e87cb07990867";
+ sha256 = "12lbg924x6g1zq6bq0ah54k1vgj5bplayizb4ihrn28sgfmc9y29";
+ };
+ "c54921d21c20e7c27fee9dadcf212291b32f32de" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/c54921d21c20e7c27fee9dadcf212291b32f32de";
+ sha256 = "0yb7amg4pnaz7fjqwmjsydz6wig9rqig5wv74zpmc9yalxyfym5k";
+ };
+ "c57259f627108af7691176d6a5ab0a8bdb504fe8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/c57259f627108af7691176d6a5ab0a8bdb504fe8";
+ sha256 = "0426ssgyxinyvqq69hcah4ddl249ic412bdvlgwfx10m636h7nk4";
+ };
+ "c58fa62bd83bf317b52d835b43fe31cb0a5fed9c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c58fa62bd83bf317b52d835b43fe31cb0a5fed9c";
+ sha256 = "0s66g3ggy0zz70p6vs4qwkwgv3jnk2b2y3a7rh58385gg3dk4ccm";
+ };
+ "c596e1a5af08148c69666476cb7a935d5b860e04" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/c596e1a5af08148c69666476cb7a935d5b860e04";
+ sha256 = "0sglq3myrvkw38gah4pgpslrsfrx7j1h9dxbx8dbykzjzprf3i0j";
+ };
+ "c620a0e05618810252d4b0f8e82fe97a677dde26" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c620a0e05618810252d4b0f8e82fe97a677dde26";
+ sha256 = "1i95wlgkq1d3m7k4qdfm5h6vs2m0f45d6hpcg3dj8jxy5zvqsgmq";
+ };
+ "c63b8b65198dbac3e3764c69e57b85f011332ea1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c63b8b65198dbac3e3764c69e57b85f011332ea1";
+ sha256 = "0ybhwi57ic2c0xshlj2jw9y0rmmnn9yy22dff4c51mj08g9xqjr0";
+ };
+ "c64839804e94445b7c1ac409d5d0f8f1ea36e54c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/c64839804e94445b7c1ac409d5d0f8f1ea36e54c";
+ sha256 = "00s8l1sr0cfkchqyhfvp0ix3fpf10a2smj93xibimkh9lfaz6i35";
+ };
+ "c650d7a313cf559c35793ae4885bfb7ab7e24cd2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2597174-0975f975d1f0463f931b68ea4b0ef6d0/c650d7a313cf559c35793ae4885bfb7ab7e24cd2";
+ sha256 = "1j9rkf1zys5sygijb650s5si25s95hfh6v5z2ahii1gylkrn7lh5";
+ };
+ "c653b9ebfd67dfad854b519e55534735d82f73f2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/c653b9ebfd67dfad854b519e55534735d82f73f2";
+ sha256 = "0s2fq88ay1080qqf3qlvh7g0sddbbs8a0jvb6992wbbb0y23839a";
+ };
+ "c705af8ab47f089acd3efa03df30ad116079209c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c705af8ab47f089acd3efa03df30ad116079209c";
+ sha256 = "0dmpf4agrq74ga9sgp8qlb4wsps3fg33jiv0x8mj82d9h064y4li";
+ };
+ "c77e5ef4d0349554ba75af77135182db3577571a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/c77e5ef4d0349554ba75af77135182db3577571a";
+ sha256 = "03gir460iljc089y523fqlxvbp7sq1n9v6ldi6ij52fpm6wvzid1";
+ };
+ "c78d32aaf4ea80b2746ac7ad1692b021b1b548b7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/c78d32aaf4ea80b2746ac7ad1692b021b1b548b7";
+ sha256 = "1gwakfigb6bxjjr2scx753kjjvxy32npc5s5l3jqiidw27mbwrjh";
+ };
+ "c7945d9532844fa35363f33da23f208a629dbe28" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c7945d9532844fa35363f33da23f208a629dbe28";
+ sha256 = "1g43sj9v065rvg73jynaycnp3jlw9cngbzr0lv4jyiip8ycd9m7z";
+ };
+ "c7a7c3acf3dd7cd611ae94f5c86473ecd3a2955b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/c7a7c3acf3dd7cd611ae94f5c86473ecd3a2955b";
+ sha256 = "1nh8drrb4sk4sid00m2l41pwz01n752jxn7xcxdjfgf1qri7gmfp";
+ };
+ "c7d451a7ac00e4726f44c4fb551c45dfd4614302" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/c7d451a7ac00e4726f44c4fb551c45dfd4614302";
+ sha256 = "0fmsf826chnq5lsfqgp8ndys4aa6v9gpsq3jcwwak3kl8vni21x8";
+ };
+ "c7ea7e43fc1d7ff54a1a54b74c3962098d7851bb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c7ea7e43fc1d7ff54a1a54b74c3962098d7851bb";
+ sha256 = "0gxk8c51f6hsx98sx6f4laqmcc3ln3sslr8848blqwvnhwy3fqfn";
+ };
+ "c7fb09c7cbdf7c014549eb2b9c1345a0f2ac3770" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2714108-1287c19490104fa7a8ca7bc71daf7ae8/c7fb09c7cbdf7c014549eb2b9c1345a0f2ac3770";
+ sha256 = "1c51kddffr04xf65sykxy8lmx25066gcrz881m7iwx20l5rnlc1m";
+ };
+ "c840da0835818272e18eacdd15f50e802453c69c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/c840da0835818272e18eacdd15f50e802453c69c";
+ sha256 = "137193jraim288jy64k6sinwg4pqhc6cchspxjzzn8h7dzfbmyjr";
+ };
+ "c874ee18eb2aefe1e6d4345996da6c6ce2087d43" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/c874ee18eb2aefe1e6d4345996da6c6ce2087d43";
+ sha256 = "09i5kmida7s8zw8az2b1wxnsradjfv47hiy20fkrdqhpz0ra8lh7";
+ };
+ "c884f0dbf617ea1c10f5b347fd4f19d3d87befb2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/c884f0dbf617ea1c10f5b347fd4f19d3d87befb2";
+ sha256 = "1nhrhkzlvfdb4lp0v2syiwpd13sjx0z390wh404197p31xjwjvyq";
+ };
+ "c88fb38c74260fca80491abeaa7a26fd116fba25" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/c88fb38c74260fca80491abeaa7a26fd116fba25";
+ sha256 = "0bk6g0fns1g08zghm5nf2wipbcxzwprcg106d9rifgsq4w1bxk7i";
+ };
+ "c8fcf9a784756d66ad119b3e642423161380add6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2572690-84e70917b1c64a80b248151191ccd58a/c8fcf9a784756d66ad119b3e642423161380add6";
+ sha256 = "1ixadgvvl3w9wirikl6fsj3g7lkbji4pa67pplys3fxd3rwflzqg";
+ };
+ "c939abca16161626114a6afa440cfb71ae87dc6d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/c939abca16161626114a6afa440cfb71ae87dc6d";
+ sha256 = "1mqhplp4zkxr2qzcl4xdqgh8ng5yhgrmjqsm5g04zlyn1xb46ghi";
+ };
+ "c93c98cb950c9d8f504bea894ad865f29b9991ec" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2528371-50b896349a4f4b48b4cce5ef240b0c45/c93c98cb950c9d8f504bea894ad865f29b9991ec";
+ sha256 = "006lrid8py6qhn21gi6n80nfd4y7v29xpjz8c80q8a4p1klayvkr";
+ };
+ "c93f0a56e40373b70b8f6cfcd57796df6e3e5d64" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/c93f0a56e40373b70b8f6cfcd57796df6e3e5d64";
+ sha256 = "0s7dgwc50q78b20l33ra8wrlxkqf0666ldxqb4isx6bk973yf7kv";
+ };
+ "c9440b326c43f4ba6af0b71b1ca029ae223ecabb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/c9440b326c43f4ba6af0b71b1ca029ae223ecabb";
+ sha256 = "1wzfk57gnly1qafvjcy7jxa5nbq3fm89fjna9h7xfaf382kwviwm";
+ };
+ "c946526ac2560a1cf84cb7a63c24bc9994fed050" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/c946526ac2560a1cf84cb7a63c24bc9994fed050";
+ sha256 = "117i8fkym78xq4ssk9hvhfw51myx69xnxm9zxd8mvsa7yrfd3420";
+ };
+ "c95cdaed781fb020898a671e373b60aa382404ff" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c95cdaed781fb020898a671e373b60aa382404ff";
+ sha256 = "19626mhx070k3myam8g2s9dvqqx82pv7jbrdnnkbiz3kc0i65xzm";
+ };
+ "c96e9cd94a86b222bed132142b65c1d90314445d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2441582-104388acf6d34237af496ee648a9c7db/c96e9cd94a86b222bed132142b65c1d90314445d";
+ sha256 = "1vp5lzll11hhn6qwn21qnidhlr6md2mm4cnafpbgsj7ci5jy9i8v";
+ };
+ "c9b2fa52f0b68b4de48806e71af562ddd9ab8363" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2501204-f81f6b4f13824670853a18474a99a9e4/c9b2fa52f0b68b4de48806e71af562ddd9ab8363";
+ sha256 = "1lhr1k6qj5v1j3h4g6q4cwmswpk96l3v26gbq5hj2alab6r5chvs";
+ };
+ "c9f7bd390be6e2f50469fcf024ace928b624a38d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/c9f7bd390be6e2f50469fcf024ace928b624a38d";
+ sha256 = "1rsbwbgiqgvck30gd86p2sh53gykb68sfgyfpflqng9psffzxfja";
+ };
+ "ca146ad3bcc63037df80affd27568080de042fd2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/ca146ad3bcc63037df80affd27568080de042fd2";
+ sha256 = "0dd3piwj2g5zfiidysy219xvcdypdmdqfccwv0ib4ddb6yxa0csd";
+ };
+ "ca3317bb9d7ae47177c0d9362f17d53c865d8b92" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/ca3317bb9d7ae47177c0d9362f17d53c865d8b92";
+ sha256 = "17vb8vrkc7y3rspnbd6nw34v58ifi8dr206kcf2ah8zpfbpqqkcd";
+ };
+ "ca72923ffc518f8f79ad2bb67a376e8c4e51c3ff" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2791326-4a233957ffc54c94b38c9ceaf84d58de/ca72923ffc518f8f79ad2bb67a376e8c4e51c3ff";
+ sha256 = "0zk6xryzk7d8g0f148n4n2zk92jspi71v530bp50nqpjzclv4j7f";
+ };
+ "ca83db39ca850bdf08a4e3bda07b207534365c24" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/ca83db39ca850bdf08a4e3bda07b207534365c24";
+ sha256 = "10a9vl982ni45wj3mnky56n2yljvha2xic4mf2n3vrmrr1aqxrah";
+ };
+ "caafa6d602fb6dfd386f6eb601ff8ed2b2e74234" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2622402-86d1483fa60742b6be9fd5a0b0b946e0/caafa6d602fb6dfd386f6eb601ff8ed2b2e74234";
+ sha256 = "1r4vjwkkckaj25ajhw3csn351lppwgb46dc6im023dy8lj5fvc5d";
+ };
+ "cad827e1f1025fed382fad69988e6878edf449bc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/cad827e1f1025fed382fad69988e6878edf449bc";
+ sha256 = "0fz5m8ab4xa5zm8n9w8a4yrzhzjfq7wald118r8s50r4fwsnm517";
+ };
+ "cb540e992bfeed51b40d2faa7209ebc16384c2cc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/cb540e992bfeed51b40d2faa7209ebc16384c2cc";
+ sha256 = "145pgs42bmwr56r4fkjf40l24j9imhcf1f004k2bbmjn8518h4nb";
+ };
+ "cb5e9b0f8eb95171fa01852fb15eabf2845a79f5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/cb5e9b0f8eb95171fa01852fb15eabf2845a79f5";
+ sha256 = "0yy29b05a07h2zk1zy298i1ydlh3vr9mmjawqb34fgff18m1xy3w";
+ };
+ "cb73a430e097bac42d93ec902203b7888ed0b681" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/cb73a430e097bac42d93ec902203b7888ed0b681";
+ sha256 = "1nysj9pxf2kwsh7v8iqz305slwy2s6ysmg9ra76ysmns7rh9rvap";
+ };
+ "cb81a778a0190199a4c52ec5e9e3f749c532fdf8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/cb81a778a0190199a4c52ec5e9e3f749c532fdf8";
+ sha256 = "1hl7yhy7ysg35vrq5y4ngq4aiqfkb5h74zd6x7qay1k588k3af7g";
+ };
+ "cbafcbe19329c889151577a995439d8c09b69f61" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/cbafcbe19329c889151577a995439d8c09b69f61";
+ sha256 = "194zad942iv7rr5fngyk0kpckafip987mhgl1bk2fflvxvs5nckg";
+ };
+ "cbe9427bf8fe34234353780bf7d7188dbd5673af" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/cbe9427bf8fe34234353780bf7d7188dbd5673af";
+ sha256 = "18ri7fwgvyp6p3qm4qn32dyiiwl2vw3f4j5g0dgv4k8p29cpx7d3";
+ };
+ "cc2764b781992363c5941eb2399962b3dc251c9a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/cc2764b781992363c5941eb2399962b3dc251c9a";
+ sha256 = "0sxvjqbyz3bvppf090vpwggb0f758mxh16m0f5lf3z6xv917vbqw";
+ };
+ "cc6c17f5d19462048695c62e88e553ff08996aea" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/cc6c17f5d19462048695c62e88e553ff08996aea";
+ sha256 = "0mi2m0f6j89dj3qbm43clcih8d06z943iv585ni8rp8dpvm733xn";
+ };
+ "ccb1bc3ca1edbf4177b3c0d1784bfcb61f87daae" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ccb1bc3ca1edbf4177b3c0d1784bfcb61f87daae";
+ sha256 = "0lxc3imyakyqxphhyw7xxjlinyvvhpq050xwnydks6bja2nqjrvx";
+ };
+ "ccbf9e16dbb06aba05b68b87bd827f67b8eac84b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ccbf9e16dbb06aba05b68b87bd827f67b8eac84b";
+ sha256 = "1v65rdr6f3a5l8k9pa6aqnarv279ik4g82m3arnndlhs8d1fwry4";
+ };
+ "cd0d52d3a393b848c4524f8d20e9c3d772779d50" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/cd0d52d3a393b848c4524f8d20e9c3d772779d50";
+ sha256 = "1b1vccn5jhy79k1h1ilj572j0nkrv6imb3m3fk9zy897fp8phm86";
+ };
+ "cd136c8c017886023a62be7a07da35d0a4af997e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/cd136c8c017886023a62be7a07da35d0a4af997e";
+ sha256 = "0aw9ipcqp0iq706nw26rriqn1jvsczypwj46yk3sjxmcp7bzf0rg";
+ };
+ "cd20dd95dc2f4e182bbf98e7f0d6a7cd87f10df6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/cd20dd95dc2f4e182bbf98e7f0d6a7cd87f10df6";
+ sha256 = "06ba9m6rcvia5rr1pghi1x4z7xjvw1rj9p9hpd7yvzbn02vx58y1";
+ };
+ "cd28a4a14b5471b45eae79e893b8acbc4f7e1f94" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/cd28a4a14b5471b45eae79e893b8acbc4f7e1f94";
+ sha256 = "110936dirzdy78nxcplpnz8z2hnqpcwdbgb6yfsg9w7a9x0290pd";
+ };
+ "cd31abaa21b8f9ec03052817bf36f6c16178f5e5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2597174-0975f975d1f0463f931b68ea4b0ef6d0/cd31abaa21b8f9ec03052817bf36f6c16178f5e5";
+ sha256 = "0imni7w08al0d35nis2xz501zl5qz1dmc4myhhabvm0l6cf3x4ig";
+ };
+ "cd5ab248342e1a8cf9bd3f635151bfdd3d41ad3b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/cd5ab248342e1a8cf9bd3f635151bfdd3d41ad3b";
+ sha256 = "173d24jramz5i4h5pvm4v22jiqnw87b4g1bg0y2v79n313k4p87g";
+ };
+ "ce44b880be5cb6a25056be3c177c866b85aee1d5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/ce44b880be5cb6a25056be3c177c866b85aee1d5";
+ sha256 = "0gcvwwwzyl8s91fxvzaqnxvkz9kpw08643gra8acmbvplx2r92sj";
+ };
+ "ce8de3d894102a4bb85d1eaaa271f605239a2fd1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/ce8de3d894102a4bb85d1eaaa271f605239a2fd1";
+ sha256 = "1m385wpp8zv140c51yq0bybpja4j7rgy837myqb7xsi3cmwsmrdz";
+ };
+ "ced0e06e0c817a6519c5a995d3ba2743df02ecdf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ced0e06e0c817a6519c5a995d3ba2743df02ecdf";
+ sha256 = "0hfxs8i2cjifry6sbyqhw5f54ngbl3dnhzmikvhci0mz1np1blah";
+ };
+ "ced6c6d11883cd80b95d5f522d9526e6467945e5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ced6c6d11883cd80b95d5f522d9526e6467945e5";
+ sha256 = "0ii9010n609i4i4zip2mgjqnhpfb7imfxviqi8kbax35mkfv38ci";
+ };
+ "ceefcb84598a9a4c5ce8d34e749d52d7511a8013" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/ceefcb84598a9a4c5ce8d34e749d52d7511a8013";
+ sha256 = "0rynh9y2scir13ffmgwqcdvcm21p2n0q4i3di1aval7r690b0wz1";
+ };
+ "cefd87d67f6688e869ab62068aa16c5f02113c8c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2597174-0975f975d1f0463f931b68ea4b0ef6d0/cefd87d67f6688e869ab62068aa16c5f02113c8c";
+ sha256 = "0nli07f78bpmjk6bxaa2x32m1l7ds6d4rh8iycciywm8fwbw0ak6";
+ };
+ "cf4a635ba3a4c070a83394e45c5bae8ef8651afe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621163-719903f8599f48949652ccefc2a2d5be/cf4a635ba3a4c070a83394e45c5bae8ef8651afe";
+ sha256 = "0pb38cbss34md3pn9j1rzhwanq1dwqw2jpaygsb9fzxnrgypismr";
+ };
+ "cf5e1ce959a11e3674cc1a7c352dc878022c2eff" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2547993-1fb84b9e293242c988e586c599eeeb56/cf5e1ce959a11e3674cc1a7c352dc878022c2eff";
+ sha256 = "0lyp1iavwk61iv47nlaw7s3bdfr469in0d9rngp7mr9w1b367szx";
+ };
+ "cf784788aae211d789405fe0a7308e059e15627c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/cf784788aae211d789405fe0a7308e059e15627c";
+ sha256 = "02cl56q4232l8y34ajl04s0zxq8mdbvbx7bad1q4f2fcx6g395x7";
+ };
+ "cfaa6e2212f937f340e867175482030d495675ed" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2448689-7792f1b8be254cc19b4c3379509684cc/cfaa6e2212f937f340e867175482030d495675ed";
+ sha256 = "0wdpkcnlnkj6bwv1q4g3i3yn2j7rv98h6l58y323h4bn2hn8f90y";
+ };
+ "cfc8c6e323848f57580a531e48fc4b81cdd17efd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2458551-07195e4b171247cfbc0f6645046eda02/cfc8c6e323848f57580a531e48fc4b81cdd17efd";
+ sha256 = "1bjsd26ckak6212lvb706653raz8sn8b380n5dp653frbsagnmgw";
+ };
+ "cff332b0fe6e7874406db49746b5a2be18f822f5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/cff332b0fe6e7874406db49746b5a2be18f822f5";
+ sha256 = "15w6kfv1pxzswr71knkkyw8zc7i1ibk9rapgp7s9ybkfkdfwrfjn";
+ };
+ "cffe52e7d9b8a547c321247c96a680a061a7c077" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/cffe52e7d9b8a547c321247c96a680a061a7c077";
+ sha256 = "1ha9z55y46lm88zai4dh9404gab7kfkcl95fm0ch22mv3ps94a86";
+ };
+ "d00340b56c80a33987bae91b824e43fa883353b9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/d00340b56c80a33987bae91b824e43fa883353b9";
+ sha256 = "1f9nz3vjw21gvg9s4ycmjcjp3kb79q0inirjnbp0wbxmmd0w102i";
+ };
+ "d01535f7276e94b02b13cc27f3966f8867e79101" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/d01535f7276e94b02b13cc27f3966f8867e79101";
+ sha256 = "05mzb8x5rhs4z9cdfsgv43ggigvpnhkq6jfd5apvsqqyzsrxpn48";
+ };
+ "d04d874a8a5abeb10db060dd59e268c16687663b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d04d874a8a5abeb10db060dd59e268c16687663b";
+ sha256 = "1qaspy0c182xnbpplw4bmnahd52l47g3gmws77gic0ls9dlm98b2";
+ };
+ "d0566c823351a86a79411b3b8d001317aa356284" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/d0566c823351a86a79411b3b8d001317aa356284";
+ sha256 = "1i2fxmzs90wjsaxrc26jjmy045gq08p8a3k7z8p9lxkk9xnvvq49";
+ };
+ "d0916b22915dc03f3e2bae8097e2ad696e7c8f4e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2620197-1c557d2f91dd4277b16fd1ed8715aab3/d0916b22915dc03f3e2bae8097e2ad696e7c8f4e";
+ sha256 = "06fl6qfyax8nkccimh3r771l6a36q9rkihdqhn13ax0klab27cmv";
+ };
+ "d0ac4798d087f4f67f533a8d8cc04a7685a380aa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/d0ac4798d087f4f67f533a8d8cc04a7685a380aa";
+ sha256 = "1fbzjkmizabaxrjipsfx5y4qlsd0vddb0b20cwxx8q74q2m2ai63";
+ };
+ "d110f2213c54503001102b5f9a81fc0743ba32c0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/d110f2213c54503001102b5f9a81fc0743ba32c0";
+ sha256 = "12l3jzkrlqfkxrq9nk7ksyzy4ffawci9hlbfnrcwrckiz107360z";
+ };
+ "d111d246a5dff2d0eed94cb2592bfe277ad9e0ea" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d111d246a5dff2d0eed94cb2592bfe277ad9e0ea";
+ sha256 = "0qjagdpy4wx39jg31ib87dh1gfyyhd06aa1g044jnc9zjdx47n7a";
+ };
+ "d1450a3f59e35f9d62efa518fa3ecc4e3ce0b0ef" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d1450a3f59e35f9d62efa518fa3ecc4e3ce0b0ef";
+ sha256 = "0i7hjlykmzasgyxpw5sx7nrcpi6nmqj3ckcr1ayaym7j2d2dljpw";
+ };
+ "d165f29f588eae8d8a55d377f73b67973713c670" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/d165f29f588eae8d8a55d377f73b67973713c670";
+ sha256 = "0gqsm4h2bzvp7pm77z3alrm21pf8vp4m4ihlc9qqwv2jm98gmfi6";
+ };
+ "d1a31fc8df90aed8358e255ead086de9df9b8eea" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2622268-4534504e79af46a28b290d0661d1cc42/d1a31fc8df90aed8358e255ead086de9df9b8eea";
+ sha256 = "0gfbvm7l4skz5snpbk39hr9ccmja5fxkvnrr5278l9ways2d2ilg";
+ };
+ "d1cc40fc311b1fe882b059047a6c7f53925c9827" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d1cc40fc311b1fe882b059047a6c7f53925c9827";
+ sha256 = "0lxfzdv2gwjscqmxsdhdli5sg1mr08djq7ik8a26h96mvxwqna4j";
+ };
+ "d1e8035d7cb1c18606f75bf22a42e813f926497a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d1e8035d7cb1c18606f75bf22a42e813f926497a";
+ sha256 = "0il1fg83apcy0hvr78gfginpw3y522vqky8523wkbvrbipzqps1g";
+ };
+ "d25faf54b177d399192ede835440a8eb4948ab59" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d25faf54b177d399192ede835440a8eb4948ab59";
+ sha256 = "1fwd7slxj50zh75lcj8i17mijsah1gqnid4mvhvyh33fmgbmwc10";
+ };
+ "d27c0f6b2f82d4e0112056dc4963a251ad84b3c5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2482054-e6ea3bde29504ce5b51935e2939eefee/d27c0f6b2f82d4e0112056dc4963a251ad84b3c5";
+ sha256 = "1f6h8h1aaffy0hn17mlzynfaammkm8whsbjlbb31czgpiq445h9w";
+ };
+ "d27cda6ec1c697039954ff45ad0d4bc809382324" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/d27cda6ec1c697039954ff45ad0d4bc809382324";
+ sha256 = "119vqrcws2yfw532n7gykqbgh4p0jhx8vfyc7vkzfrj0ynrda9m6";
+ };
+ "d280f17be242e85379048663a32b3f86bfcd6625" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2629494-07ea5ec481884143ac3af33e276b7492/d280f17be242e85379048663a32b3f86bfcd6625";
+ sha256 = "1lfm6gjsz8y3z90ix3prmvpmx0ps8g4rpzflwd8p1wk8h8kqr4jy";
+ };
+ "d28b2e8946d305dc75d30be04ee1c9bfec7bf72a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/d28b2e8946d305dc75d30be04ee1c9bfec7bf72a";
+ sha256 = "15yjgzhi621bj13nz1wrs9m7jy2v0mjgx3w59fyv5vgf94mj6nyq";
+ };
+ "d292729e71bdf7b0dfe9367148d16b19fa7a5da7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/d292729e71bdf7b0dfe9367148d16b19fa7a5da7";
+ sha256 = "0g7z09z0rxrjf82y9m30qc2a2gbz34gf0hvwxyb3pwzgfbsapxh1";
+ };
+ "d2a00e055f1285c1fa4a975781d66bcdc44da301" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/d2a00e055f1285c1fa4a975781d66bcdc44da301";
+ sha256 = "0ndhbjbcr9mhjzzvfqxx38a84ch7jpb4vik096i71kji8pbby5my";
+ };
+ "d2dbfcbb4a4a5cb2324c962101ba1ae4ebedc502" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/d2dbfcbb4a4a5cb2324c962101ba1ae4ebedc502";
+ sha256 = "0ywl10w2xkcm1nc7zcwzsz1q3j25w37hhyrkkvhg41vqjdnibx2p";
+ };
+ "d2dc1c9128c24c0a330a534ae29cc6ae6beaffc0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/d2dc1c9128c24c0a330a534ae29cc6ae6beaffc0";
+ sha256 = "16d5d8n5m1srr2iddf0hvigpaybpyiwr3w2850sgn1qskbx5n2gb";
+ };
+ "d324c1434b20b5ef66a2937ab08337f78c5646a0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/d324c1434b20b5ef66a2937ab08337f78c5646a0";
+ sha256 = "0xnx3clcsxg0b5hmq22dz8wplhfvmckiz921arnl1hbwgfgjiwis";
+ };
+ "d338b1e7e6160d0f539aa12687e23db81cce61c4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2623227-c4b8ee6a09664c9dac75b68f4d1629d4/d338b1e7e6160d0f539aa12687e23db81cce61c4";
+ sha256 = "1zpbqrzxnmiq1wsvxr5gxv2gyf1kip08d8zpgfz6952bxh2ql2d2";
+ };
+ "d347f6ee6f9955b5ddb428582f0a5694be416663" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/d347f6ee6f9955b5ddb428582f0a5694be416663";
+ sha256 = "0a67s7r0gnpnb11p4dlz61zqmrk6jm3s2q6n6vz3sak9q046wiz6";
+ };
+ "d3603561d5e25d4f17d441b894b6b532ac8ca892" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745458-2d2488161ce24ccca70e5ce98643ad1d/d3603561d5e25d4f17d441b894b6b532ac8ca892";
+ sha256 = "1farglicxvs0xvrlkp8vhj8zad9c2zm7m7bwwgs35nbmk7ii3hvv";
+ };
+ "d3c4fc80dcded70862e182185119d810e694728f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/d3c4fc80dcded70862e182185119d810e694728f";
+ sha256 = "1g15fbqvwz35hy6czvwb23wv3hv8z62c2hzgnh6wpyliz8hvwvsm";
+ };
+ "d3fa6eb331487a41362af20fc809e610469ecc14" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d3fa6eb331487a41362af20fc809e610469ecc14";
+ sha256 = "1n15651kjzdp4nhxv8rl331gqa9drj2h2lz590ldcqngc27gdm7r";
+ };
+ "d40c0edc4a86159f31ffdeb1c868655892857c27" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/d40c0edc4a86159f31ffdeb1c868655892857c27";
+ sha256 = "08k3m19bgb2l0c7r1680gg3rhprinr9gr1qnmqw9vkpaclkbmhya";
+ };
+ "d43babee559c0a43f3cdfe93ac68d127740c7c60" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2706207-4f57365c766141c988cbd0106cf38f5c/d43babee559c0a43f3cdfe93ac68d127740c7c60";
+ sha256 = "16by5ci4078gbm4qq84np3z1gl6p9g1988nqzwavb1gmcd5l39lp";
+ };
+ "d48b4b394816bf765766cfb0de720c2fcf3dbe91" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/d48b4b394816bf765766cfb0de720c2fcf3dbe91";
+ sha256 = "03r22czm4w4l1cz5i9dl5v5nbij3zs4bkh5kgxbq9jd4vqkg15n0";
+ };
+ "d570076bdc206ebe525e4fdc41a05520d5f706fd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2638350-39632eb9e5f94ba4ab8e97fa2d5a3251/d570076bdc206ebe525e4fdc41a05520d5f706fd";
+ sha256 = "1bs1j3rya8w5xlmpws006dyzl6ma498qmjpbvy46588zv6id0h9d";
+ };
+ "d59bfb566ff92e983f4a66e10ce13ac21e90924d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2649176-0ea78bc522e047c6b5b5e477faaaf0eb/d59bfb566ff92e983f4a66e10ce13ac21e90924d";
+ sha256 = "0wgw0q5ln0cz34jc1pn2pqk49b2cbkxljw1c7cyixw81mq0750z3";
+ };
+ "d5cc1b80671cb302ce39ef82a91478483444777a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2612065-7518df1e66b64067baa9f5dbe835628e/d5cc1b80671cb302ce39ef82a91478483444777a";
+ sha256 = "1klyngm5zxnswi2cxj5sd6lcnxmxmj894mpzkbj5fc9l5k9zzh4f";
+ };
+ "d5f5f1dab637b46122ba0000804b82a3466d4f57" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/d5f5f1dab637b46122ba0000804b82a3466d4f57";
+ sha256 = "0wzzk0xm9q17myvgk7mbv21gnyjgms4cr397gxkdjfjljbb78n9b";
+ };
+ "d613d9e9dacb47de3549938a8e516310c73c64bc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/d613d9e9dacb47de3549938a8e516310c73c64bc";
+ sha256 = "17rskdgxjwdlq1v17l756z7fj1l0r96fkzpbagsp7w4h7lxkr3ii";
+ };
+ "d63c4c238a195e3f8e062b2a9cf0757f0ed55587" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d63c4c238a195e3f8e062b2a9cf0757f0ed55587";
+ sha256 = "0waid6qlkmm5avzmd63j7dapq2c5kad6727aalc66kf3bxqqk628";
+ };
+ "d65a42fdc8154793ead3cde82b7ec619bd249478" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/d65a42fdc8154793ead3cde82b7ec619bd249478";
+ sha256 = "097124ah7iynh2xq14wlarnqj5kqay45mcsfzy57fkr49kl9q31x";
+ };
+ "d6c884c9dad1608090dcb5009a5146b5e2cb307d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/d6c884c9dad1608090dcb5009a5146b5e2cb307d";
+ sha256 = "1z0nixzhmi07w3nfn2zb81qlq3hgc8x1n42rdafq7m4ddgaccp5b";
+ };
+ "d717fddace1fd0e9b4a4b2c78118ebb0c354e35a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2620878-145fecd6dbcb4cf59f55c309f12ff608/d717fddace1fd0e9b4a4b2c78118ebb0c354e35a";
+ sha256 = "0a25mfvkjyycc6ybffg5a453vvzgs0lxs11iwgbd366p1q1a9fc5";
+ };
+ "d777e45fe21ea823174bd647cf6817128035cf2d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d777e45fe21ea823174bd647cf6817128035cf2d";
+ sha256 = "1p363fd1fdl04md3cwpl8sk4n8vs1kbzlvf1m5hfjwjpwf4nrflr";
+ };
+ "d79b515a8ffc174a508593ce109108ecb9e44813" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/d79b515a8ffc174a508593ce109108ecb9e44813";
+ sha256 = "0wxp8x8f1s961vxlrr507rmngqqwaikj3i09zwzzif54gip02g2x";
+ };
+ "d7a56916778ad1fa03472f47ec92e8a9eed66219" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2482391-24fb529bc09847ca8c3576d69ba36285/d7a56916778ad1fa03472f47ec92e8a9eed66219";
+ sha256 = "06w8nb6bzpc98brswfk1ciikgghvx575w6il3l3p7yjx87093vbx";
+ };
+ "d7ae2a94509bb8a9d5e77006c5538cd11b721439" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/d7ae2a94509bb8a9d5e77006c5538cd11b721439";
+ sha256 = "12cwb2ajb3ikrr2pnk9djd9c4cyh2prigfy7x3q2kdni28dw4v9i";
+ };
+ "d7cd467675e181dbeba3cf24443590ebb76f9515" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d7cd467675e181dbeba3cf24443590ebb76f9515";
+ sha256 = "0d6s9lk446ixhiivxxrxv3s8l6xxlxqljkcj1ynyxcfcm9q6d29r";
+ };
+ "d7df186da35e7874ec3096cafd37119085cf5ce5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/d7df186da35e7874ec3096cafd37119085cf5ce5";
+ sha256 = "0l553fq2pmm2jpv9kag039kg8mjspnqaf9ja2g6ylgbkclm8sc60";
+ };
+ "d7eaad8d8e27e59910b9a915de128b42dda290db" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/d7eaad8d8e27e59910b9a915de128b42dda290db";
+ sha256 = "1l641nqdiyp8wvpiydmanb1i32da6naad7fiwggjk8y9dd035j3z";
+ };
+ "d814756dd80360682458cdbeed8859d522418bd2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/d814756dd80360682458cdbeed8859d522418bd2";
+ sha256 = "0lmvilkzvcipf1favy33khkfdg285l6cvfykzprljyff1jgqb16w";
+ };
+ "d82a48c7d5dec9cc59dfa1a8ee7298c7e787cee7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2627198-ce999b21af1d474180ef48e136faa3d2/d82a48c7d5dec9cc59dfa1a8ee7298c7e787cee7";
+ sha256 = "1lvp57nm4y0xfc09wqckfd6736qf994sgdwhvzd3a39xnjcm1zcf";
+ };
+ "d841bdc828b7ed9f4a76d474d455264dcaadbe38" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/d841bdc828b7ed9f4a76d474d455264dcaadbe38";
+ sha256 = "0vi449pj78607r89y2zbx2dm5qdk0njdnws55cmx6wv7p13wiwq4";
+ };
+ "d852eca7663f1c36dab87cbd527dbfac895faf97" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d852eca7663f1c36dab87cbd527dbfac895faf97";
+ sha256 = "09y0jdcsxnj6wmb1q60a79dfpn0qq9laxsh20glpgw00a302917z";
+ };
+ "d87a6dc2de5d3e0f991324f8edf80b016f15f204" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d87a6dc2de5d3e0f991324f8edf80b016f15f204";
+ sha256 = "08bmfkq48m62gahq3c9gjkjvwg1f7986kiq82xzr0vd15742l3vh";
+ };
+ "d889e4d65d962a36e5839fedc6a70a00ac10fafd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d889e4d65d962a36e5839fedc6a70a00ac10fafd";
+ sha256 = "15f3gbgqfjhcnmqqcbklp5qh5l4jrcb0mfg0gf4njaprb479274r";
+ };
+ "d8a13d14cf5b0d5bd31f2b05c3b53dbffdedc49c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/d8a13d14cf5b0d5bd31f2b05c3b53dbffdedc49c";
+ sha256 = "13hipnkqpzlxkx87yy49303fxs8mpna2947yaf06nyjwphy9y554";
+ };
+ "d8abbf7642437f66197d216a0eceef1ccce557c9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/d8abbf7642437f66197d216a0eceef1ccce557c9";
+ sha256 = "0jdfxmw3bqp1nws33hrch9j7irnln19ac5cf21bnzavsvkvfrwhv";
+ };
+ "d8f99844942adf5e16059b6743f25804288ee4ca" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/d8f99844942adf5e16059b6743f25804288ee4ca";
+ sha256 = "14fihk8cpbsdf26vfvhfx5finmvz6ckbxmhbkm7qh34wi6h10v6r";
+ };
+ "d904eb14d805f07ce46163d3b8b20c434fe0db0b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2706207-4f57365c766141c988cbd0106cf38f5c/d904eb14d805f07ce46163d3b8b20c434fe0db0b";
+ sha256 = "0pwnpnmca2s8qg2k27malnw6d20si50dp3rlqcciaihn6dbjn8qh";
+ };
+ "d92734f6a18a11d0dfbf8c9e12f63f2180c5225d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d92734f6a18a11d0dfbf8c9e12f63f2180c5225d";
+ sha256 = "1m8yai075pib0imrh5dlwifdgbzsijk0vcgz8n8yzgq4j7k6rk16";
+ };
+ "d9a9e14ffd76c4ec3dd9ed97fe543c3169480ecb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/d9a9e14ffd76c4ec3dd9ed97fe543c3169480ecb";
+ sha256 = "009fzivb39c6wx2mv4z6kjkfqr51fhkx6w08h8d9g0z0kin4hffl";
+ };
+ "d9b01b6ec88b6bdfbdb3493b4881158a6b4c8d81" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/d9b01b6ec88b6bdfbdb3493b4881158a6b4c8d81";
+ sha256 = "1nnk36bh320bblcnd8zvhfvgd9q456a007zwk8l11akx4yd645pj";
+ };
+ "d9eb718a9365d9af9b6cc77b440a8da1ea6c1bc1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/d9eb718a9365d9af9b6cc77b440a8da1ea6c1bc1";
+ sha256 = "15z0bl57iixqyghm5ac3gy8czvx03spwbm5m6i13nk48dvlfyh8w";
+ };
+ "d9edee7f1f74e5386558b4a961fca4552e02ed53" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/d9edee7f1f74e5386558b4a961fca4552e02ed53";
+ sha256 = "17gkslrvbvdkkdapsqpck8q3rczk4cam00c9yhyi137j7n1lkpyk";
+ };
+ "da1a0a91f4e47865a8becf9da734feefa1851a0e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/da1a0a91f4e47865a8becf9da734feefa1851a0e";
+ sha256 = "0lz6gkyn0vcwpgd3ln60cm4nnsz01g20h7qz00pgjczpa4j2qas4";
+ };
+ "da7b12758710d9e2c5869e221e94cef9c9eedfc1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/da7b12758710d9e2c5869e221e94cef9c9eedfc1";
+ sha256 = "03pxq5gncfxllslif2vsfacwxv3wpfgajsgdx0s62slsqrfgrm1h";
+ };
+ "da7ba6ca87d1fd789d7ec8278b87f5eb53200dae" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/da7ba6ca87d1fd789d7ec8278b87f5eb53200dae";
+ sha256 = "1xx0kk0n7lmd7llildsw03a7zbfd3dr3jcjjm2ljb3x2zxksapwz";
+ };
+ "da8b24eeab7203c68fbffbc306797cd5a0ad0a21" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2622247-8eee96f5d21944c4aceb4b5731ec49c7/da8b24eeab7203c68fbffbc306797cd5a0ad0a21";
+ sha256 = "0h522mjxnb25w077j7vfd7vw588w2wj3lhvb740hmzs8hg50grbf";
+ };
+ "db0072b27b24bda3fd51a10fdc7e99e0cd839029" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621850-a9425aa00359454986fe050ca270f1f8/db0072b27b24bda3fd51a10fdc7e99e0cd839029";
+ sha256 = "16py0ri5wzfyxi5yv673wwx4cvqdgibgf8g5gndwkvbxdk1901i1";
+ };
+ "db0399e0ca29f1327956d92769300c29b37b2b11" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/db0399e0ca29f1327956d92769300c29b37b2b11";
+ sha256 = "1rn19ggfrq07xpwv7hxlqsq01rz4s5aw8jyyk9jpgwm8951mdk0m";
+ };
+ "db1ce685def3bdbdaa34985a4bcc7f9397fe18c5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/db1ce685def3bdbdaa34985a4bcc7f9397fe18c5";
+ sha256 = "1jvh0j9208qp3msz14gg2dliasys859zfkwagwgcpwzz8r9750dg";
+ };
+ "db49a1753cbbba64d471588023c076a11c7f8ed0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2515540-18724700a05d4a0c889f39065edf2969/db49a1753cbbba64d471588023c076a11c7f8ed0";
+ sha256 = "19jb6xz05mnypcs43ld8lf2jvybkj8xr2mmbrhkpvwbxj0gz9mgq";
+ };
+ "dbaad381a8fe78e42dee5bc0259045658757985f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/dbaad381a8fe78e42dee5bc0259045658757985f";
+ sha256 = "10g36av438yi4gif8c1r35z2jfpqynkqw65nyhy3pnxhwph92hk8";
+ };
+ "dbd67380af0391a17ceebc816f623b42e665cd2d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/dbd67380af0391a17ceebc816f623b42e665cd2d";
+ sha256 = "11cdb6rm97vvmfhnf50sl1bcyrg3zki3v5vdhm3w4bzazmvw4d6b";
+ };
+ "dbe75239cd713a39f272a0de6cac2dfb95039ebb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/dbe75239cd713a39f272a0de6cac2dfb95039ebb";
+ sha256 = "0sy95z08ps7hmkzyg0ym20q9b2f2d1mfs8wp9zbcqixlbkgna90l";
+ };
+ "dc103daa4b0245c15f666e3b82ee1ca395c26e15" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/dc103daa4b0245c15f666e3b82ee1ca395c26e15";
+ sha256 = "1xy9yz8nrk8b1l64x0jq6cgdk10xjf1mmm4g62fqg6sn0zcl5ai0";
+ };
+ "dc8af4beee95a25b1c0cab56a5b11a66babc6a87" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/dc8af4beee95a25b1c0cab56a5b11a66babc6a87";
+ sha256 = "1shf8pf5xyqsjqslnj9m7a93xm9f6lydsf35vhq81p2sll5786kr";
+ };
+ "dc999c480c689209d1072c9b4435243a1121150a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/dc999c480c689209d1072c9b4435243a1121150a";
+ sha256 = "0lg507q9kwc16hn0f9dapahd0iymywswrn2iqd26lx7g6lvnckd0";
+ };
+ "dccb30d618cfef75cf0ac5c9e91b08be0183d1c6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/dccb30d618cfef75cf0ac5c9e91b08be0183d1c6";
+ sha256 = "1z6qy8hsnznrdfx3k6fqnnb8flv8s894ljrglppmr0f0sdbrvavk";
+ };
+ "dcd771e85d726f704215a4feaa632c6ad6472de7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/dcd771e85d726f704215a4feaa632c6ad6472de7";
+ sha256 = "0yqwa73qvwi1rmv4qlgwcn4fp88yqwijd4qw510abfljqgvkwnh5";
+ };
+ "dd2d043a6fefc80a25ca78d62c7e8ac26e471cc5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/dd2d043a6fefc80a25ca78d62c7e8ac26e471cc5";
+ sha256 = "10i0f74cgc3n0yiv88vggiwpsf8jjxg0jvqnqfcmpapd8m6f9s99";
+ };
+ "dd37156cd306b8d31089c3a93edede1ffb0d3293" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/dd37156cd306b8d31089c3a93edede1ffb0d3293";
+ sha256 = "0qldw0lnwx6qnlis7gxpgzdag2sk9cyg2myy8phmmd0407a4l6pl";
+ };
+ "dd67559046c4cec3957fcc155765827a5c36dfb2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/dd67559046c4cec3957fcc155765827a5c36dfb2";
+ sha256 = "1fxk257fjj23k4vx0p6fydbg0kmqd8lx0fbn0fiy94binwym6aiq";
+ };
+ "dd6aa88361efd8c13bc630db41c40d185f94dafa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/dd6aa88361efd8c13bc630db41c40d185f94dafa";
+ sha256 = "1cd1knbxhzzjddavdnd996n53km3nrq0183nrvh7kmy7jp51b6i7";
+ };
+ "dd765b2a31ae5ecdd886e1550b3a93dbc11a74ae" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/dd765b2a31ae5ecdd886e1550b3a93dbc11a74ae";
+ sha256 = "1vlzi62gws4dby85aan2aw96gd9n1frrwvkym5jw9cn7m3rp7di3";
+ };
+ "dd8ef40e0195694f7f018da7e80a520807402c9b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2468936-39e1c39556f84e60be8d850c452aed67/dd8ef40e0195694f7f018da7e80a520807402c9b";
+ sha256 = "030hfr8vk0rn374h9gav0j3x8mvm5r8ggq37h666q4fswazqa2cv";
+ };
+ "ddad05592e192eebafd8842ac556d92572eef1aa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/ddad05592e192eebafd8842ac556d92572eef1aa";
+ sha256 = "000r1d5nifky1yczl7p2fdygrl8yn9n5ajqbxmx2ccmavxr2wqjz";
+ };
+ "ddc5b08945cb44c8aa6434129c3f898bd87a41af" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ddc5b08945cb44c8aa6434129c3f898bd87a41af";
+ sha256 = "0gr5ra1izhksappm1k4s4n632dyzfxdlxv1ilnmfmcs4vhjphpg6";
+ };
+ "ddcc2181537ebf3c5cf4ba351f0960b885372aa9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/ddcc2181537ebf3c5cf4ba351f0960b885372aa9";
+ sha256 = "0hp5d6xj8dh033801j5bl07wji2489v4ci6fl0jljhsfwh9r9zcf";
+ };
+ "ddef4f0acf5f073d28dd6a38c4fa58630d3a68f8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/ddef4f0acf5f073d28dd6a38c4fa58630d3a68f8";
+ sha256 = "1p8ag7dgnrnpj2cj7l94ic98gghhs5xc1qsmwmr5m5v6ra6mkm3s";
+ };
+ "ddffea76154050032a408a3890c07633f1ba3b0b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2604938-a9e6e886491749ef99155ebfe50a18fa/ddffea76154050032a408a3890c07633f1ba3b0b";
+ sha256 = "1bfwfwg9hn4sh5nqwpd8nfjbqkkyp5nzns2cw47cqvrrz9m645hw";
+ };
+ "de0049c6936b76d5da37bb69dd25ac91e83514c3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/de0049c6936b76d5da37bb69dd25ac91e83514c3";
+ sha256 = "1abk2d6mp27rya7yp3dhvgwr18z7yny9l024l9wv2dzgfhw4mlmr";
+ };
+ "de01c69dad3bc654ab534e5eedcd2b8374f2a2e0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/de01c69dad3bc654ab534e5eedcd2b8374f2a2e0";
+ sha256 = "1dggg7qwqsfzcnr296qcw0k5k7bisg2nlxic185qydca0y844khg";
+ };
+ "de04f7b02c49aa87b2b6da18c62a5ff36858352c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/de04f7b02c49aa87b2b6da18c62a5ff36858352c";
+ sha256 = "1fljk9j3l64v4yf4by4n22pfdxa63frilac93wbw663nb7w5hrw6";
+ };
+ "de2d73029d96c42d88f7765a10be8b6af0007eb8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2701057-ddd66ac9b77f4863be4b1dc8e90d0e10/de2d73029d96c42d88f7765a10be8b6af0007eb8";
+ sha256 = "10hc364qj9mav9nqa8jvkiwmmrmx24xqpn8gknra4iw7nqhp43c8";
+ };
+ "de40a1a3ef4f09ae9523868d74d8cc9af2745ec8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/de40a1a3ef4f09ae9523868d74d8cc9af2745ec8";
+ sha256 = "16jhqdx31vid1knbfldhwf3d4vlap6p815q6ri64fb5g0drny9zn";
+ };
+ "de7be9bd446cca2c3d817d2f1d7042e9a6f27378" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/de7be9bd446cca2c3d817d2f1d7042e9a6f27378";
+ sha256 = "139pvk98m51s0i31s4621x83cdx81459fw5jj7sr1kby3g900adh";
+ };
+ "dea23be7b0f4c3aec67d1c95e616bc04d4e99100" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/dea23be7b0f4c3aec67d1c95e616bc04d4e99100";
+ sha256 = "09z1az90fg35rp8rfsnlqh5bhgrw1pdw14lkavnhz1kcpxzg429h";
+ };
+ "debdde2d089368f9ec40b6d50aed4cab14a4e785" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2533444-8b800f9092dc4a4c822daa186a0dd399/debdde2d089368f9ec40b6d50aed4cab14a4e785";
+ sha256 = "1gvk274y842is0k67pancjpbw7s0yqv1lqz36ar2l84b7mky9ncq";
+ };
+ "debfd2113b48ed4529163d952262d80fe8cc11f1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/debfd2113b48ed4529163d952262d80fe8cc11f1";
+ sha256 = "0ijv1i1xdsj15b63dvj1j248bcqylbp62cncza464jzpf1mgmjl1";
+ };
+ "df2925eb96fbc24fb45e29b8553772c650ff8c53" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2791326-4a233957ffc54c94b38c9ceaf84d58de/df2925eb96fbc24fb45e29b8553772c650ff8c53";
+ sha256 = "1msa6jm9c3x8150sci2bbs47l424xchjfgg5ixr388q5fiqjwv50";
+ };
+ "df3e6640f45ebf0909095b9ae74a7cb7404e447d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/df3e6640f45ebf0909095b9ae74a7cb7404e447d";
+ sha256 = "1rg63nvywdrzwvslzpq8z53wkhfm3fgw8x7lzxkqay58v3npdz44";
+ };
+ "df4ccc222a9b196a9484691be86f2d14462b2357" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/df4ccc222a9b196a9484691be86f2d14462b2357";
+ sha256 = "17gf45g193ind6i7m49ckwxrfffryi1xp3dl8gkgfj8q9yvlh01n";
+ };
+ "df5437931a8964c846c6c9377f381c0213082e22" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/df5437931a8964c846c6c9377f381c0213082e22";
+ sha256 = "0hllda7r7v1nvffb504djzc2l6l6bg1ldl3fgn5dz152jgvylq95";
+ };
+ "df54fb21975e218c1da9d209d52b225e78430abf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/df54fb21975e218c1da9d209d52b225e78430abf";
+ sha256 = "0cdj50yxdl4lfpmhydkymzc5p1zb07z86cgqmsyqs3b4xp7a410n";
+ };
+ "df6d4711f83f1c570af30ec97dd418f0664398b5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/df6d4711f83f1c570af30ec97dd418f0664398b5";
+ sha256 = "03vr4pvvr03nwwf4jp3q0fps1kaybk327z6r80cf934q8dq1hmam";
+ };
+ "df7074a5b6e12f2c024e07d5dd9fdcd863f0553a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2574758-8fd9f8c50854489f98b3664933c83100/df7074a5b6e12f2c024e07d5dd9fdcd863f0553a";
+ sha256 = "0m9mk7mr9i2i0rly7jb9vbz000rpxmpgrlawa1isvgpp98nq9jx9";
+ };
+ "df877ce5674ccd5af752d839ce7729c724750815" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/df877ce5674ccd5af752d839ce7729c724750815";
+ sha256 = "087wfyc54y7ay8bh5ml8g46402pk42mmimzvlpskq6vz6hwqbwg1";
+ };
+ "dfd7ec76ea282f899f489dcf84e86c17e2d5176b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/dfd7ec76ea282f899f489dcf84e86c17e2d5176b";
+ sha256 = "0yhnv54lb22ksa1b9rd12jwrpbfia6v46j60qszgp3wfzh927b7p";
+ };
+ "dfdacbcbdca178e9cf577d37637399e02c80c006" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/dfdacbcbdca178e9cf577d37637399e02c80c006";
+ sha256 = "1k16n6jf7jv3ja47faf27vkbhcwn99y6rgfzk5d9m5r18326m6is";
+ };
+ "e002d0958c673752ae43a0801b444a2ce1624b4a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/e002d0958c673752ae43a0801b444a2ce1624b4a";
+ sha256 = "14wkqdp6bwy7i9dx9lb7fxrhwsspxwn9hpsxc3qqd43gbff6vmg0";
+ };
+ "e02e3dbebd645b7ffc82cb42b41d79fd60a268cd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2634392-be4d7ed7261341cdaeeca1438154a993/e02e3dbebd645b7ffc82cb42b41d79fd60a268cd";
+ sha256 = "1gj5921y97f0f64iqf566hpsmm8gf39p0x51ps67r5hk89k52gj8";
+ };
+ "e03589b69f1b5cdf2431809897f2a1287d4d1db2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/e03589b69f1b5cdf2431809897f2a1287d4d1db2";
+ sha256 = "0bwr0lf8b523kwgrakm6cj2rpcaw1ql213xsa4gmaxbqjxmhjwn9";
+ };
+ "e0a2c1da63edd46fd58df91cebed0a6ba9d4e2ba" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/e0a2c1da63edd46fd58df91cebed0a6ba9d4e2ba";
+ sha256 = "1wlxk5v5jabmdg4i6nm91kqgx4lak68455chgyyzw83n3921cwc6";
+ };
+ "e0b52177b69db23587e60178455553700fca7a3e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/e0b52177b69db23587e60178455553700fca7a3e";
+ sha256 = "1dpp1ixnl806d5b7ag0chzd771nrlqpr0vp0xg6sqz77y9f64jdc";
+ };
+ "e0da56b57fd7c9eadf21a0c6bcaa75267e6eddd0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2762618-27ee95221f7a46349f0cabdf112a1cd5/e0da56b57fd7c9eadf21a0c6bcaa75267e6eddd0";
+ sha256 = "05phccb0fvx9li9yr689l2wxbana6hvzljwsn1a2113rkh794gql";
+ };
+ "e10e19c255056c096d6105cfbff767f6749ffeea" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2608258-d12288bf79ea446a9353c7f9d223b24e/e10e19c255056c096d6105cfbff767f6749ffeea";
+ sha256 = "0356fyglgynnlm1myic04f0g9c1yz12zz8z4vi7j8plypnsanqs8";
+ };
+ "e119a785ae743089d9760220e95431e5b5a828c3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/e119a785ae743089d9760220e95431e5b5a828c3";
+ sha256 = "1vqrm60v9jgd3xdvdwkavxfapl1424pcwm0w9zn4gypbkwfigs8g";
+ };
+ "e1a0aba6fa5c1c2bd71eb9f8b6fa3b6bd0c08378" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/e1a0aba6fa5c1c2bd71eb9f8b6fa3b6bd0c08378";
+ sha256 = "1qvnscdxnyyps3sm2625hjvb2glkcaxj3kd4qhcpaw99p22cp61z";
+ };
+ "e1a2109b7b2cea0b5a275ee93d3ec4dd15bda288" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/e1a2109b7b2cea0b5a275ee93d3ec4dd15bda288";
+ sha256 = "0b1namzxfx0pshfcixvzwpm19d29ma70wbsb5v37jx79bwplxvly";
+ };
+ "e1fb2b61f5ab2e0ded49292c3ba53d25ee0e31d4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/e1fb2b61f5ab2e0ded49292c3ba53d25ee0e31d4";
+ sha256 = "04xd0vdrqrlnakxg94racp4q4rqq8z383n6jyg798g386gd2nkyw";
+ };
+ "e214f8d9834372bc3a68863ed9b25f6d3468aab6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/e214f8d9834372bc3a68863ed9b25f6d3468aab6";
+ sha256 = "1x8alx8qywjysqs8fznf7f2rgz47ryi02711fj2vdifhiazl81z6";
+ };
+ "e2e2347e195fcb6908121d1d8252b675c0225733" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/e2e2347e195fcb6908121d1d8252b675c0225733";
+ sha256 = "0am2g2w1p9gbdc4r75gib8kadfkzxk0pl93bkggrvbc04gaajq0y";
+ };
+ "e2f498b239aa783a65b663c31fbe397e04857c5f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/e2f498b239aa783a65b663c31fbe397e04857c5f";
+ sha256 = "1abyxjalrqhvinl4agkhc5mwyvi18hip7v6rjvvzxi6c6jvlfbsf";
+ };
+ "e2f8447f74d7ae894d6ebc37fd1de2b774b15bb2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/e2f8447f74d7ae894d6ebc37fd1de2b774b15bb2";
+ sha256 = "08j2hxs3grsfk5y3xfq4ch1z4hd9rwgn5yfzd2h31ldrpyx4r39y";
+ };
+ "e2ff2a15b3b4f835c8275051591b9d4de07df86b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/e2ff2a15b3b4f835c8275051591b9d4de07df86b";
+ sha256 = "0q77kjwr6xi1drxv0kqxc4kbm93r42ygsyxfyk2rqjfa30v72496";
+ };
+ "e3adc0e94fdc76e94c4297ae60dc8b7678ff6d13" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/e3adc0e94fdc76e94c4297ae60dc8b7678ff6d13";
+ sha256 = "1cihl2vayvhqd8g2jvnzirfv2a2c7dadyvg2cmkd8rdcf7ry7r7m";
+ };
+ "e3e99323ec9693b9c6beafc30a7c439d27d51019" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2738466-c1f653d3509f461bb7b24e2d8451128d/e3e99323ec9693b9c6beafc30a7c439d27d51019";
+ sha256 = "1dw27yqsfdh6d8p4d9afwn9pz8dhd1lw1y72vw6vj15ns1m1hsj3";
+ };
+ "e3f2410485eaec849a562752ca8348217b12f390" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2611810-c0cf8ef9a734410da79e56e1df15e175/e3f2410485eaec849a562752ca8348217b12f390";
+ sha256 = "17n58ay2q59xc7d02dxzx4lxcqf1fm92pyz07w6fjlwiqlr30pz6";
+ };
+ "e412f545b4a58b60e62cd1dcf57ca25871356b05" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2515174-63b13cf90d1f431ebc611d28340ef4ba/e412f545b4a58b60e62cd1dcf57ca25871356b05";
+ sha256 = "19vbfalid5jpg1x9dbxip4fbdvpvyrhdjz8wfk9ysiw8nbk1xyj2";
+ };
+ "e4328c9505893ca9157deacf1baf1aea7d01f8d4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/e4328c9505893ca9157deacf1baf1aea7d01f8d4";
+ sha256 = "0ksgc1abgwmhgz9j557l6kj6awdfzivm08dfk0n4bspc8dmdp728";
+ };
+ "e458507f455e3bac9232d632426fc4b75f29841d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/e458507f455e3bac9232d632426fc4b75f29841d";
+ sha256 = "1y3w5h0ss3iq6sv0pmzw8n62s3asp616j6n3fqy8vja3bm6s57hr";
+ };
+ "e465c13305ee8aa9186e587aed90d1007e5b31e7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/e465c13305ee8aa9186e587aed90d1007e5b31e7";
+ sha256 = "04ig4zfzv4g24yr882hfrx4570jvhd3abvpig9mc1d7x6hg2vnn3";
+ };
+ "e4770351a3cb31df020fd6bff26ce03237621428" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/e4770351a3cb31df020fd6bff26ce03237621428";
+ sha256 = "1sza989jj7mhwv60ridbqpypskddsyx97vrlpflwq4i8xk8f0qhn";
+ };
+ "e4db89beb65b004392150dc83a65a28ea62cb155" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/e4db89beb65b004392150dc83a65a28ea62cb155";
+ sha256 = "14b951ymdf4difjjrcc9n6kg5ib5wks26kdagrr04bdb0qpv6m5s";
+ };
+ "e4e9b76a89d03aea789e6df7b7dcbc13cc7ca8cf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/e4e9b76a89d03aea789e6df7b7dcbc13cc7ca8cf";
+ sha256 = "1v9ldnkaq65zym2d439zbqvybfvpwj30hj6mdhwny84mf71kimmi";
+ };
+ "e4fa82ded20830726a04678904111f9fa6f26954" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621793-1958bfdd4e3b49f3a0ca6a4c08a60a0a/e4fa82ded20830726a04678904111f9fa6f26954";
+ sha256 = "0r22snlddx333vbz83h776njmycshb8kmx2biw7hs4qfyvj99y0j";
+ };
+ "e50119c064462a0e056574db4e21f359f7f0c159" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/e50119c064462a0e056574db4e21f359f7f0c159";
+ sha256 = "0gb1rbclzkxs1c63ylabam1il1nw85xvrd7n3s3gjb7s7dq5mmwb";
+ };
+ "e5146f66274a1f5409227f94447af2a1f4bfafd9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2745394-b798b336538945738fe2766d7bbc5abe/e5146f66274a1f5409227f94447af2a1f4bfafd9";
+ sha256 = "0vcn9fr140kvc5z65ra6qjymfzc4dmgmds4mnzg7n29bfkvmsxff";
+ };
+ "e55d8897009789617d8b961ae3c6c1d00a845bb3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/e55d8897009789617d8b961ae3c6c1d00a845bb3";
+ sha256 = "1rc7xs76q551a7vcy9642jrgvbl97y98gkdqkrb62ibpv3c2g4ps";
+ };
+ "e5e8a89007ed0e73685f9b0366b1eedf31f4c1e8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2608258-d12288bf79ea446a9353c7f9d223b24e/e5e8a89007ed0e73685f9b0366b1eedf31f4c1e8";
+ sha256 = "19w1q3wxbskznn1yiyzmds6dsnnb5ik31lhdqsxzqzjm0hl01m1w";
+ };
+ "e62a73c1c93258f0b94c3cc46e35318469afe84e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/e62a73c1c93258f0b94c3cc46e35318469afe84e";
+ sha256 = "1yrwbvldncip3xpcxq2n9q707z21zg85yxhgvp37j24nqagm6wfi";
+ };
+ "e65191a9b59946c7f04782468840b7352ab5c96b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/e65191a9b59946c7f04782468840b7352ab5c96b";
+ sha256 = "0q8qnncfb723n9ljzfsyi7v44q2301v37c2yjcaqdvs6vaij517x";
+ };
+ "e67a9dfa527d0eeb0ed24ef9d5e22b41baa25251" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/e67a9dfa527d0eeb0ed24ef9d5e22b41baa25251";
+ sha256 = "0vplmbsk6zpr416x96fdshakjymwa631y78c0sr24gqd853w88b4";
+ };
+ "e6a8b07d1017a517555ae184a3ce22fa2b948c72" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/e6a8b07d1017a517555ae184a3ce22fa2b948c72";
+ sha256 = "0wvi5d9ndis8zrbxgy62m6hmr3bvgygfw4hmq6gqay12z78rvchy";
+ };
+ "e6b8c05e76abc49f7a2264f2b95199b825fa851c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/e6b8c05e76abc49f7a2264f2b95199b825fa851c";
+ sha256 = "0m4dwy0mmyr0f1vjk8grqiapwc1q36cj3ischp2gf2ibj1xxiixa";
+ };
+ "e6fda4b3f8fe12c3bbe8ccf91bdcc8d759ea1ea2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/e6fda4b3f8fe12c3bbe8ccf91bdcc8d759ea1ea2";
+ sha256 = "0ggsvrwnfp10h4ns5vadpxnxm6m0nf5i0zr3i57k2h2kxx7vn192";
+ };
+ "e70061ffc85b6027a648cac0b1c8c6ef7d4e3106" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/e70061ffc85b6027a648cac0b1c8c6ef7d4e3106";
+ sha256 = "0y2lka9gippprgffs4w1p6yh3kvj8m3d749ysbc8lwjvijhh0dyg";
+ };
+ "e70429fd818fe983008a06e931d39724ea7a382c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/e70429fd818fe983008a06e931d39724ea7a382c";
+ sha256 = "0vhfpdbbv46z7kdl1dlnn7mlcpvygn4k6fb8wdgykavp0phzhj4j";
+ };
+ "e76c34cb7cbdb14d92e415c4af5ccdc344c4c58d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/e76c34cb7cbdb14d92e415c4af5ccdc344c4c58d";
+ sha256 = "0jkx8w6p77l53233cac8gzbwdmbbs3znkw588g8mcvwzkpszwbxi";
+ };
+ "e77064e9ba8339459d66bc680e55880bbcc5991f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2467022-c410c14385ba462bb86b4995040cdcb9/e77064e9ba8339459d66bc680e55880bbcc5991f";
+ sha256 = "1fc9jnqb7l5v20asz6cqyrp8vr0617n35k41wrqdcsy0qib9alkn";
+ };
+ "e7808a43acaf99637e43857c76760d74f77d6ae5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/e7808a43acaf99637e43857c76760d74f77d6ae5";
+ sha256 = "0s88msrsnmcqnjyzk7afzf6wikwyajjlybq7jsjyfaax4vaj1cbv";
+ };
+ "e7a4ddc64af2a43bf5c7d439244636d60a7dae07" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2500002-69b23dcf7a2d4165b2b432780845acb0/e7a4ddc64af2a43bf5c7d439244636d60a7dae07";
+ sha256 = "13i3cnkrkk0z01bf0prl77wmx4qbnckihgbxjv34lizv3mhd1yzg";
+ };
+ "e7fdcefcd4a8853ab010e1eb4f2d88b5bd9726a9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/e7fdcefcd4a8853ab010e1eb4f2d88b5bd9726a9";
+ sha256 = "1v4yq5b9rng7p1jsvhlnqvcxpnfd1iwmnmd9ygq25prxirlklx8z";
+ };
+ "e85ad2ef6896adbbc28a46b023af6b64deb29b88" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/e85ad2ef6896adbbc28a46b023af6b64deb29b88";
+ sha256 = "1albg4m9z0g6rv7bqd3mzb8k6r07n6hin3s05gzhl21qqiarwf95";
+ };
+ "e902a543218c50ffc9cd9a41bd8d53d0df1939c2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/e902a543218c50ffc9cd9a41bd8d53d0df1939c2";
+ sha256 = "17b3c4kp6a9kbs2k473zygn7w2xmmb19z3sk08alcp658isby3l4";
+ };
+ "e997f5bba3b4d4b283427ec3ca644a876f6dee7d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/e997f5bba3b4d4b283427ec3ca644a876f6dee7d";
+ sha256 = "1gc2rzz40ipkjy17fz6qiwsv2wxi4qmblmp0rbvafg8mgrhs2jnf";
+ };
+ "e9a64dd557215b53134c33355716c8a4bd1e22f7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2622402-86d1483fa60742b6be9fd5a0b0b946e0/e9a64dd557215b53134c33355716c8a4bd1e22f7";
+ sha256 = "1kjvf0spvmp1r8yh75n39a64w3xp1qiw17w8fv6lip3df8dbjywi";
+ };
+ "e9b508ed95c44a9c9e0d979b1ae02f7dcd5590a6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/e9b508ed95c44a9c9e0d979b1ae02f7dcd5590a6";
+ sha256 = "01dl9z60593mizz76sg55zhc949sgxcdp60vkfhrdkhl1l212sga";
+ };
+ "e9c7b3390ef65a90310c9cd4a97594bff007303c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/e9c7b3390ef65a90310c9cd4a97594bff007303c";
+ sha256 = "0jnx4b7pkycly81dka9vn01ky96j0xnzxg0f4z5fpfl8z8al3cgh";
+ };
+ "e9cec016ae177e586ef08f408aec2f7c4de9afdc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/e9cec016ae177e586ef08f408aec2f7c4de9afdc";
+ sha256 = "0k193y1kbmjq6yjxdgv59w1dn9f1b8i7yr2dbzwi2cr57wx3h483";
+ };
+ "e9d6f32dcb7a670874503cb3cb5d73fd9cb09cb2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/e9d6f32dcb7a670874503cb3cb5d73fd9cb09cb2";
+ sha256 = "0k3rw21ngsf677m8q4n1zil9fmbsdd97sxss3jv6hkyjq5r6djxl";
+ };
+ "e9f10cc1fed35407864f324f08f3c9fcb5a2847f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/e9f10cc1fed35407864f324f08f3c9fcb5a2847f";
+ sha256 = "1fz73zsa0f4dma3v47s0dcgdzz8aniryvmpx9rpx955rckrrawsg";
+ };
+ "ea58f8314459f7bf1d36a672ccc1f2c60c4e0eba" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ea58f8314459f7bf1d36a672ccc1f2c60c4e0eba";
+ sha256 = "1xlyfkxpk86w2ik8ppx6czlx6b5jfvz33k6in9y0zvpi1mvkvam3";
+ };
+ "ea7cb20f21cb971f2f7da29210e7bba16e97a53f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ea7cb20f21cb971f2f7da29210e7bba16e97a53f";
+ sha256 = "1vl4hy09jqhb9h43gn6ymnq2027yc7cfvwh5bn860mj5syayjznl";
+ };
+ "eaceaa2d359d151c5394522df962ce393938a21b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2608258-d12288bf79ea446a9353c7f9d223b24e/eaceaa2d359d151c5394522df962ce393938a21b";
+ sha256 = "124s81bi0y3sx8r6f4qp7mb5294bivjickw7izg0qym3r35vpvy8";
+ };
+ "eaea434c65e3ccf8cec643ea1ec391bdddbc6fac" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/eaea434c65e3ccf8cec643ea1ec391bdddbc6fac";
+ sha256 = "0mdxz6820gcwgzaaipg8k0psddp4i5k0kgl4771kp3my736zsdp1";
+ };
+ "eb24d02e3515e1a1c0df3b6323b5ba9b795e16e3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/eb24d02e3515e1a1c0df3b6323b5ba9b795e16e3";
+ sha256 = "02768h2a16rzwn5d1qrcbxydi0nijyaf301aac32ngsp92y24ycg";
+ };
+ "eb942c482591c680356ad05c627b9153756a5c8a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/eb942c482591c680356ad05c627b9153756a5c8a";
+ sha256 = "05vpd0hwalasgjskblzqba8xadmrj10mjsvqis7chdq0am7g66r9";
+ };
+ "ebb51925dec18058068c3d6ba8d32c6bd5d8f5a8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ebb51925dec18058068c3d6ba8d32c6bd5d8f5a8";
+ sha256 = "0k1w16kh1fbk255qg9lhnbb192lifjskv5mqkd95rmzacpk1vypi";
+ };
+ "ebcdbd3113ce1b1b12aba710b9ed475f2b77bf74" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ebcdbd3113ce1b1b12aba710b9ed475f2b77bf74";
+ sha256 = "0iqxilmibqdpcl0k2qvcipw1nphvxykqi0b04si2mls71lawrklz";
+ };
+ "ebf62a48af4d0a972019aca5d8365670d7260bdd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ebf62a48af4d0a972019aca5d8365670d7260bdd";
+ sha256 = "14gfqpfqr5nnj8q26vxa10c5p793zkf57j60563bk5ijm2rxrmgp";
+ };
+ "ebf8732591def396954f78bf472667f690877f95" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ebf8732591def396954f78bf472667f690877f95";
+ sha256 = "13p11mvlnanlc64ap1xmq69m0gqgcks2jvh0f3j546dgw9x36yvc";
+ };
+ "ec13b2ec5777dbbd7c22e1e2bdcb3e127496b370" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2621793-1958bfdd4e3b49f3a0ca6a4c08a60a0a/ec13b2ec5777dbbd7c22e1e2bdcb3e127496b370";
+ sha256 = "0fqy9izbfficxmzf1pbw9w4yasvs55dawm0186afpkg7gcc8rqvd";
+ };
+ "ec35da884d7ee63a6b73a14153ebc0ef84e83072" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/ec35da884d7ee63a6b73a14153ebc0ef84e83072";
+ sha256 = "0vg8qmf8v73d2zg51yixzhsrgd92d03s5lfviympplshychims77";
+ };
+ "ec59e3143dfd3d4c018548a31a6481bc3f9e1137" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2431986-5a8dd079cf514ebd8b20693fadfa5a4e/ec59e3143dfd3d4c018548a31a6481bc3f9e1137";
+ sha256 = "1qfg4cmvb07q61rkj8ca6wzly9zzfaqbx77jlvy5gc0yn4mpijfy";
+ };
+ "ec5de1727c79fc933c910e364d19af5e7ebcbf99" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/ec5de1727c79fc933c910e364d19af5e7ebcbf99";
+ sha256 = "1cppbmy26118b0gxz6j4zk0zi9rlnd2v1pcbkj1ba86mh6b2d1bh";
+ };
+ "ec6d576df884aeea2ed37256df7caa8cc8040d6e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/ec6d576df884aeea2ed37256df7caa8cc8040d6e";
+ sha256 = "1139k9957gbripd65125gp72lg303z10j7yzkfafpbkkixbsi4n1";
+ };
+ "eceee0a55c343bdc9f43a6d2a6e1f7ae7429da77" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/eceee0a55c343bdc9f43a6d2a6e1f7ae7429da77";
+ sha256 = "1xd4y3y13qw8nm29d7w55k2cdy50j3jsndm7yhay2ciwwl9jqlhp";
+ };
+ "ed023b655c8dbac838b64bf7e6103b7e9d563ad0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/ed023b655c8dbac838b64bf7e6103b7e9d563ad0";
+ sha256 = "0d53hk0wkgrr8nwa74326ni3z00fmwvifq1i1fj4wca0n3qlgq3j";
+ };
+ "ed23ade7aa2af09963a993ee53ab33389aae2e80" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/ed23ade7aa2af09963a993ee53ab33389aae2e80";
+ sha256 = "1215la804zb4hnc6ily5vjzyrvzb0npyjfjl19kb8qrmcyiymfpz";
+ };
+ "ed2c9b990f683ecb84050df89e925e9f65e3883f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/ed2c9b990f683ecb84050df89e925e9f65e3883f";
+ sha256 = "1aixypsgvv780pyy8ncizmmysfx1hjym9rbb3m0h4xiizcl4q5ym";
+ };
+ "ed384e6a16f79979d70b9926060a68eeb610de53" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610584-8220d2cd9ec743a5b8ec0d50768a5d76/ed384e6a16f79979d70b9926060a68eeb610de53";
+ sha256 = "0bx62ijccnfyrknqrcw3ymvzvdjgc0qpllzaqn9vhnygxsjy4w2f";
+ };
+ "ed8d4fee989f83055b4947da8ddd5639f8168782" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ed8d4fee989f83055b4947da8ddd5639f8168782";
+ sha256 = "1gf587b6qa3n3m3abshiw26nypr4wnzzj4i9qycfr33aasasgckg";
+ };
+ "edcad0b0c2862c776fa60784960b9a3a8b3ce6ef" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/edcad0b0c2862c776fa60784960b9a3a8b3ce6ef";
+ sha256 = "10ffm3i1lbyx05ffl8mksp58kagfwdh8kqfgplyxnlxpn2qxf48f";
+ };
+ "edd66f69f77a99b2383d34436d6be71565769a43" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/edd66f69f77a99b2383d34436d6be71565769a43";
+ sha256 = "0h7giabjphgikhdrc6r662xb0ahw4spr89jhckzgplr4l8z8nzz5";
+ };
+ "ee33cb45be04ea08ab507a4058d81bcdd1da7746" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2761703-4d21a69f627145d58d1b542fa90eeb3e/ee33cb45be04ea08ab507a4058d81bcdd1da7746";
+ sha256 = "0n99fhb5qng2x0y5rxp4x88jsdcyqliqi1z078lj6qhsjd8dmqlh";
+ };
+ "ee8662030dbca92bd70af3ba1550ece5c275d13e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/ee8662030dbca92bd70af3ba1550ece5c275d13e";
+ sha256 = "00hfl5h4yk3mc8dhxrlk0zg8nyfgrnmzzhglk0vgzi3mkcvc7jv1";
+ };
+ "eeaa24c1e61cc4b0806496b256349c44f84c02bc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2615502-35e684f430004977ab5aaed43a0fab81/eeaa24c1e61cc4b0806496b256349c44f84c02bc";
+ sha256 = "10kzf6q01v3xd9s7d594biwjy4zzq4wgnqq0ib50ii62rsvli112";
+ };
+ "eef24b0bf5f818f43c64498f50e0a79f5b683883" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2612065-7518df1e66b64067baa9f5dbe835628e/eef24b0bf5f818f43c64498f50e0a79f5b683883";
+ sha256 = "0sg9nyp4gvcqmxdx842nr9szfk1fmi4nrwxmmyvqhs774xavxw4d";
+ };
+ "ef8182b6df585c7dd91f05618e06fd8ee15be5f3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/ef8182b6df585c7dd91f05618e06fd8ee15be5f3";
+ sha256 = "1xrjsspjnfapf26k3ppjx3fzlfcq7qdnxwhvfhn4669spw0a8zgi";
+ };
+ "ef923ee8da67064c7a03f02651b14c309db14a3c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/ef923ee8da67064c7a03f02651b14c309db14a3c";
+ sha256 = "1rc0v251migvcrhvxc7cmv3c5qp1a51fzff6whl7h1qqbzc82ick";
+ };
+ "efd4413cfd5173a82811ede79b4a13bad5f6a450" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/efd4413cfd5173a82811ede79b4a13bad5f6a450";
+ sha256 = "1f76f939x8xkp5z2k8p0i70ig6i2m4ryj9lrc3x393sjlj26nqaa";
+ };
+ "efd812740856e722b88087211add0e268de83d7a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/efd812740856e722b88087211add0e268de83d7a";
+ sha256 = "0yj404y245zicyqgwg2bs9l14gr9vlaakrawk3hdrr24m4lczyz9";
+ };
+ "efe81a03fc4e327388573f361faff5b233243834" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/efe81a03fc4e327388573f361faff5b233243834";
+ sha256 = "1hd7zv4pv604pfbvfya15g3rba9ip6pbzqm6vazi7q7znigzxyql";
+ };
+ "eff7dae5ebb303e1c5f823e0de1accf1075e8402" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2638350-39632eb9e5f94ba4ab8e97fa2d5a3251/eff7dae5ebb303e1c5f823e0de1accf1075e8402";
+ sha256 = "0fa1ikjab52kxkrxb5lnajvwa2ims8d5sm7mi52sx1f67gb3dnb3";
+ };
+ "f0263ddc2018e02536d900df1e275809633e73a5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/f0263ddc2018e02536d900df1e275809633e73a5";
+ sha256 = "0likfdcz1k5acs9w9gxb4r7236ws01cwllrq8qnz3sc2ym111bm1";
+ };
+ "f04bb0803c834328c048cff05056081b1d0e8120" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/f04bb0803c834328c048cff05056081b1d0e8120";
+ sha256 = "0rncg0q01swbkl9pwr7jia19vgpx2yyl1bmyf6l9gz9sfmin1a1i";
+ };
+ "f0887df1b56e17573badb6af33d52f7ec6fb6138" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/f0887df1b56e17573badb6af33d52f7ec6fb6138";
+ sha256 = "1n0gg5af4i0bm854fbv7bvinwgjqda7fbr12q4zm0wqw41r19l3s";
+ };
+ "f0ae004e1cc9e390958b1988391d02b9c74849c3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/f0ae004e1cc9e390958b1988391d02b9c74849c3";
+ sha256 = "1k3gdybbilnkpsd2qf14gn6a0klb8ggdahmlp6wa373pvxf71vz6";
+ };
+ "f0d6a898c18d4750e572c04c2dc290f0628f238c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/f0d6a898c18d4750e572c04c2dc290f0628f238c";
+ sha256 = "1a3ymsi7x4aw0dgb5i1yfq517x9i9fs01mb51irxaamiavxw2zdq";
+ };
+ "f13495e23590f813c800280c335b159a2f568a9d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/f13495e23590f813c800280c335b159a2f568a9d";
+ sha256 = "14d25nmaic3j24dl6viy09alqi63q8vw71wzi7yxyhvgzy51ajv9";
+ };
+ "f1372e2ede9021ff61444ea132b18024ee271b60" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/f1372e2ede9021ff61444ea132b18024ee271b60";
+ sha256 = "113m23b78k218ag72040ggm73846xdyyyfqjc83pzx5g7gfzswyk";
+ };
+ "f13adaffef53d65d806c3eb02f96c6c7f0ac7272" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/f13adaffef53d65d806c3eb02f96c6c7f0ac7272";
+ sha256 = "1i7kv84qdf1srg0828yl4a984pc0c5gh6iqlh2wngxrk79vpvrmh";
+ };
+ "f14abb295c0159f6c8c07119ef3cd201b5062479" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/f14abb295c0159f6c8c07119ef3cd201b5062479";
+ sha256 = "05vakydf2xgpc07262dgv8h0761jswjcpz5z4gp6kan550zx46z4";
+ };
+ "f18da05b89b485f1870ff2b88125f3c1511f8805" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/f18da05b89b485f1870ff2b88125f3c1511f8805";
+ sha256 = "1xp77cwjj0iav25hk3w7n25mzchsbxbbkqhlicvqh41y4q489sxd";
+ };
+ "f199d69df437b77400f96b6d2d4f02360535404c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/f199d69df437b77400f96b6d2d4f02360535404c";
+ sha256 = "1cm14f0i1k92l4flbc00gwvqnvpiwhyyx0g0rf4ssnyp2is9jhy3";
+ };
+ "f1e035fa0d8b44b2b3aeb9958e9dea3862744d82" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/f1e035fa0d8b44b2b3aeb9958e9dea3862744d82";
+ sha256 = "10k3dhgg4h26kjxrvqbvzx6vxq5v9qyi4iwk2csjpyp6xpwzb74q";
+ };
+ "f2374c3116e4d1fae6b4cbd246c9033e282a6c10" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/f2374c3116e4d1fae6b4cbd246c9033e282a6c10";
+ sha256 = "07bjgb6ip8gzyckhsjwi1nlby9059givw8i7gxx09j9xmq6s6n15";
+ };
+ "f24d05b616e3f50a24367e32f8c42d68d40797a3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2605550-2722e8035d7444a18952cbd04a5c58c7/f24d05b616e3f50a24367e32f8c42d68d40797a3";
+ sha256 = "01an1abvb6w7id44avc3fp35919avvqspmgl24ygp872xz6g5glh";
+ };
+ "f268daf62521a638834ffec5779bd359e0ffe63d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/f268daf62521a638834ffec5779bd359e0ffe63d";
+ sha256 = "0z4zbyjm9vlzk14r80j9ka8hdinylnbmf43mpna4rva27rqwsprh";
+ };
+ "f279ae70e30f66de7b592409e9ed96993301657f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/f279ae70e30f66de7b592409e9ed96993301657f";
+ sha256 = "057dpl4pgjd8p98vik95gwdj2z42al9ibr210h1j92jdvyjxg99z";
+ };
+ "f286035c2605a855fb9dda2fc06bb71648b1dbe6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/f286035c2605a855fb9dda2fc06bb71648b1dbe6";
+ sha256 = "10vsqbadg5y58skq4p79vdxlkwqqfvac5v91kq4dflgcs4h05960";
+ };
+ "f288cbb85cc9eecfcf90abe6376c32c54435f879" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/f288cbb85cc9eecfcf90abe6376c32c54435f879";
+ sha256 = "077rd0cqcpl629niwgs2qldrh4ld2xyiskg5x32m9igfwkq8dxyv";
+ };
+ "f2c0ebdd94707b207218226a42b19201386b9713" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2634249-f2b4469cf0774eac818e7cb4565f1224/f2c0ebdd94707b207218226a42b19201386b9713";
+ sha256 = "126bhrrj1q7b04wpbiyk1c8j9dpnkinfmm47z330jwis5mblrzzy";
+ };
+ "f2cc42adcfafd68a62e7d1b7e6af4e4968c0be10" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2572690-84e70917b1c64a80b248151191ccd58a/f2cc42adcfafd68a62e7d1b7e6af4e4968c0be10";
+ sha256 = "0kqv0iiy4fmcnbizc17kl3h8jv1knvn0h687fdjk68jhpkfh1fmv";
+ };
+ "f2dfdcb3b2d9423b17c83e2bf5fea37b9bee4681" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/f2dfdcb3b2d9423b17c83e2bf5fea37b9bee4681";
+ sha256 = "1p8dafdpjr058agppmhm2b5flsgk43f7rzisiplhw3qbmxn8s98x";
+ };
+ "f2e462f932cdcf953218a6d7c9cf6aeebf7dbfe4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613635-9840736c5f9647ffa600ff7b7e36f4ea/f2e462f932cdcf953218a6d7c9cf6aeebf7dbfe4";
+ sha256 = "07ypkcwj25x76055p99z54qramz975wlk3px6wy827i79zpgfx7s";
+ };
+ "f3543f8286961b827b3ed3afa8f7663b98d38b90" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2787088-b587684669f0414288401564922cf5d8/f3543f8286961b827b3ed3afa8f7663b98d38b90";
+ sha256 = "09lc3lpn3d0hqpldqld38l7lgdj9xscnnsamly8bxcajm3y3d9vr";
+ };
+ "f355e6bd836583380c61a5ed5a0c5d6150fe7542" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/f355e6bd836583380c61a5ed5a0c5d6150fe7542";
+ sha256 = "1pblr5r97iwmyv1j54hgsisdp4f7vp3l8mwj8zkiggk7nih7yi03";
+ };
+ "f380b2adccc3afba7a9a9a501560525a8359a651" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/f380b2adccc3afba7a9a9a501560525a8359a651";
+ sha256 = "0dh4k513j0q3h4ja144825fcc4cib1pfzjcpsr79kaj0villfp6i";
+ };
+ "f38889741341129aaa57f66f2c36e093673c46ea" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/f38889741341129aaa57f66f2c36e093673c46ea";
+ sha256 = "0nazhgzcmmrkkdjfqp29q2m01ca09cg2wwa23nvrjxra1bx394p4";
+ };
+ "f3a58411dee61c2a7993eb792fffd09b343e42eb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/f3a58411dee61c2a7993eb792fffd09b343e42eb";
+ sha256 = "1xffc2cbd8ccs1sw7yy8vvqy9pvngg5jwlp4g8hnyvvf2jpd0532";
+ };
+ "f441f0d4f281e728c3ca0c5b5f0e5838637eefba" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/f441f0d4f281e728c3ca0c5b5f0e5838637eefba";
+ sha256 = "122bsyzki9w8b2yz5l68k6yz9r4w7zs1949ii0ccy2d5dd707zzk";
+ };
+ "f44c1c4d05656c9a8e943d8738705031cef49e0b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/f44c1c4d05656c9a8e943d8738705031cef49e0b";
+ sha256 = "0piwkmqxqgp7i6r5z39xv1yqwx4v7k01yy2l4j70fbqa8zcvikdw";
+ };
+ "f4569ad2ff2b2fc1e09a93d172caa5084bdfe887" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/f4569ad2ff2b2fc1e09a93d172caa5084bdfe887";
+ sha256 = "0hnzdxvy9l3jwp6mp9hfvgks9mikpbhkdnv9dc3ydyw46f8d8m6f";
+ };
+ "f49df27b644738c41a183cbea4451a65d6ed937d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/f49df27b644738c41a183cbea4451a65d6ed937d";
+ sha256 = "1j2y6x1yilb35snqpsfz4d253hry23zbc2i1cas05yz7j06d248a";
+ };
+ "f4ac5ca56e38b43436485f6d2a480e5bc47d1e3c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/f4ac5ca56e38b43436485f6d2a480e5bc47d1e3c";
+ sha256 = "1cpdciik3mh3nh4z255yja75fpvsq1bfiwd5zlia95ypvfvvabyf";
+ };
+ "f4b57562abffd4d02b186411d743d78de996f9c1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2528371-50b896349a4f4b48b4cce5ef240b0c45/f4b57562abffd4d02b186411d743d78de996f9c1";
+ sha256 = "0lih22kxxnrnq7bg6hgmcszrjqidh89z6kz38c607wfgqks3f3fm";
+ };
+ "f4e5c321293ab07639b720b5f3c43e81d2476f5d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/f4e5c321293ab07639b720b5f3c43e81d2476f5d";
+ sha256 = "1rrzw4yms3rfdxb51sz6lfzh7w34v79fb6nlmqhs7zgjqg7nj5rq";
+ };
+ "f4f360f81e0fe0c3b19ba2e927c0edf2ca16dd74" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/f4f360f81e0fe0c3b19ba2e927c0edf2ca16dd74";
+ sha256 = "1ynp6x1zwx4kahvjp7c3k62f5kimg37l28v1jxrk42c6c590a9k1";
+ };
+ "f4f52945149f9b540099572fcd29c911f8f8fc18" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/f4f52945149f9b540099572fcd29c911f8f8fc18";
+ sha256 = "05jp9y3bsm2a5vyr6azbgn6isiw00wld1vbyw8f5sc7j4rbr2c8c";
+ };
+ "f51cdb5d1eca4ab02befd826a9ff14a8d168ba9d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/f51cdb5d1eca4ab02befd826a9ff14a8d168ba9d";
+ sha256 = "0089lky37w6yfm4xlwqdlrdj3jj6k3bkyhw3nbhprlf94r8h8s5s";
+ };
+ "f56a72b63003eb41d4300d8b2b39b21f53acfc8c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/f56a72b63003eb41d4300d8b2b39b21f53acfc8c";
+ sha256 = "0a0f4vfpncifw87j6h0ajnzwhk9d0s35l5s5dad6rp0ijh6d5axv";
+ };
+ "f56edcc07a586e9b6792c219e9e8eca444362bfa" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/f56edcc07a586e9b6792c219e9e8eca444362bfa";
+ sha256 = "1nk5jxlgscmsv9hnjqprsbkvc2g3wcdqx04xhnzcr992b4xr7p9a";
+ };
+ "f5a791771dabe2848c00de5551dea8e2ec534cc5" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/f5a791771dabe2848c00de5551dea8e2ec534cc5";
+ sha256 = "0wrs36vv55lzbzn2ixqyjnf15mf41xzbw7fvfgzcdxcmpscc76cy";
+ };
+ "f5a8823af793b1af1d0d25d57df351ef32bf3d40" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/f5a8823af793b1af1d0d25d57df351ef32bf3d40";
+ sha256 = "171lmzp6i9l2inwhpcif35v8j00dg44ipfkq1fxay58iinqjk9x1";
+ };
+ "f5d3ceb33b27c7cfc4a8e4689a6b49f594aea8e3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2590354-88fba4596efa431eaf994358f50a5f48/f5d3ceb33b27c7cfc4a8e4689a6b49f594aea8e3";
+ sha256 = "0pfplb9yqmhzxzkafhi8j5c8s7y9wqywrzxs7av8hnrhxxj0nasa";
+ };
+ "f602c209a799d0cc6814312718f806f70e09062b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/f602c209a799d0cc6814312718f806f70e09062b";
+ sha256 = "1kjb7vbq5xqz9wdbcwsyayr6mrl5r6zczqb7pjpgavwx7kfk5xw8";
+ };
+ "f65aee70832fe31db72589b465574d372fa46ea9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613304-102512ed386740db8ece250c091d390e/f65aee70832fe31db72589b465574d372fa46ea9";
+ sha256 = "14vany0873b0hsa28g724fj1zrk2ls4jwjrhs379wxmddhllrrfv";
+ };
+ "f6fadd3d388c12b5d7246b025244646c62920fdc" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/f6fadd3d388c12b5d7246b025244646c62920fdc";
+ sha256 = "1qx4xdscnfg5aha11sfvkqrp5w7db2idwhak9vph9fd5r2kg9anx";
+ };
+ "f6fdc33805bc89e2eaff8003a996f6bf8f880789" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/f6fdc33805bc89e2eaff8003a996f6bf8f880789";
+ sha256 = "1r5hx97nasmk8m37pw490im1fq85q35khjpm5kq36byly3f6nvph";
+ };
+ "f7301b809afdfc0f640f1ae1c5683ff024e82766" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/f7301b809afdfc0f640f1ae1c5683ff024e82766";
+ sha256 = "1bnbh14kj5ywifry0xnbzz1j9shnxizwamvi94ddjxidxacg8byh";
+ };
+ "f7543772618d958884a94ad5d6a90a39de6049c2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/f7543772618d958884a94ad5d6a90a39de6049c2";
+ sha256 = "1hl95yhmxgs6qwrg4fjlk1klqdf7wdssid60ysm7dyqcaf0pxq1s";
+ };
+ "f7a44be87cd8b2cc22a5c6580998902cd597ffac" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2615502-35e684f430004977ab5aaed43a0fab81/f7a44be87cd8b2cc22a5c6580998902cd597ffac";
+ sha256 = "0zcdg0hyrb57wl3hy3w5mh1jibd31k9lcj3sa1bqx1wvgy3axs35";
+ };
+ "f7f52ad80e2bfa86c133febe8231fb1c1f321c68" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/f7f52ad80e2bfa86c133febe8231fb1c1f321c68";
+ sha256 = "1wmasx8b2vjprs16iz2mm6djd0f9j5j2jp9mii9s55hqlc2x3zlv";
+ };
+ "f7ff067e31d48918ce41494b39f2f30c48890e55" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/f7ff067e31d48918ce41494b39f2f30c48890e55";
+ sha256 = "1xz599vrazq3gk6jcdnsrvg20dy6dfsjacm71fgi61ja9mb85kbx";
+ };
+ "f859df604a7deb221be8fb75f5eabac9a4518834" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641912-e998389b29084ea288ee35c8e738d35c/f859df604a7deb221be8fb75f5eabac9a4518834";
+ sha256 = "1mh460676fcx2557fjkfkvwl2ahxwadqyfa5axaf07fss3dnj865";
+ };
+ "f859fcf20b1d5912f1dd1fba6f9bd4393a014968" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/f859fcf20b1d5912f1dd1fba6f9bd4393a014968";
+ sha256 = "0nqg6j8kxhs5qrriaycj0ihv5hwwj8h5w4a9zjs2c23982cxgd6y";
+ };
+ "f8a7fca733ca940a07647121bde451787b5afb66" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/f8a7fca733ca940a07647121bde451787b5afb66";
+ sha256 = "18kg4v54a769z22py9zzm4llz6r8kf38nm1i54704mkm5py2h35l";
+ };
+ "f8deb83eeba474abd3c4332328d32de585f40d2e" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/f8deb83eeba474abd3c4332328d32de585f40d2e";
+ sha256 = "0ra7znx005gdyzybn66246bwjdkx3bwmzi99k0wqc8h3np0x3vh4";
+ };
+ "f938e9fb108c5df460b316ad63f8e4d43de264a9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/f938e9fb108c5df460b316ad63f8e4d43de264a9";
+ sha256 = "0xy3y79i0arjb3qcmq1psd3xbync91zbdfyxg2w542iviwcqx8b9";
+ };
+ "f9b69d517e1417f8099af43fbb448801dd00c40d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2539301-e5e4001afc404628b562e71e48fbe47f/f9b69d517e1417f8099af43fbb448801dd00c40d";
+ sha256 = "1813v1a3aaxpsa8fwfkwc5ik9fks5fcs1xy1spdag422iqg7752r";
+ };
+ "f9c0960de898d46640b7767a29c2119310539a4c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2612065-7518df1e66b64067baa9f5dbe835628e/f9c0960de898d46640b7767a29c2119310539a4c";
+ sha256 = "0vj3giryjmh9g43bngrimn0qm7lv41hsgwd034db6n341q2dcpsc";
+ };
+ "fa0f4ef2e4265e7a8b79791ead562e32bf436c05" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2431986-5a8dd079cf514ebd8b20693fadfa5a4e/fa0f4ef2e4265e7a8b79791ead562e32bf436c05";
+ sha256 = "1570238pvmaj2id29whvch7hn8914b2d8adf0gy6mcckgrjlx8d9";
+ };
+ "fa392f24144f8018b8a29676f4cae4fe188e7a7b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2610711-48667bb021d647959b5e191a0aa242db/fa392f24144f8018b8a29676f4cae4fe188e7a7b";
+ sha256 = "024xcvz6jh5zvx65rrip7wwrixpzdc3ww1kp6711w15qdv5nsqhk";
+ };
+ "fa3c3cf43525a5cf7e63f9b4de6d7441a0e826af" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/fa3c3cf43525a5cf7e63f9b4de6d7441a0e826af";
+ sha256 = "172birg7k18453hdz4smcr28n1dg3pvb8p3w8knjqmmg8kgy6lqv";
+ };
+ "fab186b2b42815a73845c32093d591f8d4623f0a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/fab186b2b42815a73845c32093d591f8d4623f0a";
+ sha256 = "1h55af59wbw1rq5gxrca12k1f9n65kxrqnp5bczvlmcm1nb3gi1h";
+ };
+ "fab30d459fc6efe51b656ac70e86c70a8772e5ae" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2528371-50b896349a4f4b48b4cce5ef240b0c45/fab30d459fc6efe51b656ac70e86c70a8772e5ae";
+ sha256 = "0zfymfssbgb22ixpqsiylyzygs331w5dnkjwqs1i6nwi5i2i83ds";
+ };
+ "fac6370a5441886d40a7aa7b4494da0c3304b397" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/fac6370a5441886d40a7aa7b4494da0c3304b397";
+ sha256 = "1y3b4rs1ca5v0imxx7iijr9lzxawf4brjdm62haxv6wadaqd27qm";
+ };
+ "fb092729cca1243487ce2f17b83e612ee2e645f0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fb092729cca1243487ce2f17b83e612ee2e645f0";
+ sha256 = "136ddzazdpyzk4178g7c88adh50c91bcnv993z87fny2yzc71rh8";
+ };
+ "fb175aabdcfafb6d77b5b7bad0de2c37cbabac81" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/fb175aabdcfafb6d77b5b7bad0de2c37cbabac81";
+ sha256 = "06hxp3g03bk3dvwnif9f5yhl6fc4dah722x5sabhi9pphq0z3ckc";
+ };
+ "fb4d3c4309ce988d3ebc299d517c232e83fdfe7b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/fb4d3c4309ce988d3ebc299d517c232e83fdfe7b";
+ sha256 = "1qkg8zi3czwsija16npjjgfkb2k15q6zrrp3f6nz6mn6443248my";
+ };
+ "fb634cba7663cb05cb4751272114071ba34cc677" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fb634cba7663cb05cb4751272114071ba34cc677";
+ sha256 = "0qd9raqdaw6ayza6ii6hs79ah97pb957bb22azvijmk6p2a81krz";
+ };
+ "fb807fd862137423f4c6611e8ee553e2b04a62e7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2785401-212f8ec6a3d142c8bfeb17366702bbce/fb807fd862137423f4c6611e8ee553e2b04a62e7";
+ sha256 = "14b8pbm93xd7nrb7spwb1wpsiyrqksb25y4mfn2inaismakzxq8p";
+ };
+ "fb8b95b64656d46eb01aeb66dc7607697828e39f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fb8b95b64656d46eb01aeb66dc7607697828e39f";
+ sha256 = "1bznalkd43vbl6x5p0mwpnjmjvs91l2v0nscling0csxkkkrna1w";
+ };
+ "fbc4c9072ed5c93f777e5f6fe6f43486862fa0b8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2613671-efa8cb7212aa45139aff99785a99f6c2/fbc4c9072ed5c93f777e5f6fe6f43486862fa0b8";
+ sha256 = "0kxdjzwk81ixnxxfp4wmn19qq2lbdgv1xic01mpdp00naxzw6s68";
+ };
+ "fc571a1d0a7202a062ecd269c06a2308ab378cb4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fc571a1d0a7202a062ecd269c06a2308ab378cb4";
+ sha256 = "1zfdsd060m1njrkx2hlw7bcwpff23pggyklza2hpdj9k6h3jmdn2";
+ };
+ "fc71358f88c1a01c32f496b064386dba3145a36a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fc71358f88c1a01c32f496b064386dba3145a36a";
+ sha256 = "1sq6f7zpmbqq9b27irf4xx8zg9p906xfpgsdxyrzgwf15vqc3cxc";
+ };
+ "fc72803a9439e161de25108be11e5429ed900f77" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fc72803a9439e161de25108be11e5429ed900f77";
+ sha256 = "1nhbsry6l2wb1w8rv4lkzp42r0iqfhd5r21ckxz10gsngf9v8d5z";
+ };
+ "fc7b29cbf72c69bffecb661d7345ac5be329c14d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2717066-919cce012f444f43b8fd9849400ad87b/fc7b29cbf72c69bffecb661d7345ac5be329c14d";
+ sha256 = "0gqb44kivk31lyrmvnfff65sb0llaqi04vc3270366x5h4sii9n9";
+ };
+ "fc97754c9af277910c57351443a42a210b2eb8a2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fc97754c9af277910c57351443a42a210b2eb8a2";
+ sha256 = "047psrjpddw50plbk1al6wgapzcdhzs8a7g0h2pypwiknxkw09cy";
+ };
+ "fc9d37a2c0ab6854c6b039c509d86b9459982472" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fc9d37a2c0ab6854c6b039c509d86b9459982472";
+ sha256 = "1p8j4q0blxpi9lblbyvix6w0vnds1yxn7ydq4z3qqaxmnixv9kvf";
+ };
+ "fcaba3584b9391b167f49dfe53afe253623ada36" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2608258-d12288bf79ea446a9353c7f9d223b24e/fcaba3584b9391b167f49dfe53afe253623ada36";
+ sha256 = "11dfccim0y3z9pw8hy0z0pqam8wcs3pn5sdr3yjd3g097hz2firp";
+ };
+ "fd441937ce92861563e4bd9e3619d5d9cdf73a55" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/fd441937ce92861563e4bd9e3619d5d9cdf73a55";
+ sha256 = "0fbyr6sax9j9mxfa86waw8v499yzb3sk4pqfsykcamy9dvzav6hm";
+ };
+ "fd44fdad76da5efbaf3bced1a5d2bf12eb028b35" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fd44fdad76da5efbaf3bced1a5d2bf12eb028b35";
+ sha256 = "141rnzqcg3p51saqqd54bl5nj7f5kkm6ysvbcmlcpd5qmxg0swqb";
+ };
+ "fd521968de6928ff3ba9e7a3568d3190fc56573a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fd521968de6928ff3ba9e7a3568d3190fc56573a";
+ sha256 = "0gxwqdk6d6lg3akvn5ydvr2jr2ywq4w38ql0ck1xxj8p5jnwh90m";
+ };
+ "fd5c39fee72ecaed24e8e462a4a71a69c06e4509" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/fd5c39fee72ecaed24e8e462a4a71a69c06e4509";
+ sha256 = "0jfdv5cbgqczza53gd35qgxykxa1660rj5r7p57kbyfhhn116785";
+ };
+ "fd621bb2eef661c744d767a89b7b835495af2a90" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/fd621bb2eef661c744d767a89b7b835495af2a90";
+ sha256 = "14pfnxzc77k809m22l6arqpi2rzdm8f5s07hkqn7ikvddyh55snq";
+ };
+ "fd63513879784b9901479056b82fc51c57ba8666" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/fd63513879784b9901479056b82fc51c57ba8666";
+ sha256 = "0qcxd2x5lhj2vkpc99y8yh0knsx0cnbr6h6zpv35ympybxffdm9r";
+ };
+ "fd9f084abed9009fd3d7585637980961e5ac37c9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2746336-9279cae0020b417daa2c9ef71df497d5/fd9f084abed9009fd3d7585637980961e5ac37c9";
+ sha256 = "1q21jh1pnq2hnc5pyx2bvjivly9d83mf3kh5xsvxgz73sviqr42h";
+ };
+ "fdb6c138bd7f73ccfc7a2324408b8199fe18c5c8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fdb6c138bd7f73ccfc7a2324408b8199fe18c5c8";
+ sha256 = "1sapx3lsi13mz76vljdiwddq5say5ing9jpckjpsg9vvzwpmd03k";
+ };
+ "fdddaa298c770236e8e0ae3fa46d56ab464ff590" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fdddaa298c770236e8e0ae3fa46d56ab464ff590";
+ sha256 = "0psr2i314z03ispws9cr2wfk6vq9l0fwcw1vz65rcns7i24l4bii";
+ };
+ "fdea9eb5b7adc1f8cdca84ff533afa9978bc74e2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2369826-2acd3c361c9d4a858bd63938a2ab980e/fdea9eb5b7adc1f8cdca84ff533afa9978bc74e2";
+ sha256 = "17pnggfb9aj0lahbbs0blfiywdz53bszbrh4bx0n86viyls5g36r";
+ };
+ "fe108abb775ce219aed6c508fa1d8d9ec9710c50" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/fe108abb775ce219aed6c508fa1d8d9ec9710c50";
+ sha256 = "0qknlj971xn147z7992idp3hbwif2fqy02ml8jbxah4v82d1ssdk";
+ };
+ "fe26cc5b44599296ab8cca48bf52350d32f5ccf3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2645089-febc94e74d4940f8a601cd6b98abe18d/fe26cc5b44599296ab8cca48bf52350d32f5ccf3";
+ sha256 = "154jg46kbbfn7ipjap4s8bgfjhzazj3pd2n7yd009drw2l1ald1q";
+ };
+ "fe2fd0043d9dceb3bd974fd46a7f657222f0068f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2616691-982be94b99b442419e99de37630ca843/fe2fd0043d9dceb3bd974fd46a7f657222f0068f";
+ sha256 = "0rq7hnir60k0ncfk0qzin2fk8w2m9l9259qzx7cryf9hvssy1vxq";
+ };
+ "fe34956f65e0611aa1584ca611b7843e22e3e29f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2636785-bb59fe7a4b5f4abc9305901e79ac10da/fe34956f65e0611aa1584ca611b7843e22e3e29f";
+ sha256 = "1hnasgpz4ml4095nnr1936jfx09vfajib3g9szrwdy0bf9rcrdh8";
+ };
+ "fe39e5851d68399087d05d9c22da12a1fdd7b6de" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2641797-79a5af4419414bd1af098301c8bac322/fe39e5851d68399087d05d9c22da12a1fdd7b6de";
+ sha256 = "1rfaalg6rbc1w45b5iipb81n6y0mdqkf1ylfphzbchpqliipl5ba";
+ };
+ "fe79883294e7b730b4ea0e6e72c662ced28e999b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2500002-69b23dcf7a2d4165b2b432780845acb0/fe79883294e7b730b4ea0e6e72c662ced28e999b";
+ sha256 = "0rc7vagcgn74cg4vkzhkhy0jyv5wphacb3kd8kfxzidb1v92k4br";
+ };
+ "fe94f39680410922eeef278b013e20b5ee27e7fe" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2372940-e2185854aff3439f82782883f74d5bf8/fe94f39680410922eeef278b013e20b5ee27e7fe";
+ sha256 = "0wllmwfggykl56kwb92jdz8rcfvrn4hxvj9mav19sc9fg2dibfzf";
+ };
+ "fecddbf47598e42c13644ce42253e7ca8178eb29" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/fecddbf47598e42c13644ce42253e7ca8178eb29";
+ sha256 = "0xwi7xa1jm012lmxhz3al7yhwwv33qz332bqvwamcza63ir6zpw9";
+ };
+ "fed2a12f5d40235d6295fed1092707889ff01b08" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/fed2a12f5d40235d6295fed1092707889ff01b08";
+ sha256 = "08cyqg80grwpmv9fkm7nldz8p12nzssg08cyijc4d5afx6xddym4";
+ };
+ "ff38188923ffc7c35c9b2e533f2ce6f3a9aa3a3d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/ff38188923ffc7c35c9b2e533f2ce6f3a9aa3a3d";
+ sha256 = "03vknw5a43n6kl3llyk7czg5a0w4fkic29b6d8i0q71jxknizf50";
+ };
+ "ff61432b09f3c5882ed0f5f932a0537f38cde5cf" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2716009-3335bc961a4d42e9ac0bd72e7491e442/ff61432b09f3c5882ed0f5f932a0537f38cde5cf";
+ sha256 = "08qcnz8qrxqrrhsll0n9k49cp6fqiacl85n0jhq53jsh805hlw2b";
+ };
+ "ff66ba394c099b33decda558509ec6f4fdb43892" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2581810-569aa4e20f7249d0bfc2a94ef91ec1a8/ff66ba394c099b33decda558509ec6f4fdb43892";
+ sha256 = "12qmiff7fynifhpaivsyg23v6jm89i903dhqqs2xiihbd77ln8lb";
+ };
+ "ffd25a14ee418633d47a558d3a953c501f56e2f3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2493588-b79d458e39e94a44804912814d8e1e50/ffd25a14ee418633d47a558d3a953c501f56e2f3";
+ sha256 = "0kclig15z3ywc7mb0xyv5pvijkzzj4llimij5hqagwwdgi31rirg";
+ };
+ "ffe1832c9002fb490bd976e6906fe43792e2e487" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2487260-b428468bcd6545bfbb79f02a6605b9ef/ffe1832c9002fb490bd976e6906fe43792e2e487";
+ sha256 = "1n5q3v765kblvn9z74jdgxj1f1qdqpnypx1i00xf8ni5if5w183d";
+ };
+ "ffe4b29f6febe2e6345b292bd341aefed751ae1d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2565979-eaaf2006b54843b69b5280979c12ed6d/ffe4b29f6febe2e6345b292bd341aefed751ae1d";
+ sha256 = "159bff8wiz2smjl34l7d581wyy9ihxr576s4blq8hdqkm1wl0va9";
+ };
+ "025037991170960704b2d2a49e7bf37cebf06b85" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/025037991170960704b2d2a49e7bf37cebf06b85";
+ sha256 = "05p86qn4g7qg9wzz62piksf2xi599hyim2bqi38158qrmfmqigdw";
+ };
+ "091a839006f281b7b12ee0d1bd0fff225f0ac73a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/091a839006f281b7b12ee0d1bd0fff225f0ac73a";
+ sha256 = "0m79g350p4gv3yb13i5921gbcc7bx852p5lmivfpwx3wqvghd5pz";
+ };
+ "09dbd9ce439ba4adad23922f5b9002fa4e759bd1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/09dbd9ce439ba4adad23922f5b9002fa4e759bd1";
+ sha256 = "188f2j0ik5c2cmw5ck386diabc24p57yhqrb4c7303d13dnqr1mm";
+ };
+ "0c416ae48c3e2ad2be1333ccc20f6992ce982aa4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/0c416ae48c3e2ad2be1333ccc20f6992ce982aa4";
+ sha256 = "1bm210fw20prl3k51dr9gai3asdg3kq30diln70lgm9wyk18kiv4";
+ };
+ "117189ccfc8241744b0cde19d866507341334ea0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/117189ccfc8241744b0cde19d866507341334ea0";
+ sha256 = "1nv2s6g8i7scqgwbqgsyicys2cwaf3mkvcqqvpc807ag2ad3rxl6";
+ };
+ "12164f23f40b93eb0a4cf6f0acb58596becc8f2f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/12164f23f40b93eb0a4cf6f0acb58596becc8f2f";
+ sha256 = "0px9qidckfldj9b9znxg31alsqrzzgpfjixr003lv410hbn099ir";
+ };
+ "1580d9078ae389f2cea6d568fc4ea0b0ebd5d183" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/1580d9078ae389f2cea6d568fc4ea0b0ebd5d183";
+ sha256 = "1xffqr3bhd4x5h36vk4dnz0hmc64gjg273ysnn68x9k2zdqgdmj0";
+ };
+ "1c44fa7c763743e619fef130346733eb5f107049" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/1c44fa7c763743e619fef130346733eb5f107049";
+ sha256 = "05nms6yrclw38v6180b4bqswwdmlb7l2l388wj4f7i0zi9cc0z1d";
+ };
+ "1f209ff22ef667820d2143b0bef1783612c2dc33" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/1f209ff22ef667820d2143b0bef1783612c2dc33";
+ sha256 = "1w6prwjci9fbp4jln2dl0pdjjiis30r982cjk261jb7ryrzm1bc6";
+ };
+ "2a13498d62f2897b95a2fde8f9117caf2213369d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/2a13498d62f2897b95a2fde8f9117caf2213369d";
+ sha256 = "11khy0pbyqbchzksfp51ihw8ahgpf9kvby6jp2spwf4cqglr4yzj";
+ };
+ "2c0a73c42dae723ea6ada9f3a83b520b4094655f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/2c0a73c42dae723ea6ada9f3a83b520b4094655f";
+ sha256 = "1gm11rsybfsdsbzbyrfwvp1wpy9x84plgwayv59qmn4j15hz7hya";
+ };
+ "2ea89fc7cf11ce2e9f8bd6df71dd99eff85bcc15" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/2ea89fc7cf11ce2e9f8bd6df71dd99eff85bcc15";
+ sha256 = "1zn4b57cf0w74m125iihbn2yjba95v22pn8gxq49qrfg5aci928r";
+ };
+ "2f7a26433cf0506c014fcc5694c194b28a811006" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/2f7a26433cf0506c014fcc5694c194b28a811006";
+ sha256 = "0ikgmmv133lamgmm5dah5sy50pr5g1125bw8rx4l27mgbz5yq276";
+ };
+ "316245a9c9d050b2bce9f47deafb0baa66af6347" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/316245a9c9d050b2bce9f47deafb0baa66af6347";
+ sha256 = "1389lmbg8dby7g14yq8jphvzdzswnwhkpm8aqa3h74ivnpabnpni";
+ };
+ "3536f544f9e91433e6939163fb611c524a5f468f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/3536f544f9e91433e6939163fb611c524a5f468f";
+ sha256 = "0wm2djjaksndivynjdz0f2c56a792r6q13vi19baipm0hglbaq3w";
+ };
+ "3663f96dbca6fd930e000a6617a3bb214a6ee0f0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/3663f96dbca6fd930e000a6617a3bb214a6ee0f0";
+ sha256 = "0qhpfkja24fxnzgl6vihwz2ilvz0jsdk04g5jn5r08iv90klj5c8";
+ };
+ "3d32ebca9fef4352a99f2e0636ac45e9d3b35d03" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/3d32ebca9fef4352a99f2e0636ac45e9d3b35d03";
+ sha256 = "02dsfahlg3fcvzb9aqxiycwd5vcb0q205gbzrh3x5m989flyrs1y";
+ };
+ "44c8dbacafb32300e6af2a0cf5897e5145c2b7f4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/44c8dbacafb32300e6af2a0cf5897e5145c2b7f4";
+ sha256 = "1vjyvp13qbfmv5jgdbicikhjq6wm9216ikqk23w1qsz0xzbn9wb9";
+ };
+ "4511815cd4297243a8afd7a2e799c60880a6ea95" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/4511815cd4297243a8afd7a2e799c60880a6ea95";
+ sha256 = "1rw6h3sc30ypr6304mjg6pzh841wmn5gjd4a3xv4y681nqys30li";
+ };
+ "4d9e2249062c1ccd50913501cbc7ea2fdb8cc94c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/4d9e2249062c1ccd50913501cbc7ea2fdb8cc94c";
+ sha256 = "0z86cczszfk05fmcd7dwfahnv0cm1wj7xq0yr0i332a7jr0g5s6d";
+ };
+ "4e3bb620861aa7c3d996fd8ee7cd3a40c2096bb0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/4e3bb620861aa7c3d996fd8ee7cd3a40c2096bb0";
+ sha256 = "0l9bfkanklr3zywkyn4lb5lzfpqkhr4c4n6kvw9gi4nzg063ifnh";
+ };
+ "574e359a11791294117e7f4ad4f677a99424170a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/574e359a11791294117e7f4ad4f677a99424170a";
+ sha256 = "1vhnylasbla79d2syx41804pshyd7w8ph1y88yyjp5w9g8zbcy0g";
+ };
+ "5756967d4a6019de75418949a564995c64fd81b1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/5756967d4a6019de75418949a564995c64fd81b1";
+ sha256 = "1fy2h21myp9yzc60545appg75in12f13rslhr7bpmsssgjrrz2fg";
+ };
+ "5c884c59ad7491166618894713300acc03499f45" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/5c884c59ad7491166618894713300acc03499f45";
+ sha256 = "19zrbvfnmhivs7gy0bm92kn04fqyc8179mkir5v4wycx7q24w938";
+ };
+ "5ea84c79c69cb4f20a2cbde31b1e9655f352f1c8" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/5ea84c79c69cb4f20a2cbde31b1e9655f352f1c8";
+ sha256 = "02rhs442s9y67kb8gympr42yl3xxx3d34iwqz926gr5721if0gh0";
+ };
+ "60be604621599e16ffec1f76e08339b6f9d89f8d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/60be604621599e16ffec1f76e08339b6f9d89f8d";
+ sha256 = "1nyll0lj0fmdphmah4zd5n6bn2zgy2sgff6mnwch2mm6bvxmgzlm";
+ };
+ "659b18633abf461608be32b8b565f4b70725ee20" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/659b18633abf461608be32b8b565f4b70725ee20";
+ sha256 = "00jywmppclqm62q0zq3b1dww6f27blblc633kcskyxc9f2i8p3qs";
+ };
+ "6f25ee59e861b5697b41d487ab19360684b2079b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/6f25ee59e861b5697b41d487ab19360684b2079b";
+ sha256 = "0y3fiwflj6qfmmpgpyi3xkyn6dls620iwcwq5cdpz4jhzhz5vbqm";
+ };
+ "723429357fc93c212749453abdecffa83625ce63" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/723429357fc93c212749453abdecffa83625ce63";
+ sha256 = "126ncm0szxkskfgwfbx5mhnbdpxl395gn62dv3rdg7xm4wjg3s07";
+ };
+ "73163f4d3a1f9f7015cad45b8b2fe49ee716aed2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/73163f4d3a1f9f7015cad45b8b2fe49ee716aed2";
+ sha256 = "1lkd1i92yc8lyfpnxp9gkgrklmxfj0p3zj1j0png50a4v6qyw55d";
+ };
+ "74ee06b2cb0a84dec755ca05d0b832517a58db9a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/74ee06b2cb0a84dec755ca05d0b832517a58db9a";
+ sha256 = "10xp24ija0l7dn3xd690dk6a342ma4iafmcywinvh111xcwkvvql";
+ };
+ "77c1ef425fc9a747ed3815f78a2616fee747fd12" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/77c1ef425fc9a747ed3815f78a2616fee747fd12";
+ sha256 = "0gspscdvrnvj0ps5z2ckga2ji00y8m9kj3zaqpl06kywyz5p1q1l";
+ };
+ "77cf0dabcf5441932f1317ec4ee4e28bf2039a85" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/77cf0dabcf5441932f1317ec4ee4e28bf2039a85";
+ sha256 = "1mdngkvkss3ia9g6kjiybvqj4w7q39iif1kqfjxzr1gs098q23ng";
+ };
+ "80d27f0c38fd20a082015a2b069457560f523b57" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/80d27f0c38fd20a082015a2b069457560f523b57";
+ sha256 = "1s2cxkgwnzisbj9r55ciwkv42m423cq7nhkywd7d80hy2wrpir5p";
+ };
+ "817fe5e5ddfde58d79455a8b2cf70079f0642770" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/817fe5e5ddfde58d79455a8b2cf70079f0642770";
+ sha256 = "03dh02fjc2ksdhifwx92qfvcaymvkhc5cf4m8jlg9v3lkz1dxa2z";
+ };
+ "81cf86d27a982faf7f6331f91b6b5634cfaa00d0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/81cf86d27a982faf7f6331f91b6b5634cfaa00d0";
+ sha256 = "0n9ra5ynq4kqpd5gsdx72qk8nn8nh9bffbqvyp1jwkbc7vbf6rn1";
+ };
+ "82368148bbcf9a6d07bead1e678bfee5f8631cfb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/82368148bbcf9a6d07bead1e678bfee5f8631cfb";
+ sha256 = "06f7ysl5zxx15x2mc0yl2qxdfydnaclr7zwffip03s1szjfdf078";
+ };
+ "85df0b8a16e3e1c2b99bd8d8703a8c00f80c4ffd" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/85df0b8a16e3e1c2b99bd8d8703a8c00f80c4ffd";
+ sha256 = "0gl18m1fqb2gyd0fnf5bvq77bqvlyngqvqbjikdr1vhj78jp8l2p";
+ };
+ "8a73223e8d37b2fb9151a753a24139f37818e434" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/8a73223e8d37b2fb9151a753a24139f37818e434";
+ sha256 = "0sk5l8ijfjrys0l3mj6ypgx4araw0hnxz0cjzm9bk8y605331znx";
+ };
+ "8ab79f2416da3c5f785bf291971680dbfdb62e26" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/8ab79f2416da3c5f785bf291971680dbfdb62e26";
+ sha256 = "1xlnzpljknkmbw85xz35a48h2fdv9c2ijf0nm7cdc489699v9gfv";
+ };
+ "8c09c7e57e2bc1a99df552e75f3bc3033364bbd1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/8c09c7e57e2bc1a99df552e75f3bc3033364bbd1";
+ sha256 = "168yb57ri0wibsy1gr940y8sxdc9s2vcniizkk4dykpnkay0izl1";
+ };
+ "8e02b6fe5eaaad154d3b7677458a9f52c538129f" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/8e02b6fe5eaaad154d3b7677458a9f52c538129f";
+ sha256 = "0zlz81qm00klwfmnc1133c8q1jgxn1w6b5fajs8jigmhwqahi806";
+ };
+ "8ef45e913784e24ac5b05d020bb1c90e5e1f65b4" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/8ef45e913784e24ac5b05d020bb1c90e5e1f65b4";
+ sha256 = "13rd7mvzc3vxgz7zpa89rdfidflvaxzlv60m1ngcsjigwank5a52";
+ };
+ "8f31c3a2ca87728958356ef279d797c21ff800d2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/8f31c3a2ca87728958356ef279d797c21ff800d2";
+ sha256 = "10vqrm360csnbncrhkyy45nnl9md88jl0f9lmvlav19m60cdxazi";
+ };
+ "90647a14bfb8f6e8cbcc8d8ecce7d8e2500818b9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/90647a14bfb8f6e8cbcc8d8ecce7d8e2500818b9";
+ sha256 = "0hlknlph7dw2c74pmg99apbhdfd844vq77navnynxm890nrjzqs0";
+ };
+ "a0032cd8280294edff61604e9bf0312230cfd79b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/a0032cd8280294edff61604e9bf0312230cfd79b";
+ sha256 = "026b18ka0nsb1ri7wk0iqnjz60fsnr11c22lvhq2wiqh9jqsl9f6";
+ };
+ "a038a78206b6b0572fa3a86e5a96e3fee0d32b04" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/a038a78206b6b0572fa3a86e5a96e3fee0d32b04";
+ sha256 = "0ahhkyb4h23apy04jjif0ys6nqjjrzf27w7h3xvw93mzasc4x515";
+ };
+ "a27eb78abbdabe194ad5b4c1bfe56dfca38e43b0" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/a27eb78abbdabe194ad5b4c1bfe56dfca38e43b0";
+ sha256 = "0bba6vpl4lk376yhjjlgxc81m20i9qq9b7kr2bf7lg76fx485ydq";
+ };
+ "a2e5471c647ec896793c1df59ec6c214756b7644" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/a2e5471c647ec896793c1df59ec6c214756b7644";
+ sha256 = "05n7fnxpg01xg4b8k323h0lbhlqxq2b432454rg5lj5ydd71w9vd";
+ };
+ "a6f1cf388c274ffbbbf5ee9f678d2fd2c982ac9d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/a6f1cf388c274ffbbbf5ee9f678d2fd2c982ac9d";
+ sha256 = "0l0fdmypq1h5whfnk1132z77sbnmgwqhizss8pgjwi9k0qgahgcc";
+ };
+ "afad2bca0d8075378f5239206210c90bc449f66d" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/afad2bca0d8075378f5239206210c90bc449f66d";
+ sha256 = "13944ai93z6md86wq4ghjhlgnw3xd5xf64ski1n0imxy3xnclki9";
+ };
+ "b49b4db86170da54d36c9f77345132f501569443" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/b49b4db86170da54d36c9f77345132f501569443";
+ sha256 = "1dm4ln3cky50hzwpfb8hyzj3wyiwnjzpwybmri7sp51yhfjbssh4";
+ };
+ "b928e6544636d28eb1f1fad8cbfb3a508d6b523b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/b928e6544636d28eb1f1fad8cbfb3a508d6b523b";
+ sha256 = "0a2lgynlylx99aj6jlzkbid6sq8sc1y9sblr3vjdc0rxpzyr7saf";
+ };
+ "bac3a42148c64a342e3a138e254acfc37baf7f7c" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/bac3a42148c64a342e3a138e254acfc37baf7f7c";
+ sha256 = "0z3vq7qnjjihk5h7rr4sjgiyqvqvm64ivra2bdb89hklycawz6c5";
+ };
+ "bf6954d37d21ccd063ce7829bdbf17a34a5972f6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/bf6954d37d21ccd063ce7829bdbf17a34a5972f6";
+ sha256 = "1wmm2rhf0c1351y9mjdyi4dxq2jmsl893ijm99f4zr64nqgxh76b";
+ };
+ "c48ea333ebc4208f44ca53ccec1b4a9224234423" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/c48ea333ebc4208f44ca53ccec1b4a9224234423";
+ sha256 = "0q536yk3rncy3gf6ch5mmsvjizq1n5lkk8nfhg1lrvg7mhxsd257";
+ };
+ "c4ab35a8f3c52c8999804559d5a506f4a4ea28d6" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/c4ab35a8f3c52c8999804559d5a506f4a4ea28d6";
+ sha256 = "03id4awm9lnrrk92d9vdzlwy5g6bai9ig4i5lsk90f814vhz11nq";
+ };
+ "c5f44e9ae34828343c5c6eb3e73c2c451120da78" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/c5f44e9ae34828343c5c6eb3e73c2c451120da78";
+ sha256 = "15qbc27xc2gp431i3hhslwbgsgg3az37swvc37rarqw8jaayfdzw";
+ };
+ "c97e1a685bb16bacc741e943d668230b044da28b" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/c97e1a685bb16bacc741e943d668230b044da28b";
+ sha256 = "1an5cdb74lspq3v15xdksjld444saw7b62nx8c9vy8hq0qkxmyg0";
+ };
+ "ceed10f922981467ca264e2f3c1ba9a6834ee9fb" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/ceed10f922981467ca264e2f3c1ba9a6834ee9fb";
+ sha256 = "0lsghjsy1dxr94crqd4z28vgl1fzwbw2q02k7yh2hzq3p5w5n08s";
+ };
+ "d657a675c488b3ceece090f664b8b3890c0f72c7" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/d657a675c488b3ceece090f664b8b3890c0f72c7";
+ sha256 = "1ddbjh67h2iz3pm0sfj77yc907zcfrzmn0bzyaa4rkz234zzp6hl";
+ };
+ "d80b9d2bef36dbe0669cfea717fe30315568ba9a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/d80b9d2bef36dbe0669cfea717fe30315568ba9a";
+ sha256 = "11p1dbc3zrakwhmw7xi2wdshsbm6azdix8gy81gf8icy55ggg8ma";
+ };
+ "d87b8c33d15b51b773c6f091853c54f865561e64" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/d87b8c33d15b51b773c6f091853c54f865561e64";
+ sha256 = "0qx0pb86fw6v50nl1p59d375bmc3x35cwd0qvbsbszr5w0wla0w2";
+ };
+ "d995c76652895e51297226aedf32dd0c715582e3" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/d995c76652895e51297226aedf32dd0c715582e3";
+ sha256 = "0pgwg8w2svxvnw1p7cp233p866f4kpmfsgaw1ids8z37dw8qa7h0";
+ };
+ "de6a3578fbc96909e587a897c860f56738c9a027" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/de6a3578fbc96909e587a897c860f56738c9a027";
+ sha256 = "1vpm2s3ndg9nqnady3kswfh4bwcrmx1x37m79kcvbpaalbb1w7cr";
+ };
+ "e0a272e2ea952c9c27d010098f6ed3be34d70023" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/e0a272e2ea952c9c27d010098f6ed3be34d70023";
+ sha256 = "1cw0bn4lrk11nynab2s56i982fljd39ibczp92lwv6f9crpbxqqd";
+ };
+ "e18cf443cf050171be2dafbb7847b1eef470d743" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/e18cf443cf050171be2dafbb7847b1eef470d743";
+ sha256 = "10pf020vhki6wv2a8ja4gx5lr4l8fc6fhbyvkmjw6fszf4qkmgzd";
+ };
+ "e89e8d979ec25d6a66f7a72b8390aaa876cb54b2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/e89e8d979ec25d6a66f7a72b8390aaa876cb54b2";
+ sha256 = "0x7mcg0rfx0nvr9356yk4lzilz5x732bhir53qis4z7rfjhdi3fn";
+ };
+ "ecee7a937781e9f7f6528b7bf03dd4cdc12bbd1a" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/ecee7a937781e9f7f6528b7bf03dd4cdc12bbd1a";
+ sha256 = "16l5vasgq7iykpgrhr2q5x5rp780fy5nhzg459varwpr2ixlj640";
+ };
+ "eef376599acf8af872a7ecceb89b8afc1dc53cca" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/eef376599acf8af872a7ecceb89b8afc1dc53cca";
+ sha256 = "10kjixb4gsdy2m0zj0v4sd38qqjbxcy4wmiwvpbpj95nyckf4695";
+ };
+ "f32b43ead099376849798c829e67335923b6f5df" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/f32b43ead099376849798c829e67335923b6f5df";
+ sha256 = "0bzabjvzamnadzx2idzviiyzhv3nkbp7w2wcq20lpzmszk0lxdn5";
+ };
+ "f6efa02b7fe9e154763f4e74a2d13e6016651478" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/f6efa02b7fe9e154763f4e74a2d13e6016651478";
+ sha256 = "1qwgrh9pdhp5rsiimwm6v0hvmi9v3fbijx4pkdgklm6c7mxfmh6g";
+ };
+ "f82d0258fa61f3050a7ec0c48a72a14882f4f9ff" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/f82d0258fa61f3050a7ec0c48a72a14882f4f9ff";
+ sha256 = "10yqzj12sma2xqcxvqdh3s24dl5pwk9wlplxiaplkwm802fn95sw";
+ };
+ "fd8eb71773dfc69f5da73a588a9487e8155eb7d9" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/fd8eb71773dfc69f5da73a588a9487e8155eb7d9";
+ sha256 = "1xfvsj2rsbmnhmgv67j7xkc41n3c61ikvmlglj47iyqxlrcp15hs";
+ };
+ "fe7abbfa12319d22b0735b908af92eafc25d27a2" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/fe7abbfa12319d22b0735b908af92eafc25d27a2";
+ sha256 = "0f6cvhhba05slb5wxyymx46syb7v1ggbgcvisifiaf8wnivh46f9";
+ };
+ "ff648984dc86f826cc03f174f5a1b26e33268529" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/ff648984dc86f826cc03f174f5a1b26e33268529";
+ sha256 = "0l2p41n9w4iap9nixxivn6vlzbl5bb3x47pkr250lgd3s81slhg5";
+ };
+ "ffcb54fe4e2f0e1ee2f22f84cff4ddc49da010f1" = fetchurl {
+ url = "http://cdn.unrealengine.com/dependencies/2818068-50a136646fbe4d1b8b290d40ccd3f30a/ffcb54fe4e2f0e1ee2f22f84cff4ddc49da010f1";
+ sha256 = "1irjabajfblyl5s36lasq5rclxagc1finwb7y68wsj3w5195gihg";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ue4/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ue4/default.nix
new file mode 100644
index 000000000000..643779cf5fd8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ue4/default.nix
@@ -0,0 +1,83 @@
+{ stdenv, writeScript, fetchurl, requireFile, unzip, clang, mono, which,
+ xorg, xdg-user-dirs }:
+
+let
+ inherit (stdenv) lib;
+ deps = import ./cdn-deps.nix { inherit fetchurl; };
+ linkDeps = writeScript "link-deps.sh" (lib.concatMapStringsSep "\n" (hash:
+ let prefix = lib.concatStrings (lib.take 2 (lib.stringToCharacters hash));
+ in ''
+ mkdir -p .git/ue4-gitdeps/${prefix}
+ ln -s ${lib.getAttr hash deps} .git/ue4-gitdeps/${prefix}/${hash}
+ ''
+ ) (lib.attrNames deps));
+ libPath = stdenv.lib.makeLibraryPath [
+ xorg.libX11 xorg.libXScrnSaver xorg.libXau xorg.libXcursor xorg.libXext
+ xorg.libXfixes xorg.libXi xorg.libXrandr xorg.libXrender xorg.libXxf86vm
+ xorg.libxcb
+ ];
+in
+stdenv.mkDerivation rec {
+ pname = "ue4";
+ version = "4.10.2";
+ sourceRoot = "UnrealEngine-${version}-release";
+ src = requireFile {
+ name = "${sourceRoot}.zip";
+ url = "https://github.com/EpicGames/UnrealEngine/releases/tag/${version}";
+ sha256 = "1rh6r2z00kjzq1i2235py65bg9i482az4rwr14kq9n4slr60wkk1";
+ };
+ unpackPhase = ''
+ ${unzip}/bin/unzip $src
+ '';
+ configurePhase = ''
+ ${linkDeps}
+
+ # Sometimes mono segfaults and things start downloading instead of being
+ # deterministic. Let's just fail in that case.
+ export http_proxy="nodownloads"
+
+ patchShebangs Setup.sh
+ patchShebangs Engine/Build/BatchFiles/Linux
+ ./Setup.sh
+ ./GenerateProjectFiles.sh
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/UnrealEngine
+
+ sharedir="$out/share/UnrealEngine"
+
+ cat << EOF > $out/bin/UE4Editor
+ #! $SHELL -e
+
+ sharedir="$sharedir"
+
+ # Can't include spaces, so can't piggy-back off the other Unreal directory.
+ workdir="\$HOME/.config/unreal-engine-nix-workdir"
+ if [ ! -e "\$workdir" ]; then
+ mkdir -p "\$workdir"
+ ${xorg.lndir}/bin/lndir "\$sharedir" "\$workdir"
+ unlink "\$workdir/Engine/Binaries/Linux/UE4Editor"
+ cp "\$sharedir/Engine/Binaries/Linux/UE4Editor" "\$workdir/Engine/Binaries/Linux/UE4Editor"
+ fi
+
+ cd "\$workdir/Engine/Binaries/Linux"
+ export PATH="${xdg-user-dirs}/bin\''${PATH:+:}\$PATH"
+ export LD_LIBRARY_PATH="${libPath}\''${LD_LIBRARY_PATH:+:}\$LD_LIBRARY_PATH"
+ exec ./UE4Editor "\$@"
+ EOF
+ chmod +x $out/bin/UE4Editor
+
+ cp -r . "$sharedir"
+ '';
+ buildInputs = [ clang mono which xdg-user-dirs ];
+
+ meta = {
+ description = "A suite of integrated tools for game developers to design and build games, simulations, and visualizations";
+ homepage = "https://www.unrealengine.com/what-is-unreal-engine-4";
+ license = stdenv.lib.licenses.unfree;
+ platforms = stdenv.lib.platforms.linux;
+ maintainers = [ stdenv.lib.maintainers.puffnfresh ];
+ broken = true;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ue4/generate-expr-from-cdn.sh b/infra/libkookie/nixpkgs/pkgs/games/ue4/generate-expr-from-cdn.sh
new file mode 100644
index 000000000000..91cab1ca32f5
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ue4/generate-expr-from-cdn.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+go() {
+ file="$1"
+
+ IFS=$'\n'
+ for pack in $(perl -n -e '/(<Pack .*\/>)/ && print "$1\n"' $file); do
+ remotepath=$(echo "$pack" | perl -n -e '/RemotePath="([^"]*)"/ && print $1')
+ hash=$(echo "$pack" | perl -n -e '/Hash="([^"]*)"/ && print $1')
+ url="http://cdn.unrealengine.com/dependencies/$remotepath/$hash"
+
+ until sha256=$(nix-prefetch-url $url --type sha256); do
+ true
+ done
+
+ cat <<EOF
+ "$hash" = fetchurl {
+ url = $url;
+ sha256 = "$sha256";
+ };
+EOF
+ done
+}
+
+
+cat <<EOF
+{ fetchurl }:
+
+{
+EOF
+
+go Engine/Build/Commit.gitdeps.xml
+go Engine/Build/Promoted.gitdeps.xml
+
+cat <<EOF
+}
+EOF
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ue4demos/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ue4demos/default.nix
new file mode 100644
index 000000000000..24c98f7d774f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ue4demos/default.nix
@@ -0,0 +1,195 @@
+{ stdenv, fetchurl, unzip, patchelf, xorg, openal }:
+
+let
+ urls = file:
+ [
+ # Untrusted mirrors - do not update hashes
+ "https://ludios.org/mirror/ue4demos/${file}"
+ "http://web.archive.org/web/20140824192039/http://ue4linux.raxxy.com/${file}"
+ ];
+
+ buildDemo = { name, src }:
+ stdenv.mkDerivation rec {
+ inherit name src;
+
+ nativeBuildInputs = [ unzip patchelf ];
+
+ rtdeps = stdenv.lib.makeLibraryPath
+ [ xorg.libXxf86vm xorg.libXext openal ]
+ + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [ stdenv.cc.cc ];
+
+ buildCommand =
+ ''
+ mkdir -p "$out"
+ cd $out
+ unzip $src
+
+ interpreter=$(echo ${stdenv.glibc.out}/lib/ld-linux*.so.2)
+ binary=$(find . -executable -type f)
+ patchelf \
+ --set-interpreter $interpreter \
+ --set-rpath ${rtdeps} \
+ "$binary"
+
+ # Workaround on
+ # LogLinuxPlatformFile:Warning: open('/nix/store/hash-ue4demos-demo/demo/demo/Saved/Config/CleanSourceConfigs/Engine.ini', Flags=0x00080241) failed: errno=2 (No such file or directory)
+ # for Vehicle, Shooter and Strategy games.
+ ls | grep ' ' && $(
+ haxname=$(ls | grep ' ' | sed 's/ //g'); \
+ haxpath=$(ls | grep ' ')/$haxname/Saved; \
+ mkdir -p "$haxpath"/Config/CleanSourceConfigs; \
+ ln -s /dev/null "$haxpath"/Config/CleanSourceConfigs/Engine.ini; \
+ mkdir -p "$haxpath"/Logs; \
+ ln -s /dev/null "$haxpath"/Logs/$haxname.log)
+
+ # Executables are buried under a varied paths across demos.
+ mkdir bin
+ cd bin
+ ln -s "$out/$binary" $(basename "$out/$binary")
+ '';
+
+ meta = {
+ description = "Unreal Engine 4 Linux demos";
+ homepage = "https://wiki.unrealengine.com/Linux_Demos";
+ platforms = [ "x86_64-linux" ];
+ license = stdenv.lib.licenses.unfree;
+ };
+ };
+
+in {
+ tappy_chicken = buildDemo {
+ name = "ue4demos-tappy_chicken";
+ src = fetchurl {
+ urls = urls "tappy_chicken.zip";
+ sha256 = "0lwhvk3lpb2r5ng2cnzk7fpjj5lwhy2sch1a8v154x1xfhfb3h4v";
+ };
+ };
+
+ swing_ninja = buildDemo {
+ name = "ue4demos-swing_ninja";
+ src = fetchurl {
+ urls = urls "swing_ninja.zip";
+ sha256 = "1bmgqqk3lda5h7nnqi59jgyrsn0clr3xs0k1jclnqf9fk0m8hjcv";
+ };
+ };
+
+ card_game = buildDemo {
+ name = "ue4demos-card_game";
+ src = fetchurl {
+ urls = urls "card_game.zip";
+ sha256 = "154baqias5q7kad0c89k35jbmnmlm865sll02mi7bk1yllcckz5z";
+ };
+ };
+
+ vehicle_game = buildDemo {
+ name = "ue4demos-vehicle_game";
+ src = fetchurl {
+ urls = urls "vehicle_game.zip";
+ sha256 = "03dlacf1iv7sgn7pl3sx9r6243wy8fsi2kd858syfm9slg0190bs";
+ };
+ };
+
+ shooter_game = buildDemo {
+ name = "ue4demos-shooter_game";
+ src = fetchurl {
+ urls = urls "shooter_game.zip";
+ sha256 = "1bk32k349iqbqk8x8jffnqq0pjiqmvrvv675xxmlvkkr8qrlhz98";
+ };
+ };
+
+ strategy_game = buildDemo {
+ name = "ue4demos-strategy_game";
+ src = fetchurl {
+ urls = urls "strategy_game.zip";
+ sha256 = "1p7i966v1ssm20y12g4wsccpgnky3szy19qyjlacynk7bgbk6lg7";
+ };
+ };
+
+ black_jack = buildDemo {
+ name = "ue4demos-black_jack";
+ src = fetchurl {
+ urls = urls "black_jack.zip";
+ sha256 = "0g52wkzn5isa3az32y25yx5b56wxks97pajqwkmm6gf4qpkfksxv";
+ };
+ };
+
+ landscape_mountains = buildDemo {
+ name = "ue4demos-landscape_mountains";
+ src = fetchurl {
+ urls = urls "landscape_mountains.zip";
+ sha256 = "14jzajhs3cpydvf3ag7lpj4hkpbjpwnn3xkdvdx92fi0pcl8cwym";
+ };
+ };
+
+ matinee_demo = buildDemo {
+ name = "ue4demos-matinee_demo";
+ src = fetchurl {
+ urls = urls "matinee_demo.zip";
+ sha256 = "0ib8k6fl15cxzdarar2sqq5v3g3c7p2jidkdjd00nym6cvkibb4d";
+ };
+ };
+
+ elemental_demo = buildDemo {
+ name = "ue4demos-elemental_demo";
+ src = fetchurl {
+ urls = urls "elemental_demo.zip";
+ sha256 = "1v4jdsy8jvv8wgc8dx17q17xigfrya5q0nfdzw4md7fzm3bg9z0v";
+ };
+ };
+
+ effects_cave_demo = buildDemo {
+ name = "ue4demos-effects_cave_demo";
+ src = fetchurl {
+ urls = urls "effects_cave_demo.zip";
+ sha256 = "0lvd3aaha2x9pnpkdmrzi6nf7hymr95834z3l8shygjf9kbbzsz4";
+ };
+ };
+
+ realistic_rendering = buildDemo {
+ name = "ue4demos-realistic_rendering";
+ src = fetchurl {
+ urls = urls "realistic_rendering_demo.zip";
+ sha256 = "0r16nznkv475hkw5rnngqsc69ch8vh86dppyyyr9nn43dkr2110a";
+ };
+ };
+
+ reflections_subway = buildDemo {
+ name = "ue4demos-reflections_subway";
+ src = fetchurl {
+ urls = urls "reflections_subway_demo.zip";
+ sha256 = "0dw5sm7405gxw9iqz0vpnhdprrb4wl5i14pvzl1381k973m8bd00";
+ };
+ };
+
+ scifi_hallway_demo = buildDemo {
+ name = "ue4demos-scifi_hallway_demo";
+ src = fetchurl {
+ urls = urls "sci-fi_hallway_demo.zip";
+ sha256 = "14qp9iwm47awn8d9j6ijh6cnds308x60xs4vi2fvz2666jlz1pq2";
+ };
+ };
+
+ mobile_temple_demo = buildDemo {
+ name = "ue4demos-mobile_temple_demo";
+ src = fetchurl {
+ urls = urls "mobile_temple_demo.zip";
+ sha256 = "12bz4h1b9lhmqglwsa6r8q48ijqbjdha9fql31540d01kigaka75";
+ };
+ };
+
+ stylized_demo = buildDemo {
+ name = "ue4demos-stylized_demo";
+ src = fetchurl {
+ urls = urls "stylized_demo.zip";
+ sha256 = "1676ridmj8rk4y4hbdscfnnka5l636av1xxl0qwvk236kq9j7v0l";
+ };
+ };
+
+ blueprint_examples_demo = buildDemo {
+ name = "ue4demos-blueprint_examples_demo";
+ src = fetchurl {
+ urls = urls "blueprint_examples_demo.zip";
+ sha256 = "076q33h2hy965fvr805hsprkpcmizf638lj2ik8k923v86b15nbv";
+ };
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ufoai/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ufoai/default.nix
new file mode 100644
index 000000000000..94a12774a430
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ufoai/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, libtheora, xvidcore, libGLU, libGL, SDL, SDL_ttf, SDL_mixer
+, curl, libjpeg, libpng, gettext, cunit, enableEditor?false }:
+
+stdenv.mkDerivation rec {
+ name = "ufoai-2.4";
+ src = fetchurl {
+ url = "mirror://sourceforge/ufoai/${name}-source.tar.bz2";
+ sha256 = "0kxrbcjrharcwz319s90m789i4my9285ihp5ax6kfhgif2vn2ji5";
+ };
+
+ srcData = fetchurl {
+ url = "mirror://sourceforge/ufoai/${name}-data.tar";
+ sha256 = "1drhh08cqqkwv1yz3z4ngkplr23pqqrdx6cp8c3isy320gy25cvb";
+ };
+
+ preConfigure = ''tar xvf "${srcData}"'';
+
+ configureFlags = [ "--enable-release" "--enable-sse" ]
+ ++ stdenv.lib.optional enableEditor "--enable-uforadiant";
+
+ buildInputs = [
+ libtheora xvidcore libGLU libGL SDL SDL_ttf SDL_mixer
+ curl libjpeg libpng gettext cunit
+ ];
+
+ NIX_CFLAGS_LINK = "-lgcc_s"; # to avoid occasional runtime error in finding libgcc_s.so.1
+
+ meta = {
+ homepage = "http://ufoai.org";
+ description = "A squad-based tactical strategy game in the tradition of X-Com";
+ license = stdenv.lib.licenses.gpl2Plus;
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = stdenv.lib.platforms.linux;
+ hydraPlatforms = [];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ultimatestunts/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ultimatestunts/default.nix
new file mode 100644
index 000000000000..6eb4725897ff
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ultimatestunts/default.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchurl, SDL, libGLU, libGL, SDL_image, freealut, openal, libvorbis,
+pkgconfig}:
+
+stdenv.mkDerivation {
+ name = "ultimate-stunts-0.7.6.1";
+ src = fetchurl {
+ url = "mirror://sourceforge/ultimatestunts/ultimatestunts-srcdata-0761.tar.gz";
+ sha256 = "0rd565ml6l927gyq158klhni7myw8mgllhv0xl1fg9m8hlzssgrv";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ SDL libGLU libGL SDL_image freealut openal libvorbis ];
+
+ postPatch = ''
+ sed -e '1i#include <unistd.h>' -i $(find . -name '*.c' -o -name '*.cpp')
+ '';
+
+ meta = {
+ homepage = "http://www.ultimatestunts.nl/";
+ description = "Remake of the popular racing DOS-game Stunts";
+ license = stdenv.lib.licenses.gpl2Plus;
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ultrastardx/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ultrastardx/default.nix
new file mode 100644
index 000000000000..b6e1da204edf
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ultrastardx/default.nix
@@ -0,0 +1,73 @@
+{ stdenv
+, autoreconfHook
+, fetchFromGitHub
+, fetchpatch
+, pkgconfig
+, lua
+, fpc
+, pcre
+, portaudio
+, freetype
+, libpng
+, SDL2
+, SDL2_image
+, SDL2_gfx
+, SDL2_mixer
+, SDL2_net, SDL2_ttf
+, ffmpeg
+, sqlite
+, zlib
+, libX11
+, libGLU
+, libGL
+}:
+
+let
+ sharedLibs = [
+ pcre portaudio freetype
+ SDL2 SDL2_image SDL2_gfx SDL2_mixer SDL2_net SDL2_ttf
+ sqlite lua zlib libX11 libGLU libGL ffmpeg
+ ];
+
+in stdenv.mkDerivation rec {
+ pname = "ultrastardx";
+ version = "2020.4.0";
+ src = fetchFromGitHub {
+ owner = "UltraStar-Deluxe";
+ repo = "USDX";
+ rev = "v${version}";
+ sha256 = "0vmfv8zpyf8ymx3rjydpd7iqis080lni94vb316vfxkgvjmqbhym";
+ };
+
+ nativeBuildInputs = [ pkgconfig autoreconfHook ];
+ buildInputs = [ fpc libpng ] ++ sharedLibs;
+
+ patches = [
+ (fetchpatch {
+ name = "fpc-3.2-support.patch";
+ url = "https://github.com/UltraStar-Deluxe/USDX/commit/1b8e8714c1523ef49c2fd689a1545d097a3d76d7.patch";
+ sha256 = "02zmjymj9w1mkpf7armdpf067byvml6lprs1ca4lhpkv45abddp4";
+ })
+ ];
+
+ postPatch = ''
+ substituteInPlace src/config.inc.in \
+ --subst-var-by libpcre_LIBNAME libpcre.so.1
+ '';
+
+ preBuild = with stdenv.lib;
+ let items = concatMapStringsSep " " (x: "-rpath ${getLib x}/lib") sharedLibs;
+ in ''
+ export NIX_LDFLAGS="$NIX_LDFLAGS ${items}"
+ '';
+
+ # dlopened libgcc requires the rpath not to be shrinked
+ dontPatchELF = true;
+
+ meta = with stdenv.lib; {
+ homepage = "http://ultrastardx.sourceforge.net/";
+ description = "Free and open source karaoke game";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ Profpatsch ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/unnethack/default.nix b/infra/libkookie/nixpkgs/pkgs/games/unnethack/default.nix
new file mode 100644
index 000000000000..94f39a4b5789
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/unnethack/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitHub, fetchpatch, util-linux, ncurses, flex, bison }:
+
+stdenv.mkDerivation rec {
+ pname = "unnethack";
+ version = "5.3.2";
+
+ src = fetchFromGitHub {
+ name = "UnNetHack";
+ owner = "UnNetHack";
+ repo = "UnNetHack";
+ rev = version;
+ sha256 = "1rg0mqyplgn3dfh3wz09a600qxk7aidqw4d84kyiincljvhyb7ps";
+ };
+
+ buildInputs = [ ncurses ];
+
+ nativeBuildInputs = [ util-linux flex bison ];
+
+ configureFlags = [ "--enable-curses-graphics"
+ "--disable-tty-graphics"
+ "--with-owner=no"
+ "--with-group=no"
+ "--with-gamesdir=/tmp/unnethack"
+ ];
+
+ makeFlags = [ "GAMEPERM=744" ];
+ patches = [
+ # fix regression with bison, merged in master
+ (fetchpatch {
+ name = "fix-bison.patch";
+ url = "https://github.com/UnNetHack/UnNetHack/commit/04f0a3a850a94eb8837ddcef31303968240d1c31.patch";
+ sha256 = "1zblbwqqz9nx16k6n31wi2hdvz775lvzmkjblmrx18nbm4ylj0n9";
+ })
+ ];
+
+ enableParallelBuilding = true;
+
+ postInstall = ''
+ cp -r /tmp/unnethack $out/share/unnethack/profile
+ mv $out/bin/unnethack $out/bin/.wrapped_unnethack
+ cat <<EOF >$out/bin/unnethack
+ #! ${stdenv.shell} -e
+ if [ ! -d ~/.unnethack ]; then
+ mkdir -p ~/.unnethack
+ cp -r $out/share/unnethack/profile/* ~/.unnethack
+ chmod -R +w ~/.unnethack
+ fi
+
+ ln -s ~/.unnethack /tmp/unnethack
+
+ cleanup() {
+ rm -rf /tmp/unnethack
+ }
+ trap cleanup EXIT
+
+ $out/bin/.wrapped_unnethack
+ EOF
+ chmod +x $out/bin/unnethack
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Fork of NetHack";
+ homepage = "https://unnethack.wordpress.com/";
+ license = "nethack";
+ platforms = platforms.all;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/uqm/3dovideo.nix b/infra/libkookie/nixpkgs/pkgs/games/uqm/3dovideo.nix
new file mode 100644
index 000000000000..8d1bf2b68872
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/uqm/3dovideo.nix
@@ -0,0 +1,61 @@
+{ stdenv, requireFile, writeText, fetchurl, haskellPackages }:
+
+with stdenv.lib;
+
+let
+ makeSpin = num: let
+ padded = (optionalString (lessThan num 10) "0") + toString num;
+ in "slides.spins.${padded} = 3DOVID:" +
+ "addons/3dovideo/spins/ship${padded}.duk:" +
+ "addons/3dovideo/spins/spin.aif:" +
+ "addons/3dovideo/spins/ship${padded}.aif:89";
+
+ videoRMP = writeText "3dovideo.rmp" (''
+ slides.ending = 3DOVID:addons/3dovideo/ending/victory.duk
+ slides.intro = 3DOVID:addons/3dovideo/intro/intro.duk
+ '' + concatMapStrings makeSpin (range 0 24));
+
+ helper = with haskellPackages; mkDerivation {
+ pname = "uqm3donix";
+ version = "0.1.0.0";
+
+ src = fetchurl {
+ url = "https://github.com/aszlig/uqm3donix/archive/v0.1.0.0.tar.gz";
+ sha256 = "0d40gpc3bqkw68varjxwgbdzxw0dvwqksijmvij5ixmlcspbjgvb";
+ };
+
+ isLibrary = false;
+ isExecutable = true;
+
+ buildDepends = [ base binary bytestring filepath tar ];
+
+ description = "Extract video files from a Star Control II 3DO image";
+ license = stdenv.lib.licenses.bsd3;
+ };
+
+in stdenv.mkDerivation {
+ name = "uqm-3dovideo";
+
+ src = requireFile rec {
+ name = "videos.tar";
+ sha256 = "044h0cl69r0kc43vk4n0akk0prwzb7inq324h5yfqb38sd4zkds1";
+ message = ''
+ In order to get the intro and ending sequences from the 3DO version, you
+ need to have the original 3DO Star Control II CD. Create an image from
+ the CD and use uqm3donix* to extract a tarball with the videos from it.
+ The reason for this is because the 3DO uses its own proprietary disk
+ format.
+
+ Save the file as videos.tar and use "nix-prefetch-url file://\$PWD/${name}" to
+ add it to the Nix store.
+
+ [*] ${helper}/bin/uqm3donix CDIMAGE ${name}
+ '';
+ };
+
+ buildCommand = ''
+ mkdir -vp "$out"
+ tar xf "$src" -C "$out" --strip-components=3
+ cp "${videoRMP}" "$out/3dovideo.rmp"
+ '';
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/uqm/default.nix b/infra/libkookie/nixpkgs/pkgs/games/uqm/default.nix
new file mode 100644
index 000000000000..bce8fde3acd6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/uqm/default.nix
@@ -0,0 +1,109 @@
+{ stdenv, lib, fetchurl, pkgconfig, libGLU, libGL
+, SDL, SDL_image, libpng, libvorbis, libogg, libmikmod
+
+, use3DOVideos ? false, requireFile ? null, writeText ? null
+, haskellPackages ? null
+
+, useRemixPacks ? false
+}:
+
+assert use3DOVideos -> requireFile != null && writeText != null
+ && haskellPackages != null;
+
+let
+ videos = import ./3dovideo.nix {
+ inherit stdenv requireFile writeText fetchurl haskellPackages;
+ };
+
+ remixPacks = lib.imap1 (num: sha256: fetchurl rec {
+ name = "uqm-remix-disc${toString num}.uqm";
+ url = "mirror://sourceforge/sc2/${name}";
+ inherit sha256;
+ }) [
+ "1s470i6hm53l214f2rkrbp111q4jyvnxbzdziqg32ffr8m3nk5xn"
+ "1pmsq65k8gk4jcbyk3qjgi9yqlm0dlaimc2r8hz2fc9f2124gfvz"
+ "07g966ylvw9k5q9jdzqdczp7c5qv4s91xjlg4z5z27fgcs7rzn76"
+ "1l46k9aqlcp7d3fjkjb3n05cjfkxx8rjlypgqy0jmdx529vikj54"
+ ];
+
+in stdenv.mkDerivation rec {
+ pname = "uqm";
+ version = "0.7.0";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/sc2/uqm-${version}-source.tgz";
+ sha256 = "08dj7fsvflxx69an6vpf3wx050mk0ycmdv401yffrrqbgxgmqsd3";
+ };
+
+ content = fetchurl {
+ url = "mirror://sourceforge/sc2/uqm-${version}-content.uqm";
+ sha256 = "1gx39ns698hyczd4nx73mr0z86bbi4q3h8sw3pxjh1lzla5xpxmq";
+ };
+
+ voice = fetchurl {
+ url = "mirror://sourceforge/sc2/uqm-${version}-voice.uqm";
+ sha256 = "0yf9ff5sxk229202gsa7ski6wn7a8hkjjyr1yr7mjdxsnh0zik5w";
+ };
+
+ music = fetchurl {
+ url = "mirror://sourceforge/sc2/uqm-${version}-3domusic.uqm";
+ sha256 = "10nbvcrr0lc0mxivxfkcbxnibwk3vwmamabrlvwdsjxd9pk8aw65";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ SDL SDL_image libpng libvorbis libogg libmikmod libGLU libGL ];
+
+ postUnpack = ''
+ mkdir -p uqm-${version}/content/packages
+ mkdir -p uqm-${version}/content/addons
+ ln -s "$content" "uqm-${version}/content/packages/uqm-0.7.0-content.uqm"
+ ln -s "$music" "uqm-${version}/content/addons/uqm-0.7.0-3domusic.uqm"
+ ln -s "$voice" "uqm-${version}/content/addons/uqm-0.7.0-voice.uqm"
+ '' + lib.optionalString useRemixPacks (lib.concatMapStrings (disc: ''
+ ln -s "${disc}" "uqm-$version/content/addons/${disc.name}"
+ '') remixPacks) + lib.optionalString use3DOVideos ''
+ ln -s "${videos}" "uqm-${version}/content/addons/3dovideo"
+ '';
+
+ postPatch = ''
+ # Using _STRINGS_H as include guard conflicts with glibc.
+ sed -i -e '/^#/s/_STRINGS_H/_UQM_STRINGS_H/g' src/uqm/comm/*/strings.h
+ # See https://github.com/NixOS/nixpkgs/pull/93560
+ sed -i -e 's,/tmp/,$TMPDIR/,' build/unix/config_functions
+ '';
+
+ # uqm has a 'unique' build system with a root script incidentally called
+ # 'build.sh'.
+ configurePhase = ''
+ echo "INPUT_install_prefix_VALUE='$out'" >> config.state
+ echo "INPUT_install_bindir_VALUE='$out/bin'" >> config.state
+ echo "INPUT_install_libdir_VALUE='$out/lib'" >> config.state
+ echo "INPUT_install_sharedir_VALUE='$out/share'" >> config.state
+ PREFIX=$out ./build.sh uqm config
+ '';
+
+ buildPhase = ''
+ ./build.sh uqm
+ '';
+
+ installPhase = ''
+ ./build.sh uqm install
+ sed -i $out/bin/uqm -e "s%/usr/local/games/%$out%g"
+ '';
+
+ meta = {
+ description = "Remake of Star Control II";
+ longDescription = ''
+ The goals for the The Ur-Quan Masters project are:
+ - to bring Star Control II to modern platforms, thereby making a lot of
+ people happy
+ - to make game translations easy, thereby making even more people happy
+ - to adapt the code so that people can more easily make their own
+ spin-offs, thereby making zillions more people happy!
+ '';
+ homepage = "http://sc2.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = with lib.maintainers; [ jcumming aszlig ];
+ platforms = with lib.platforms; linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/urbanterror/default.nix b/infra/libkookie/nixpkgs/pkgs/games/urbanterror/default.nix
new file mode 100644
index 000000000000..ccc20281302b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/urbanterror/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, fetchurl, unzip, SDL, libGLU, libGL, openal, curl, libXxf86vm }:
+
+stdenv.mkDerivation rec {
+ pname = "urbanterror";
+ version = "4.3.4";
+
+ srcs =
+ [ (fetchurl {
+ url = "http://cdn.urbanterror.info/urt/43/releases/zips/UrbanTerror434_full.zip";
+ sha256 = "1rx4nnndsk88nvd7k4p35cw6znclkkzm2bl5j6vn6mjjdk66jrki";
+ })
+ (fetchurl {
+ url = "https://github.com/FrozenSand/ioq3-for-UrbanTerror-4/archive/release-${version}.zip";
+ sha256 = "1s9pmw7rbnzwzl1llcs0kr2krf4daf8hhnz1j89qk4bq9a9qfp71";
+ })
+ ];
+
+ buildInputs = [ unzip SDL libGL libGLU openal curl libXxf86vm ];
+ sourceRoot = "ioq3-for-UrbanTerror-4-release-${version}";
+
+ configurePhase = ''
+ echo "USE_OPENAL = 1" > Makefile.local
+ echo "USE_OPENAL_DLOPEN = 0" >> Makefile.local
+ echo "USE_CURL = 1" >> Makefile.local
+ echo "USE_CURL_DLOPEN = 0" >> Makefile.local
+ '';
+
+ installPhase = ''
+ destDir="$out/opt/urbanterror"
+ mkdir -p "$destDir"
+ mkdir -p "$out/bin"
+ cp -v build/release-linux-*/Quake3-UrT.* \
+ "$destDir/Quake3-UrT"
+ cp -v build/release-linux-*/Quake3-UrT-Ded.* \
+ "$destDir/Quake3-UrT-Ded"
+ cp -rv ../UrbanTerror43/q3ut4 "$destDir"
+ cat << EOF > "$out/bin/urbanterror"
+ #! ${stdenv.shell}
+ cd "$destDir"
+ exec ./Quake3-UrT "\$@"
+ EOF
+ chmod +x "$out/bin/urbanterror"
+ cat << EOF > "$out/bin/urbanterror-ded"
+ #! ${stdenv.shell}
+ cd "$destDir"
+ exec ./Quake3-UrT-Ded "\$@"
+ EOF
+ chmod +x "$out/bin/urbanterror-ded"
+ '';
+
+ postFixup = ''
+ p=$out/opt/urbanterror/Quake3-UrT
+ cur_rpath=$(patchelf --print-rpath $p)
+ patchelf --set-rpath $cur_rpath:${libGL}/lib:${libGLU}/lib $p
+ '';
+
+ hardeningDisable = [ "format" ];
+
+ meta = with stdenv.lib; {
+ description = "A multiplayer tactical FPS on top of Quake 3 engine";
+ longDescription = ''
+ Urban Terror is a free multiplayer first person shooter developed by
+ FrozenSand, that (thanks to the ioquake3-code) does not require
+ Quake III Arena anymore. Urban Terror can be described as a Hollywood
+ tactical shooter; somewhat realism based, but the motto is "fun over
+ realism". This results in a very unique, enjoyable and addictive game.
+ '';
+ homepage = "http://www.urbanterror.info";
+ license = licenses.unfreeRedistributable;
+ maintainers = with maintainers; [ astsmtl fpletz ];
+ platforms = platforms.linux;
+ hydraPlatforms = [];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ut2004/default.nix b/infra/libkookie/nixpkgs/pkgs/games/ut2004/default.nix
new file mode 100644
index 000000000000..3f306ac6eb54
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ut2004/default.nix
@@ -0,0 +1,9 @@
+{ callPackage }:
+
+{
+ ut2004-demo = callPackage ./demo.nix { };
+
+ ut2004 = gamePacks: callPackage ./wrapper.nix {
+ inherit gamePacks;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ut2004/demo.nix b/infra/libkookie/nixpkgs/pkgs/games/ut2004/demo.nix
new file mode 100644
index 000000000000..5b501022e2a6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ut2004/demo.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl }:
+
+let
+ arch =
+ if stdenv.hostPlatform.system == "x86_64-linux" then "amd64"
+ else if stdenv.hostPlatform.system == "i686-linux" then "x86"
+ else throw "Unsupported architecture";
+
+in stdenv.mkDerivation rec {
+ pname = "ut2004-demo";
+ version = "3334";
+
+ src = fetchurl {
+ url = "http://ftp.snt.utwente.nl/pub/games/UT2004/demo/UT2004-LNX-Demo${version}.run.gz";
+ sha256 = "0d5f84qz8l1rg16yzx2k4ikr46n9iwj68na1bqi87wrww7ck6jh7";
+ };
+
+ buildCommand = ''
+ cat $src | gunzip > setup.run
+ chmod +x setup.run
+ ./setup.run --noexec --target .
+ mkdir $out
+ tar -xaf ut2004demo.tar.bz2 -C $out
+ tar -xaf linux-${arch}.tar.bz2 -C $out
+
+ rm $out/System/libSDL-1.2.so.0
+ rm $out/System/openal.so
+ '';
+
+ dontStrip = true;
+ dontPatchELF = true;
+
+ meta = with stdenv.lib; {
+ description = "A first-person shooter video game developed by Epic Games and Digital Extreme -- demo version";
+ homepage = "http://www.unrealtournament2004.com";
+ license = licenses.unfree;
+ maintainers = with maintainers; [ abbradar ];
+ platforms = [ "x86_64-linux" "i686-linux" ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/ut2004/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/games/ut2004/wrapper.nix
new file mode 100644
index 000000000000..0f70a07ca8fc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/ut2004/wrapper.nix
@@ -0,0 +1,46 @@
+{ stdenv, lib, runCommand, buildEnv, makeWrapper, makeDesktopItem, gamePacks, libstdcxx5, SDL, openal }:
+
+let
+ game = buildEnv {
+ name = "ut2004-game";
+ paths = gamePacks;
+ ignoreCollisions = true;
+ pathsToLink = [ "/" "/System" ];
+ postBuild = ''
+ ln -s ${lib.getLib SDL}/lib/libSDL-1.2.so.0 $out/System
+ ln -s ${lib.getLib openal}/lib/libopenal.so $out/System/openal.so
+ for i in $out/System/*-bin; do
+ path="$(readlink -f "$i")"
+ rm "$i"
+ cp "$path" "$i"
+ chmod +w "$i"
+ patchelf \
+ --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
+ --set-rpath "$out/System:${lib.makeLibraryPath [ libstdcxx5 ]}" \
+ "$i"
+ done
+ '';
+ };
+
+ desktop = makeDesktopItem {
+ name = "ut2004";
+ desktopName = "Unreal Tournament 2004";
+ comment = "A first-person shooter video game developed by Epic Games and Digital Extreme";
+ genericName = "First-person shooter";
+ categories = "Game;";
+ exec = "ut2004";
+ };
+
+in runCommand "ut2004" {
+ nativeBuildInputs = [ makeWrapper ];
+} ''
+ mkdir -p $out/bin
+ for i in ${game}/System/*-bin; do
+ name="$(basename "$i")"
+ makeWrapper $i $out/bin/''${name%-bin} \
+ --run "cd ${game}/System"
+ done
+
+ mkdir -p $out/share/applications
+ ln -s ${desktop}/share/applications/* $out/share/applications
+''
diff --git a/infra/libkookie/nixpkgs/pkgs/games/vapor/default.nix b/infra/libkookie/nixpkgs/pkgs/games/vapor/default.nix
new file mode 100644
index 000000000000..a8d345151d64
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/vapor/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl, love, lua, makeWrapper, makeDesktopItem }:
+
+let
+ pname = "vapor";
+ version = "0.2.3";
+ commitid = "dbf509f";
+
+ icon = fetchurl {
+ url = "http://vapor.love2d.org/sites/default/files/vapT240x90.png";
+ sha256 = "1xlra74lpm1y54z6zm6is0gldkswp3wdw09m6a306ch0xjf3f87f";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "Vapor";
+ exec = pname;
+ icon = icon;
+ comment = "LÖVE Distribution Client";
+ desktopName = "Vapor";
+ genericName = "vapor";
+ categories = "Game;";
+ };
+
+in
+
+stdenv.mkDerivation {
+ name = "${pname}-${version}";
+
+ src = fetchurl {
+ url =
+ "https://github.com/josefnpat/${pname}/releases/download/${version}/${pname}_${commitid}.love";
+ sha256 = "0w2qkrrkzfy4h4jld18apypmbi8a8r89y2l11axlv808i2rg68fk";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+ buildInputs = [ lua love ];
+
+ phases = "installPhase";
+
+ installPhase =
+ ''
+ mkdir -p $out/bin
+ mkdir -p $out/share
+
+ cp -v $src $out/share/${pname}.love
+
+ makeWrapper ${love}/bin/love $out/bin/${pname} --add-flags $out/share/${pname}.love
+
+ chmod +x $out/bin/${pname}
+ mkdir -p $out/share/applications
+ ln -s ${desktopItem}/share/applications/* $out/share/applications/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "LÖVE Distribution Client allowing access to many games";
+ platforms = platforms.linux;
+ license = licenses.zlib;
+ maintainers = with maintainers; [ leenaars ];
+ downloadPage = "http://vapor.love2d.org/";
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/vassal/default.nix b/infra/libkookie/nixpkgs/pkgs/games/vassal/default.nix
new file mode 100644
index 000000000000..413d98d26ace
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/vassal/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation rec {
+ name = "VASSAL-3.3.2";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/vassalengine/${name}-linux.tar.bz2";
+ sha256 = "1abhlkl27gyfa1lghvv76xa6ks5hiwv2s9wb9ddadm0m07f87n1w";
+ };
+
+ buildInputs = [ makeWrapper ];
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/vassal $out/doc
+
+ cp CHANGES LICENSE README $out
+ cp -R lib/* $out/share/vassal
+ cp -R doc/* $out/doc
+
+ makeWrapper ${jre}/bin/java $out/bin/vassal \
+ --add-flags "-Duser.dir=$out -cp $out/share/vassal/Vengine.jar \
+ VASSAL.launch.ModuleManager"
+ '';
+
+ # Don't move doc to share/, VASSAL expects it to be in the root
+ forceShare = [ "man" "info" ];
+
+ meta = with stdenv.lib; {
+ description = "A free, open-source boardgame engine";
+ homepage = "http://www.vassalengine.org/";
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ tvestelind ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/vdrift/0001-Ignore-missing-data-for-installation.patch b/infra/libkookie/nixpkgs/pkgs/games/vdrift/0001-Ignore-missing-data-for-installation.patch
new file mode 100644
index 000000000000..6794e8018aff
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/vdrift/0001-Ignore-missing-data-for-installation.patch
@@ -0,0 +1,27 @@
+From 7ebe252a8488a63675d1c50c0faa1bdc5ff97889 Mon Sep 17 00:00:00 2001
+From: Linus Heckemann <git@sphalerite.org>
+Date: Fri, 5 Jan 2018 21:27:28 +0100
+Subject: [PATCH] Ignore missing data for installation
+
+This is for packaging vdrift separately from its data in nixpkgs.
+---
+ SConstruct | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index 4394de0b..beef29a4 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -511,9 +511,6 @@ env.Alias(target = 'bin-package', source = bin_archive)
+ #----------------#
+ Export(['env', 'version', 'src_dir', 'bin_dir'])
+ if 'install' in COMMAND_LINE_TARGETS:
+- if not os.path.isfile('data/SConscript'):
+- raise 'VDrift data not found. Please make sure data is placed in vdrift directory. See README.md and http://wiki.vdrift.net.'
+- SConscript('data/SConscript')
+ # desktop appdata installation
+ install_desktop = env.Install(env['destdir'] + env['prefix'] + '/share/applications', 'vdrift.desktop')
+ install_appdata = env.Install(env['destdir'] + env['prefix'] + '/share/appdata', 'vdrift.appdata.xml')
+--
+2.15.0
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/vdrift/default.nix b/infra/libkookie/nixpkgs/pkgs/games/vdrift/default.nix
new file mode 100644
index 000000000000..ea8b3941f8b4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/vdrift/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchFromGitHub, fetchsvn, pkgconfig, sconsPackages, libGLU, libGL, SDL2, SDL2_image
+, libvorbis, bullet, curl, gettext, writeTextFile
+
+, data ? fetchsvn {
+ url = "svn://svn.code.sf.net/p/vdrift/code/vdrift-data";
+ rev = "1386";
+ sha256 = "0ka6zir9hg0md5p03dl461jkvbk05ywyw233hnc3ka6shz3vazi1";
+ }
+}:
+let
+ version = "git";
+ bin = stdenv.mkDerivation {
+ pname = "vdrift";
+ inherit version;
+
+ src = fetchFromGitHub {
+ owner = "vdrift";
+ repo = "vdrift";
+ rev = "12d444ed18395be8827a21b96cc7974252fce6d1";
+ sha256 = "001wq3c4n9wzxqfpq40b1jcl16sxbqv2zbkpy9rq2wf9h417q6hg";
+ };
+
+ nativeBuildInputs = [ pkgconfig sconsPackages.scons_3_1_2 ];
+ buildInputs = [ libGLU libGL SDL2 SDL2_image libvorbis bullet curl gettext ];
+
+ patches = [ ./0001-Ignore-missing-data-for-installation.patch ];
+
+ buildPhase = ''
+ sed -i -e s,/usr/local,$out, SConstruct
+ export CXXFLAGS="$(pkg-config --cflags SDL2_image)"
+ scons -j$NIX_BUILD_CORES
+ '';
+ installPhase = "scons install";
+
+ meta = {
+ description = "Car racing game";
+ homepage = "http://vdrift.net/";
+ license = stdenv.lib.licenses.gpl2Plus;
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = stdenv.lib.platforms.linux;
+ };
+ };
+ wrappedName = "vdrift-${version}-with-data-${toString data.rev}";
+in writeTextFile {
+ name = wrappedName;
+ text = ''
+ export VDRIFT_DATA_DIRECTORY="${data}"
+ exec ${bin}/bin/vdrift "$@"
+ '';
+ destination = "/bin/vdrift";
+ executable = true;
+ checkPhase = ''
+ ${stdenv.shell} -n $out/bin/vdrift
+ '';
+} // {
+ meta = bin.meta // {
+ hydraPlatforms = [];
+ };
+ unwrapped = bin;
+ inherit bin data;
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/vectoroids/default.nix b/infra/libkookie/nixpkgs/pkgs/games/vectoroids/default.nix
new file mode 100644
index 000000000000..01e787b8d911
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/vectoroids/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchurl, SDL, SDL_image, SDL_mixer}:
+
+stdenv.mkDerivation {
+ name = "vectoroids-1.1.0";
+ src = fetchurl {
+ url = "ftp://ftp.tuxpaint.org/unix/x/vectoroids/src/vectoroids-1.1.0.tar.gz";
+ sha256 = "0bkvd4a1v496w0vlvqyi1a6p25ssgpkchxxxi8899sb72wlds54d";
+ };
+
+ buildInputs = [ SDL SDL_image SDL_mixer];
+
+ preConfigure = ''
+ sed -i s,/usr/local,$out, Makefile
+ mkdir -p $out/bin
+ '';
+
+ meta = {
+ homepage = "http://www.newbreedsoftware.com/vectoroids/";
+ description = "Clone of the classic arcade game Asteroids by Atari";
+ license = stdenv.lib.licenses.gpl2Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/vessel/default.nix b/infra/libkookie/nixpkgs/pkgs/games/vessel/default.nix
new file mode 100644
index 000000000000..4e0337fa1b47
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/vessel/default.nix
@@ -0,0 +1,83 @@
+{ stdenv, requireFile, SDL, libpulseaudio, alsaLib, runtimeShell }:
+
+stdenv.mkDerivation rec {
+ name = "vessel-12082012";
+
+ goBuyItNow = ''
+ We cannot download the full version automatically, as you require a license.
+ Once you bought a license, you need to add your downloaded version to the nix store.
+ You can do this by using "nix-prefetch-url file://\$PWD/${name}-bin" in the
+ directory where you saved it.
+ '';
+
+ src = if (stdenv.isi686) then
+ requireFile {
+ message = goBuyItNow;
+ name = "${name}-bin";
+ sha256 = "1vpwcrjiln2mx43h7ib3jnccyr3chk7a5x2bw9kb4lw8ycygvg96";
+ } else throw "unsupported platform ${stdenv.hostPlatform.system} only i686-linux supported for now.";
+
+ phases = "installPhase";
+ ld_preload = ./isatty.c;
+
+ libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc stdenv.cc.libc ]
+ + ":" + stdenv.lib.makeLibraryPath [ SDL libpulseaudio alsaLib ] ;
+
+ installPhase = ''
+ mkdir -p $out/libexec/strangeloop/vessel/
+ mkdir -p $out/bin
+
+ # allow scripting of the mojoinstaller
+ gcc -fPIC -shared -o isatty.so $ld_preload
+
+ echo @@@
+ echo @@@ this next step appears to hang for a while
+ echo @@@
+
+ # if we call ld.so $(bin) we don't need to set the ELF interpreter, and save a patchelf step.
+ LD_PRELOAD=./isatty.so $(cat $NIX_CC/nix-support/dynamic-linker) $src << IM_A_BOT
+ n
+ $out/libexec/strangeloop/vessel/
+ IM_A_BOT
+
+ # use nix SDL libraries
+ rm $out/libexec/strangeloop/vessel/x86/libSDL*
+ rm $out/libexec/strangeloop/vessel/x86/libstdc++*
+
+ # props to Ethan Lee (the Vessel porter) for understanding
+ # how $ORIGIN works in rpath. There is hope for humanity.
+ patchelf \
+ --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+ --set-rpath $libPath:$out/libexec/strangeloop/vessel/x86/ \
+ $out/libexec/strangeloop/vessel/x86/vessel.x86
+
+ # we need to libs to find their deps
+ for lib in $out/libexec/strangeloop/vessel/x86/lib* ; do
+ patchelf \
+ --set-rpath $libPath:$out/libexec/strangeloop/vessel/x86/ \
+ $lib
+ done
+
+ cat > $out/bin/Vessel << EOW
+ #!${runtimeShell}
+ cd $out/libexec/strangeloop/vessel/
+ exec ./x86/vessel.x86
+ EOW
+
+ chmod +x $out/bin/Vessel
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A fluid physics based puzzle game";
+ longDescription = ''
+ Living liquid machines have overrun this world of unstoppable progress,
+ and it is the role of their inventor, Arkwright, to stop the chaos they are
+ causing. Vessel is a game about a man with the power to bring ordinary matter
+ to life, and all the consequences that ensue.
+ '';
+ homepage = "http://www.strangeloopgames.com";
+ license = licenses.unfree;
+ maintainers = with maintainers; [ jcumming ];
+ };
+
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/vessel/isatty.c b/infra/libkookie/nixpkgs/pkgs/games/vessel/isatty.c
new file mode 100644
index 000000000000..38ee2b6ce2e8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/vessel/isatty.c
@@ -0,0 +1,6 @@
+// We override isatty to help 'automate' installers.
+
+// Some installers (mojoinstall) have a stdio GUI that refuses to run if you
+// feed it a file on stdin. This should help that.
+
+int isatty(int fd) { return 1; }
diff --git a/infra/libkookie/nixpkgs/pkgs/games/vitetris/default.nix b/infra/libkookie/nixpkgs/pkgs/games/vitetris/default.nix
new file mode 100644
index 000000000000..2b9c77cd4679
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/vitetris/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, lib }:
+
+stdenv.mkDerivation rec {
+ pname = "vitetris";
+ version = "0.58.0";
+
+ src = fetchFromGitHub {
+ owner = "vicgeralds";
+ repo = "vitetris";
+ rev = "v${version}";
+ sha256 = "1fvw9yqg1q25x6dlfi4bl3hrrcdgl6wwq29j89aycxwdfxrxs09w";
+ };
+
+ hardeningDisable = [ "format" ];
+
+ makeFlags = [ "INSTALL=install" ];
+
+ meta = {
+ description = "Terminal-based Tetris clone by Victor Nilsson";
+ homepage = "http://www.victornils.net/tetris/";
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ siers ];
+
+ longDescription = ''
+ vitetris is a terminal-based Tetris clone by Victor Nilsson. Gameplay is much
+ like the early Tetris games by Nintendo.
+
+ Features include: configurable keys, highscore table, two-player mode with
+ garbage, network play, joystick (gamepad) support on Linux or with Allegro.
+ '';
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/vms-empire/default.nix b/infra/libkookie/nixpkgs/pkgs/games/vms-empire/default.nix
new file mode 100644
index 000000000000..eb9108c32c9a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/vms-empire/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, ncurses, xmlto }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+ pname = "vms-empire";
+ version = "1.15";
+
+ src = fetchurl{
+ url = "http://www.catb.org/~esr/vms-empire/${pname}-${version}.tar.gz";
+ sha256 = "1vcpglkimcljb8s1dp6lzr5a0vbfxmh6xf37cmb8rf9wc3pghgn3";
+ };
+
+ buildInputs =
+ [ ncurses xmlto ];
+
+ patchPhase = ''
+ sed -i -e 's|^install: empire\.6 uninstall|install: empire.6|' -e 's|usr/||g' Makefile
+ '';
+
+ hardeningDisable = [ "format" ];
+
+ makeFlags = [ "DESTDIR=$(out)" ];
+
+ meta = {
+ description = "The ancestor of all expand/explore/exploit/exterminate games";
+ longDescription = ''
+ Empire is a simulation of a full-scale war between two emperors, the
+ computer and you. Naturally, there is only room for one, so the object of
+ the game is to destroy the other. The computer plays by the same rules
+ that you do. This game was ancestral to all later
+ expand/explore/exploit/exterminate games, including Civilization and
+ Master of Orion.
+ '';
+ homepage = "http://catb.org/~esr/vms-empire/";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.AndersonTorres ];
+ platforms = platforms.linux;
+ };
+}
+
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/voxelands/default.nix b/infra/libkookie/nixpkgs/pkgs/games/voxelands/default.nix
new file mode 100644
index 000000000000..5e52cba3b49c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/voxelands/default.nix
@@ -0,0 +1,64 @@
+{ stdenv
+, fetchFromGitLab
+, bzip2
+, cmake
+, expat
+, irrlicht
+, libGL
+, libGLU
+, libXxf86vm
+, libjpeg
+, libpng
+, libvorbis
+, openal
+, pkg-config
+, sqlite
+, xlibsWrapper
+}:
+
+stdenv.mkDerivation rec {
+ pname = "voxelands";
+ version = "1704.00";
+
+ src = fetchFromGitLab {
+ owner = pname;
+ repo = pname;
+ rev = version;
+ sha256 = "0yj9z9nygpn0z63y739v72l3kg81wd71xgix5k045vfzhqsam5m0";
+ };
+
+ cmakeFlags = [
+ "-DIRRLICHT_INCLUDE_DIR=${irrlicht}/include/irrlicht"
+ "-DCMAKE_C_FLAGS_RELEASE=-DNDEBUG"
+ "-DCMAKE_CXX_FLAGS_RELEASE=-DNDEBUG"
+ ];
+
+ nativeBuildInputs = [
+ cmake
+ pkg-config
+ ];
+
+ buildInputs = [
+ bzip2
+ expat
+ irrlicht
+ libGL
+ libGLU
+ libXxf86vm
+ libjpeg
+ libpng
+ libvorbis
+ openal
+ sqlite
+ xlibsWrapper
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://voxelands.net/";
+ description = "Infinite-world block sandbox game based on Minetest";
+ license = licenses.gpl3Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ ];
+ broken = stdenv.isAarch64; # build fails with "libIrrlicht.so: undefined reference to `png_init_filter_functions_neon'"
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/warmux/default.nix b/infra/libkookie/nixpkgs/pkgs/games/warmux/default.nix
new file mode 100644
index 000000000000..dc8b53d09ad6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/warmux/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, autoconf, automake
+, zlib, curl, gnutls, fribidi, libpng, SDL, SDL_gfx, SDL_image, SDL_mixer
+, SDL_net, SDL_ttf, libunwind, libX11, xorgproto, libxml2, pkgconfig
+, gettext, intltool, libtool, perl
+}:
+
+stdenv.mkDerivation {
+ pname = "warmux";
+ version = "unstable-2017-10-20";
+
+ src = fetchFromGitHub {
+ owner = "fluxer";
+ repo = "warmux";
+ rev = "8f81d4fc309a548ae89a068c2dde27b7e7ef8851";
+ sha256 = "1hvzglsmp75xiqqb0k75qjz4jwi8kl3fhn8zfsz53hhhqmbw6wkr";
+ };
+
+ preConfigure = "patchShebangs autogen.sh && ./autogen.sh";
+ configureFlagsArray = ("CFLAGS=-include ${zlib.dev}/include/zlib.h");
+
+ nativeBuildInputs = [
+ autoconf automake gettext intltool libtool pkgconfig
+ ];
+ buildInputs = [
+ zlib curl gnutls fribidi libpng SDL SDL_gfx SDL_image SDL_mixer
+ SDL_net SDL_ttf libunwind libX11 xorgproto libxml2 perl
+ ];
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Ballistics turn-based battle game between teams - unofficial copy";
+ maintainers = with maintainers; [ raskin ];
+ platforms = platforms.linux;
+ license = with licenses; [ gpl2 ufl ];
+ homepage = "https://github.com/fluxer/warmux";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/warsow/default.nix b/infra/libkookie/nixpkgs/pkgs/games/warsow/default.nix
new file mode 100644
index 000000000000..4c2cd1b5a288
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/warsow/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, warsow-engine, makeWrapper }:
+
+stdenv.mkDerivation rec {
+ pname = "warsow";
+ version = "2.1.2";
+
+ src = fetchurl {
+ url = "http://slice.sh/warsow/${pname}-${version}.tar.gz";
+ sha256 = "07y2airw5qg3s1bf1c63a6snjj22riz0mqhk62jmfm9nrarhavrc";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ installPhase = ''
+ mkdir -p $out/share/warsow
+ cp -r basewsw $out/share/warsow
+ ln -s ${warsow-engine}/lib/warsow $out/share/warsow/libs
+
+ mkdir -p $out/bin
+ for i in ${warsow-engine}/bin/*; do
+ makeWrapper "$i" "$out/bin/$(basename "$i")" --run "cd $out/share/warsow"
+ done
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Multiplayer FPS game designed for competitive gaming";
+ longDescription = ''
+ Set in a futuristic cartoon-like world where rocketlauncher-wielding
+ pigs and lasergun-carrying cyberpunks roam the streets, Warsow is a
+ completely free fast-paced first-person shooter (FPS) for Windows, Linux
+ and macOS.
+ '';
+ homepage = "http://www.warsow.net";
+ license = licenses.unfreeRedistributable;
+ maintainers = with maintainers; [ astsmtl abbradar ];
+ platforms = warsow-engine.meta.platforms;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/warsow/engine.nix b/infra/libkookie/nixpkgs/pkgs/games/warsow/engine.nix
new file mode 100644
index 000000000000..19c368671e64
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/warsow/engine.nix
@@ -0,0 +1,53 @@
+{ stdenv, lib, fetchurl, cmake, libogg, libvorbis, libtheora, curl, freetype
+, libjpeg, libpng, SDL2, libGL, openal, zlib
+}:
+
+let
+ # The game loads all those via dlopen().
+ libs = lib.mapAttrs (name: x: lib.getLib x) {
+ inherit zlib curl libpng libjpeg libogg libvorbis libtheora freetype;
+ };
+
+in stdenv.mkDerivation (libs // rec {
+ name = "warsow-engine-${version}";
+ version = "2.1.0";
+
+ src = fetchurl {
+ url = "http://slice.sh/warsow/warsow_21_sdk.tar.gz";
+ sha256 = "0fj5k7qpf6far8i1xhqxlpfjch10zj26xpilhp95aq2yiz08pj4r";
+ };
+
+ nativeBuildInputs = [ cmake ];
+
+ buildInputs = [
+ libogg libvorbis libtheora curl freetype libjpeg SDL2 libGL openal zlib
+ libpng
+ ];
+
+ patches = [ ./libpath.patch ];
+ postPatch = ''
+ cd source/source
+ substituteAllInPlace gameshared/q_arch.h
+ '';
+
+ cmakeFlags = [ "-DQFUSION_GAME=Warsow" ];
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ mkdir -p $out/lib
+ cp -r libs $out/lib/warsow
+ for i in warsow.* wsw_server.* wswtv_server.*; do
+ install -Dm755 "$i" "$out/bin/''${i%.*}"
+ done
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Multiplayer FPS game designed for competitive gaming (engine only)";
+ homepage = "http://www.warsow.net";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ astsmtl abbradar ];
+ platforms = platforms.linux;
+ broken = stdenv.isAarch64;
+ };
+})
diff --git a/infra/libkookie/nixpkgs/pkgs/games/warsow/libpath.patch b/infra/libkookie/nixpkgs/pkgs/games/warsow/libpath.patch
new file mode 100644
index 000000000000..ad2487102379
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/warsow/libpath.patch
@@ -0,0 +1,28 @@
+diff -ru3 warsow_21_sdk_old/source/source/gameshared/q_arch.h warsow_21_sdk_new/source/source/gameshared/q_arch.h
+--- warsow_21_sdk_old/source/source/gameshared/q_arch.h 2016-03-26 22:22:10.000000000 +0300
++++ warsow_21_sdk_new/source/source/gameshared/q_arch.h 2018-03-13 00:37:29.907019953 +0300
+@@ -206,15 +206,15 @@
+ #endif
+
+ // FIXME: move these to CMakeLists.txt
+-#define LIBZ_LIBNAME "libz.so.1|libz.so"
+-#define LIBCURL_LIBNAME "libcurl.so.4|libcurl.so.3|libcurl.so"
+-#define LIBPNG_LIBNAME "libpng16.so.16|libpng15.so.15|libpng14.so.14|libpng12.so.0|libpng.so"
+-#define LIBJPEG_LIBNAME "libjpeg.so.8|libjpeg.so"
+-#define LIBOGG_LIBNAME "libogg.so.0|libogg.so"
+-#define LIBVORBIS_LIBNAME "libvorbis.so.0|libvorbis.so"
+-#define LIBVORBISFILE_LIBNAME "libvorbisfile.so.3|libvorbisfile.so"
+-#define LIBTHEORA_LIBNAME "libtheora.so.0|libtheora.so"
+-#define LIBFREETYPE_LIBNAME "libfreetype.so.6|libfreetype.so"
++#define LIBZ_LIBNAME "@zlib@/lib/libz.so"
++#define LIBCURL_LIBNAME "@curl@/lib/libcurl.so"
++#define LIBPNG_LIBNAME "@libpng@/lib/libpng.so"
++#define LIBJPEG_LIBNAME "@libjpeg@/lib/libjpeg.so"
++#define LIBOGG_LIBNAME "@libogg@/lib/libogg.so"
++#define LIBVORBIS_LIBNAME "@libvorbis@/lib/libvorbis.so"
++#define LIBVORBISFILE_LIBNAME "@libvorbis@/lib/libvorbisfile.so"
++#define LIBTHEORA_LIBNAME "@libtheora@/lib/libtheora.so"
++#define LIBFREETYPE_LIBNAME "@freetype@/lib/libfreetype.so"
+
+ #if defined ( __FreeBSD__ )
+ #define BUILDSTRING "FreeBSD"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/warzone2100/default.nix b/infra/libkookie/nixpkgs/pkgs/games/warzone2100/default.nix
new file mode 100644
index 000000000000..3d7be936f1bc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/warzone2100/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, mkDerivation, fetchurl, autoconf, automake
+, perl, unzip, zip, which, pkgconfig, qtbase, qtscript
+, SDL2, libtheora, openal, glew, physfs, fribidi, libXrandr
+, withVideos ? false
+}:
+
+let
+ pname = "warzone2100";
+ sequences_src = fetchurl {
+ url = "mirror://sourceforge/${pname}/warzone2100/Videos/high-quality-en/sequences.wz";
+ sha256 = "90ff552ca4a70e2537e027e22c5098ea4ed1bc11bb7fc94138c6c941a73d29fa";
+ };
+in
+
+mkDerivation rec {
+ inherit pname;
+ version = "3.3.0";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/${pname}/releases/${version}/${pname}-${version}_src.tar.xz";
+ sha256 = "1s0n67rh32g0bgq72p4qzkcqjlw58gc70r4r6gl9k90pil9chj6c";
+ };
+
+ buildInputs = [
+ qtbase qtscript SDL2 libtheora openal
+ glew physfs fribidi libXrandr
+ ];
+ nativeBuildInputs = [
+ perl zip unzip pkgconfig autoconf automake
+ ];
+
+ preConfigure = "./autogen.sh";
+
+ postPatch = ''
+ substituteInPlace lib/exceptionhandler/dumpinfo.cpp \
+ --replace "which %s" "${which}/bin/which %s"
+ substituteInPlace lib/exceptionhandler/exceptionhandler.cpp \
+ --replace "which %s" "${which}/bin/which %s"
+ '';
+
+ configureFlags = [ "--with-distributor=NixOS" ];
+
+ hardeningDisable = [ "format" ];
+
+ enableParallelBuilding = true;
+
+ postInstall = stdenv.lib.optionalString withVideos
+ "cp ${sequences_src} $out/share/warzone2100/sequences.wz";
+
+ meta = with stdenv.lib; {
+ description = "A free RTS game, originally developed by Pumpkin Studios";
+ longDescription = ''
+ Warzone 2100 is an open source real-time strategy and real-time tactics
+ hybrid computer game, originally developed by Pumpkin Studios and
+ published by Eidos Interactive.
+ In Warzone 2100, you command the forces of The Project in a battle to
+ rebuild the world after mankind has almost been destroyed by nuclear
+ missiles. The game offers campaign, multi-player, and single-player
+ skirmish modes. An extensive tech tree with over 400 different
+ technologies, combined with the unit design system, allows for a wide
+ variety of possible units and tactics.
+ '';
+ homepage = "http://wz2100.net";
+ license = licenses.gpl2Plus;
+ maintainers = [ maintainers.astsmtl ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/wesnoth/default.nix b/infra/libkookie/nixpkgs/pkgs/games/wesnoth/default.nix
new file mode 100644
index 000000000000..2f971e12c9fd
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/wesnoth/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, SDL2, SDL2_image, SDL2_mixer, SDL2_net, SDL2_ttf
+, pango, gettext, boost, libvorbis, fribidi, dbus, libpng, pcre, openssl, icu
+, Cocoa, Foundation
+, enableTools ? false
+}:
+
+stdenv.mkDerivation rec {
+ pname = "wesnoth";
+ version = "1.14.14";
+
+ src = fetchFromGitHub {
+ rev = version;
+ owner = "wesnoth";
+ repo = "wesnoth";
+ sha256 = "0rawcm3d1qwf4wxqcbjipl6h30sfv7z70viji28q4givi5hysvka";
+ };
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+
+ buildInputs = [ SDL2 SDL2_image SDL2_mixer SDL2_net SDL2_ttf pango gettext boost
+ libvorbis fribidi dbus libpng pcre openssl icu ]
+ ++ stdenv.lib.optionals stdenv.isDarwin [ Cocoa Foundation];
+
+ cmakeFlags = [ "-DENABLE_TOOLS=${if enableTools then "ON" else "OFF"}" ];
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "The Battle for Wesnoth, a free, turn-based strategy game with a fantasy theme";
+ longDescription = ''
+ The Battle for Wesnoth is a Free, turn-based tactical strategy
+ game with a high fantasy theme, featuring both single-player, and
+ online/hotseat multiplayer combat. Fight a desperate battle to
+ reclaim the throne of Wesnoth, or take hand in any number of other
+ adventures.
+ '';
+
+ homepage = "https://www.wesnoth.org/";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ abbradar ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/widelands/bincmake.patch b/infra/libkookie/nixpkgs/pkgs/games/widelands/bincmake.patch
new file mode 100644
index 000000000000..ed6a99125223
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/widelands/bincmake.patch
@@ -0,0 +1,21 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -25,6 +25,8 @@
+ # Packagers (or people using make install) have to set this variable to an absolute path.
+ wl_set_if_unset(WL_INSTALL_DATADIR "./data")
+
++wl_set_if_unset(WL_INSTALL_BINARY "./bin")
++
+ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
+ message(FATAL_ERROR "Widelands needs GCC >= 4.7 to compile.")
+
+--- a/cmake/WlFunctions.cmake
++++ b/cmake/WlFunctions.cmake
+@@ -276,5 +276,5 @@
+
+ #Quoting the CMake documentation on DESTINATION:
+ #"If a relative path is given it is interpreted relative to the value of CMAKE_INSTALL_PREFIX"
+- install(TARGETS ${NAME} DESTINATION "." COMPONENT ExecutableFiles)
++ install(TARGETS ${NAME} DESTINATION ${WL_INSTALL_BINARY} COMPONENT ExecutableFiles)
+ endfunction()
diff --git a/infra/libkookie/nixpkgs/pkgs/games/widelands/default.nix b/infra/libkookie/nixpkgs/pkgs/games/widelands/default.nix
new file mode 100644
index 000000000000..e499f4ad1fcc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/widelands/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchurl, cmake, python, gettext
+, boost, libpng, zlib, glew, lua, doxygen, icu
+, SDL2, SDL2_image, SDL2_mixer, SDL2_net, SDL2_ttf
+}:
+
+stdenv.mkDerivation rec {
+ pname = "widelands";
+ version = "20";
+
+ meta = with stdenv.lib; {
+ description = "RTS with multiple-goods economy";
+ homepage = "http://widelands.org/";
+ longDescription = ''
+ Widelands is a real time strategy game based on "The Settlers" and "The
+ Settlers II". It has a single player campaign mode, as well as a networked
+ multiplayer mode.
+ '';
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ raskin jcumming ];
+ hydraPlatforms = [];
+ };
+
+ patches = [
+ ./bincmake.patch
+ ];
+
+ src = fetchurl {
+ url = "https://launchpad.net/widelands/build${version}/build${version}/+download/widelands-build${version}.tar.bz2";
+ sha256 = "1cmwfwk7j6yi2pwmm4rm57s23sdzasqf53nx6567sdagqyc4sn9q";
+ };
+
+ preConfigure = ''
+ cmakeFlags="
+ -DWL_INSTALL_BASEDIR=$out
+ -DWL_INSTALL_DATADIR=$out/share/widelands
+ -DWL_INSTALL_BINARY=$out/bin
+ "
+ '';
+
+ nativeBuildInputs = [ cmake python gettext ];
+
+ buildInputs = [
+ boost libpng zlib glew lua doxygen icu
+ SDL2 SDL2_image SDL2_mixer SDL2_net SDL2_ttf
+ ];
+
+ prePatch = ''
+ substituteInPlace ./debian/org.widelands.widelands.desktop --replace "/usr/share/games/widelands/data/" "$out/share/widelands/"
+ '';
+
+ postInstall = ''
+ mkdir -p "$out/share/applications/"
+ cp -v "../debian/org.widelands.widelands.desktop" "$out/share/applications/"
+ '';
+
+ enableParallelBuilding = true;
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/worldofgoo/default.nix b/infra/libkookie/nixpkgs/pkgs/games/worldofgoo/default.nix
new file mode 100644
index 000000000000..81540fa4d962
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/worldofgoo/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, requireFile, unzip, makeDesktopItem, SDL2, SDL2_mixer, libogg, libvorbis }:
+
+let
+ arch = if stdenv.system == "x86_64-linux"
+ then "x86_64"
+ else "x86";
+
+ desktopItem = makeDesktopItem {
+ desktopName = "World of Goo";
+ genericName = "World of Goo";
+ categories = "Game;";
+ exec = "WorldOfGoo.bin.${arch}";
+ icon = "2dboy-worldofgoo";
+ name = "worldofgoo";
+ type = "Application";
+ };
+
+in
+
+stdenv.mkDerivation rec {
+ pname = "WorldOfGoo";
+ version = "1.53";
+
+ helpMsg = ''
+ We cannot download the full version automatically, as you require a license.
+ Once you have bought a license, you need to add your downloaded version to the nix store.
+ You can do this by using "nix-prefetch-url file://\$PWD/${pname}.Linux${version}.sh"
+ in the directory where you saved it.
+ '';
+
+ src = requireFile {
+ message = helpMsg;
+ name = "WorldOfGoo.Linux.1.53.sh";
+ sha256 = "175e4b0499a765f1564942da4bd65029f8aae1de8231749c56bec672187d53ee";
+ };
+
+ buildInputs = [ unzip ];
+ sourceRoot = pname;
+ phases = [ "unpackPhase installPhase" ];
+
+ libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc.lib stdenv.cc.libc SDL2 SDL2_mixer
+ libogg libvorbis ];
+
+ unpackPhase = ''
+ # The game is distributed as a shell script, with a tar of mojosetup, and a
+ # zip archive attached to the end. Therefore a simple unzip does the job.
+ # However, to avoid unzip errors, we need to strip those out first.
+ tail -c +421887 ${src} > ${src}.zip
+ unzip -q ${src}.zip -d ${pname}
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/applications $out/share/icons/hicolor/256x256/apps
+
+ install -t $out/bin -m755 data/${arch}/WorldOfGoo.bin.${arch}
+ cp -R data/noarch/* $out/bin
+ cp data/noarch/game/gooicon.png $out/share/icons/hicolor/256x256/apps/2dboy-worldofgoo.png
+ cp ${desktopItem}/share/applications/worldofgoo.desktop \
+ $out/share/applications/worldofgoo.desktop
+
+ patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath $libPath $out/bin/WorldOfGoo.bin.${arch}
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A physics based puzzle game";
+ longDescription = ''
+ World of Goo is a physics based puzzle / construction game. The millions of Goo
+ Balls who live in the beautiful World of Goo don't know that they are in a
+ game, or that they are extremely delicious.
+ '';
+ homepage = "http://worldofgoo.com";
+ license = licenses.unfree;
+ platforms = [ "i686-linux" "x86_64-linux" ];
+ maintainers = with maintainers; [ jcumming maxeaubrey ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/wyvern/cargo-lock.patch b/infra/libkookie/nixpkgs/pkgs/games/wyvern/cargo-lock.patch
new file mode 100644
index 000000000000..89b2517e26de
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/wyvern/cargo-lock.patch
@@ -0,0 +1,2514 @@
+diff --git a/Cargo.lock b/Cargo.lock
+new file mode 100644
+index 0000000..8be5b39
+--- /dev/null
++++ b/Cargo.lock
+@@ -0,0 +1,2508 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++[[package]]
++name = "adler32"
++version = "1.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "aho-corasick"
++version = "0.6.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "aho-corasick"
++version = "0.7.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ansi_term"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "argon2rs"
++version = "0.2.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "arrayvec"
++version = "0.4.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "atty"
++version = "0.2.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "autocfg"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "backtrace"
++version = "0.3.34"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "backtrace-sys"
++version = "0.1.31"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "base64"
++version = "0.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bit-set"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bit-vec"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "bitflags"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "blake2-rfc"
++version = "0.2.18"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "build_const"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "butlerd"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "byteorder"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "bytes"
++version = "0.4.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bzip2"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bzip2-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bzip2-sys"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "c2-chacha"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cc"
++version = "1.0.38"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "cfg-if"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "clap"
++version = "2.33.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "clap-verbosity-flag"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "structopt 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "clicolors-control"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cloudabi"
++version = "0.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "confy"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "directories 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "console"
++version = "0.7.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "constant_time_eq"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "cookie"
++version = "0.11.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cookie"
++version = "0.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cookie_store"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cookie 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cookie_store"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "core-foundation"
++version = "0.6.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "core-foundation-sys"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "crc"
++version = "1.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crc32fast"
++version = "1.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crossbeam-deque"
++version = "0.6.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crossbeam-deque"
++version = "0.7.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crossbeam-epoch"
++version = "0.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crossbeam-queue"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.6.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "curl"
++version = "0.4.22"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "curl-sys 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)",
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)",
++ "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "socket2 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "curl-sys"
++version = "0.4.20"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "dialoguer"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "console 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "directories"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "dirs"
++version = "1.0.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_users 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "dtoa"
++version = "0.4.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "eidolon"
++version = "1.4.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "butlerd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "human-panic 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "structopt 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "either"
++version = "1.5.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "encode_unicode"
++version = "0.3.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "encoding_rs"
++version = "0.8.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "env_logger"
++version = "0.5.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "error-chain"
++version = "0.12.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)",
++ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "failure"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "failure_derive"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "flate2"
++version = "1.0.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "miniz_oxide_c_api 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "fnv"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "foreign-types"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "foreign-types-shared"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "fuchsia-cprng"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "fuchsia-zircon"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "fuchsia-zircon-sys"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "futf"
++version = "0.1.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "futures"
++version = "0.1.28"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "futures-cpupool"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "gog"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cookie 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "curl 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)",
++ "select 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "user_agent 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "h2"
++version = "0.1.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "heck"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "html5ever"
++version = "0.23.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "markup5ever 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "http"
++version = "0.1.18"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "http-body"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "httparse"
++version = "1.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "human-panic"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "os_type 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "termcolor 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "humantime"
++version = "1.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "hyper"
++version = "0.12.33"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)",
++ "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "hyper-tls"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "idna"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "indexmap"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "indicatif"
++version = "0.10.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "console 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "inflate"
++version = "0.4.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "iovec"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "itoa"
++version = "0.4.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "kernel32-sys"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "lazy_static"
++version = "1.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "libc"
++version = "0.2.60"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "libflate"
++version = "0.1.25"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "libz-sys"
++version = "1.0.25"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "lock_api"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "lock_api"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "log"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "mac"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "markup5ever"
++version = "0.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "matches"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "memchr"
++version = "2.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "memoffset"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "mime"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "mime_guess"
++version = "2.0.0-alpha.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "miniz_oxide"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "miniz_oxide_c_api"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "miniz_oxide 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "mio"
++version = "0.6.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "miow"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "native-tls"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)",
++ "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "net2"
++version = "0.2.33"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "new_debug_unreachable"
++version = "1.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "nodrop"
++version = "0.1.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "num-traits"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num_cpus"
++version = "1.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "number_prefix"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "openssl"
++version = "0.10.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "openssl-probe"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "openssl-sys"
++version = "0.9.48"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "os_type"
++version = "2.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "owning_ref"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parking_lot"
++version = "0.7.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parking_lot"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parking_lot_core"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parking_lot_core"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "percent-encoding"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "phf"
++version = "0.7.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "phf_codegen"
++version = "0.7.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "phf_generator"
++version = "0.7.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "phf_shared"
++version = "0.7.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "pkg-config"
++version = "0.3.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "podio"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "ppv-lite86"
++version = "0.2.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "precomputed-hash"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "proc-macro2"
++version = "0.4.30"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "publicsuffix"
++version = "1.5.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "quick-error"
++version = "1.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "quote"
++version = "0.6.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.3.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.4.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.5.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.6.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "getrandom 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "rand_core"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "getrandom 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_isaac"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_jitter"
++version = "0.1.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_os"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_pcg"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_xorshift"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rayon"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rayon-core"
++version = "1.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rdrand"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "redox_syscall"
++version = "0.1.56"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "redox_users"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "regex"
++version = "0.2.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "regex"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.5.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.6.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "remove_dir_all"
++version = "0.5.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "reqwest"
++version = "0.9.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)",
++ "flate2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rle-decode-fast"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "rustc-demangle"
++version = "0.1.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "rustc_version"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ryu"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "same-file"
++version = "1.0.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "schannel"
++version = "0.1.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "scoped_threadpool"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "scopeguard"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "scopeguard"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "security-framework"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "security-framework-sys"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "select"
++version = "0.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "html5ever 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "semver"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "semver-parser"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "serde"
++version = "1.0.98"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_derive"
++version = "1.0.98"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_json"
++version = "1.0.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_urlencoded"
++version = "0.5.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "siphasher"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "slab"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "smallvec"
++version = "0.6.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "socket2"
++version = "0.3.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "stable_deref_trait"
++version = "1.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "string"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "string_cache"
++version = "0.7.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "string_cache_codegen"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "string_cache_shared"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "strsim"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "structopt"
++version = "0.2.18"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "structopt-derive 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "structopt-derive"
++version = "0.2.18"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "syn"
++version = "0.15.42"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "synstructure"
++version = "0.10.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "take_mut"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "tempdir"
++version = "0.3.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tempfile"
++version = "2.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tempfile"
++version = "3.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tendril"
++version = "0.4.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "termcolor"
++version = "0.3.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "wincolor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "termcolor"
++version = "1.0.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "termios"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "textwrap"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "thread_local"
++version = "0.3.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "time"
++version = "0.1.42"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio"
++version = "0.1.22"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-buf"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-current-thread"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-executor"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-io"
++version = "0.1.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-reactor"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-sync"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-tcp"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-threadpool"
++version = "0.1.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tokio-timer"
++version = "0.2.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "toml"
++version = "0.4.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "try-lock"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "try_from"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ucd-util"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicase"
++version = "1.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicase"
++version = "2.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicode-bidi"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicode-normalization"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicode-segmentation"
++version = "1.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-width"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-xid"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "url"
++version = "1.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "user_agent"
++version = "0.6.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cookie 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cookie_store 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "utf-8"
++version = "0.7.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "utf8-ranges"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "uuid"
++version = "0.6.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "uuid"
++version = "0.7.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "vcpkg"
++version = "0.2.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "vec_map"
++version = "0.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "version_check"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "walkdir"
++version = "2.2.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "want"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "winapi"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi"
++version = "0.3.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "winapi-build"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi-util"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "wincolor"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "wincolor"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "winreg"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ws2_32-sys"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "wyvern"
++version = "1.4.1"
++dependencies = [
++ "clap-verbosity-flag 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "confy 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "console 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "curl 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dialoguer 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "eidolon 1.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "gog 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "human-panic 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "indicatif 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "structopt 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempfile 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "zip 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "zip"
++version = "0.5.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libflate 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
++ "podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[metadata]
++"checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c"
++"checksum aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "81ce3d38065e618af2d7b77e10c5ad9a069859b4be3c2250f674af3840d9c8a5"
++"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
++"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
++"checksum argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f67b0b6a86dae6e67ff4ca2b6201396074996379fba2b92ff649126f37cb392"
++"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba"
++"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90"
++"checksum autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "22130e92352b948e7e82a49cdb0aa94f2211761117f29e052dd397c1ac33542b"
++"checksum backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)" = "b5164d292487f037ece34ec0de2fcede2faa162f085dd96d2385ab81b12765ba"
++"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b"
++"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
++"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80"
++"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb"
++"checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd"
++"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400"
++"checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39"
++"checksum butlerd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "095899eb6b69e0a1c98215e51a44c67b8e3c902ebb9440afaafe2eb45e650a09"
++"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
++"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
++"checksum bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b"
++"checksum bzip2-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6584aa36f5ad4c9247f5323b0a42f37802b37a836f0ad87084d7a33961abe25f"
++"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101"
++"checksum cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "ce400c638d48ee0e9ab75aef7997609ec57367ccfe1463f21bf53c3eca67bf46"
++"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
++"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
++"checksum clap-verbosity-flag 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bda14f5323b2b747f52908c5b7b8af7790784088bc7c2957a11695e39ad476dc"
++"checksum clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "73abfd4c73d003a674ce5d2933fca6ce6c42480ea84a5ffe0a2dc39ed56300f9"
++"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
++"checksum confy 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4b1400cd0dae7f27d2c7ced9492e1398d2e2df614570092a4936c73b416dedea"
++"checksum console 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8ca57c2c14b8a2bf3105bc9d15574aad80babf6a9c44b1058034cdf8bd169628"
++"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
++"checksum cookie 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "99be24cfcf40d56ed37fd11c2123be833959bbc5bddecb46e1c2e442e15fa3e0"
++"checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5"
++"checksum cookie_store 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b0d2f2ecb21dce00e2453268370312978af9b8024020c7a37ae2cc6dbbe64685"
++"checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c"
++"checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d"
++"checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b"
++"checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb"
++"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
++"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13"
++"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71"
++"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9"
++"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
++"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
++"checksum curl 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "f8ed9a22aa8c4e49ac0c896279ef532a43a7df2f54fcd19fa36960de029f965f"
++"checksum curl-sys 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "5e90ae10f635645cba9cad1023535f54915a95c58c44751c6ed70dbaeb17a408"
++"checksum dialoguer 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "116f66c4e7b19af0d52857aa4ff710cc3b4781d9c16616e31540bc55ec57ba8c"
++"checksum directories 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc2561db021b6f1321d0f16b67ed28ce843ef4610dfaa432e3ffa2e8a3050ebf"
++"checksum dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901"
++"checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e"
++"checksum eidolon 1.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8a501eef266fdb28e1414b6104ca799a216bce6dc4ae1217ad0f40d591351671"
++"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b"
++"checksum encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90b2c9496c001e8cb61827acdefad780795c42264c137744cae6f7d9e3450abd"
++"checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed"
++"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38"
++"checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9"
++"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2"
++"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1"
++"checksum flate2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "550934ad4808d5d39365e5d61727309bf18b3b02c6c56b729cb92e7dd84bc3d8"
++"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
++"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
++"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
++"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
++"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
++"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
++"checksum futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b"
++"checksum futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "45dc39533a6cae6da2b56da48edae506bb767ec07370f86f70fc062e9d435869"
++"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4"
++"checksum getrandom 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8e190892c840661957ba9f32dacfb3eb405e657f9f9f60485605f0bb37d6f8"
++"checksum gog 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "19bfb6c45ea1fba86f5880b4f239ef8034230387d90a0dfea70e094caeabf0be"
++"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462"
++"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
++"checksum html5ever 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce65ac8028cf5a287a7dbf6c4e0a6cf2dcf022ed5b167a81bae66ebf599a8b7"
++"checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4"
++"checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d"
++"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
++"checksum human-panic 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "21638c5955a6daf3ecc42cae702335fc37a72a4abcc6959ce457b31a7d43bbdd"
++"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114"
++"checksum hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)" = "7cb44cbce9d8ee4fb36e4c0ad7b794ac44ebaad924b9c8291a63215bb44c2c8f"
++"checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f"
++"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
++"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d"
++"checksum indicatif 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)" = "40ecd1e2ee08e6c255ce890f5a99d17000850e664e7acf119fb03b25b0575bfe"
++"checksum inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff"
++"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08"
++"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
++"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
++"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14"
++"checksum libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "d44e80633f007889c7eff624b709ab43c92d708caad982295768a7b13ca3b5eb"
++"checksum libflate 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "90c6f86f4b0caa347206f916f8b687b51d77c6ef8ff18d52dd007491fd580529"
++"checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe"
++"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c"
++"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc"
++"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
++"checksum mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
++"checksum markup5ever 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f1af46a727284117e09780d05038b1ce6fc9c76cc6df183c3dae5a8955a25e21"
++"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
++"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
++"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f"
++"checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425"
++"checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed"
++"checksum miniz_oxide 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c061edee74a88eb35d876ce88b94d77a0448a201de111c244b70d047f5820516"
++"checksum miniz_oxide_c_api 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6c675792957b0d19933816c4e1d56663c341dd9bfa31cb2140ff2267c1d8ecf4"
++"checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23"
++"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
++"checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e"
++"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
++"checksum new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f40f005c60db6e03bae699e414c58bf9aa7ea02a2d0b9bfbcf19286cc4c82b30"
++"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"
++"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32"
++"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273"
++"checksum number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dbf9993e59c894e3c08aa1c2712914e9e6bf1fcbfc6bef283e2183df345a4fee"
++"checksum openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8152bb5a9b5b721538462336e3bef9a539f892715e5037fda0f984577311af15"
++"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
++"checksum openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)" = "b5ba300217253bcc5dc68bed23d782affa45000193866e025329aa8a7a9f05b8"
++"checksum os_type 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7edc011af0ae98b7f88cf7e4a83b70a54a75d2b8cb013d6efd02e5956207e9eb"
++"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13"
++"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337"
++"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
++"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9"
++"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
++"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
++"checksum phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18"
++"checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e"
++"checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662"
++"checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0"
++"checksum pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c1d2cfa5a714db3b5f24f0915e74fcdf91d09d496ba61329705dda7774d2af"
++"checksum podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "780fb4b6698bbf9cf2444ea5d22411cef2953f0824b98f33cf454ec5615645bd"
++"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b"
++"checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
++"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
++"checksum publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5afecba86dcf1e4fd610246f89899d1924fe12e1e89f555eb7c7f710f3c5ad1d"
++"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0"
++"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
++"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c"
++"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
++"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9"
++"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
++"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c"
++"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
++"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853"
++"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
++"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0"
++"checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca"
++"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
++"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
++"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
++"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
++"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
++"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
++"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
++"checksum rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4b0186e22767d5b9738a05eab7c6ac90b15db17e5b5f9bd87976dd7d89a10a4"
++"checksum rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2"
++"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
++"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
++"checksum redox_users 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe5204c3a17e97dde73f285d49be585df59ed84b50a872baf416e73b62c3828"
++"checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384"
++"checksum regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88c3d9193984285d544df4a30c23a4e62ead42edf70a4452ceb76dac1ce05c26"
++"checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7"
++"checksum regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b143cceb2ca5e56d5671988ef8b15615733e7ee16cd348e064333b251b89343f"
++"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
++"checksum reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)" = "1d0777154c2c3eb54f5c480db01de845652d941e47191277cc673634c3853939"
++"checksum rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac"
++"checksum rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f4dccf6f4891ebcc0c39f9b6eb1a83b9bf5d747cb439ec6fba4f3b977038af"
++"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
++"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
++"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421"
++"checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339"
++"checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
++"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
++"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
++"checksum security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eee63d0f4a9ec776eeb30e220f0bc1e092c3ad744b2a379e3993070364d3adc2"
++"checksum security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9636f8989cbf61385ae4824b98c1aaa54c994d7d8b41f11c601ed799f0549a56"
++"checksum select 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ac645958c62108d11f90f8d34e4dc2799c838fc995ed4c2075867a2a8d5be76b"
++"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
++"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
++"checksum serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)" = "7fe5626ac617da2f2d9c48af5515a21d5a480dbd151e01bb1c355e26a3e68113"
++"checksum serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)" = "01e69e1b8a631f245467ee275b8c757b818653c6d704cdbcaeb56b56767b529c"
++"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704"
++"checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a"
++"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac"
++"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
++"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7"
++"checksum socket2 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)" = "df028e0e632c2a1823d920ad74895e7f9128e6438cbc4bc6fd1f180e644767b9"
++"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"
++"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d"
++"checksum string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25d70109977172b127fe834e5449e5ab1740b9ba49fa18a2020f509174f25423"
++"checksum string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1eea1eee654ef80933142157fdad9dd8bc43cf7c74e999e369263496f04ff4da"
++"checksum string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc"
++"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
++"checksum structopt 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "16c2cdbf9cc375f15d1b4141bc48aeef444806655cd0e904207edc8d68d86ed7"
++"checksum structopt-derive 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "53010261a84b37689f9ed7d395165029f9cc7abb9f56bbfe86bee2597ed25107"
++"checksum syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)" = "eadc09306ca51a40555dd6fc2b415538e9e18bc9f870e47b1a524a79fe2dcf5e"
++"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
++"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60"
++"checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
++"checksum tempfile 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "11ce2fe9db64b842314052e2421ac61a73ce41b898dc8e3750398b219c5fc1e0"
++"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
++"checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b"
++"checksum termcolor 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "adc4587ead41bf016f11af03e55a624c06568b5a19db4e90fde573d805074f83"
++"checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e"
++"checksum termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625"
++"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
++"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
++"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
++"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6"
++"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46"
++"checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443"
++"checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac"
++"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926"
++"checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce"
++"checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7"
++"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119"
++"checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19"
++"checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e"
++"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"
++"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382"
++"checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b"
++"checksum ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa9b3b49edd3468c0e6565d85783f51af95212b6fa3986a5500954f00b460874"
++"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33"
++"checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6"
++"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
++"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426"
++"checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9"
++"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
++"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
++"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
++"checksum user_agent 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "970a778e2284bd68e55ca4e93b858da333cd85c3d5d8b4eab2c6e729cd6f47c4"
++"checksum utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7"
++"checksum utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba"
++"checksum uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e1436e58182935dcd9ce0add9ea0b558e8a87befe01c1a301e6020aeb0876363"
++"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a"
++"checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95"
++"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
++"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
++"checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e"
++"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230"
++"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
++"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
++"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
++"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9"
++"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
++"checksum wincolor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eeb06499a3a4d44302791052df005d5232b927ed1a9658146d842165c4de7767"
++"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba"
++"checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9"
++"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
++"checksum zip 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c18fc320faf909036e46ac785ea827f72e485304877faf1a3a39538d3714dbc3"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/wyvern/default.nix b/infra/libkookie/nixpkgs/pkgs/games/wyvern/default.nix
new file mode 100644
index 000000000000..dcf81bc0985f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/wyvern/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, fetchgit
+, rustPlatform
+, unzip
+, rsync
+, innoextract
+, curl
+, cmake
+, pkgconfig
+, openssl
+}:
+
+rustPlatform.buildRustPackage rec {
+ pname = "wyvern";
+ version = "1.4.1";
+
+ src = fetchgit {
+ url = "https://git.sr.ht/~nicohman/wyvern";
+ rev = version;
+ sha256 = "1sl3yhash1527amc8rs4374fd7jbgnkyy7qpw94ms2gs80sdv3s5";
+ };
+ cargoPatches = [ ./cargo-lock.patch ];
+
+ cargoSha256 = "sha256:1nd5qla3p1jrssg5fqal8m3jcbxax0wsfc8cp97jdrpqlcgqfmrx";
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+ buildInputs = [ openssl ];
+
+ meta = with stdenv.lib; {
+ description = "A simple CLI client for installing and maintaining linux GOG games";
+ homepage = "https://git.sr.ht/~nicohman/wyvern";
+ license = licenses.gpl3;
+ maintainers = with maintainers;[ _0x4A6F ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xbill/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xbill/default.nix
new file mode 100644
index 000000000000..f021d9ac7a75
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xbill/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, lib, fetchurl, libX11, libXpm, libXt, motif, ... }:
+
+stdenv.mkDerivation rec {
+ pname = "xbill";
+ version = "2.1";
+
+ buildInputs = [ libX11 libXpm libXt motif ];
+
+ NIX_CFLAGS_LINK = "-lXpm";
+
+ configureFlags = [
+ "--with-x"
+ "--enable-motif"
+ ];
+
+ src = fetchurl {
+ url = "http://www.xbill.org/download/${pname}-${version}.tar.gz";
+ sha256 = "13b08lli2gvppmvyhy0xs8cbjbkvrn4b87302mx0pxrdrvqzzz8f";
+ };
+
+ meta = with stdenv; {
+ description = "Protect a computer network from getting infected";
+ homepage = "http://www.xbill.org/";
+ license = lib.licenses.gpl1;
+ maintainers = with lib.maintainers; [ aw ];
+ longDescription = ''
+ Ever get the feeling that nothing is going right? You're a sysadmin,
+ and someone's trying to destroy your computers. The little people
+ running around the screen are trying to infect your computers with
+ Wingdows [TM], a virus cleverly designed to resemble a popular
+ operating system.
+ '';
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xboard/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xboard/default.nix
new file mode 100644
index 000000000000..9f3303578da6
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xboard/default.nix
@@ -0,0 +1,35 @@
+{stdenv, fetchurl, libX11, xorgproto, libXt, libXaw, libSM, libICE, libXmu
+, libXext, gnuchess, texinfo, libXpm, pkgconfig, librsvg, cairo, pango
+, gtk2
+}:
+let
+ s = # Generated upstream information
+ rec {
+ baseName="xboard";
+ version="4.9.1";
+ name="${baseName}-${version}";
+ hash="1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib";
+ url="https://ftp.gnu.org/gnu/xboard/xboard-4.9.1.tar.gz";
+ sha256="1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib";
+ };
+ buildInputs = [
+ libX11 xorgproto libXt libXaw libSM libICE libXmu
+ libXext gnuchess texinfo libXpm pkgconfig librsvg
+ cairo pango gtk2
+ ];
+in
+stdenv.mkDerivation {
+ inherit (s) name version;
+ inherit buildInputs;
+ src = fetchurl {
+ inherit (s) url sha256;
+ };
+ meta = {
+ inherit (s) version;
+ description = ''GUI for chess engines'';
+ homepage = "https://www.gnu.org/software/xboard/";
+ maintainers = [stdenv.lib.maintainers.raskin];
+ platforms = stdenv.lib.platforms.unix;
+ license = stdenv.lib.licenses.gpl3Plus;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xboard/default.upstream b/infra/libkookie/nixpkgs/pkgs/games/xboard/default.upstream
new file mode 100644
index 000000000000..2e5af5d08725
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xboard/default.upstream
@@ -0,0 +1 @@
+url https://ftp.gnu.org/gnu/xboard/
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xbomb/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xbomb/default.nix
new file mode 100644
index 000000000000..0754905ce50d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xbomb/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, libX11, libXaw }:
+
+stdenv.mkDerivation rec {
+ name = "xbomb-2.2b";
+ src = fetchurl {
+ url = "https://www.gedanken.org.uk/software/xbomb/download/${name}.tgz";
+ sha256 = "0692gjw28qvh8wj9l58scjw6kxj7jdyb3yzgcgs9wcznq11q839m";
+ };
+
+ buildInputs = [ libX11 libXaw ];
+
+ makeFlags = [
+ "INSTDIR=${placeholder ''out''}"
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = "http://www.gedanken.org.uk/software/xbomb/";
+ description = "Minesweeper for X11 with various grid sizes and shapes";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xconq/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xconq/default.nix
new file mode 100644
index 000000000000..6e8526399794
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xconq/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, cpio, xorgproto, libX11, libXmu, libXaw, libXt, tcl, tk
+, libXext, fontconfig, makeWrapper }:
+
+stdenv.mkDerivation rec {
+ name = "${baseName}-${version}";
+ baseName = "xconq";
+ version = "7.5.0-0pre.0.20050612";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/${baseName}/${baseName}/${name}/${name}.tar.gz";
+ sha256 = "1za78yx57mgwcmmi33wx3533yz1x093dnqis8q2qmqivxav51lca";
+ };
+
+ buildInputs = [ cpio xorgproto libX11 libXmu libXaw libXt tcl tk libXext
+ fontconfig makeWrapper ];
+
+ configureFlags = [
+ "--enable-alternate-scoresdir=scores"
+ "--with-tclconfig=${tcl}/lib"
+ "--with-tkconfig=${tk}/lib"
+ ];
+
+ hardeningDisable = [ "format" ];
+
+ patchPhase = ''
+ # Fix Makefiles
+ find . -name 'Makefile.in' -exec sed -re 's@^ ( *)(cd|[&][&])@ \1\2@' -i '{}' ';'
+ find . -name 'Makefile.in' -exec sed -e '/chown/d; /chgrp/d' -i '{}' ';'
+ # do not set sticky bit in nix store
+ find . -name 'Makefile.in' -exec sed -e 's/04755/755/g' -i '{}' ';'
+ sed -e '/^ * *[$][(]tcltkdir[)]\/[*][.][*]/d' -i tcltk/Makefile.in
+
+ # Fix C files
+ sed -re 's@[(]int[)]color@(long)color@' -i tcltk/tkmap.c
+ sed -re '/unitp = view_unit[(]uview[)]/aelse *unitp = NULL\;' -i tcltk/tkmap.c
+ sed -re 's@BMAP_BYTE char@BMAP_BYTE unsigned char@' -i kernel/ui.h
+
+ # Fix TCL files
+ sed -re 's@MediumBlue@LightBlue@g' -i tcltk/tkconq.tcl
+ '';
+
+ postInstall = ''
+ for file in $out/bin/*; do
+ wrapProgram $file --prefix TCLLIBPATH ' ' "${tk}/lib"
+ done
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A programmable turn-based strategy game";
+ maintainers = with maintainers; [ raskin ];
+ platforms = platforms.linux;
+ license = licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xcowsay/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xcowsay/default.nix
new file mode 100644
index 000000000000..dd95bf1e5a16
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xcowsay/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, makeWrapper, pkg-config
+, dbus, dbus-glib, gtk3, gdk-pixbuf, librsvg
+, fortune
+}:
+
+stdenv.mkDerivation rec {
+ pname = "xcowsay";
+ version = "1.5";
+
+ src = fetchurl {
+ url = "http://www.nickg.me.uk/files/xcowsay-${version}.tar.gz";
+ sha256 = "0pyaa062z1ag26dhkm1yzp2hivnlmhlpqn5xg7mx9r1m652mm91y";
+ };
+
+ buildInputs = [
+ dbus
+ dbus-glib
+ gtk3
+ gdk-pixbuf # loading cow images
+ librsvg # dreaming SVG images
+ ];
+ nativeBuildInputs = [ makeWrapper pkg-config ];
+
+ configureFlags = [ "--enable-dbus" ];
+
+ postInstall = ''
+ for tool in xcowdream xcowsay xcowthink xcowfortune; do
+ wrapProgram $out/bin/$tool \
+ --prefix PATH : $out/bin:${fortune}/bin
+ done
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "http://www.doof.me.uk/xcowsay";
+ description =
+ "A program based on cowsay that displays a cute cow and message on your desktop";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ das_j ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xjump/darwin.patch b/infra/libkookie/nixpkgs/pkgs/games/xjump/darwin.patch
new file mode 100644
index 000000000000..8221677658e3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xjump/darwin.patch
@@ -0,0 +1,21 @@
+--- xjump/src/main.c 2018-02-20 09:15:15.608807657 +0100
++++ xjump-patched/src/main.c 2018-02-20 09:15:34.148949100 +0100
+@@ -604,18 +604,6 @@
+ * optimistic privilege dropping function. */
+ setgroups(0, NULL);
+
+- if (setresgid(-1, realgid, realgid) != 0) {
+- perror("Could not drop setgid privileges. Aborting.");
+- exit(1);
+- }
+-
+- /* Dropping user privileges must come last.
+- * Otherwise we won't be able to drop group privileges anymore */
+- if (setresuid(-1, realuid, realuid) != 0) {
+- perror("Could not drop setuid privileges. Aborting.");
+- exit(1);
+- }
+-
+ /* From now on we run with regular user privileges */
+
+ static XtActionsRec a_table[] = {
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xjump/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xjump/default.nix
new file mode 100644
index 000000000000..afac2de9fcec
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xjump/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, autoconf, automake, libX11, libXt, libXpm, libXaw, localStateDir?null }:
+
+stdenv.mkDerivation {
+ pname = "xjump";
+ version = "2.9.3";
+ src = fetchFromGitHub {
+ owner = "hugomg";
+ repo = "xjump";
+ rev = "e7f20fb8c2c456bed70abb046c1a966462192b80";
+ sha256 = "0hq4739cvi5a47pxdc0wwkj2lmlqbf1xigq0v85qs5bq3ixmq2f7";
+ };
+ nativeBuildInputs = [ autoconf automake ];
+ buildInputs = [ libX11 libXt libXpm libXaw ];
+ preConfigure = "autoreconf --install";
+ patches = if stdenv.buildPlatform.isDarwin then [ ./darwin.patch ] else [];
+ configureFlags =
+ if localStateDir != null then
+ ["--localstatedir=${localStateDir}"]
+ else
+ [];
+
+ meta = with stdenv.lib; {
+ description = "The falling tower game";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ pmeunier ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xmage/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xmage/default.nix
new file mode 100644
index 000000000000..e8b8eb8a9419
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xmage/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, fetchurl
+, jdk8
+, unzip
+}:
+
+stdenv.mkDerivation rec {
+ name = "xmage";
+ version = "1.4.42V6";
+
+ src = fetchurl {
+ url = "https://github.com/magefree/mage/releases/download/xmage_1.4.42V6/xmage_${version}.zip";
+ sha256 = "14s4885ldi0rplqmab5m775plsqmmm0m89j402caiqm2q9mzvkhd";
+ };
+
+ preferLocalBuild = true;
+
+ unpackPhase = ''
+ ${unzip}/bin/unzip $src
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp -rv ./* $out
+
+ cat << EOS > $out/bin/xmage
+exec ${jdk8}/bin/java -Xms256m -Xmx512m -XX:MaxPermSize=384m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar $out/mage-client/lib/mage-client-1.4.42.jar
+EOS
+
+ chmod +x $out/bin/xmage
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Magic Another Game Engine";
+ license = licenses.mit;
+ maintainers = with maintainers; [ matthiasbeyer ];
+ homepage = "http://xmage.de/";
+ };
+
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xmoto/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xmoto/default.nix
new file mode 100644
index 000000000000..d49998a68d73
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xmoto/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, chipmunk, sqlite, curl, zlib, bzip2, libjpeg
+, libpng, freeglut, libGLU, libGL, SDL, SDL_mixer, SDL_image, SDL_net
+, SDL_ttf, lua5, ode, libxdg_basedir, libxml2 }:
+
+stdenv.mkDerivation rec {
+ pname = "xmoto";
+ version = "0.5.11";
+
+ src = fetchurl {
+ url = "https://download.tuxfamily.org/xmoto/xmoto/${version}/xmoto-${version}-src.tar.gz";
+ sha256 = "1ci6r8zd0l7z28cy92ddf9dmqbdqwinz2y1cny34c61b57wsd155";
+ };
+
+ buildInputs = [
+ chipmunk sqlite curl zlib bzip2 libjpeg libpng
+ freeglut libGLU libGL SDL SDL_mixer SDL_image SDL_net SDL_ttf
+ lua5 ode libxdg_basedir libxml2
+ ];
+
+ CXXFLAGS = [
+ "-fpermissive"
+ # Build using the old C++ ABI to fix issue with missing text; the issue
+ # should be fixed in the next stable release (if that ever does happen)
+ "-D_GLIBCXX_USE_CXX11_ABI=0"
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Obstacled race game";
+ homepage = "http://xmoto.tuxfamily.org";
+ maintainers = with maintainers; [ raskin pSub ];
+ platforms = platforms.linux;
+ license = licenses.gpl2;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xonotic/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xonotic/default.nix
new file mode 100644
index 000000000000..60ebdcf8eebf
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xonotic/default.nix
@@ -0,0 +1,161 @@
+{ lib, stdenv, fetchurl, fetchzip, makeWrapper, runCommandNoCC, makeDesktopItem
+, xonotic-data, copyDesktopItems
+, # required for both
+ unzip, libjpeg, zlib, libvorbis, curl
+, # glx
+ libX11, libGLU, libGL, libXpm, libXext, libXxf86vm, alsaLib
+, # sdl
+ SDL2
+
+, withSDL ? true
+, withGLX ? false
+, withDedicated ? true
+}:
+
+let
+ pname = "xonotic";
+ version = "0.8.2";
+ name = "${pname}-${version}";
+ variant =
+ if withSDL && withGLX then
+ ""
+ else if withSDL then
+ "-sdl"
+ else if withGLX then
+ "-glx"
+ else if withDedicated then
+ "-dedicated"
+ else "-what-even-am-i";
+
+ meta = {
+ description = "A free fast-paced first-person shooter";
+ longDescription = ''
+ Xonotic is a free, fast-paced first-person shooter that works on
+ Windows, macOS and Linux. The project is geared towards providing
+ addictive arena shooter gameplay which is all spawned and driven
+ by the community itself. Xonotic is a direct successor of the
+ Nexuiz project with years of development between them, and it
+ aims to become the best possible open-source FPS of its kind.
+ '';
+ homepage = "https://www.xonotic.org/";
+ license = stdenv.lib.licenses.gpl2Plus;
+ maintainers = with stdenv.lib.maintainers; [ astsmtl zalakain petabyteboy ];
+ platforms = stdenv.lib.platforms.linux;
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "xonotic";
+ exec = "$out/bin/xonotic";
+ comment = meta.description;
+ desktopName = "Xonotic";
+ categories = "Game;Shooter;";
+ icon = "xonotic";
+ startupNotify = "false";
+ };
+
+ xonotic-unwrapped = stdenv.mkDerivation rec {
+ pname = "xonotic${variant}-unwrapped";
+ inherit version;
+
+ src = fetchurl {
+ url = "https://dl.xonotic.org/${name}-source.zip";
+ sha256 = "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay";
+ };
+
+ buildInputs = [ unzip libjpeg zlib libvorbis curl ]
+ ++ lib.optional withGLX [ libX11.dev libGLU.dev libGL.dev libXpm.dev libXext.dev libXxf86vm.dev alsaLib.dev ]
+ ++ lib.optional withSDL [ SDL2.dev ];
+
+ sourceRoot = "Xonotic/source/darkplaces";
+
+ # "debug", "release", "profile"
+ target = "release";
+
+ dontStrip = target != "release";
+
+ buildPhase = lib.optionalString withDedicated ''
+ make -j $NIX_BUILD_CORES -l $NIX_BUILD_CORES sv-${target}
+ '' + lib.optionalString withGLX ''
+ make -j $NIX_BUILD_CORES -l $NIX_BUILD_CORES cl-${target}
+ '' + lib.optionalString withSDL ''
+ make -j $NIX_BUILD_CORES -l $NIX_BUILD_CORES sdl-${target}
+ '';
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ for size in 16x16 24x24 32x32 48x48 64x64 72x72 96x96 128x128 192x192 256x256 512x512 1024x1024 scalable; do
+ install -Dm644 ../../misc/logos/xonotic_icon.svg \
+ $out/share/icons/hicolor/$size/xonotic.svg
+ done
+ '' + lib.optionalString withDedicated ''
+ install -Dm755 darkplaces-dedicated "$out/bin/xonotic-dedicated"
+ '' + lib.optionalString withGLX ''
+ install -Dm755 darkplaces-glx "$out/bin/xonotic-glx"
+ '' + lib.optionalString withSDL ''
+ install -Dm755 darkplaces-sdl "$out/bin/xonotic-sdl"
+ '';
+
+ # Xonotic needs to find libcurl.so at runtime for map downloads
+ dontPatchELF = true;
+ postFixup = lib.optionalString withDedicated ''
+ patchelf --add-needed ${curl.out}/lib/libcurl.so $out/bin/xonotic-dedicated
+ '' + lib.optionalString withGLX ''
+ patchelf \
+ --add-needed ${curl.out}/lib/libcurl.so \
+ --add-needed ${libvorbis}/lib/libvorbisfile.so \
+ --add-needed ${libvorbis}/lib/libvorbis.so \
+ --add-needed ${libGL.out}/lib/libGL.so \
+ $out/bin/xonotic-glx
+ '' + lib.optionalString withSDL ''
+ patchelf \
+ --add-needed ${curl.out}/lib/libcurl.so \
+ --add-needed ${libvorbis}/lib/libvorbisfile.so \
+ --add-needed ${libvorbis}/lib/libvorbis.so \
+ $out/bin/xonotic-sdl
+ '';
+ };
+
+in rec {
+ xonotic-data = fetchzip {
+ name = "xonotic-data-${version}";
+ url = "https://dl.xonotic.org/${name}.zip";
+ sha256 = "1ygkh0v68y4sd1w5vpk8dgb65h5jm599hwszdfgjp3ax4d3ml81x";
+ extraPostFetch = ''
+ cd $out
+ rm -rf $(ls | grep -v "^data$")
+ '';
+ meta.hydraPlatforms = [];
+ passthru.version = version;
+ };
+
+ xonotic = runCommandNoCC "xonotic${variant}-${version}" {
+ inherit xonotic-unwrapped;
+ nativeBuildInputs = [ makeWrapper copyDesktopItems ];
+ desktopItems = [ desktopItem ];
+ passthru = {
+ inherit version;
+ meta = meta // {
+ hydraPlatforms = [];
+ };
+ };
+ } (''
+ mkdir -p $out/bin
+ '' + lib.optionalString withDedicated ''
+ ln -s ${xonotic-unwrapped}/bin/xonotic-dedicated $out/bin/
+ '' + lib.optionalString withGLX ''
+ ln -s ${xonotic-unwrapped}/bin/xonotic-glx $out/bin/xonotic-glx
+ ln -s $out/bin/xonotic-glx $out/bin/xonotic
+ '' + lib.optionalString withSDL ''
+ ln -s ${xonotic-unwrapped}/bin/xonotic-sdl $out/bin/xonotic-sdl
+ ln -sf $out/bin/xonotic-sdl $out/bin/xonotic
+ '' + lib.optionalString (withSDL || withGLX) ''
+ mkdir -p $out/share
+ ln -s ${xonotic-unwrapped}/share/icons $out/share/icons
+ copyDesktopItems
+ '' + ''
+ for binary in $out/bin/xonotic-*; do
+ wrapProgram $binary --add-flags "-basedir ${xonotic-data}"
+ done
+ '');
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xpilot/bloodspilot-client.nix b/infra/libkookie/nixpkgs/pkgs/games/xpilot/bloodspilot-client.nix
new file mode 100644
index 000000000000..4de27b1f18da
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xpilot/bloodspilot-client.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, libX11, SDL, libGLU, libGL, expat, zlib, SDL_ttf, SDL_image }:
+
+stdenv.mkDerivation rec {
+ version = "1.5.0";
+ pname = "bloodspilot-client";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/bloodspilot/client-sdl/v${version}/bloodspilot-client-sdl-${version}.tar.gz";
+ sha256 = "1qwl95av5an2zl01m7saj6fyy49xpixga7gbn4lwbpgpqs1rbwxj";
+ };
+
+ buildInputs = [
+ libX11 SDL SDL_ttf SDL_image libGLU libGL expat zlib
+ ];
+
+ NIX_LDFLAGS = "-lX11";
+
+ meta = {
+ description = ''A multiplayer space combat game (client part)'';
+ homepage = "http://bloodspilot.sf.net/";
+ license = stdenv.lib.licenses.gpl2Plus ;
+ maintainers = [stdenv.lib.maintainers.raskin];
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xpilot/bloodspilot-server.nix b/infra/libkookie/nixpkgs/pkgs/games/xpilot/bloodspilot-server.nix
new file mode 100644
index 000000000000..6b0a0603af51
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xpilot/bloodspilot-server.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, expat }:
+
+stdenv.mkDerivation rec {
+ pname = "bloodspilot-xpilot-fxi-server";
+ version = "1.4.6";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/bloodspilot/server/server%20v${version}/xpilot-${version}fxi.tar.gz";
+ sha256 = "0d7hnpshifq6gy9a0g6il6h1hgqqjyys36n8w84hr8d4nhg4d1ji";
+ };
+
+ buildInputs = [
+ expat
+ ];
+
+ patches = [
+ ./server-gcc5.patch
+ ];
+
+ meta = with stdenv.lib; {
+ description = "A multiplayer X11 space combat game (server part)";
+ homepage = "http://bloodspilot.sf.net/";
+ license = licenses.gpl2Plus ;
+ maintainers = [ maintainers.raskin ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xpilot/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xpilot/default.nix
new file mode 100644
index 000000000000..8803806547bf
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xpilot/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, libX11, libSM, SDL, libGLU, libGL, expat, SDL_ttf
+, SDL_image, zlib, libXxf86misc }:
+stdenv.mkDerivation rec {
+ pname = "xpilot-ng";
+ version = "4.7.3";
+ src = fetchurl {
+ url = "mirror://sourceforge/xpilot/xpilot_ng/${pname}-${version}/${pname}-${version}.tar.gz";
+ sha256 = "02a7pnp88kh88fzda5q8mzlckk6y9r5fw47j00h26wbsfly0k1zj";
+ };
+ buildInputs = [
+ libX11 libSM SDL SDL_ttf SDL_image libGLU libGL expat zlib libXxf86misc
+ ];
+ meta = with stdenv.lib; {
+ description = "A multiplayer X11 space combat game";
+ homepage = "http://xpilot.sf.net/";
+ license = licenses.gpl2Plus;
+ maintainers = [ maintainers.raskin ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xpilot/server-gcc5.patch b/infra/libkookie/nixpkgs/pkgs/games/xpilot/server-gcc5.patch
new file mode 100644
index 000000000000..5618399bfecd
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xpilot/server-gcc5.patch
@@ -0,0 +1,65 @@
+--- xpilot-1.4.6fxi/src/common/net.c 2016-02-09 00:20:43.531714342 +0000
++++ xpilot-1.4.6fxi/src/common/net.c 2016-02-09 00:21:15.301331053 +0000
+@@ -608,9 +608,9 @@
+ }
+
+ #if STDVA
+-inline int32_t Packet_scanf(sockbuf_t *sbuf, const char *fmt, ...)
++extern int32_t Packet_scanf(sockbuf_t *sbuf, const char *fmt, ...)
+ #else
+-inline int32_t Packet_scanf(va_alist)
++extern int32_t Packet_scanf(va_alist)
+ va_dcl
+ #endif
+ {
+--- xpilot-1.4.6fxi/src/server/collision.c 2016-02-09 00:22:29.581784405 +0000
++++ xpilot-1.4.6fxi/src/server/collision.c 2016-02-09 00:22:38.152952500 +0000
+@@ -71,7 +71,7 @@
+ * p: first object, q: second object
+ */
+
+-inline int32_t Collision_occured(int32_t p1x, int32_t p1y, int32_t p2x, int32_t p2y,
++extern int32_t Collision_occured(int32_t p1x, int32_t p1y, int32_t p2x, int32_t p2y,
+ int32_t q1x, int32_t q1y, int32_t q2x, int32_t q2y, int32_t r)
+ {
+ int32_t fac1, fac2; /* contraction between the distance between the x and y coordinates of objects */
+--- xpilot-1.4.6fxi/src/server/player.c 2016-02-09 00:25:29.546313808 +0000
++++ xpilot-1.4.6fxi/src/server/player.c 2016-02-09 00:25:40.464527932 +0000
+@@ -1411,12 +1411,12 @@
+ return NULL;
+ }
+
+-inline bool Player_idle_timed_out(player_t *pl)
++extern bool Player_idle_timed_out(player_t *pl)
+ {
+ return (frame_loops - pl->frame_last_busy > MAX_PLAYER_IDLE_TICKS && (NumPlayers > 1)) ? true : false;
+ }
+
+-inline bool Player_is_recovered(player_t *pl)
++extern bool Player_is_recovered(player_t *pl)
+ {
+ return (pl->recovery_count <= 0.0) ? true : false;
+ }
+--- xpilot-1.4.6fxi/src/server/score.c 2016-02-09 00:21:45.659923025 +0000
++++ xpilot-1.4.6fxi/src/server/score.c 2016-02-09 00:22:07.224345939 +0000
+@@ -24,17 +24,17 @@
+ char msg[MSG_LEN];
+
+
+-inline double Get_Score(player_t *pl)
++extern double Get_Score(player_t *pl)
+ {
+ return pl->score;
+ }
+
+-inline void Score_set(player_t * pl, double score)
++extern void Score_set(player_t * pl, double score)
+ {
+ pl->score = score;
+ }
+
+-inline void Score_add(player_t * pl, double score)
++extern void Score_add(player_t * pl, double score)
+ {
+ pl->score += score;
+ }
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xskat/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xskat/default.nix
new file mode 100644
index 000000000000..5fa91a0395c1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xskat/default.nix
@@ -0,0 +1,38 @@
+{stdenv, fetchurl, libX11, imake, gccmakedep}:
+
+
+let
+ s = # Generated upstream information
+ rec {
+ baseName="xskat";
+ version="4.0";
+ name="${baseName}-${version}";
+
+ url="http://www.xskat.de/xskat-4.0.tar.gz";
+ hash="8ba52797ccbd131dce69b96288f525b0d55dee5de4008733f7a5a51deb831c10";
+ sha256="8ba52797ccbd131dce69b96288f525b0d55dee5de4008733f7a5a51deb831c10";
+ };
+ buildInputs = [ libX11 imake gccmakedep ];
+in
+
+stdenv.mkDerivation {
+ inherit (s) name version;
+ inherit buildInputs;
+ src = fetchurl {
+ inherit (s) url sha256;
+ };
+ preInstall = ''
+ sed -i Makefile \
+ -e "s|.* BINDIR .*| BINDIR = $out/bin|" \
+ -e "s|.* MANPATH .*| MANPATH = $out/man|"
+ '';
+ installTargets = [ "install" "install.man" ];
+ meta = {
+ inherit (s) version;
+ description = ''Famous german card game'';
+ platforms = stdenv.lib.platforms.unix;
+ license = stdenv.lib.licenses.free;
+ longDescription = ''Play the german card game Skat against the AI or over IRC.'';
+ homepage = "http://www.xskat.de/";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xsnow/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xsnow/default.nix
new file mode 100644
index 000000000000..c64d8bf568fd
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xsnow/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, libXt, libXpm, libXext, imake, gccmakedep }:
+
+stdenv.mkDerivation rec {
+
+ version = "1.42";
+ pname = "xsnow";
+
+ src = fetchurl {
+ url = "https://janswaal.home.xs4all.nl/Xsnow/${pname}-${version}.tar.gz";
+ sha256 = "06jnbp88wc9i9dbmy7kggplw4hzlx2bhghxijmlhkjlizgqwimyh";
+ };
+
+ nativeBuildInputs = [ imake gccmakedep ];
+ buildInputs = [
+ libXt libXpm libXext
+ ];
+
+ makeFlags = [ "BINDIR=$(out)/bin" "MANPATH=$(out)/share/man" ];
+
+ meta = {
+ description = "An X-windows application that will let it snow on the root, in between and on windows";
+ homepage = "http://janswaal.home.xs4all.nl/Xsnow/";
+ license = stdenv.lib.licenses.unfree;
+ maintainers = [ stdenv.lib.maintainers.robberer ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xsok/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xsok/default.nix
new file mode 100644
index 000000000000..30579e399b82
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xsok/default.nix
@@ -0,0 +1,47 @@
+{stdenv, fetchurl, libX11, imake, libXt, libXaw, libXpm, libXext
+, withNethackLevels ? true
+}:
+stdenv.mkDerivation rec {
+ pname = "xsok";
+ version = "1.02";
+
+ src = fetchurl {
+ url = "http://http.debian.net/debian/pool/main/x/xsok/xsok_1.02.orig.tar.gz";
+ sha256 = "0f4z53xsy4w8x8zp5jya689xp3rcfpi5wri2ip0qa8nk3sw7zj73";
+ };
+
+ nethackLevels = fetchurl {
+ url = "https://www.electricmonk.nl/data/nethack/nethack.def";
+ sha256 = "057ircp13hfpy513c7wpyp986hsvhqs7km98w4k39f5wkvp3dj02";
+ };
+
+ buildInputs = [libX11 libXt libXaw libXpm libXext];
+ nativeBuildInputs = [imake];
+
+ NIX_CFLAGS_COMPILE=" -isystem ${libXpm.dev}/include/X11 ";
+
+ preConfigure = ''
+ sed -e "s@/usr/@$out/share/@g" -i src/Imakefile
+ sed -e "s@/var/games/xsok@./.xsok/@g" -i src/Imakefile
+ sed -e '/chown /d' -i src/Imakefile
+ sed -e '/chmod /d' -i src/Imakefile
+ sed -e '/InstallAppDefaults/d' -i src/Imakefile
+ sed -e 's/CC = gcc/CC = cc/g' -i src/Imakefile
+ '';
+
+ makeFlags = ["BINDIR=$(out)/bin"];
+
+ postInstall = stdenv.lib.optionalString withNethackLevels ''
+ gzip < ${nethackLevels} > "$out/share/games/lib/xsok/Nethack.def.gz"
+ echo Nethack > "$out/share/games/lib/xsok/gametypes"
+ '';
+
+ meta = {
+ inherit version;
+ description = "A generic Sokoban game for X11";
+ license = stdenv.lib.licenses.gpl2Plus;
+ maintainers = [stdenv.lib.maintainers.raskin];
+ platforms = stdenv.lib.platforms.unix;
+ homepage = "https://tracker.debian.org/pkg/xsok";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xsokoban/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xsokoban/default.nix
new file mode 100644
index 000000000000..3f6062c4f686
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xsokoban/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, libX11, xorgproto, libXpm, libXt }:
+
+stdenv.mkDerivation rec {
+ pname = "xsokoban";
+ version = "3.3c";
+
+ src = fetchurl {
+ url = "https://www.cs.cornell.edu/andru/release/${pname}-${version}.tar.gz";
+ sha256 = "006lp8y22b9pi81x1a9ldfgkl1fbmkdzfw0lqw5y9svmisbafbr9";
+ };
+
+ buildInputs = [ libX11 xorgproto libXpm libXt ];
+
+ NIX_CFLAGS_COMPILE = "-I${libXpm.dev}/include/X11";
+
+ hardeningDisable = [ "format" ];
+
+ prePatch = ''
+ substituteInPlace Makefile.in --replace 4755 0755
+ '';
+
+ preConfigure = ''
+ sed -e 's/getline/my_getline/' -i score.c
+
+ chmod a+rw config.h
+ cat >>config.h <<EOF
+ #define HERE "@nixos-packaged"
+ #define WWW 0
+ #define OWNER "$(whoami)"
+ #define ROOTDIR "$out/lib/xsokoban"
+ #define ANYLEVEL 1
+ #define SCOREFILE ".xsokoban-score"
+ #define LOCKFILE ".xsokoban-score-lock"
+ EOF
+
+ sed -i main.c \
+ -e 's/getpass[(][^)]*[)]/PASSWORD/' \
+ -e '/if [(]owner[)]/iowner=1;'
+ '';
+
+ preBuild = ''
+ sed -i Makefile \
+ -e "s@/usr/local/@$out/@" \
+ -e "s@ /bin/@ @"
+ mkdir -p $out/bin $out/share $out/man/man1 $out/lib
+ '';
+
+ meta = with stdenv.lib; {
+ description = "X sokoban";
+ license = licenses.publicDomain;
+ maintainers = [ maintainers.raskin ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/xtris/default.nix b/infra/libkookie/nixpkgs/pkgs/games/xtris/default.nix
new file mode 100644
index 000000000000..c9421b23a821
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/xtris/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchzip, xorg }:
+stdenv.mkDerivation rec {
+ pname = "xtris";
+ version = "1.15";
+
+ src = fetchzip {
+ url = "https://web.archive.org/web/20120315061213/http://www.iagora.com/~espel/xtris/xtris-${version}.tar.gz";
+ sha256 = "1vqva99lyv7r6f9c7yikk8ahcfh9aq3clvwm4pz964wlbr9mj1v6";
+ };
+
+ patchPhase = ''
+ sed -i '
+ s:/usr/local/bin:'$out'/bin:
+ s:/usr/local/man:'$out'/share/man:
+ s:mkdir:mkdir -p:g
+ s:^CFLAGS:#CFLAGS:
+ ' Makefile
+ '';
+ buildInputs = [ xorg.libX11 ];
+
+ meta = with stdenv.lib; {
+ description = "A multi-player version of the classical game of Tetris, for the X Window system";
+ homepage = "https://web.archive.org/web/20120315061213/http://www.iagora.com/~espel/xtris/xtris.html";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zandronum/add_gitinfo.patch b/infra/libkookie/nixpkgs/pkgs/games/zandronum/add_gitinfo.patch
new file mode 100644
index 000000000000..4d8d7c837961
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zandronum/add_gitinfo.patch
@@ -0,0 +1,15 @@
+diff -Naur blah/src/gitinfo.h blah2/src/gitinfo.h
+--- blah/src/gitinfo.h 1969-12-31 16:00:00.000000000 -0800
++++ blah2/src/gitinfo.h 2017-09-15 01:44:43.953562714 -0700
+@@ -0,0 +1,11 @@
++// dd3c3b57023f64cda84f09ed13e4c03a4ad2b920
++//
++// This file was automatically generated by the
++// updaterevision tool. Do not edit by hand.
++
++#define GIT_DESCRIPTION "ZA_3.0-0-dd3c3b57023f"
++#define GIT_HASH "dd3c3b57023f64cda84f09ed13e4c03a4ad2b920"
++#define GIT_TIME "2017-09-01 06:40:50 -0500"
++#define HG_REVISION_NUMBER 1504266050
++#define HG_REVISION_HASH_STRING "dd3c3b57023f"
++#define HG_TIME "170901-1140"
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zandronum/default.nix b/infra/libkookie/nixpkgs/pkgs/games/zandronum/default.nix
new file mode 100644
index 000000000000..bdafff992434
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zandronum/default.nix
@@ -0,0 +1,84 @@
+{ stdenv, lib, fetchhg, cmake, pkgconfig, makeWrapper, callPackage
+, soundfont-fluid, SDL, libGL, glew, bzip2, zlib, libjpeg, fluidsynth, openssl, gtk2, python3, libgme
+, serverOnly ? false
+}:
+
+let
+ suffix = lib.optionalString serverOnly "-server";
+ fmod = callPackage ./fmod.nix { };
+ sqlite = callPackage ./sqlite.nix { };
+ clientLibPath = lib.makeLibraryPath [ fluidsynth ];
+
+in stdenv.mkDerivation rec {
+ pname = "zandronum${suffix}";
+ version = "3.0.1";
+
+ src = fetchhg {
+ url = "https://hg.osdn.net/view/zandronum/zandronum-stable";
+ rev = "ZA_${version}";
+ sha256 = "16v5b6wfrmabs3ky6isbfhlrqdjrr1pvfxlxwk0im02kcpxxw9qw";
+ };
+
+ # zandronum tries to download sqlite now when running cmake, don't let it
+
+ # it also needs the current mercurial revision info embedded in gitinfo.h
+ # otherwise, the client will fail to connect to servers because the
+ # protocol version doesn't match.
+
+ patches = [ ./zan_configure_impurity.patch ./add_gitinfo.patch ./dont_update_gitinfo.patch ];
+
+ # I have no idea why would SDL and libjpeg be needed for the server part!
+ # But they are.
+ buildInputs = [ openssl bzip2 zlib SDL libjpeg sqlite libgme ]
+ ++ lib.optionals (!serverOnly) [ libGL glew fmod fluidsynth gtk2 ];
+
+ nativeBuildInputs = [ cmake pkgconfig makeWrapper python3 ];
+
+ preConfigure = ''
+ ln -s ${sqlite}/* sqlite/
+ sed -ie 's| restrict| _restrict|g' dumb/include/dumb.h \
+ dumb/src/it/*.c
+ '' + lib.optionalString (!serverOnly) ''
+ sed -i \
+ -e "s@/usr/share/sounds/sf2/@${soundfont-fluid}/share/soundfonts/@g" \
+ -e "s@FluidR3_GM.sf2@FluidR3_GM2-2.sf2@g" \
+ src/sound/music_fluidsynth_mididevice.cpp
+ '';
+
+ cmakeFlags =
+ [ "-DFORCE_INTERNAL_GME=OFF" ]
+ ++ (if serverOnly
+ then [ "-DSERVERONLY=ON" ]
+ else [ "-DFMOD_LIBRARY=${fmod}/lib/libfmodex.so" ]);
+
+ enableParallelBuilding = true;
+
+ hardeningDisable = [ "format" ];
+
+ installPhase = ''
+ mkdir -p $out/bin
+ mkdir -p $out/lib/zandronum
+ cp zandronum${suffix} \
+ *.pk3 \
+ ${lib.optionalString (!serverOnly) "liboutput_sdl.so"} \
+ $out/lib/zandronum
+ makeWrapper $out/lib/zandronum/zandronum${suffix} $out/bin/zandronum${suffix}
+ '';
+
+ postFixup = lib.optionalString (!serverOnly) ''
+ patchelf --set-rpath $(patchelf --print-rpath $out/lib/zandronum/zandronum):$out/lib/zandronum:${clientLibPath} \
+ $out/lib/zandronum/zandronum
+ '';
+
+ passthru = {
+ inherit fmod sqlite;
+ };
+
+ meta = with stdenv.lib; {
+ homepage = "https://zandronum.com/";
+ description = "Multiplayer oriented port, based off Skulltag, for Doom and Doom II by id Software";
+ maintainers = with maintainers; [ lassulus MP2E ];
+ license = licenses.unfreeRedistributable;
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zandronum/dont_update_gitinfo.patch b/infra/libkookie/nixpkgs/pkgs/games/zandronum/dont_update_gitinfo.patch
new file mode 100644
index 000000000000..d6dd3a58f457
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zandronum/dont_update_gitinfo.patch
@@ -0,0 +1,19 @@
+diff -r dd3c3b57023f src/CMakeLists.txt
+--- a/src/CMakeLists.txt Fri Sep 01 06:40:50 2017 -0500
++++ b/src/CMakeLists.txt Fri Sep 15 01:46:34 2017 -0700
+@@ -636,15 +636,6 @@
+ add_definitions( -DBACKPATCH )
+ endif( BACKPATCH )
+
+-# Update gitinfo.h
+-
+-get_target_property( UPDATEREVISION_EXE updaterevision LOCATION )
+-
+-add_custom_target( revision_check ALL
+- COMMAND ${UPDATEREVISION_EXE} src/gitinfo.h
+- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+- DEPENDS updaterevision )
+-
+ # Libraries ZDoom needs
+
+ message( STATUS "Fluid synth libs: ${FLUIDSYNTH_LIBRARIES}" )
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zandronum/fmod.nix b/infra/libkookie/nixpkgs/pkgs/games/zandronum/fmod.nix
new file mode 100644
index 000000000000..5eebcd4a38e7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zandronum/fmod.nix
@@ -0,0 +1,45 @@
+{ stdenv, lib, fetchurl, alsaLib, libpulseaudio, undmg }:
+
+let
+ bits = stdenv.lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux") "64";
+ libPath = lib.makeLibraryPath [ stdenv.cc.cc alsaLib libpulseaudio ];
+
+in
+stdenv.mkDerivation rec {
+ pname = "fmod";
+ version = "4.44.64";
+ shortVersion = builtins.replaceStrings [ "." ] [ "" ] version;
+
+ src = fetchurl (if stdenv.isLinux then {
+ url = "https://zdoom.org/files/fmod/fmodapi${shortVersion}linux.tar.gz";
+ sha256 = "047hk92xapwwqj281f4zwl0ih821rrliya70gfj82sdfjh9lz8i1";
+ } else {
+ url = "https://zdoom.org/files/fmod/fmodapi${shortVersion}mac-installer.dmg";
+ sha256 = "1m1y4cpcwpkl8x31d3s68xzp107f343ma09w2437i2adn5y7m8ii";
+ });
+
+ nativeBuildInputs = [ undmg ];
+
+ dontStrip = true;
+ dontPatchELF = true;
+ dontBuild = true;
+
+ installPhase = lib.optionalString stdenv.isLinux ''
+ install -Dm755 api/lib/libfmodex${bits}-${version}.so $out/lib/libfmodex-${version}.so
+ ln -s libfmodex-${version}.so $out/lib/libfmodex.so
+ patchelf --set-rpath ${libPath} $out/lib/libfmodex.so
+ '' + lib.optionalString stdenv.isDarwin ''
+ install -D api/lib/libfmodex.dylib $out/lib/libfmodex.dylib
+ install -D api/lib/libfmodexL.dylib $out/lib/libfmodexL.dylib
+ '' + ''
+ cp -r api/inc $out/include
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Programming library and toolkit for the creation and playback of interactive audio";
+ homepage = "http://www.fmod.org/";
+ license = licenses.unfreeRedistributable;
+ platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
+ maintainers = [ maintainers.lassulus ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zandronum/sqlite.nix b/infra/libkookie/nixpkgs/pkgs/games/zandronum/sqlite.nix
new file mode 100644
index 000000000000..7f4556c87511
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zandronum/sqlite.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+ name = "sqlite-zandronum-3.0";
+
+ src = fetchurl {
+ url = "https://www.sqlite.org/2017/sqlite-autoconf-3180000.tar.gz";
+ sha256 = "0p5cx7nbjxk7glcm277ypi5w4gv144qazw79ql47svlpccj62mrp";
+ };
+
+ phases = [ "unpackPhase" "buildPhase" ];
+
+ buildPhase = ''
+ mkdir -p $out
+ cp sqlite3.c $out/
+ cp sqlite3.h $out/
+ cp sqlite3ext.h $out/
+ '';
+
+ meta = {
+ homepage = "http://www.sqlite.org/";
+ description = "A single C code file, named sqlite3.c, that contains all C code for the core SQLite library and the FTS3 and RTREE extensions";
+ platforms = stdenv.lib.platforms.unix;
+ maintainers = [ lib.maintainers.lassulus ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zandronum/zan_configure_impurity.patch b/infra/libkookie/nixpkgs/pkgs/games/zandronum/zan_configure_impurity.patch
new file mode 100644
index 000000000000..0cf7150502e4
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zandronum/zan_configure_impurity.patch
@@ -0,0 +1,65 @@
+diff -r 6d5130e4ae52 sqlite/CMakeLists.txt
+--- a/sqlite/CMakeLists.txt Sun Sep 10 18:53:00 2017 +0200
++++ b/sqlite/CMakeLists.txt Fri Sep 15 00:12:11 2017 -0700
+@@ -1,62 +1,5 @@
+ cmake_minimum_required( VERSION 2.4 )
+
+-# [BB/EP] Download SQLite archive and extract the sources if necessary.
+-set( ZAN_SQLITE_VERSION 3180000 ) # SQL version 3.18.0
+-set( ZAN_SQLITE_YEAR 2017 )
+-set( ZAN_SQLITE_SHA1 "74559194e1dd9b9d577cac001c0e9d370856671b" )
+-set( ZAN_SQLITE_DOWNLOAD_NAME "sqlite-autoconf-${ZAN_SQLITE_VERSION}" )
+-set( ZAN_SQLITE_TEMP_ARCHIVE "${CMAKE_CURRENT_SOURCE_DIR}/${ZAN_SQLITE_DOWNLOAD_NAME}.tar.gz" )
+-set( ZAN_SQLITE_HASHED_ARCHIVE "${CMAKE_CURRENT_SOURCE_DIR}/sqlite-${ZAN_SQLITE_SHA1}.tar.gz" )
+-
+-if( IS_DIRECTORY ${ZAN_SQLITE_HASHED_ARCHIVE} OR IS_SYMLINK ${ZAN_SQLITE_HASHED_ARCHIVE} )
+- message( FATAL_ERROR "SQLite: ${ZAN_SQLITE_HASHED_ARCHIVE} must be a valid file.\n"
+- "SQLite: Please remove it and try again." )
+-elseif( NOT EXISTS ${ZAN_SQLITE_HASHED_ARCHIVE} )
+-
+- if( IS_DIRECTORY ${ZAN_SQLITE_TEMP_ARCHIVE} OR IS_SYMLINK ${ZAN_SQLITE_TEMP_ARCHIVE} )
+- message( FATAL_ERROR "SQLite: ${ZAN_SQLITE_TEMP_ARCHIVE} must be a valid file.\n"
+- "SQLite: Please remove it and try again." )
+- endif()
+- message( STATUS "SQLite: downloading the archive..." )
+-
+- file( DOWNLOAD https://www.sqlite.org/${ZAN_SQLITE_YEAR}/${ZAN_SQLITE_DOWNLOAD_NAME}.tar.gz ${ZAN_SQLITE_TEMP_ARCHIVE}
+- SHOW_PROGRESS
+- STATUS ZAN_SQLITE_DOWNLOAD_STATUS )
+-
+- # Report any problem if present and abort immediately.
+- list( GET ZAN_SQLITE_DOWNLOAD_STATUS 0 ZAN_SQLITE_DOWNLOAD_ERROR_CODE )
+- if( ZAN_SQLITE_DOWNLOAD_ERROR_CODE )
+- list( GET ZAN_SQLITE_DOWNLOAD_STATUS 1 ZAN_SQLITE_DOWNLOAD_ERROR_MESSAGE )
+- message( FATAL_ERROR "SQLite: download failed. Reason: ${ZAN_SQLITE_DOWNLOAD_ERROR_MESSAGE}" )
+- endif()
+-
+- # Check the hash. Abort immediately if it's not valid (something is wrong with the download)
+- file( SHA1 ${ZAN_SQLITE_TEMP_ARCHIVE} ZAN_SQLITE_CURRENT_SHA1 )
+- if( NOT ZAN_SQLITE_CURRENT_SHA1 STREQUAL ZAN_SQLITE_SHA1 )
+- message( FATAL_ERROR "SQLite: download failed. The downloaded file has a different hash:\n"
+- "SQLite: valid: ${ZAN_SQLITE_SHA1}\n"
+- "SQLite: downloaded: ${ZAN_SQLITE_CURRENT_SHA1}" )
+- endif()
+-
+- message( STATUS "SQLite: saving the source files into the 'sqlite' directory." )
+-
+- # Rename the archive.
+- execute_process( COMMAND ${CMAKE_COMMAND} -E rename ${ZAN_SQLITE_TEMP_ARCHIVE} ${ZAN_SQLITE_HASHED_ARCHIVE} )
+-
+- # Extract the archive.
+- execute_process( COMMAND ${CMAKE_COMMAND} -E tar xzf ${ZAN_SQLITE_HASHED_ARCHIVE} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
+-
+- # Copy the required files.
+- execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${ZAN_SQLITE_DOWNLOAD_NAME}/sqlite3.c ${CMAKE_CURRENT_SOURCE_DIR} )
+- execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${ZAN_SQLITE_DOWNLOAD_NAME}/sqlite3.h ${CMAKE_CURRENT_SOURCE_DIR} )
+- execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${ZAN_SQLITE_DOWNLOAD_NAME}/sqlite3ext.h ${CMAKE_CURRENT_SOURCE_DIR} )
+-
+- # Remove the extracted folder.
+- execute_process( COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_SOURCE_DIR}/${ZAN_SQLITE_DOWNLOAD_NAME} )
+-
+- message( STATUS "SQLite: done." )
+-endif()
+-
+ add_library( sqlite3 sqlite3.c )
+ target_link_libraries( sqlite3 ${CMAKE_DL_LIBS} )
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zangband/default.nix b/infra/libkookie/nixpkgs/pkgs/games/zangband/default.nix
new file mode 100644
index 000000000000..0722e4bbbf95
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zangband/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchurl, ncurses, flex, bison, autoconf, automake, m4, coreutils }:
+
+stdenv.mkDerivation rec {
+ pname = "zangband";
+ version = "2.7.4b";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/${pname}/${pname}-src/${version}/${pname}-${version}.tar.gz";
+ sha256 = "0kkz6f9myhjnr3308sdab8q186rd55lapvcp38w8qmakdbhc828j";
+ };
+
+ buildInputs = [
+ ncurses flex bison autoconf automake m4
+ ];
+
+ preConfigure = ''
+ sed -re 's/ch(own|grp|mod)/true/' -i lib/*/makefile.zb makefile.in
+ sed -e '/FIXED_PATHS/d' -i src/z-config.h
+ autoconf
+ '';
+
+ preInstall = ''
+ mkdir -p $out/share/games/zangband
+ mkdir -p $out/share/man
+ mkdir -p $out/bin
+ '';
+
+ postInstall = ''
+ mv $out/bin/zangband $out/bin/.zangband.real
+ echo '#! ${stdenv.shell}
+ PATH="$PATH:${coreutils}/bin"
+
+ ZANGBAND_PATH="$HOME/.zangband"
+ ORIG_PATH="'$out'"/share/games/zangband
+ mkdir -p "$ZANGBAND_PATH"
+ cd "$ZANGBAND_PATH"
+ for i in $(find "$ORIG_PATH" -type f); do
+ REL_PATH="''${i#$ORIG_PATH/}"
+ mkdir -p "$(dirname "$REL_PATH")"
+ ln -s "$i" "$REL_PATH" &>/dev/null
+ done
+ mkdir -p lib/user lib/save
+ for i in lib/*/*.raw; do
+ test -L "$i" && rm "$i";
+ done
+ for i in $(find lib -type l); do if ! test -e $(readlink "$i"); then rm "$i"; fi; done;
+ export ANGBAND_PATH="$PWD"
+ "'$out'/bin/.zangband.real" "$@"
+ ' > $out/bin/zangband
+ chmod +x $out/bin/zangband
+ '';
+
+ meta = {
+ description = "Rogue-like game";
+ license = stdenv.lib.licenses.unfree;
+ broken = true; # broken in runtime, will not get pass character generation
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zaz/default.nix b/infra/libkookie/nixpkgs/pkgs/games/zaz/default.nix
new file mode 100644
index 000000000000..9d42cfd6896d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zaz/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, fetchurl
+, pkgconfig
+, SDL
+, SDL_image
+, mesa
+, libtheora
+, libvorbis
+, libogg
+, ftgl
+, freetype
+}:
+
+stdenv.mkDerivation rec {
+ pname = "zaz";
+ version = "1.0.0";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
+ sha256 = "15q3kxzl71m50byw37dshfsx5wp240ywah19ccmqmqarcldcqcp3";
+ };
+
+ nativeBuildInputs = [
+ pkgconfig
+ ];
+ buildInputs = [
+ SDL.dev
+ SDL_image
+ mesa
+ libtheora
+ libvorbis.dev
+ libogg
+ ftgl
+ freetype
+ ];
+
+ # Fix SDL include problems
+ NIX_CFLAGS_COMPILE="-I${SDL.dev}/include/SDL -I${SDL_image}/include/SDL";
+ # Fix linking errors
+ makeFlags = [
+ "ZAZ_LIBS+=-lSDL"
+ "ZAZ_LIBS+=-lvorbis"
+ "ZAZ_LIBS+=-ltheora"
+ "ZAZ_LIBS+=-logg"
+ "ZAZ_LIBS+=-ltheoraenc"
+ "ZAZ_LIBS+=-ltheoradec"
+ "ZAZ_LIBS+=-lvorbisfile"
+ ];
+
+ meta = with stdenv.lib; {
+ description = "A puzzle game about arranging balls in triplets, like Luxor, Zuma, or Puzzle Bobble";
+ homepage = "http://zaz.sourceforge.net/";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ fgaz ];
+ platforms = platforms.all;
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zdoom/bcc-git.nix b/infra/libkookie/nixpkgs/pkgs/games/zdoom/bcc-git.nix
new file mode 100644
index 000000000000..ae7a4ae6f426
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zdoom/bcc-git.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+ name = "doom-bcc-git-0.8.0.2018.01.04";
+
+ src = fetchFromGitHub {
+ owner = "wormt";
+ repo = "bcc";
+ rev = "d58b44d9f18b28fd732c27113e5607a454506d19";
+ sha256 = "1m83ip40ln61qrvb1fbgaqbld2xip9n3k817lwkk1936pml9zcrq";
+ };
+
+ enableParallelBuilding = true;
+ makeFlags = ["CC=cc"];
+
+ patches = [ ./bcc-warning-fix.patch ];
+
+ installPhase = ''
+ mkdir -p $out/{bin,lib,share/doc}
+ install -m755 bcc $out/bin/bcc
+ cp -av doc $out/share/doc/bcc
+ cp -av lib $out/lib/bcc
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Compiler for Doom/Hexen scripts (ACS, BCS)";
+ homepage = "https://github.com/wormt/bcc";
+ license = licenses.mit;
+ maintainers = with maintainers; [ertes];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zdoom/bcc-warning-fix.patch b/infra/libkookie/nixpkgs/pkgs/games/zdoom/bcc-warning-fix.patch
new file mode 100644
index 000000000000..4a352cb1e471
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zdoom/bcc-warning-fix.patch
@@ -0,0 +1,25 @@
+From c6ac05c96b7908ccd35f3908fc0f13650b0583c0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ertugrul=20S=C3=B6ylemez?= <esz@posteo.de>
+Date: Sat, 3 Feb 2018 17:08:54 +0100
+Subject: [PATCH] Remove -Werror
+
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index bbe2c75..3357d2d 100644
+--- a/Makefile
++++ b/Makefile
+@@ -4,7 +4,7 @@ EXE=bcc
+ BUILD_DIR=build
+ CC=gcc
+ INCLUDE=-Isrc -I src/parse
+-OPTIONS=-Wall -Werror -Wno-unused -std=c99 -pedantic -Wstrict-aliasing \
++OPTIONS=-Wall -Wno-unused -std=c99 -pedantic -Wstrict-aliasing \
+ -Wstrict-aliasing=2 -Wmissing-field-initializers -D_BSD_SOURCE \
+ -D_DEFAULT_SOURCE $(INCLUDE)
+ VERSION_FILE=$(BUILD_DIR)/version.c
+--
+2.15.1
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zdoom/default.nix b/infra/libkookie/nixpkgs/pkgs/games/zdoom/default.nix
new file mode 100644
index 000000000000..646021eb2fcc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zdoom/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, p7zip, cmake
+, SDL2, openal, fluidsynth, soundfont-fluid, bzip2, zlib, libjpeg, game-music-emu
+, libsndfile, mpg123 }:
+
+stdenv.mkDerivation rec {
+ pname = "zdoom";
+ majorVersion = "2.8";
+ version = "${majorVersion}.1";
+
+ src = fetchurl {
+ url = "https://zdoom.org/files/zdoom/${majorVersion}/zdoom-${version}-src.7z";
+ sha256 = "0453fqrh9l00xwphfxni5qkf9y134n3s1mr1dvi5cbkxcva7j8bq";
+ };
+
+ nativeBuildInputs = [ p7zip cmake ];
+ buildInputs = [
+ SDL2 openal fluidsynth bzip2 zlib libjpeg game-music-emu libsndfile mpg123
+ ];
+
+ cmakeFlags = [
+ "-DFORCE_INTERNAL_GME=OFF"
+ "-DGME_INCLUDE_DIR=${game-music-emu}/include"
+ "-DGME_LIBRARIES=${game-music-emu}/lib/libgme.so"
+ ];
+
+ sourceRoot = ".";
+
+ enableParallelBuilding = true;
+
+ NIX_CFLAGS_LINK = [ "-lopenal" "-lfluidsynth" ];
+
+ preConfigure = ''
+ sed -i \
+ -e "s@/usr/share/sounds/sf2/@${soundfont-fluid}/share/soundfonts/@g" \
+ -e "s@FluidR3_GM.sf2@FluidR3_GM2-2.sf2@g" \
+ src/sound/music_fluidsynth_mididevice.cpp
+ '';
+
+ installPhase = ''
+ install -Dm755 zdoom "$out/lib/zdoom/zdoom"
+ for i in *.pk3; do
+ install -Dm644 "$i" "$out/lib/zdoom/$i"
+ done
+ mkdir -p $out/bin
+ ln -s $out/lib/zdoom/zdoom $out/bin/zdoom
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "http://zdoom.org/";
+ description = "Enhanced port of the official DOOM source code";
+ # Doom source license, MAME license
+ license = licenses.unfreeRedistributable;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ lassulus ];
+ };
+}
+
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zdoom/zdbsp.nix b/infra/libkookie/nixpkgs/pkgs/games/zdoom/zdbsp.nix
new file mode 100644
index 000000000000..e86ebd6dbc22
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zdoom/zdbsp.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, cmake, unzip, zlib }:
+
+stdenv.mkDerivation rec {
+ pname = "zdbsp";
+ version = "1.19";
+
+ src = fetchurl {
+ url = "https://zdoom.org/files/utils/zdbsp/zdbsp-${version}-src.zip";
+ sha256 = "0j82q7g7hgvnahk6gdyhmn9880mqii3b4agqc98f5xaj3kxmd2dr";
+ };
+
+ nativeBuildInputs = [cmake unzip];
+ buildInputs = [zlib];
+ sourceRoot = ".";
+ enableParallelBuilding = true;
+ installPhase = ''
+ install -Dm755 zdbsp $out/bin/zdbsp
+ '';
+
+ meta = with stdenv.lib; {
+ description = "ZDoom's internal node builder for DOOM maps";
+ homepage = "https://zdoom.org/wiki/ZDBSP";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ertes];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zod/default.nix b/infra/libkookie/nixpkgs/pkgs/games/zod/default.nix
new file mode 100644
index 000000000000..d50218af2416
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zod/default.nix
@@ -0,0 +1,45 @@
+{ fetchurl, stdenv, unrar, unzip, SDL, SDL_image, SDL_ttf, SDL_mixer
+, libmysqlclient, makeWrapper }:
+
+stdenv.mkDerivation {
+ name = "zod-engine-2011-03-18";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/zod/zod_src-2011-03-18.zip";
+ sha256 = "00ny7a1yfn9zgl7q1ys27qafwc92dzxv07wjxl8nxa4f98al2g4n";
+ };
+
+ srcAssets = fetchurl {
+ url = "mirror://sourceforge/zod/zod_assets-2011-03-12.rar";
+ sha256 = "0gmg4ppr4y6ck04mandlp2fmdcyssmck999m012jx5v1rm57g2hn";
+ };
+
+ hardeningDisable = [ "format" ];
+
+ unpackPhase = ''
+ mkdir src
+ pushd src
+ unzip $src
+ popd
+ sourceRoot=`pwd`/src
+ '';
+
+ buildInputs = [ unrar unzip SDL SDL_image SDL_ttf SDL_mixer libmysqlclient makeWrapper ];
+
+ NIX_LDFLAGS = "-L${libmysqlclient}/lib/mysql";
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/zod
+ pushd $out/share/zod
+ unrar x $srcAssets
+ popd
+ cp zod $out/bin
+ wrapProgram $out/bin/zod --run "cd $out/share/zod"
+ '';
+
+ meta = {
+ description = "Multiplayer remake of ZED";
+ homepage = "http://zod.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl3Plus; /* Says the web */
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/games/zoom/default.nix b/infra/libkookie/nixpkgs/pkgs/games/zoom/default.nix
new file mode 100644
index 000000000000..827fb351f1de
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/games/zoom/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, perl, expat, xlibsWrapper, freetype }:
+
+# !!! assert freetype == xorg.freetype
+
+stdenv.mkDerivation rec {
+ name = "zoom-1.1.5";
+
+ src = fetchurl {
+ url = "https://www.logicalshift.co.uk/unix/zoom/${name}.tar.gz";
+ sha256 = "1g6van7f7sg3zfcz80mncnnbccyg2hnm0hq4x558vpsm0lf7z5pj";
+ };
+
+ buildInputs = [ perl expat xlibsWrapper freetype ];
+
+ NIX_CFLAGS_COMPILE = "-I${freetype}/include/freetype2 -fgnu89-inline";
+
+ meta = with stdenv.lib; {
+ description = "Player for Z-Code, TADS and HUGO stories or games";
+ longDescription = ''
+ Zoom is a player for Z-Code, TADS and HUGO stories or games. These are
+ usually text adventures ('interactive fiction'), and were first created
+ by Infocom with the Zork series of games. Throughout the 80's, Infocom
+ released many interactive fiction stories before their ambitions to enter
+ the database market finally brought them low.
+ '';
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ };
+}