working game, needs some touch up
This commit is contained in:
89
package.nix
Normal file
89
package.nix
Normal file
@@ -0,0 +1,89 @@
|
||||
{
|
||||
lib,
|
||||
python3Packages,
|
||||
gtk4,
|
||||
gobject-introspection,
|
||||
wrapGAppsHook4,
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "shikaku";
|
||||
version = "0.1.0";
|
||||
pyproject = false;
|
||||
|
||||
src = ./.;
|
||||
|
||||
nativeBuildInputs = [
|
||||
gobject-introspection
|
||||
wrapGAppsHook4
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk4
|
||||
];
|
||||
|
||||
dependencies = with python3Packages; [
|
||||
pygobject3
|
||||
];
|
||||
|
||||
# Pure Python — nothing to compile
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm755 shikaku.py $out/share/shikaku/shikaku.py
|
||||
|
||||
# Wrapper script so wrapGAppsHook4 can inject GDK/GI env vars
|
||||
mkdir -p $out/bin
|
||||
cat > $out/bin/shikaku << EOF
|
||||
#!${python3Packages.python.interpreter}
|
||||
import sys
|
||||
sys.path.insert(0, "$out/share/shikaku")
|
||||
import shikaku
|
||||
shikaku.main()
|
||||
EOF
|
||||
chmod +x $out/bin/shikaku
|
||||
|
||||
# Desktop entry for app launchers (GNOME, KDE, etc.)
|
||||
install -Dm644 /dev/stdin $out/share/applications/shikaku.desktop << EOF
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Name=Shikaku
|
||||
Comment=Rectangle partition logic puzzle
|
||||
Exec=shikaku
|
||||
Icon=applications-games
|
||||
Terminal=false
|
||||
Categories=Game;LogicGame;BoardGame;
|
||||
Keywords=puzzle;shikaku;logic;grid;rectangle;
|
||||
EOF
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
# wrapGAppsHook4 handles GDK_PIXBUF_MODULE_FILE, XDG_DATA_DIRS, GI_TYPELIB_PATH, etc.
|
||||
# but it expects to wrap a binary. Point it at our wrapper script.
|
||||
dontWrapGApps = false;
|
||||
|
||||
passthru.tests.shikaku-starts = python3Packages.pytestCheckHook;
|
||||
|
||||
meta = {
|
||||
description = "Rectangle partition logic puzzle (Shikaku)";
|
||||
longDescription = ''
|
||||
Shikaku is a logic puzzle where you partition a grid into non-overlapping
|
||||
rectangles. Each rectangle must contain exactly one number, and that number
|
||||
equals the area of the rectangle in cells. Puzzles are procedurally generated
|
||||
and guaranteed to be solvable. Supports 5×5 and 7×7 grids, with larger sizes
|
||||
planned. Built with Python and GTK4; plays fully offline.
|
||||
'';
|
||||
homepage = "https://github.com/your-github-username/shikaku"; # TODO
|
||||
# changelog = "https://github.com/your-github-username/shikaku/blob/v${version}/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [
|
||||
# your-nixpkgs-handle # TODO: add yourself to maintainers/maintainer-list.nix first
|
||||
];
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "shikaku";
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user