diff --git a/pkgs/by-name/we/wesnoth/package.nix b/pkgs/by-name/we/wesnoth/package.nix
index 16663c625477..0c03fa0d7b7f 100644
--- a/pkgs/by-name/we/wesnoth/package.nix
+++ b/pkgs/by-name/we/wesnoth/package.nix
@@ -23,10 +23,12 @@
lua5_4,
curl,
nix-update-script,
+ enableDevel ? false,
}:
let
boost = boost186;
+ suffix = lib.optionalString enableDevel "-devel";
# wesnoth requires lua built with c++, see https://github.com/wesnoth/wesnoth/pull/8234
lua = lua5_4.override {
postConfigure = ''
@@ -36,14 +38,18 @@ let
in
stdenv.mkDerivation (finalAttrs: {
- pname = "wesnoth";
- version = "1.18.5";
+ pname = "wesnoth${suffix}";
+ version = if enableDevel then "1.19.16.1" else "1.18.5";
src = fetchFromGitHub {
owner = "wesnoth";
repo = "wesnoth";
tag = finalAttrs.version;
- hash = "sha256-0VZJAmaCg12x4S07H1kl5s2NGMEo/NSVnzMniREmPJk=";
+ hash =
+ if enableDevel then
+ "sha256-ekpyQnP5r3jl98qyNkO6SwUGc9qvz2OTidUu0k3m28c="
+ else
+ "sha256-0VZJAmaCg12x4S07H1kl5s2NGMEo/NSVnzMniREmPJk=";
};
nativeBuildInputs = [
@@ -73,10 +79,31 @@ stdenv.mkDerivation (finalAttrs: {
cmakeFlags = [
"-DENABLE_SYSTEM_LUA=ON"
+ "-DBINARY_SUFFIX=${suffix}"
];
+ postPatch = lib.optionalString (suffix != "") ''
+ mv packaging/org.wesnoth.Wesnoth.desktop packaging/org.wesnoth.Wesnoth${suffix}.desktop
+ mv packaging/org.wesnoth.Wesnoth.appdata.xml packaging/org.wesnoth.Wesnoth${suffix}.appdata.xml
+
+ substituteInPlace packaging/org.wesnoth.Wesnoth${suffix}.desktop \
+ --replace-fail "Name=Battle for Wesnoth" "Name=Battle for Wesnoth${suffix}" \
+ --replace-fail "Exec=sh -c \"wesnoth >/dev/null 2>&1\"" "Exec=sh -c \"wesnoth${suffix} >/dev/null 2>&1\"" \
+ --replace-fail "Exec=sh -c \"wesnoth -e >/dev/null 2>&1\"" "Exec=sh -c \"wesnoth${suffix} -e >/dev/null 2>&1\""
+
+ substituteInPlace packaging/org.wesnoth.Wesnoth${suffix}.appdata.xml \
+ --replace-fail "Battle for Wesnoth" "Battle for Wesnoth${suffix}" \
+ --replace-fail "org.wesnoth.Wesnoth" "org.wesnoth.Wesnoth${suffix}" \
+ --replace-fail "wesnoth" "wesnoth${suffix}" \
+ --replace-fail "wesnothd" "wesnothd${suffix}"
+
+ substituteInPlace CMakeLists.txt \
+ --replace-fail "org.wesnoth.Wesnoth.desktop" "org.wesnoth.Wesnoth${suffix}.desktop" \
+ --replace-fail "org.wesnoth.Wesnoth.appdata.xml" "org.wesnoth.Wesnoth${suffix}.appdata.xml"
+ '';
+
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
- app_name="The Battle for Wesnoth"
+ app_name="The Battle for Wesnoth${suffix}"
app_bundle="$out/Applications/$app_name.app"
app_contents="$app_bundle/Contents"
mkdir -p "$app_contents"
@@ -85,8 +112,8 @@ stdenv.mkDerivation (finalAttrs: {
mv $out/share/wesnoth "$app_contents/Resources"
pushd ../projectfiles/Xcode
substitute Info.plist "$app_contents/Info.plist" \
- --replace-fail ''\'''${EXECUTABLE_NAME}' wesnoth \
- --replace-fail '$(PRODUCT_BUNDLE_IDENTIFIER)' org.wesnoth.Wesnoth \
+ --replace-fail ''\'''${EXECUTABLE_NAME}' wesnoth${suffix} \
+ --replace-fail '$(PRODUCT_BUNDLE_IDENTIFIER)' org.wesnoth.Wesnoth${suffix} \
--replace-fail ''\'''${PRODUCT_NAME}' "$app_name"
cp -r Resources/SDLMain.nib "$app_contents/Resources/"
install -m0644 Resources/{container-migration.plist,icon.icns} "$app_contents/Resources"
@@ -94,22 +121,27 @@ stdenv.mkDerivation (finalAttrs: {
# Make the game and dedicated server binary available for shell users
mkdir -p "$out/bin"
- ln -s "$app_contents/MacOS/wesnothd" "$out/bin/wesnothd"
+ ln -s "$app_contents/MacOS/wesnothd${suffix}" "$out/bin/wesnothd${suffix}"
# Symlinking the game binary is unsifficient as it would be unable to
# find the bundle resources
- cat << EOF > "$out/bin/wesnoth"
+ cat << EOF > "$out/bin/wesnoth${suffix}"
#!${stdenvNoCC.shell}
open -na "$app_bundle" --args "\$@"
EOF
- chmod +x "$out/bin/wesnoth"
+ chmod +x "$out/bin/wesnoth${suffix}"
'';
passthru.updateScript = nix-update-script {
extraArgs = [
"--version-regex"
- # the minor release number also denotes if this is a beta release:
- # even is stable, odd is beta
- "^(\\d+\\.\\d*[02468]\\.\\d+)$"
+ (
+ if enableDevel then
+ # Devel matches odd minor release numbers
+ "^(\\d+\\.\\d*[13579]\\.\\d+.*)$"
+ else
+ # Stable matches even minor release numbers
+ "^(\\d+\\.\\d*[02468]\\.\\d+)$"
+ )
];
};
@@ -131,6 +163,6 @@ stdenv.mkDerivation (finalAttrs: {
iedame
];
platforms = lib.platforms.unix;
- mainProgram = "wesnoth";
+ mainProgram = "wesnoth${suffix}";
};
})
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 9266d2b415ba..92507e74b307 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -13645,6 +13645,8 @@ with pkgs;
warsow = callPackage ../games/warsow { };
+ wesnoth-devel = callPackage ../by-name/we/wesnoth/package.nix { enableDevel = true; };
+
inherit (callPackage ../games/xonotic { })
xonotic-data
xonotic