diff options
Diffstat (limited to 'nixpkgs/pkgs/games/sgt-puzzles/default.nix')
-rw-r--r-- | nixpkgs/pkgs/games/sgt-puzzles/default.nix | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/sgt-puzzles/default.nix b/nixpkgs/pkgs/games/sgt-puzzles/default.nix new file mode 100644 index 000000000000..bd56416c5918 --- /dev/null +++ b/nixpkgs/pkgs/games/sgt-puzzles/default.nix @@ -0,0 +1,82 @@ +{ lib, stdenv, fetchurl, desktop-file-utils +, gtk3, libX11, cmake, imagemagick +, pkg-config, perl, wrapGAppsHook, nixosTests, writeScript +, isMobile ? false +}: + +stdenv.mkDerivation rec { + pname = "sgt-puzzles"; + version = "20240302.80aac31"; + + src = fetchurl { + url = "http://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles-${version}.tar.gz"; + hash = "sha256-0+bmGq4wM+0/ldQz8ieKdkuG0HHazctQr9ul/qLT0gg="; + }; + + sgt-puzzles-menu = fetchurl { + url = "https://raw.githubusercontent.com/gentoo/gentoo/720e614d0107e86fc1e520bac17726578186843d/games-puzzle/sgt-puzzles/files/sgt-puzzles.menu"; + sha256 = "088w0x9g3j8pn725ix8ny8knhdsfgjr3hpswsh9fvfkz5vlg2xkm"; + }; + + nativeBuildInputs = [ + cmake + desktop-file-utils + imagemagick + perl + pkg-config + wrapGAppsHook + ]; + + env.NIX_CFLAGS_COMPILE = lib.optionalString isMobile "-DSTYLUS_BASED"; + + buildInputs = [ gtk3 libX11 ]; + + postInstall = '' + for i in $(basename -s $out/bin/*); do + + ln -s $out/bin/$i $out/bin/sgt-puzzle-$i + install -Dm644 icons/$i-96d24.png -t $out/share/icons/hicolor/96x96/apps/ + + # Generate/validate/install .desktop files. + echo "[Desktop Entry]" > $i.desktop + desktop-file-install --dir $out/share/applications \ + --set-key Type --set-value Application \ + --set-key Exec --set-value $i \ + --set-key Name --set-value $i \ + --set-key Comment --set-value "${meta.description}" \ + --set-key Categories --set-value "Game;LogicGame;X-sgt-puzzles;" \ + --set-key Icon --set-value $out/share/icons/hicolor/96x96/apps/$i-96d24.png \ + $i.desktop + done + + echo "[Desktop Entry]" > sgt-puzzles.directory + desktop-file-install --dir $out/share/desktop-directories \ + --set-key Type --set-value Directory \ + --set-key Name --set-value Puzzles \ + --set-key Icon --set-value $out/share/icons/hicolor/48x48/apps/sgt-puzzles_map \ + sgt-puzzles.directory + + install -Dm644 ${sgt-puzzles-menu} -t $out/etc/xdg/menus/applications-merged/ + ''; + + passthru = { + tests.sgt-puzzles = nixosTests.sgt-puzzles; + updateScript = writeScript "update-sgt-puzzles" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p curl pcre common-updater-scripts + + set -eu -o pipefail + + version="$(curl -sI 'https://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles.tar.gz' | grep -Fi Location: | pcregrep -o1 'puzzles-([0-9a-f.]*).tar.gz')" + update-source-version sgt-puzzles "$version" + ''; + }; + + meta = with lib; { + description = "Simon Tatham's portable puzzle collection"; + license = licenses.mit; + maintainers = with maintainers; [ raskin tomfitzhenry ]; + platforms = platforms.linux; + homepage = "https://www.chiark.greenend.org.uk/~sgtatham/puzzles/"; + }; +} |