about summary refs log tree commit diff
path: root/pkgs/applications/misc/lutris/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/misc/lutris/default.nix')
-rw-r--r--pkgs/applications/misc/lutris/default.nix212
1 files changed, 50 insertions, 162 deletions
diff --git a/pkgs/applications/misc/lutris/default.nix b/pkgs/applications/misc/lutris/default.nix
index 5a74bd931c0b..0f2274ad2592 100644
--- a/pkgs/applications/misc/lutris/default.nix
+++ b/pkgs/applications/misc/lutris/default.nix
@@ -1,178 +1,66 @@
-{ stdenv, pkgs, buildFHSUserEnv, makeDesktopItem, fetchFromGitHub
-, wrapGAppsHook, python3Packages }:
+{ buildPythonApplication, lib, fetchFromGitHub
+, wrapGAppsHook, gobject-introspection, gnome-desktop, libnotify, libgnome-keyring, pango
+, gdk_pixbuf, atk, webkitgtk, gst_all_1
+, evdev, pyyaml, pygobject3, requests, pillow
+, xrandr, pciutils, psmisc, glxinfo, vulkan-tools, xboxdrv, pulseaudio, p7zip, xgamma
+, libstrangle, wine, fluidsynth, xorgserver
+}:
 
 let
-  qt5Deps = with pkgs; with qt5; [ qtbase qtmultimedia ];
-  gnome3Deps = with pkgs; with gnome3; [ zenity gtksourceview gnome-desktop libgnome-keyring webkitgtk ];
-
-  python3Deps = with pkgs; with python3Packages; [
-    evdev pyyaml pyxdg pygobject3 pyqt5 dbus-python requests pillow
-  ];
-
-  xorgDeps = with pkgs; with xorg; [
-    libX11 libXrender libXrandr libxcb libXmu libpthreadstubs libXext libXdmcp
-    libXxf86vm libXinerama libSM libXv libXaw libXi libXcursor libXcomposite
-    xrandr xdg_utils
+  # See lutris/util/linux.py
+  binPath = lib.makeBinPath [
+    xrandr
+    pciutils
+    psmisc
+    glxinfo
+    vulkan-tools
+    xboxdrv
+    pulseaudio
+    p7zip
+    xgamma
+    libstrangle
+    wine
+    fluidsynth
+    xorgserver
   ];
 
-  gstDeps = with pkgs; with gst_all_1; [
+  gstDeps = with gst_all_1; [
     gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly
     gst-libav
   ];
 
-  deps = with pkgs; [
-    # Common
-    stdenv.cc.cc libGL libGLU_combined libsndfile libtheora libogg libvorbis
-    libopus libGLU libpcap libpulseaudio libao libusb libevdev libudev libgcrypt
-    libxml2 libusb libpng libmpeg2 libv4l libjpeg libxkbcommon libass libcdio
-    libjack2 libsamplerate libzip libmad libaio libcap libtiff libva libgphoto2
-    libxslt libtxc_dxtn libsndfile giflib zlib glib alsaLib zziplib bash dbus
-    keyutils zip cabextract freetype unzip coreutils readline gcc SDL SDL2 curl
-    graphite2 gtk2 gtk3 udev ncurses wayland libglvnd vulkan-loader
-
-    # Lutris
-    gobject-introspection gdk_pixbuf hicolor-icon-theme pango openssl sqlite xterm libnotify procps
-
-    # Adventure Game Studio
-    allegro dumb
-
-    # Desmume
-    lua agg soundtouch openal desktop-file-utils pangox_compat atk
-
-    # DGen // TODO: libarchive is broken
-
-    # Dolphin
-    bluez ffmpeg gettext portaudio wxGTK30 miniupnpc mbedtls lzo sfml gsm
-    wavpack gnutls-kdh orc nettle gmp pcre vulkan-loader
-
-    # DOSBox
-    SDL_net SDL_sound
-
-    # GOG
-    glib-networking
-
-    # Higan // TODO: "higan is not available for the x86_64 architecture"
-
-    # Libretro
-    fluidsynth hidapi mesa libdrm
-
-    # MAME
-    qt48 fontconfig SDL2_ttf
-
-    # Mednafen
-    freeglut mesa_glu
-
-    # MESS
-    expat
-
-    # Minecraft
-    nss
-
-    # Mupen64Plus
-    boost dash
-
-    # Osmose
-    qt4
-
-    # PCSX2 // TODO: "libgobject-2.0.so.0: wrong ELF class: ELFCLASS64"
-
-    # PPSSPP
-    glew snappy
+in buildPythonApplication rec {
+  name = "lutris-original-${version}";
+  version = "0.5.2.1";
 
-    # Redream // "redream is not available for the x86_64 architecture"
-
-    # ResidualVM
-    flac
-
-    # rpcs3 // TODO: "error while loading shared libraries: libz.so.1..."
-    llvm_4
-
-    # ScummVM
-    nasm sndio
-
-    # Snes9x
-    epoxy minizip
-
-    # Steam
-    steam
-
-    # Vice
-    bison flex
-
-    # WINE
-    perl which p7zip gnused gnugrep psmisc cups lcms2 mpg123 cairo unixODBC
-    samba4 sane-backends openldap opencl-headers ocl-icd utillinux
-
-    wineWowPackages.staging
-
-    # ZDOOM
-    soundfont-fluid bzip2 game-music-emu
-  ] ++ qt5Deps
-    ++ gnome3Deps
-    ++ python3Deps
-    ++ xorgDeps
-    ++ gstDeps;
-
-  lutris = python3Packages.buildPythonApplication rec {
-    name = "lutris-original-${version}";
-    version = "0.5.2.1";
-
-    src = fetchFromGitHub {
-      owner = "lutris";
-      repo = "lutris";
-      rev = "v${version}";
-      sha256 = "023yqnzmnkfpq21r6ky6jzwbjxjcw1a5zqrrdl6fwwlr78fdhgpv";
-    };
+  src = fetchFromGitHub {
+    owner = "lutris";
+    repo = "lutris";
+    rev = "v${version}";
+    sha256 = "023yqnzmnkfpq21r6ky6jzwbjxjcw1a5zqrrdl6fwwlr78fdhgpv";
+  };
 
-    enableParallelBuilding = true;
-    nativeBuildInputs = [ wrapGAppsHook ];
-    propagatedBuildInputs = deps;
-    fullPath = stdenv.lib.makeLibraryPath deps;
-    preConfigure = "export HOME=$PWD";
+  buildInputs = [
+    wrapGAppsHook gobject-introspection gnome-desktop libnotify libgnome-keyring pango
+    gdk_pixbuf atk webkitgtk
+  ] ++ gstDeps;
 
-    makeWrapperArgs = [
-      "--prefix LD_LIBRARY_PATH : ${fullPath}:$out/lib"
-      "--set GI_TYPELIB_PATH $GI_TYPELIB_PATH"
-      "--prefix XDG_DATA_DIRS : $out/share"
-      "--suffix XDG_DATA_DIRS : $XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
-    ];
+  makeWrapperArgs = [
+    "--prefix PATH : ${binPath}"
+  ];
 
-    postInstall = ''
-      mkdir -p $out/lib
-      ln -sf ${pkgs.gsm}/lib/libgsm.so $out/lib/libgsm.so.1
-      mv $out/bin/lutris $out/bin/lutris-${version}
-    '';
+  propagatedBuildInputs = [
+    evdev pyyaml pygobject3 requests pillow
+  ];
 
-    meta = with stdenv.lib; {
-      homepage = "https://lutris.net";
-      description = "Open Source gaming platform for GNU/Linux";
-      license = licenses.gpl3;
-      maintainers = with maintainers; [ chiiruno ];
-      platforms = platforms.linux;
-    };
-  };
+  preCheck = "export HOME=$PWD";
 
-  desktopItem = makeDesktopItem {
-    name = "Lutris";
-    exec = "lutris";
-    icon = "lutris";
-    comment = lutris.meta.description;
-    desktopName = "Lutris";
-    genericName = "Gaming Platform";
-    categories = "Network;Game;Emulator;";
-    startupNotify = "false";
+  meta = with lib; {
+    homepage = "https://lutris.net";
+    description = "Open Source gaming platform for GNU/Linux";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ chiiruno ];
+    platforms = platforms.linux;
   };
-
-in buildFHSUserEnv rec {
-  name = "lutris";
-
-  runScript = "lutris-${lutris.version}";
-  targetPkgs = pkgs: [ lutris pkgs.glxinfo pkgs.pciutils ];
-  passthru.lutris = lutris;
-
-  extraInstallCommands = ''
-    mkdir -p $out/share
-    cp -r ${desktopItem}/share/applications $out/share
-    ln -sf ${lutris}/share/icons $out/share
-  '';
 }
+