diff --git a/pkgs/development/libraries/allegro/5.nix b/pkgs/development/libraries/allegro/5.nix index 5cd6584f18f..380cc1f7198 100644 --- a/pkgs/development/libraries/allegro/5.nix +++ b/pkgs/development/libraries/allegro/5.nix @@ -3,7 +3,7 @@ , libXxf86dga, libXxf86misc , libXxf86vm, openal, libGLU, libGL, libjpeg, flac , libXi, libXfixes, freetype, libopus, libtheora -, physfs, enet, pkg-config, gtk2, pcre, libpulseaudio, libpthreadstubs +, physfs, enet, pkg-config, gtk3, pcre, libpulseaudio, libpthreadstubs , libXdmcp }: @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { libXxf86vm openal libGLU libGL libjpeg flac libXi libXfixes - enet libtheora freetype physfs libopus pkg-config gtk2 pcre libXdmcp + enet libtheora freetype physfs libopus pkg-config gtk3 pcre libXdmcp libpulseaudio libpthreadstubs ]; diff --git a/pkgs/games/liberation-circuit/default.nix b/pkgs/games/liberation-circuit/default.nix new file mode 100644 index 00000000000..478fd606376 --- /dev/null +++ b/pkgs/games/liberation-circuit/default.nix @@ -0,0 +1,71 @@ +{ stdenv, lib, fetchFromGitHub, fetchurl, cmake, git, makeWrapper, allegro5, libGL }: + +stdenv.mkDerivation rec { + pname = "liberation-circuit"; + version = "1.3"; + + src = fetchFromGitHub { + owner = "linleyh"; + repo = pname; + rev = "v${version}"; + sha256 = "BAv0wEJw4pK77jV+1bWPHeqyU/u0HtZLBF3ETUoQEAk="; + }; + + patches = [ + # Linux packaging assets + (fetchurl { + url = "https://github.com/linleyh/liberation-circuit/commit/72c1f6f4100bd227540aca14a535e7f4ebdeb851.patch"; + sha256 = "0sad1z1lls0hanv88g1q6x5qr4s8f5p42s8j8v55bmwsdc0s5qys"; + }) + ]; + + # Hack to make binary diffs work + prePatch = '' + function patch { + git apply --whitespace=nowarn "$@" + } + ''; + + postPatch = '' + unset -f patch + substituteInPlace bin/launcher.sh --replace ./libcirc ./liberation-circuit + ''; + + nativeBuildInputs = [ cmake git makeWrapper ]; + buildInputs = [ allegro5 libGL ]; + + cmakeFlags = [ + "-DALLEGRO_LIBRARY=${lib.getDev allegro5}" + "-DALLEGRO_INCLUDE_DIR=${lib.getDev allegro5}/include" + ]; + + NIX_CFLAGS_LINK = "-lallegro_image -lallegro_primitives -lallegro_color -lallegro_acodec -lallegro_audio -lallegro_dialog -lallegro_font -lallegro_main -lallegro -lm"; + hardeningDisable = [ "format" ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/opt + cd .. + cp -r bin $out/opt/liberation-circuit + chmod +x $out/opt/liberation-circuit/launcher.sh + makeWrapper $out/opt/liberation-circuit/launcher.sh $out/bin/liberation-circuit + + install -D linux-packaging/liberation-circuit.desktop $out/share/applications/liberation-circuit.desktop + install -D linux-packaging/liberation-circuit.appdata.xml $out/share/metainfo/liberation-circuit.appdata.xml + install -D linux-packaging/icon-256px.png $out/share/pixmaps/liberation-circuit.png + + runHook postInstall + ''; + + meta = with lib; { + description = "Real-time strategy game with programmable units"; + longDescription = '' + Escape from a hostile computer system! Harvest data to create an armada of battle-processes to aid your escape! Take command directly and play the game as an RTS, or use the game's built-in editor and compiler to write your own unit AI in a simplified version of C. + ''; + homepage = "https://linleyh.itch.io/liberation-circuit"; + maintainers = with maintainers; [ angustrau ]; + license = licenses.gpl3Only; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f9de8b6ea03..93d8820d823 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -29428,6 +29428,8 @@ with pkgs; liberal-crime-squad = callPackage ../games/liberal-crime-squad { }; + liberation-circuit = callPackage ../games/liberation-circuit { }; + lincity = callPackage ../games/lincity {}; lincity_ng = callPackage ../games/lincity/ng.nix {