aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/games/cataclysm-dda/common.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/cataclysm-dda/common.nix')
-rw-r--r--nixpkgs/pkgs/games/cataclysm-dda/common.nix187
1 files changed, 95 insertions, 92 deletions
diff --git a/nixpkgs/pkgs/games/cataclysm-dda/common.nix b/nixpkgs/pkgs/games/cataclysm-dda/common.nix
index f904a3c0f35..9ec73cdebe0 100644
--- a/nixpkgs/pkgs/games/cataclysm-dda/common.nix
+++ b/nixpkgs/pkgs/games/cataclysm-dda/common.nix
@@ -1,6 +1,7 @@
-{ stdenv, fetchFromGitHub, pkgconfig, gettext, ncurses, CoreFoundation
+{ stdenv, runtimeShell, pkgconfig, gettext, ncurses, CoreFoundation
, tiles, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, freetype, Cocoa
-, debug, runtimeShell
+, debug
+, useXdgDir
}:
let
@@ -12,98 +13,100 @@ let
tilesDeps = [ SDL2 SDL2_image SDL2_mixer SDL2_ttf freetype ]
++ optionals stdenv.isDarwin [ Cocoa ];
- common = {
- nativeBuildInputs = [ pkgconfig ];
-
- buildInputs = cursesDeps ++ optionals tiles tilesDeps;
-
- postPatch = ''
- patchShebangs .
- '';
+ 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
- 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;
-
- 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;
- };
+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)" "LANGUAGES=all"
+ (if useXdgDir then "USE_XDG_DIR=1" else "USE_HOME_DIR=1")
+ ] ++ 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;
};
- utils = {
- fetchFromCleverRaven = { rev, sha256 }:
- fetchFromGitHub {
- owner = "CleverRaven";
- repo = "Cataclysm-DDA";
- inherit rev sha256;
- };
-
- 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
+ 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;
};
-in
-
-{ inherit common utils; }
+}