diff options
author | Peter Hoeg <peter@hoeg.com> | 2018-02-12 22:31:41 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-12 22:31:41 +0800 |
commit | 8016f9b4c90a99d366fe7d3666254c180f3dc834 (patch) | |
tree | 7466a012e0baa2ec50c919a0872850c72f069154 /pkgs | |
parent | 8a60770f6b31211ba3d68b812a285fdf619a544f (diff) | |
parent | e88284be2a698d9272ce90d2f5ce5b8d4d24465c (diff) | |
download | nixlib-8016f9b4c90a99d366fe7d3666254c180f3dc834.tar nixlib-8016f9b4c90a99d366fe7d3666254c180f3dc834.tar.gz nixlib-8016f9b4c90a99d366fe7d3666254c180f3dc834.tar.bz2 nixlib-8016f9b4c90a99d366fe7d3666254c180f3dc834.tar.lz nixlib-8016f9b4c90a99d366fe7d3666254c180f3dc834.tar.xz nixlib-8016f9b4c90a99d366fe7d3666254c180f3dc834.tar.zst nixlib-8016f9b4c90a99d366fe7d3666254c180f3dc834.zip |
Merge pull request #34611 from peterhoeg/p/descent
descent 1 & 2: use assets from gog.com with the dxx-rebirth project
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/build-support/setup-hooks/gog-unpack.sh | 11 | ||||
-rw-r--r-- | pkgs/games/dxx-rebirth/assets.nix | 55 | ||||
-rw-r--r-- | pkgs/games/dxx-rebirth/full.nix | 30 | ||||
-rw-r--r-- | pkgs/tools/filesystems/file-rename/default.nix | 24 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 17 |
5 files changed, 136 insertions, 1 deletions
diff --git a/pkgs/build-support/setup-hooks/gog-unpack.sh b/pkgs/build-support/setup-hooks/gog-unpack.sh new file mode 100644 index 000000000000..559b543fadfc --- /dev/null +++ b/pkgs/build-support/setup-hooks/gog-unpack.sh @@ -0,0 +1,11 @@ +unpackPhase="unpackGog" + +unpackGog() { + runHook preUnpackGog + + innoextract --silent --extract --exclude-temp "${src}" + + find . -depth -print -execdir rename -f 'y/A-Z/a-z/' '{}' \; + + runHook postUnpackGog +} diff --git a/pkgs/games/dxx-rebirth/assets.nix b/pkgs/games/dxx-rebirth/assets.nix new file mode 100644 index 000000000000..1fd64f5b00d0 --- /dev/null +++ b/pkgs/games/dxx-rebirth/assets.nix @@ -0,0 +1,55 @@ +{ stdenv, requireFile, gogUnpackHook }: + +let + generic = ver: source: let + pname = "descent${toString ver}"; + in stdenv.mkDerivation rec { + name = "${pname}-assets-${version}"; + version = "2.0.0.7"; + + src = requireFile rec { + name = "setup_descent12_${version}.exe"; + sha256 = "1r1drbfda6czg21f9qqiiwgnkpszxgmcn5bafp5ljddh34swkn3f"; + message = '' + While the Descent ${toString ver} game engine is free, the game assets are not. + + Please purchase the game on gog.com and download the Windows installer. + + Once you have downloaded the file, please use the following command and re-run the + installation: + + nix-prefetch-url file://\$PWD/${name} + ''; + }; + + nativeBuildInputs = [ gogUnpackHook ]; + + dontBuild = true; + dontFixup = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/{games/${pname},doc/${pname}/examples} + pushd "app/${source}" + mv dosbox*.conf $out/share/doc/${pname}/examples + mv *.txt *.pdf $out/share/doc/${pname} + cp -r * $out/share/games/descent${toString ver} + popd + + runHook postInstall + ''; + + meta = with stdenv.lib; { + description = "Descent ${toString ver} assets from GOG"; + homepage = http://www.dxx-rebirth.com/; + license = licenses.unfree; + maintainers = with maintainers; [ peterhoeg ]; + hydraPlatforms = []; + }; + }; + +in { + descent1-assets = generic 1 "descent"; + descent2-assets = generic 2 "descent 2"; +} diff --git a/pkgs/games/dxx-rebirth/full.nix b/pkgs/games/dxx-rebirth/full.nix new file mode 100644 index 000000000000..baf8b80add10 --- /dev/null +++ b/pkgs/games/dxx-rebirth/full.nix @@ -0,0 +1,30 @@ +{ stdenv, makeWrapper +, dxx-rebirth, descent1-assets, descent2-assets }: + +let + generic = ver: assets: stdenv.mkDerivation rec { + name = "d${toString ver}x-rebirth-full-${assets.version}"; + + nativeBuildInputs = [ makeWrapper ]; + + buildCommand = '' + mkdir -p $out/bin + + makeWrapper ${dxx-rebirth}/bin/d${toString ver}x-rebirth $out/bin/descent${toString ver} \ + --add-flags "-hogdir ${assets}/share/games/descent${toString ver}" + ''; + + meta = with stdenv.lib; { + description = "Descent ${toString ver} using the DXX-Rebirth project engine and game assets from GOG"; + homepage = http://www.dxx-rebirth.com/; + license = with licenses; [ free unfree ]; + maintainers = with maintainers; [ peterhoeg ]; + platforms = with platforms; linux; + hydraPlatforms = []; + }; + }; + +in { + d1x-rebirth-full = generic 1 descent1-assets; + d2x-rebirth-full = generic 2 descent2-assets; +} diff --git a/pkgs/tools/filesystems/file-rename/default.nix b/pkgs/tools/filesystems/file-rename/default.nix new file mode 100644 index 000000000000..b5e9b8c5e44d --- /dev/null +++ b/pkgs/tools/filesystems/file-rename/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, perlPackages, makeWrapper }: + +perlPackages.buildPerlPackage rec { + name = "File-Rename-0.20"; + + src = fetchurl { + url = "mirror://cpan/authors/id/R/RM/RMBARKER/${name}.tar.gz"; + sha256 = "1cf6xx2hiy1xalp35fh8g73j67r0w0g66jpcbc6971x9jbm7bvjy"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + postInstall = '' + wrapProgram $out/bin/rename \ + --prefix PERL5LIB : $out/lib/perl5/site_perl + ''; + + meta = with stdenv.lib; { + description = "Perl extension for renaming multiple files"; + homepage = http://search.cpan.org/~rmbarker; + license = licenses.artistic1; + maintainer = with maintainers; [ peterhoeg ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 391c3017a7c9..e7995ece76a5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -96,6 +96,11 @@ with pkgs; { substitutions = { gnu_config = gnu-config;}; } ../build-support/setup-hooks/update-autotools-gnu-config-scripts.sh; + gogUnpackHook = makeSetupHook { + name = "gog-unpack-hook"; + deps = [ innoextract file-rename ]; } + ../build-support/setup-hooks/gog-unpack.sh; + buildEnv = callPackage ../build-support/buildenv { }; # not actually a package buildFHSUserEnv = callPackage ../build-support/build-fhs-userenv { }; @@ -3236,6 +3241,8 @@ with pkgs; npm2nix = nodePackages.npm2nix; + file-rename = callPackage ../tools/filesystems/file-rename { }; + kea = callPackage ../tools/networking/kea { boost = boost165; }; @@ -18384,10 +18391,18 @@ with pkgs; physfs = physfs_2; }; + # these are here for compatibility d1x_rebirth = dxx-rebirth; - d2x_rebirth = dxx-rebirth; + inherit (callPackages ../games/dxx-rebirth/assets.nix { }) + descent1-assets + descent2-assets; + + inherit (callPackages ../games/dxx-rebirth/full.nix { }) + d1x-rebirth-full + d2x-rebirth-full; + easyrpg-player = callPackage ../games/easyrpg-player { }; eboard = callPackage ../games/eboard { }; |