summary refs log tree commit diff
path: root/pkgs/games/nethack
diff options
context:
space:
mode:
authorGuanpeng Xu <herberteuler@gmail.com>2018-07-15 14:18:55 +0800
committerGuanpeng Xu <herberteuler@gmail.com>2018-07-15 14:18:55 +0800
commit935332d648ddfd00521a84390f73b3dc895dbfdc (patch)
tree9f91b0983959d86ad2b2f7094ca1ef2edb93a2bc /pkgs/games/nethack
parentd22cb7a6192103e8216cca0dfe81ad3f46424c28 (diff)
downloadnixpkgs-935332d648ddfd00521a84390f73b3dc895dbfdc.tar
nixpkgs-935332d648ddfd00521a84390f73b3dc895dbfdc.tar.gz
nixpkgs-935332d648ddfd00521a84390f73b3dc895dbfdc.tar.bz2
nixpkgs-935332d648ddfd00521a84390f73b3dc895dbfdc.tar.lz
nixpkgs-935332d648ddfd00521a84390f73b3dc895dbfdc.tar.xz
nixpkgs-935332d648ddfd00521a84390f73b3dc895dbfdc.tar.zst
nixpkgs-935332d648ddfd00521a84390f73b3dc895dbfdc.zip
nethack: add qt support on linux
Diffstat (limited to 'pkgs/games/nethack')
-rw-r--r--pkgs/games/nethack/default.nix33
1 files changed, 28 insertions, 5 deletions
diff --git a/pkgs/games/nethack/default.nix b/pkgs/games/nethack/default.nix
index eed38592236..67f1a1d452c 100644
--- a/pkgs/games/nethack/default.nix
+++ b/pkgs/games/nethack/default.nix
@@ -1,5 +1,5 @@
 { stdenv, lib, fetchurl, writeScript, coreutils, ncurses, gzip, flex, bison, less
-, x11Mode ? false, libXaw, libXext, mkfontdir
+, x11Mode ? false, qtMode ? false, libXaw, libXext, mkfontdir, pkgconfig, qt5
 }:
 
 let
@@ -8,6 +8,7 @@ let
     else throw "Unknown platform for NetHack: ${stdenv.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
@@ -15,17 +16,27 @@ let
   userDir = "~/.config/nethack";
   binPath = lib.makeBinPath [ coreutils less ];
 
-in stdenv.mkDerivation {
-  name = "nethack${lib.optionalString x11Mode "-x11"}-3.6.1";
+in stdenv.mkDerivation rec {
+  version = "3.6.1";
+  name = if x11Mode then "nethack-x11-${version}"
+         else if qtMode then "nethack-qt-${version}"
+         else "nethack-${version}";
 
   src = fetchurl {
     url = "https://nethack.org/download/3.6.1/nethack-361-src.tgz";
     sha256 = "1dha0ijvxhx7c9hr0452h93x81iiqsll8bc9msdnp7xdqcfbz32b";
   };
 
-  buildInputs = [ ncurses ] ++ lib.optionals x11Mode [ libXaw libXext ];
+  buildInputs = [ ncurses ]
+                ++ lib.optionals x11Mode [ libXaw libXext ]
+                ++ lib.optionals qtMode [ gzip qt5.qtbase.bin qt5.qtmultimedia.bin ];
 
-  nativeBuildInputs = [ flex bison ] ++ lib.optionals x11Mode [ mkfontdir ];
+  nativeBuildInputs = [ flex bison ]
+                      ++ lib.optionals x11Mode [ mkfontdir ]
+                      ++ lib.optionals qtMode [
+                           pkgconfig mkfontdir qt5.qtbase.dev
+                           qt5.qtmultimedia.dev
+                         ];
 
   makeFlags = [ "PREFIX=$(out)" ];
 
@@ -36,6 +47,11 @@ in stdenv.mkDerivation {
       -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,/bin/gzip,${gzip}/bin/gzip,g' \
       -e 's,^WINTTYLIB=.*,WINTTYLIB=-lncurses,' \
       -i sys/unix/hints/linux
@@ -45,6 +61,12 @@ in stdenv.mkDerivation {
       -e 's,^SHELLDIR=.*$,SHELLDIR=\$(PREFIX)/games,' \
       -i sys/unix/hints/macosx10.10
     sed -e '/define CHDIR/d' -i include/config.h
+    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\\",' \
+      -i sys/unix/hints/linux-qt4
   '';
 
   configurePhase = ''
@@ -90,6 +112,7 @@ in stdenv.mkDerivation {
     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"}
   '';
 
   meta = with stdenv.lib; {