nixpkgs/pkgs/misc/emulators/wine/base.nix
Herwig Hochleitner ae6d2796bc wine: add 64 bit build and nixpkgs configuration
The default release channel (stable/unstable) and the default
build (wine32/wine64/wineWow) can be customized via the "wine" key in config
2015-05-10 15:45:01 +02:00

62 lines
1.9 KiB
Nix

{ stdenv, lib, pkgArches,
name, version, src, monos, geckos, platforms,
buildScript ? null, configureFlags ? ""
}:
assert stdenv.isLinux;
assert stdenv.cc.cc.isGNU or false;
stdenv.mkDerivation ((lib.optionalAttrs (! isNull buildScript) {
builder = buildScript;
}) // {
inherit name src configureFlags;
buildInputs = lib.concatLists (map (pkgs: (with pkgs; [
pkgconfig alsaLib ncurses libpng libjpeg lcms2 fontforge libxml2 libxslt
openssl gnutls cups makeWrapper flex bison mesa mesa_noglu.osmesa
]) ++ (with pkgs.xlibs; [
xlibs libXi libXcursor libXinerama libXrandr libXrender libXxf86vm libXcomposite
])) pkgArches);
# Wine locates a lot of libraries dynamically through dlopen(). Add
# them to the RPATH so that the user doesn't have to set them in
# LD_LIBRARY_PATH.
NIX_LDFLAGS = map (path: "-rpath ${path}/lib") ([
stdenv.cc.cc
] ++ (lib.concatLists (map (pkgs:
(with pkgs; [
freetype fontconfig mesa mesa_noglu.osmesa libdrm
libpng libjpeg openssl gnutls cups ncurses
]) ++ (with pkgs.xlibs; [
libXinerama libXrender libXrandr libXcursor libXcomposite
])) pkgArches)));
# Don't shrink the ELF RPATHs in order to keep the extra RPATH
# elements specified above.
dontPatchELF = true;
## FIXME
# Add capability to ignore known failing tests
# and enable doCheck
doCheck = false;
postInstall = let
links = prefix: pkg: "ln -s ${pkg} $out/${prefix}/${pkg.name}";
in ''
mkdir -p $out/share/wine/gecko $out/share/wine/mono/
${lib.strings.concatStringsSep "\n"
((map (links "share/wine/gecko") geckos)
++ (map (links "share/wine/mono") monos))}
'';
enableParallelBuilding = true;
meta = {
inherit version platforms;
homepage = "http://www.winehq.org/";
license = "LGPL";
description = "An Open Source implementation of the Windows API on top of X, OpenGL, and Unix";
maintainers = [stdenv.lib.maintainers.raskin];
};
})