about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/misc/playonlinux/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/misc/playonlinux/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/misc/playonlinux/default.nix110
1 files changed, 110 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/misc/playonlinux/default.nix b/nixpkgs/pkgs/applications/misc/playonlinux/default.nix
new file mode 100644
index 000000000000..e5c096fd2ae5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/playonlinux/default.nix
@@ -0,0 +1,110 @@
+{ stdenv
+, makeWrapper
+, fetchurl
+, cabextract
+, gettext
+, glxinfo
+, gnupg
+, icoutils
+, imagemagick
+, netcat-gnu
+, p7zip
+, python2Packages
+, unzip
+, wget
+, wine
+, xdg-user-dirs
+, xterm
+, pkgs
+, pkgsi686Linux
+, which
+, curl
+, jq
+, xorg
+, libGL
+}:
+
+let
+  version = "4.3.4";
+
+  binpath = stdenv.lib.makeBinPath
+    [ cabextract
+      python2Packages.python
+      gettext
+      glxinfo
+      gnupg
+      icoutils
+      imagemagick
+      netcat-gnu
+      p7zip
+      unzip
+      wget
+      wine
+      xdg-user-dirs
+      xterm
+      which
+      curl
+      jq
+    ];
+
+  ld32 =
+    if stdenv.hostPlatform.system == "x86_64-linux" then "${stdenv.cc}/nix-support/dynamic-linker-m32"
+    else if stdenv.hostPlatform.system == "i686-linux" then "${stdenv.cc}/nix-support/dynamic-linker"
+    else throw "Unsupported platform for PlayOnLinux: ${stdenv.hostPlatform.system}";
+  ld64 = "${stdenv.cc}/nix-support/dynamic-linker";
+  libs = pkgs: stdenv.lib.makeLibraryPath [ xorg.libX11 libGL ];
+
+in stdenv.mkDerivation {
+  name = "playonlinux-${version}";
+
+  src = fetchurl {
+    url = "https://www.playonlinux.com/script_files/PlayOnLinux/${version}/PlayOnLinux_${version}.tar.gz";
+    sha256 = "019dvb55zqrhlbx73p6913807ql866rm0j011ix5mkk2g79dzhqp";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs =
+    [ python2Packages.python
+      python2Packages.wxPython
+      python2Packages.setuptools
+      xorg.libX11
+      libGL
+    ];
+
+  patchPhase = ''
+    patchShebangs python tests/python
+    sed -i "s/ %F//g" etc/PlayOnLinux.desktop
+  '';
+
+  installPhase = ''
+    install -d $out/share/playonlinux
+    cp -r . $out/share/playonlinux/
+
+    install -D -m644 etc/PlayOnLinux.desktop $out/share/applications/playonlinux.desktop
+
+    makeWrapper $out/share/playonlinux/playonlinux $out/bin/playonlinux \
+      --prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out") \
+      --prefix PATH : ${binpath}
+
+    bunzip2 $out/share/playonlinux/bin/check_dd_x86.bz2
+    patchelf --set-interpreter $(cat ${ld32}) --set-rpath ${libs pkgsi686Linux} $out/share/playonlinux/bin/check_dd_x86
+    ${if stdenv.hostPlatform.system == "x86_64-linux" then ''
+      bunzip2 $out/share/playonlinux/bin/check_dd_amd64.bz2
+      patchelf --set-interpreter $(cat ${ld64}) --set-rpath ${libs pkgs} $out/share/playonlinux/bin/check_dd_amd64
+    '' else ''
+      rm $out/share/playonlinux/bin/check_dd_amd64.bz2
+    ''}
+    for f in $out/share/playonlinux/bin/*; do
+      bzip2 $f
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GUI for managing Windows programs under linux";
+    homepage = https://www.playonlinux.com/;
+    license = licenses.gpl3;
+    maintainers = [ maintainers.a1russell ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}