diff options
author | Svein Ove Aas <sveina@gmail.com> | 2016-01-22 23:54:49 +0000 |
---|---|---|
committer | Svein Ove Aas <sveina@gmail.com> | 2016-01-23 13:15:18 +0000 |
commit | ef582b2805fca03c7f4aa9848cf7935407295139 (patch) | |
tree | 04ddb415dc7779500f586f2b90894edad89e653c /pkgs/games/factorio/default.nix | |
parent | ecc48af0ce20e24a7e4d56e663f5752d69384644 (diff) | |
download | nixlib-ef582b2805fca03c7f4aa9848cf7935407295139.tar nixlib-ef582b2805fca03c7f4aa9848cf7935407295139.tar.gz nixlib-ef582b2805fca03c7f4aa9848cf7935407295139.tar.bz2 nixlib-ef582b2805fca03c7f4aa9848cf7935407295139.tar.lz nixlib-ef582b2805fca03c7f4aa9848cf7935407295139.tar.xz nixlib-ef582b2805fca03c7f4aa9848cf7935407295139.tar.zst nixlib-ef582b2805fca03c7f4aa9848cf7935407295139.zip |
factorio: init at 0.12.20
Diffstat (limited to 'pkgs/games/factorio/default.nix')
-rw-r--r-- | pkgs/games/factorio/default.nix | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/pkgs/games/factorio/default.nix b/pkgs/games/factorio/default.nix new file mode 100644 index 000000000000..b08f977cda6b --- /dev/null +++ b/pkgs/games/factorio/default.nix @@ -0,0 +1,100 @@ +{ stdenv, callPackage, fetchurl, makeWrapper +# Begin libraries +, alsaLib, libX11, libXcursor, libXinerama, libXrandr, libXi +# Begin download parameters +, username ? "" +, password ? "" +}: + +let + version = "0.12.20"; + + fetch = callPackage ./fetch.nix { username = username; password = password; }; + arch = if stdenv.system == "x86_64-linux" then "x64" + else if stdenv.system == "i686-linux" then "x32" + else abort "Unsupported platform"; + + variants = { + x64 = { + url = "https://www.factorio.com/get-download/${version}/alpha/linux64"; + sha256 = "1xpzrx3q678519qgjl92fxn3qv55hd188x9jp6dcfk2ljhi1gmqk"; + }; + + x32 = { + url = "https://www.factorio.com/get-download/${version}/alpha/linux32"; + sha256 = "1dl1dsp4nni5nda437ckyw1ss6w168g19v51h7cdvb3cgsdb7sab"; + }; + }; +in + +stdenv.mkDerivation rec { + name = "factorio-${version}"; + + src = fetch variants.${arch}; + + libPath = stdenv.lib.makeLibraryPath [ + alsaLib + libX11 + libXcursor + libXinerama + libXrandr + libXi + ]; + + buildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out/{bin,share/factorio} + cp -a bin/${arch}/factorio $out/bin/factorio.${arch} + cp -a doc-html data $out/share/factorio/ + + # Fortunately, Factorio already supports system-wide installs. + # Unfortunately it's a bit inconvenient to set the paths. + cat > $out/share/factorio/config-base.cfg <<EOF +use-system-read-write-data-directories=false +[path] +read-data=$out/share/factorio/data/ +EOF + + cat > $out/share/factorio/update-config.sh <<EOF +if [[ -e ~/.factorio/config.cfg ]]; then + # Config file exists, but may have wrong path. + # Try to edit it. I'm sure this is perfectly safe and will never go wrong. + sed -i 's|^read-data=.*|read-data=$out/share/factorio/data/|' ~/.factorio/config.cfg +else + # Config file does not exist. Phew. + install -D $out/share/factorio/config-base.cfg ~/.factorio/config.cfg +fi +EOF + chmod a+x $out/share/factorio/update-config.sh + + patchelf \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $out/bin/factorio.${arch} + + makeWrapper $out/bin/factorio.${arch} $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" + ''; + + meta = { + description = "A game in which you build and maintain factories."; + longDescription = '' + Factorio is a game in which you build and maintain factories. + + You will be mining resources, researching technologies, building + infrastructure, automating production and fighting enemies. Use your + imagination to design your factory, combine simple elements into + ingenious structures, apply management skills to keep it working and + finally protect it from the creatures who don't really like you. + + Factorio has been in development since spring of 2012 and it is + currently in late alpha. + ''; + homepage = https://www.factorio.com/; + license = stdenv.lib.licenses.unfree; + maintainers = [ stdenv.lib.maintainers.Baughn ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} |