smap: init at 0.1.12 (#371402)
[NixPkgs.git] / pkgs / applications / misc / playonlinux / default.nix
blob747a6eb4fd2a68354b801ba30d05bc80d1b32013
1 { lib, stdenv
2 , makeWrapper
3 , fetchurl
4 , cabextract
5 , gettext
6 , gnupg
7 , icoutils
8 , imagemagick
9 , mesa-demos
10 , netcat-gnu
11 , p7zip
12 , python3
13 , unzip
14 , wget
15 , wine
16 , xdg-user-dirs
17 , xterm
18 , pkgs
19 , pkgsi686Linux
20 , which
21 , curl
22 , jq
23 , xorg
24 , libGL
25 , steam-run
26 # needed for avoiding crash on file selector
27 , gsettings-desktop-schemas
28 , glib
29 , wrapGAppsHook3
30 , hicolor-icon-theme
33 let
34   version = "4.4";
36   binpath = lib.makeBinPath [
37     cabextract
38     python
39     gettext
40     gnupg
41     icoutils
42     imagemagick
43     mesa-demos
44     netcat-gnu
45     p7zip
46     unzip
47     wget
48     wine
49     xdg-user-dirs
50     xterm
51     which
52     curl
53     jq
54   ];
56   ld32 =
57     if stdenv.hostPlatform.system == "x86_64-linux" then "${stdenv.cc}/nix-support/dynamic-linker-m32"
58     else if stdenv.hostPlatform.system == "i686-linux" then "${stdenv.cc}/nix-support/dynamic-linker"
59     else throw "Unsupported platform for PlayOnLinux: ${stdenv.hostPlatform.system}";
60   ld64 = "${stdenv.cc}/nix-support/dynamic-linker";
61   libs = pkgs: lib.makeLibraryPath [ xorg.libX11 libGL ];
63   python = python3.withPackages(ps: with ps; [
64     wxpython
65     setuptools
66     natsort
67     pyasyncore
68   ]);
70 in stdenv.mkDerivation {
71   pname = "playonlinux";
72   inherit version;
74   src = fetchurl {
75     url = "https://www.playonlinux.com/script_files/PlayOnLinux/${version}/PlayOnLinux_${version}.tar.gz";
76     sha256 = "0n40927c8cnjackfns68zwl7h4d7dvhf7cyqdkazzwwx4k2xxvma";
77   };
79   patches = [
80     ./0001-fix-locale.patch
81   ];
83   nativeBuildInputs = [ makeWrapper wrapGAppsHook3 ];
85   preBuild = ''
86     makeFlagsArray+=(PYTHON="python -m py_compile")
87   '';
89   buildInputs = [
90     glib
91     xorg.libX11
92     libGL
93     python
94     gsettings-desktop-schemas
95     hicolor-icon-theme
96   ];
98   postPatch = ''
99     substituteAllInPlace python/lib/lng.py
100     patchShebangs python tests/python
101     sed -i "s/ %F//g" etc/PlayOnLinux.desktop
102   '';
104   installPhase = ''
105     install -d $out/share/playonlinux
106     cp -r . $out/share/playonlinux/
108     install -D -m644 etc/PlayOnLinux.desktop $out/share/applications/playonlinux.desktop
110     makeWrapper $out/share/playonlinux/playonlinux{,-wrapper} \
111       --prefix PATH : ${binpath} \
112       --prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/GConf
113     # steam-run is needed to run the downloaded wine executables
114     mkdir -p $out/bin
115     cat > $out/bin/playonlinux <<EOF
116     #!${stdenv.shell} -e
117     exec ${steam-run}/bin/steam-run $out/share/playonlinux/playonlinux-wrapper "\$@"
118     EOF
119     chmod a+x $out/bin/playonlinux
121     bunzip2 $out/share/playonlinux/bin/check_dd_x86.bz2
122     patchelf --set-interpreter $(cat ${ld32}) --set-rpath ${libs pkgsi686Linux} $out/share/playonlinux/bin/check_dd_x86
123     ${if stdenv.hostPlatform.system == "x86_64-linux" then ''
124       bunzip2 $out/share/playonlinux/bin/check_dd_amd64.bz2
125       patchelf --set-interpreter $(cat ${ld64}) --set-rpath ${libs pkgs} $out/share/playonlinux/bin/check_dd_amd64
126     '' else ''
127       rm $out/share/playonlinux/bin/check_dd_amd64.bz2
128     ''}
129     for f in $out/share/playonlinux/bin/*; do
130       bzip2 $f
131     done
132   '';
134   dontWrapGApps = true;
135   postFixup = ''
136     makeWrapper $out/share/playonlinux/playonlinux{,-wrapped} \
137       --prefix PATH : ${binpath} \
138       ''${gappsWrapperArgs[@]}
139     makeWrapper ${steam-run}/bin/steam-run $out/bin/playonlinux \
140       --add-flags $out/share/playonlinux/playonlinux-wrapped
141   '';
143   meta = with lib; {
144     description = "GUI for managing Windows programs under linux";
145     homepage = "https://www.playonlinux.com/";
146     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
147     license = licenses.gpl3;
148     maintainers = [ maintainers.pasqui23 ];
149     platforms = [ "x86_64-linux" "i686-linux" ];
150     mainProgram = "playonlinux";
151   };