nixpkgs/pkgs/games/sil/default.nix
Artturin f9fdf2d402 treewide: move NIX_CFLAGS_COMPILE to the env attrset
with structuredAttrs lists will be bash arrays which cannot be exported
which will be a issue with some patches and some wrappers like cc-wrapper

this makes it clearer that NIX_CFLAGS_COMPILE must be a string as lists
in env cause a eval failure
2023-02-22 21:23:04 +02:00

84 lines
2.7 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ pkgs, lib, stdenv, fetchzip, ncurses, libX11, libXaw, libXt, libXext, libXmu
, makeWrapper, writeScript }:
let
setup = writeScript "setup" ''
mkdir -p "$ANGBAND_PATH"
# Copy all the data files into place
cp -ar $1/* "$ANGBAND_PATH"
# The copied files are not writable, make them so
chmod +w -R "$ANGBAND_PATH"
'';
in
stdenv.mkDerivation rec {
pname = "Sil";
version = "1.3.0";
src = fetchzip {
url = "https://www.amirrorclear.net/flowers/game/sil/Sil-130-src.zip";
sha256 = "1amp2mr3fxascra0k76sdsvikjh8g76nqh46kka9379zd35lfq8w";
stripRoot = false;
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ ncurses libX11 libXaw libXt libXext libXmu ];
sourceRoot = "source/Sil/src";
makefile = "Makefile.std";
postPatch = ''
# Allow usage of ANGBAND_PATH
substituteInPlace config.h --replace "#define FIXED_PATHS" ""
'';
preConfigure = ''
buildFlagsArray+=("LIBS=-lXaw -lXext -lSM -lICE -lXmu -lXt -lX11 -lncurses")
'';
# Workaround build failure on -fno-common toolchains like upstream
# gcc-10. Otherwise build fails as:
# ld: main.o:/build/source/Sil/src/externs.h:57: multiple definition of
# `mini_screenshot_char'; variable.o:/build/source/Sil/src/externs.h:57: first defined here
env.NIX_CFLAGS_COMPILE = "-fcommon";
installPhase = ''
runHook preInstall
# the makefile doesn't have a sensible install target, so we have to do it ourselves
mkdir -p $out/bin
cp sil $out/bin/sil
# Wrap the program to set a user-local ANGBAND_PATH, and run the setup script to copy files into place.
# We could just use the options for a user-local save and scores dir, but it tried to write to the
# lib directory anyway, so we might as well give everyone a copy
wrapProgram $out/bin/sil \
--run "export ANGBAND_PATH=\$HOME/.sil" \
--run "${setup} ${src}/Sil/lib"
runHook postInstall
'';
passthru.tests = {
saveDirCreation = pkgs.runCommand "save-dir-creation" {} ''
HOME=$(pwd) ${lib.getExe pkgs.sil} --help
test -d .sil && touch $out
'';
};
meta = {
description = "A rogue-like game set in the First Age of Middle-earth";
longDescription = ''
A game of adventure set in the First Age of Middle-earth, when the world still
rang with Elven song and gleamed with Dwarven mail.
Walk the dark halls of Angband. Slay creatures black and fell. Wrest a shining
Silmaril from Morgoths iron crown.
'';
homepage = "http://www.amirrorclear.net/flowers/game/sil/index.html";
license = lib.licenses.gpl2;
maintainers = with lib.maintainers; [ michaelpj kenran ];
platforms = lib.platforms.linux;
mainProgram = "sil";
};
}