factorio: refactor alpha/headless split

This commit is contained in:
Eric Litak 2016-04-27 03:32:23 -07:00 committed by Joachim Fasting
parent 23fd70b719
commit f6b645206f
No known key found for this signature in database
GPG Key ID: 4330820E1E04DCF4
1 changed files with 59 additions and 62 deletions

View File

@ -1,10 +1,7 @@
{ stdenv, callPackage, fetchurl, makeWrapper { stdenv, callPackage, fetchurl, makeWrapper
# Begin libraries
, alsaLib, libX11, libXcursor, libXinerama, libXrandr, libXi, mesa_noglu , alsaLib, libX11, libXcursor, libXinerama, libXrandr, libXi, mesa_noglu
# Begin download parameters
, username ? ""
, password ? ""
, releaseType , releaseType
, username ? "" , password ? ""
}: }:
assert releaseType == "alpha" || releaseType == "headless"; assert releaseType == "alpha" || releaseType == "headless";
@ -55,27 +52,11 @@ let
fi fi
''; '';
in base = {
stdenv.mkDerivation rec {
name = "factorio-${releaseType}-${version}"; name = "factorio-${releaseType}-${version}";
src = fetch.${arch.inTar}.${releaseType}; src = fetch.${arch.inTar}.${releaseType};
libPath = stdenv.lib.makeLibraryPath (
optionals (! isHeadless) [
alsaLib
libX11
libXcursor
libXinerama
libXrandr
libXi
mesa_noglu
]
);
buildInputs = [ makeWrapper ];
dontBuild = true; dontBuild = true;
# TODO detangle headless/normal mode wrapping, libs, etc. test all urls 32/64/headless/gfx # TODO detangle headless/normal mode wrapping, libs, etc. test all urls 32/64/headless/gfx
@ -86,26 +67,7 @@ stdenv.mkDerivation rec {
patchelf \ patchelf \
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
$out/bin/factorio $out/bin/factorio
'';
'' + optionalString (! isHeadless) (''
mv $out/bin/factorio $out/bin/factorio.${arch.inTar}
makeWrapper $out/bin/factorio.${arch.inTar} $out/bin/factorio \
--prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:$libPath \
--run "$out/share/factorio/update-config.sh" \
--add-flags "-c \$HOME/.factorio/config.cfg"
# Fortunately, Factorio already supports system-wide installs.
# Unfortunately it's a bit inconvenient to set the paths.
install -m0644 <(cat << EOF
'' + configBaseCfg + ''
EOF
) $out/share/factorio/config-base.cfg
install -m0755 <(cat << EOF
'' + updateConfigSh + ''
EOF
) $out/share/factorio/update-config.sh
cp -a doc-html $out/share/factorio
'');
preferLocalBuild = true; preferLocalBuild = true;
@ -128,4 +90,39 @@ stdenv.mkDerivation rec {
maintainers = with stdenv.lib.maintainers; [ Baughn elitak ]; maintainers = with stdenv.lib.maintainers; [ Baughn elitak ];
platforms = [ "i686-linux" "x86_64-linux" ]; platforms = [ "i686-linux" "x86_64-linux" ];
}; };
} };
headless = base;
alpha = base // {
buildInputs = [ makeWrapper ];
libPath = stdenv.lib.makeLibraryPath [
alsaLib
libX11
libXcursor
libXinerama
libXrandr
libXi
mesa_noglu
];
installPhase = base.installPhase + ''
wrapProgram $out/bin/factorio \
--prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:$libPath \
--run "$out/share/factorio/update-config.sh" \
--add-flags "-c \$HOME/.factorio/config.cfg"
install -m0644 <(cat << EOF
${configBaseCfg}
EOF
) $out/share/factorio/config-base.cfg
install -m0755 <(cat << EOF
${updateConfigSh}
EOF
) $out/share/factorio/update-config.sh
cp -a doc-html $out/share/factorio
'';
};
in stdenv.mkDerivation (if isHeadless then headless else alpha)