cataclysm-dda{,-git}: clean up

This commit is contained in:
Mitsuhiro Nakamura 2020-04-09 16:11:51 +09:00
parent 90c265275f
commit de56294e57
3 changed files with 103 additions and 105 deletions

View File

@ -1,6 +1,6 @@
{ stdenv, pkgconfig, gettext, ncurses, CoreFoundation { stdenv, runtimeShell, pkgconfig, gettext, ncurses, CoreFoundation
, tiles, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, freetype, Cocoa , tiles, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, freetype, Cocoa
, debug, runtimeShell , debug
}: }:
let let
@ -12,103 +12,99 @@ let
tilesDeps = [ SDL2 SDL2_image SDL2_mixer SDL2_ttf freetype ] tilesDeps = [ SDL2 SDL2_image SDL2_mixer SDL2_ttf freetype ]
++ optionals stdenv.isDarwin [ Cocoa ]; ++ optionals stdenv.isDarwin [ Cocoa ];
common = stdenv.mkDerivation { installXDGAppLauncher = ''
pname = "cataclysm-dda"; launcher="$out/share/applications/cataclysm-dda.desktop"
install -D -m 444 data/xdg/*cataclysm-dda.desktop -T "$launcher"
sed -i "$launcher" -e "s,\(Exec=\)\(cataclysm-tiles\),\1$out/bin/\2,"
install -D -m 444 data/xdg/cataclysm-dda.svg -t $out/share/icons/hicolor/scalable/apps
'';
nativeBuildInputs = [ pkgconfig ]; installMacOSAppLauncher = ''
app=$out/Applications/Cataclysm.app
buildInputs = cursesDeps ++ optionals tiles tilesDeps; install -D -m 444 data/osx/Info.plist -t $app/Contents
install -D -m 444 data/osx/AppIcon.icns -t $app/Contents/Resources
postPatch = '' mkdir $app/Contents/MacOS
patchShebangs . launcher=$app/Contents/MacOS/Cataclysm.sh
cat << EOF > $launcher
# Locale patch required for Darwin builds, see: #!${runtimeShell}
# https://github.com/NixOS/nixpkgs/pull/74064#issuecomment-560083970 $out/bin/cataclysm-tiles
sed -i src/translations.cpp \ EOF
-e 's@#elif (defined(__linux__) || (defined(MACOSX) && !defined(TILES)))@#elif 1@' chmod 555 $launcher
''; '';
makeFlags = [
"PREFIX=$(out)" "USE_HOME_DIR=1" "LANGUAGES=all"
] ++ optionals (!debug) [
"RELEASE=1"
] ++ optionals tiles [
"TILES=1" "SOUND=1"
] ++ optionals stdenv.isDarwin [
"NATIVE=osx" "CLANG=1"
];
postInstall = optionalString tiles
( if !stdenv.isDarwin
then utils.installXDGAppLauncher
else utils.installMacOSAppLauncher
);
dontStrip = debug;
# https://hydra.nixos.org/build/65193254
# src/weather_data.cpp:203:1: fatal error: opening dependency file obj/tiles/weather_data.d: No such file or directory
# make: *** [Makefile:687: obj/tiles/weather_data.o] Error 1
enableParallelBuilding = false;
passthru = {
isTiles = tiles;
isCurses = !tiles;
};
meta = with stdenv.lib; {
description = "A free, post apocalyptic, zombie infested rogue-like";
longDescription = ''
Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic world.
Surviving is difficult: you have been thrown, ill-equipped, into a
landscape now riddled with monstrosities of which flesh eating zombies are
neither the strangest nor the deadliest.
Yet with care and a little luck, many things are possible. You may try to
eke out an existence in the forests silently executing threats and
providing sustenance with your longbow. You can ride into town in a
jerry-rigged vehicle, all guns blazing, to settle matters in a fug of
smoke from your molotovs. You could take a more measured approach and
construct an impregnable fortress, surrounded by traps to protect you from
the horrors without. The longer you survive, the more skilled and adapted
you will get and the better equipped and armed to deal with the threats
you are presented with.
In the course of your ordeal there will be opportunities and temptations
to improve or change your very nature. There are tales of survivors fitted
with extraordinary cybernetics giving great power and stories too of
gravely mutated survivors who, warped by their ingestion of exotic
substances or radiation, now more closely resemble insects, birds or fish
than their original form.
'';
homepage = "https://cataclysmdda.org/";
license = licenses.cc-by-sa-30;
maintainers = with maintainers; [ mnacamura ];
platforms = platforms.unix;
};
};
utils = {
installXDGAppLauncher = ''
launcher="$out/share/applications/cataclysm-dda.desktop"
install -D -m 444 data/xdg/*cataclysm-dda.desktop -T "$launcher"
sed -i "$launcher" -e "s,\(Exec=\)\(cataclysm-tiles\),\1$out/bin/\2,"
install -D -m 444 data/xdg/cataclysm-dda.svg -t $out/share/icons/hicolor/scalable/apps
'';
installMacOSAppLauncher = ''
app=$out/Applications/Cataclysm.app
install -D -m 444 data/osx/Info.plist -t $app/Contents
install -D -m 444 data/osx/AppIcon.icns -t $app/Contents/Resources
mkdir $app/Contents/MacOS
launcher=$app/Contents/MacOS/Cataclysm.sh
cat << EOF > $launcher
#!${runtimeShell}
$out/bin/cataclysm-tiles
EOF
chmod 555 $launcher
'';
};
in in
common stdenv.mkDerivation {
pname = "cataclysm-dda";
nativeBuildInputs = [ pkgconfig ];
buildInputs = cursesDeps ++ optionals tiles tilesDeps;
postPatch = ''
patchShebangs .
# Locale patch required for Darwin builds, see:
# https://github.com/NixOS/nixpkgs/pull/74064#issuecomment-560083970
sed -i src/translations.cpp \
-e 's@#elif (defined(__linux__) || (defined(MACOSX) && !defined(TILES)))@#elif 1@'
'';
makeFlags = [
"PREFIX=$(out)" "USE_HOME_DIR=1" "LANGUAGES=all"
] ++ optionals (!debug) [
"RELEASE=1"
] ++ optionals tiles [
"TILES=1" "SOUND=1"
] ++ optionals stdenv.isDarwin [
"NATIVE=osx" "CLANG=1"
];
postInstall = optionalString tiles
( if !stdenv.isDarwin
then installXDGAppLauncher
else installMacOSAppLauncher
);
dontStrip = debug;
# https://hydra.nixos.org/build/65193254
# src/weather_data.cpp:203:1: fatal error: opening dependency file obj/tiles/weather_data.d: No such file or directory
# make: *** [Makefile:687: obj/tiles/weather_data.o] Error 1
enableParallelBuilding = false;
passthru = {
isTiles = tiles;
isCurses = !tiles;
};
meta = with stdenv.lib; {
description = "A free, post apocalyptic, zombie infested rogue-like";
longDescription = ''
Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic world.
Surviving is difficult: you have been thrown, ill-equipped, into a
landscape now riddled with monstrosities of which flesh eating zombies are
neither the strangest nor the deadliest.
Yet with care and a little luck, many things are possible. You may try to
eke out an existence in the forests silently executing threats and
providing sustenance with your longbow. You can ride into town in a
jerry-rigged vehicle, all guns blazing, to settle matters in a fug of
smoke from your molotovs. You could take a more measured approach and
construct an impregnable fortress, surrounded by traps to protect you from
the horrors without. The longer you survive, the more skilled and adapted
you will get and the better equipped and armed to deal with the threats
you are presented with.
In the course of your ordeal there will be opportunities and temptations
to improve or change your very nature. There are tales of survivors fitted
with extraordinary cybernetics giving great power and stories too of
gravely mutated survivors who, warped by their ingestion of exotic
substances or radiation, now more closely resemble insects, birds or fish
than their original form.
'';
homepage = "https://cataclysmdda.org/";
license = licenses.cc-by-sa-30;
maintainers = with maintainers; [ mnacamura ];
platforms = platforms.unix;
};
}

View File

@ -5,7 +5,7 @@
let let
common = callPackage ./common.nix { common = callPackage ./common.nix {
inherit tiles CoreFoundation Cocoa debug; inherit CoreFoundation tiles Cocoa debug;
}; };
self = common.overrideAttrs (common: rec { self = common.overrideAttrs (common: rec {
@ -28,8 +28,9 @@ let
withMods = wrapCDDA self; withMods = wrapCDDA self;
}; };
meta = with lib.maintainers; common.meta // { meta = common.meta // {
maintainers = common.meta.maintainers ++ [ rardiol ]; maintainers = with lib.maintainers;
common.meta.maintainers ++ [ rardiol ];
}; };
}); });
in in

View File

@ -5,7 +5,7 @@
let let
common = callPackage ./common.nix { common = callPackage ./common.nix {
inherit tiles CoreFoundation Cocoa debug; inherit CoreFoundation tiles Cocoa debug;
}; };
self = common.overrideAttrs (common: rec { self = common.overrideAttrs (common: rec {
@ -23,8 +23,9 @@ let
withMods = wrapCDDA self; withMods = wrapCDDA self;
}; };
meta = with lib.maintainers; common.meta // { meta = common.meta // {
maintainers = common.meta.maintainers ++ [ skeidel ]; maintainers = with lib.maintainers;
common.meta.maintainers ++ [ skeidel ];
}; };
}); });
in in