1{ stdenv
2, makeWrapper
3, fetchurl
4, cabextract
5, gettext
6, glxinfo
7, gnupg1compat
8, icoutils
9, imagemagick
10, netcat-gnu
11, p7zip
12, python2Packages
13, unzip
14, wget
15, wine
16, xdg-user-dirs
17, xterm
18, pkgs
19, pkgsi686Linux
20, which
21, curl
22}:
23
24assert stdenv.isLinux;
25
26let
27 version = "4.2.12";
28
29 binpath = stdenv.lib.makeBinPath
30 [ cabextract
31 python2Packages.python
32 gettext
33 glxinfo
34 gnupg1compat
35 icoutils
36 imagemagick
37 netcat-gnu
38 p7zip
39 unzip
40 wget
41 wine
42 xdg-user-dirs
43 xterm
44 which
45 curl
46 ];
47
48 ld32 =
49 if stdenv.system == "x86_64-linux" then "${stdenv.cc}/nix-support/dynamic-linker-m32"
50 else if stdenv.system == "i686-linux" then "${stdenv.cc}/nix-support/dynamic-linker"
51 else throw "Unsupported platform for PlayOnLinux: ${stdenv.system}";
52 ld64 = "${stdenv.cc}/nix-support/dynamic-linker";
53 libs = pkgs: stdenv.lib.makeLibraryPath [ pkgs.xlibs.libX11 ];
54
55in stdenv.mkDerivation {
56 name = "playonlinux-${version}";
57
58 src = fetchurl {
59 url = "https://www.playonlinux.com/script_files/PlayOnLinux/${version}/PlayOnLinux_${version}.tar.gz";
60 sha256 = "03k8v9dknc5hfrfzqw1nkpifz7wkixv3mvjl1vnp4fx8rj2xrjrq";
61 };
62
63 nativeBuildInputs = [ makeWrapper ];
64
65 buildInputs =
66 [ python2Packages.python
67 python2Packages.wxPython
68 python2Packages.setuptools
69 ];
70
71 patchPhase = ''
72 patchShebangs python tests/python
73 sed -i "s/ %F//g" etc/PlayOnLinux.desktop
74 '';
75
76 installPhase = ''
77 install -d $out/share/playonlinux
78 cp -r . $out/share/playonlinux/
79
80 install -D -m644 etc/PlayOnLinux.desktop $out/share/applications/playonlinux.desktop
81
82 makeWrapper $out/share/playonlinux/playonlinux $out/bin/playonlinux \
83 --prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out") \
84 --prefix PATH : ${binpath}
85
86 bunzip2 $out/share/playonlinux/bin/check_dd_x86.bz2
87 patchelf --set-interpreter $(cat ${ld32}) --set-rpath ${libs pkgsi686Linux} $out/share/playonlinux/bin/check_dd_x86
88 ${if stdenv.system == "x86_64-linux" then ''
89 bunzip2 $out/share/playonlinux/bin/check_dd_amd64.bz2
90 patchelf --set-interpreter $(cat ${ld64}) --set-rpath ${libs pkgs} $out/share/playonlinux/bin/check_dd_amd64
91 '' else ''
92 rm $out/share/playonlinux/bin/check_dd_amd64.bz2
93 ''}
94 for f in $out/share/playonlinux/bin/*; do
95 bzip2 $f
96 done
97 '';
98
99 meta = with stdenv.lib; {
100 description = "GUI for managing Windows programs under linux";
101 homepage = https://www.playonlinux.com/;
102 license = licenses.gpl3;
103 maintainers = [ maintainers.a1russell ];
104 platforms = [ "x86_64-linux" "i686-linux" ];
105 };
106}