Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 177 lines 4.1 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 fetchpatch, 6 cmake, 7 git, 8 pkg-config, 9 qttools, 10 which, 11 wrapQtAppsHook, 12 boost, 13 hunspell, 14 libGLU, 15 libsForQt5, 16 libsecret, 17 libzip, 18 lua, 19 pcre, 20 pugixml, 21 qtbase, 22 qtmultimedia, 23 discord-rpc, 24 yajl, 25}: 26 27let 28 overrideLua = 29 let 30 packageOverrides = self: super: { 31 # luasql-sqlite3 master branch broke compatibility with lua 5.1. Pin to 32 # an earlier commit. 33 # https://github.com/lunarmodules/luasql/issues/147 34 luasql-sqlite3 = super.luaLib.overrideLuarocks super.luasql-sqlite3 (drv: { 35 version = "2.6.0-1-custom"; 36 src = fetchFromGitHub { 37 owner = "lunarmodules"; 38 repo = "luasql"; 39 rev = "8c58fd6ee32faf750daf6e99af015a31402578d1"; 40 hash = "sha256-XlTB5O81yWCrx56m0cXQp7EFzeOyfNeqGbuiYqMrTUk="; 41 }; 42 }); 43 }; 44 in 45 lua.override { inherit packageOverrides; }; 46 47 luaEnv = overrideLua.withPackages ( 48 ps: with ps; [ 49 luazip 50 luafilesystem 51 lrexlib-pcre 52 luasql-sqlite3 53 lua-yajl 54 luautf8 55 ] 56 ); 57in 58stdenv.mkDerivation rec { 59 pname = "mudlet"; 60 version = "4.17.2"; 61 62 src = fetchFromGitHub { 63 owner = "Mudlet"; 64 repo = "Mudlet"; 65 rev = "Mudlet-${version}"; 66 fetchSubmodules = true; 67 hash = "sha256-K75frptePKfHeGQNXaX4lKsLwO6Rs6AAka6hvP8MA+k="; 68 }; 69 70 patches = [ 71 (fetchpatch { 72 name = "darwin-AppKit.patch"; 73 url = "https://github.com/Mudlet/Mudlet/commit/68cdd404f81a6d16c80068c45fe0f10802f08d9e.patch"; 74 hash = "sha256-74FtcjOR/lu9ohtcoup0+gUfCQRznO48zMmb97INhdY="; 75 }) 76 ]; 77 78 nativeBuildInputs = [ 79 cmake 80 git 81 luaEnv 82 pkg-config 83 qttools 84 which 85 wrapQtAppsHook 86 ]; 87 88 buildInputs = [ 89 boost 90 hunspell 91 libGLU 92 libsForQt5.qtkeychain 93 libsecret 94 libzip 95 luaEnv 96 pcre 97 pugixml 98 qtbase 99 qtmultimedia 100 yajl 101 discord-rpc 102 ]; 103 104 cmakeFlags = [ 105 # RPATH of binary /nix/store/.../bin/... contains a forbidden reference to /build/ 106 "-DCMAKE_SKIP_BUILD_RPATH=ON" 107 ]; 108 109 WITH_FONTS = "NO"; 110 WITH_UPDATER = "NO"; 111 112 installPhase = '' 113 runHook preInstall 114 115 mkdir -pv $out/lib 116 cp 3rdparty/edbee-lib/edbee-lib/qslog/lib/libQsLog${stdenv.hostPlatform.extensions.sharedLibrary} $out/lib 117 mkdir -pv $out/share/mudlet 118 cp -r ../src/mudlet-lua/lua $out/share/mudlet/ 119 120 mkdir -pv $out/share/pixmaps 121 cp -r ../mudlet.png $out/share/pixmaps/ 122 123 cp -r ../translations $out/share/ 124 125 '' 126 + lib.optionalString stdenv.hostPlatform.isDarwin '' 127 mkdir -p $out/Applications 128 cp -r src/mudlet.app/ $out/Applications/mudlet.app 129 mv $out/Applications/mudlet.app/Contents/MacOS/mudlet $out/Applications/mudlet.app/Contents/MacOS/mudlet-unwrapped 130 makeQtWrapper $out/Applications/Mudlet.app/Contents/MacOS/mudlet-unwrapped $out/Applications/Mudlet.app/Contents/MacOS/mudlet \ 131 --set LUA_CPATH "${luaEnv}/lib/lua/${lua.luaversion}/?.so" \ 132 --prefix LUA_PATH : "$NIX_LUA_PATH" \ 133 --prefix DYLD_LIBRARY_PATH : "${ 134 lib.makeLibraryPath [ 135 libsForQt5.qtkeychain 136 discord-rpc 137 ] 138 }:$out/lib" \ 139 --chdir "$out"; 140 141 '' 142 + lib.optionalString (!stdenv.hostPlatform.isDarwin) '' 143 mkdir -pv $out/bin 144 cp src/mudlet $out/bin/mudlet-unwrapped 145 makeQtWrapper $out/bin/mudlet-unwrapped $out/bin/mudlet \ 146 --set LUA_CPATH "${luaEnv}/lib/lua/${lua.luaversion}/?.so" \ 147 --prefix LUA_PATH : "$NIX_LUA_PATH" \ 148 --prefix LD_LIBRARY_PATH : "${ 149 lib.makeLibraryPath [ 150 libsForQt5.qtkeychain 151 discord-rpc 152 ] 153 }" \ 154 --chdir "$out"; 155 156 mkdir -pv $out/share/applications 157 cp ../mudlet.desktop $out/share/applications/ 158 159 '' 160 + '' 161 runHook postInstall 162 ''; 163 164 meta = with lib; { 165 description = "Crossplatform mud client"; 166 homepage = "https://www.mudlet.org/"; 167 maintainers = with maintainers; [ 168 wyvie 169 pstn 170 cpu 171 felixalbrigtsen 172 ]; 173 platforms = platforms.linux ++ platforms.darwin; 174 license = licenses.gpl2Plus; 175 mainProgram = "mudlet"; 176 }; 177}