From ced6600f7557437f08bb40c2349c2288ae668f84 Mon Sep 17 00:00:00 2001 From: Jakob Klepp Date: Fri, 1 Feb 2019 17:54:21 +0100 Subject: [PATCH] WIP settlers2 --- default.nix | 2 ++ gog/default.nix | 5 +++ gog/settlers2/default.nix | 66 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 gog/default.nix create mode 100644 gog/settlers2/default.nix diff --git a/default.nix b/default.nix index 6f07ded..9a2ee8b 100644 --- a/default.nix +++ b/default.nix @@ -6,5 +6,7 @@ wildfly = pkgs.callPackage ./wildfly/default.nix {}; postman_appimage = pkgs.callPackage ./postman-appimage/default.nix {}; + gog = import ./gog/default.nix {}; + services = import ./services/default.nix; } \ No newline at end of file diff --git a/gog/default.nix b/gog/default.nix new file mode 100644 index 0000000..c4c925b --- /dev/null +++ b/gog/default.nix @@ -0,0 +1,5 @@ +{ pkgs ? import {} }: + +{ + settlers2 = pkgs.callPackage ./settlers2/default.nix {}; +} \ No newline at end of file diff --git a/gog/settlers2/default.nix b/gog/settlers2/default.nix new file mode 100644 index 0000000..b687a5d --- /dev/null +++ b/gog/settlers2/default.nix @@ -0,0 +1,66 @@ +{ pkgs ? import {} }: + +let + +_basename = "settlers2_gold"; +_version = "2.0.0.14"; + +setup_exe = pkgs.requireFile rec { + name = "setup_${_basename}_${_version}.exe"; + message = "Please download ${name} from https://gog.com/."; + sha256 = "19c88h972ydfpdbay61lz6pi4gnlm2lq5dcya5im9mmlin2nvyr7"; +}; + +game_extracted = pkgs.stdenv.mkDerivation rec { + name = "${_basename}-extracted-${_version}"; + version = _version; + + src = setup_exe; + + nativeBuildInputs = with pkgs; [ innoextract ]; + + unpackPhase = '' + innoextract --gog --extract $src + ''; + + buildPhase = ":"; + + installPhase = '' + mkdir -p $out/share/${_basename} + cp -R ./app $out/share/${_basename}/ + ''; +}; + +game_wrapped = pkgs.stdenv.mkDerivation rec { + name = "${_basename}-wrapped-${_version}"; + version = _version; + buildInputs = with pkgs; [ game_extracted dosbox ]; + + unpackPhase = '' + wrestool -x -t 14 "${game_extracted}/${_basename}/app/S2EDIT.EXE" > "${_basename}_edit.ico" + wrestool -x -t 14 "${game_extracted}/${_basename}/app/S2.EXE" > "${_basename}.ico" + ''; + + buildPhase = ":"; + + installPhase = '' + mkdir -p $out/bin + mkdir -p $out/share/icons/hicolor/{32x32}/apps + + cp "${_basename}_edit.ico" $out/share/icons/hicolor/32x32/apps/ + cp "${_basename}.ico" $out/share/icons/hicolor/32x32/apps/ + + cat << EOF > $out/bin/${_basename}_edit + #!${pkgs.bash}/bin/bash + EOF + chmod +x $out/bin/${_basename}_edit + + cat << EOF > $out/bin/${_basename} + #!${pkgs.bash}/bin/bash + ${pkgs.wine}/bin/wine "${game_extracted}/share/${_basename}/Stronghold_Crusader_Extreme.exe" + EOF + chmod +x $out/bin/${_basename} + ''; +}; + +in game_extracted