Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 137 lines 3.7 kB view raw
1{ 2 stdenv, 3 lib, 4 fetchFromGitHub, 5 which, 6 sqlite, 7 lua5_1, 8 perl, 9 python3, 10 zlib, 11 pkg-config, 12 ncurses, 13 dejavu_fonts, 14 libpng, 15 SDL2, 16 SDL2_image, 17 SDL2_mixer, 18 libGLU, 19 libGL, 20 freetype, 21 pngcrush, 22 advancecomp, 23 tileMode ? false, 24 enableSound ? tileMode, 25 buildPackages, 26}: 27 28stdenv.mkDerivation rec { 29 pname = "crawl${lib.optionalString tileMode "-tiles"}"; 30 version = "0.33.1"; 31 32 src = fetchFromGitHub { 33 owner = "crawl"; 34 repo = "crawl"; 35 rev = version; 36 hash = "sha256-GXrYLGoQ1UwDHs+kLLcaBNpJ2BVMv4NhmpyfNFxPmg8="; 37 }; 38 39 # Patch hard-coded paths and remove force library builds 40 postPatch = '' 41 substituteInPlace crawl-ref/source/util/find_font \ 42 --replace '/usr/share/fonts /usr/local/share/fonts /usr/*/lib/X11/fonts' '${fontsPath}/share/fonts' 43 substituteInPlace crawl-ref/source/windowmanager-sdl.cc \ 44 --replace 'SDL_image.h' 'SDL2/SDL_image.h' 45 ''; 46 47 nativeBuildInputs = [ 48 pkg-config 49 which 50 perl 51 pngcrush 52 advancecomp 53 ]; 54 55 # Still unstable with luajit 56 buildInputs = [ 57 lua5_1 58 zlib 59 sqlite 60 ncurses 61 ] 62 ++ (with python3.pkgs; [ pyyaml ]) 63 ++ lib.optionals tileMode [ 64 libpng 65 SDL2 66 SDL2_image 67 freetype 68 libGLU 69 libGL 70 ] 71 ++ lib.optional enableSound SDL2_mixer; 72 73 preBuild = '' 74 cd crawl-ref/source 75 echo "${version}" > util/release_ver 76 patchShebangs 'util' 77 patchShebangs util/gen-mi-enum 78 rm -rf contrib 79 mkdir -p $out/xdg-data 80 '' 81 + lib.optionalString tileMode "mv xdg-data/*_tiles.* $out/xdg-data" 82 + lib.optionalString (!tileMode) "mv xdg-data/*_console.* $out/xdg-data"; 83 84 fontsPath = lib.optionalString tileMode dejavu_fonts; 85 86 makeFlags = [ 87 "prefix=${placeholder "out"}" 88 "FORCE_CC=${stdenv.cc.targetPrefix}cc" 89 "FORCE_CXX=${stdenv.cc.targetPrefix}c++" 90 "HOSTCXX=${buildPackages.stdenv.cc.targetPrefix}c++" 91 "FORCE_PKGCONFIG=y" 92 "SAVEDIR=~/.crawl" 93 "sqlite=${sqlite.dev}" 94 "DATADIR=${placeholder "out"}" 95 ] 96 ++ lib.optional tileMode "TILES=y" 97 ++ lib.optional enableSound "SOUND=y"; 98 99 postInstall = 100 lib.optionalString tileMode '' 101 mv $out/bin/crawl $out/bin/crawl-tiles 102 echo "Exec=crawl-tiles" >> $out/xdg-data/org.develz.Crawl_tiles.desktop 103 echo "Icon=crawl" >> $out/xdg-data/org.develz.Crawl_tiles.desktop 104 install -Dm444 $out/xdg-data/org.develz.Crawl_tiles.desktop -t $out/share/applications 105 install -Dm444 $out/xdg-data/org.develz.Crawl_tiles.appdata.xml -t $out/share/metainfo 106 '' 107 + lib.optionalString (!tileMode) '' 108 echo "Exec=crawl" >> $out/xdg-data/org.develz.Crawl_console.desktop 109 echo "Icon=crawl" >> $out/xdg-data/org.develz.Crawl_console.desktop 110 install -Dm444 $out/xdg-data/org.develz.Crawl_console.desktop -t $out/share/applications 111 install -Dm444 $out/xdg-data/org.develz.Crawl_console.appdata.xml -t $out/share/metainfo 112 '' 113 + "install -Dm444 dat/tiles/stone_soup_icon-512x512.png $out/share/icons/hicolor/512x512/apps/crawl.png"; 114 115 enableParallelBuilding = true; 116 117 meta = with lib; { 118 description = "Open-source, single-player, role-playing roguelike game"; 119 homepage = "http://crawl.develz.org/"; 120 longDescription = '' 121 Dungeon Crawl: Stone Soup, an open-source, single-player, role-playing 122 roguelike game of exploration and treasure-hunting in dungeons filled 123 with dangerous and unfriendly monsters in a quest to rescue the 124 mystifyingly fabulous Orb of Zot. 125 ''; 126 platforms = platforms.linux ++ platforms.darwin; 127 license = with licenses; [ 128 gpl2Plus 129 bsd2 130 bsd3 131 mit 132 licenses.zlib 133 cc0 134 ]; 135 maintainers = [ maintainers.abbradar ]; 136 }; 137}