[Guix packaging] NitroHack #456

Closed
opened 2026-08-24 17:32:12 +00:00 by htayj · 2 comments
htayj commented 2026-08-24 17:32:12 +00:00 (Migrated from github.com)

Candidate

  • Project: NitroHack
  • Candidate upstream/homepage: http://nitrohack.org/
  • Discovery evidence: IRLDb
  • Reported license: NetHack GPL
  • License status: reported free license; verify exact terms and asset coverage against the pinned upstream source
  • Catalog note: IRLDb status: stable.

Scope

Package the independently playable roguelike from source. The canonical repository, latest stable release, source hash, complete dependency closure, and relationship to parent games or sibling forks must be established before implementation. Do not substitute an opaque prebuilt binary.

Research checklist

  • Identify the canonical maintained source repository and immutable release/commit.
  • Verify the exact FOSS license for code and every installed font, tile, sound, map, documentation, and bundled dependency.
  • Check GNU Guix and the channel audit set for an equivalent same-upstream package.
  • Determine the offline build system and source closure, including submodules or language registries.
  • Identify updater, telemetry, runtime download, mutable-state, and network behavior that needs Guix integration.

Acceptance checks

  • guix lint -L . <package> has no package-specific findings.
  • guix build -L . --no-grafts <package> succeeds without network access or opaque binaries.
  • Upstream tests run where available, and guix build -L . --no-grafts --check <package> verifies reproducibility.
  • A fresh HOME/XDG smoke test starts a real local game, exercises meaningful gameplay or save/load behavior, and proves no store writes.
  • Installed license and third-party notices cover the shipped closure and assets.

Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-24T17:32:12Z.

## Candidate - Project: NitroHack - Candidate upstream/homepage: http://nitrohack.org/ - Discovery evidence: [IRLDb](https://forums.roguetemple.com/irldb/index.php?i=47e013c) - Reported license: NetHack [[GPL]] - License status: reported free license; verify exact terms and asset coverage against the pinned upstream source - Catalog note: IRLDb status: stable. ## Scope Package the independently playable roguelike from source. The canonical repository, latest stable release, source hash, complete dependency closure, and relationship to parent games or sibling forks must be established before implementation. Do not substitute an opaque prebuilt binary. ## Research checklist - Identify the canonical maintained source repository and immutable release/commit. - Verify the exact FOSS license for code and every installed font, tile, sound, map, documentation, and bundled dependency. - Check GNU Guix and the channel audit set for an equivalent same-upstream package. - Determine the offline build system and source closure, including submodules or language registries. - Identify updater, telemetry, runtime download, mutable-state, and network behavior that needs Guix integration. ## Acceptance checks - `guix lint -L . <package>` has no package-specific findings. - `guix build -L . --no-grafts <package>` succeeds without network access or opaque binaries. - Upstream tests run where available, and `guix build -L . --no-grafts --check <package>` verifies reproducibility. - A fresh HOME/XDG smoke test starts a real local game, exercises meaningful gameplay or save/load behavior, and proves no store writes. - Installed license and third-party notices cover the shipped closure and assets. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/456). Originally posted by [htayj](https://github.com/htayj) on 2026-08-24T17:32:12Z.
htayj commented 2026-09-11 13:23:57 +00:00 (Migrated from github.com)

Goocastle recorded disposition: implementation-ready.

Created implementation ticket: #709.

Implementation-ready delivery brief for new package nitrohack. No same-upstream NitroHack package or reference exists in the local channel; dnethack, grunthack, and other NetHack variants are distinct projects. Canonical upstream is the archived https://github.com/DanielT/NitroHack repository, default branch master, latest immutable tag 4.0.4 at commit 21b9774b24efbdafdd20e152f9b1e5ed2a7b4150 (no GitHub release). Fetch https://github.com/DanielT/NitroHack/archive/21b9774b24efbdafdd20e152f9b1e5ed2a7b4150.tar.gz; observed SHA-256 is 5db7e86e88ef3ac03a10cfe29738e4c45ab24be2ed552ebf8c71d6d11034682d. The fixed tree has no Git submodules or font, tile, sound, or other binary asset origins; code, maps, generated nhdat, and documentation come from this one origin. libnitrohack/dat/license at that revision is the NitroHack/NetHack General Public License, granting copy, modification, source, and redistribution rights with copyleft conditions; dist/debian/copyright records Daniel Thaler and the NetHack Devteam. Install that license plus README, doc/Guidebook.txt, and the Debian copyright/notice. Build metadata is top-level CMake plus libnitrohack/util/CMakeLists.txt: generated parsers require bison and flex; libnitrohack_client links jansson; the curses UI links ncursesw. Use cmake-build-system or equivalent with cmake, gcc-toolchain, bison, flex, jansson, and ncurses inputs; pass -DENABLE_SERVER=OFF to omit the optional PostgreSQL network server and set BINDIR, LIBDIR, DATADIR, and SHELLDIR to store output paths. No upstream test target was found, so set package tests accordingly and rely on the runtime proof. Package module is tay/packages/nitrohack.scm and package name is nitrohack. The README/source show local curses play, configuration/save/log state under XDG_CONFIG_HOME/NitroHack or HOME/.config/NitroHack, and no updater, telemetry, or runtime download; network client/server code exists, so the wrapper smoke must remain local. Wrap the real binary, keep normal argv forwarding, and add exact nitrohack --guix-smoke: use the channel's existing util-linux script/PTY pattern with -@ -u goocastle-smoke to start a fresh local game, perform deterministic movement, save/quit, relaunch, load the save, quit, assert gameplay-title and restored-game text, assert all mutable files stay below fresh XDG/HOME and the store is untouched, then print exactly one stdout line: nitrohack guix smoke passed. Install nhdat, license, README/Guidebook, and copyright notices in the output. This research phase had no Guix daemon, so no build, lint, or reproducibility proof is claimed. Acceptance is guix lint -L . nitrohack; daemon-backed guix build -L . --no-grafts nitrohack and --check; source/license notice checks; and the fresh HOME/XDG smoke with screenshot .goocastle/evidence/issue-456.png.


Imported from GitHub comment. Originally posted by htayj on 2026-09-11T13:23:57Z.

<!-- goocastle-disposition:sequential-reviewer:456:1:implementation-ready --> Goocastle recorded disposition: implementation-ready. Created implementation ticket: #709. Implementation-ready delivery brief for new package nitrohack. No same-upstream NitroHack package or reference exists in the local channel; dnethack, grunthack, and other NetHack variants are distinct projects. Canonical upstream is the archived https://github.com/DanielT/NitroHack repository, default branch master, latest immutable tag 4.0.4 at commit 21b9774b24efbdafdd20e152f9b1e5ed2a7b4150 (no GitHub release). Fetch https://github.com/DanielT/NitroHack/archive/21b9774b24efbdafdd20e152f9b1e5ed2a7b4150.tar.gz; observed SHA-256 is 5db7e86e88ef3ac03a10cfe29738e4c45ab24be2ed552ebf8c71d6d11034682d. The fixed tree has no Git submodules or font, tile, sound, or other binary asset origins; code, maps, generated nhdat, and documentation come from this one origin. libnitrohack/dat/license at that revision is the NitroHack/NetHack General Public License, granting copy, modification, source, and redistribution rights with copyleft conditions; dist/debian/copyright records Daniel Thaler and the NetHack Devteam. Install that license plus README, doc/Guidebook.txt, and the Debian copyright/notice. Build metadata is top-level CMake plus libnitrohack/util/CMakeLists.txt: generated parsers require bison and flex; libnitrohack_client links jansson; the curses UI links ncursesw. Use cmake-build-system or equivalent with cmake, gcc-toolchain, bison, flex, jansson, and ncurses inputs; pass -DENABLE_SERVER=OFF to omit the optional PostgreSQL network server and set BINDIR, LIBDIR, DATADIR, and SHELLDIR to store output paths. No upstream test target was found, so set package tests accordingly and rely on the runtime proof. Package module is tay/packages/nitrohack.scm and package name is nitrohack. The README/source show local curses play, configuration/save/log state under XDG_CONFIG_HOME/NitroHack or HOME/.config/NitroHack, and no updater, telemetry, or runtime download; network client/server code exists, so the wrapper smoke must remain local. Wrap the real binary, keep normal argv forwarding, and add exact nitrohack --guix-smoke: use the channel's existing util-linux script/PTY pattern with -@ -u goocastle-smoke to start a fresh local game, perform deterministic movement, save/quit, relaunch, load the save, quit, assert gameplay-title and restored-game text, assert all mutable files stay below fresh XDG/HOME and the store is untouched, then print exactly one stdout line: nitrohack guix smoke passed. Install nhdat, license, README/Guidebook, and copyright notices in the output. This research phase had no Guix daemon, so no build, lint, or reproducibility proof is claimed. Acceptance is guix lint -L . nitrohack; daemon-backed guix build -L . --no-grafts nitrohack and --check; source/license notice checks; and the fresh HOME/XDG smoke with screenshot .goocastle/evidence/issue-456.png. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/456#issuecomment-5635079176). Originally posted by [htayj](https://github.com/htayj) on 2026-09-11T13:23:57Z.
Owner

Published signed/authenticated d1dfab4b13. NitroHack exact git-pinned native package: local daemon build, reproducibility --check, offline package lint and integrated make check-source-count check-grunthack check-nitrohack passed. Removed shipped --guix-smoke branches and Goocastle dependencies/contracts; standalone test drives three actual processes with real movement/search turns, full inventory, native save/exit, exact HUD/map/position/stats/turn/inventory restoration and further gameplay/resave. PrivateHOME/XDG and verified network/mount/PID namespaces, readonlystore, unchanged NAR 06fb6wmwfcjnibjari0565aj1j6hjzz166h9r4v0hk2zvapdi1nj. Evidence /tmp/omp-nitrohack-final; actual native terminal screenshot .goocastle/evidence/issue-456.png rendered in matching geometry and inspected. No upstream test suite exists; runtime proof is independent. No userprofile deployment; unrelated staged Fourk warning remains. NitroHack retains network client; optional PostgreSQL server omitted per explicit original456brief. Exercised localcurses only, remoteprotocol untested. Same-file saved-game continuity, screenshotHP15/16T9; renamedNGPL notices retained.

Published signed/authenticated d1dfab4b13af55cd5beb5663081b54ce39cae91a. NitroHack exact git-pinned native package: local daemon build, reproducibility --check, offline package lint and integrated make check-source-count check-grunthack check-nitrohack passed. Removed shipped --guix-smoke branches and Goocastle dependencies/contracts; standalone test drives three actual processes with real movement/search turns, full inventory, native save/exit, exact HUD/map/position/stats/turn/inventory restoration and further gameplay/resave. PrivateHOME/XDG and verified network/mount/PID namespaces, readonlystore, unchanged NAR 06fb6wmwfcjnibjari0565aj1j6hjzz166h9r4v0hk2zvapdi1nj. Evidence /tmp/omp-nitrohack-final; actual native terminal screenshot .goocastle/evidence/issue-456.png rendered in matching geometry and inspected. No upstream test suite exists; runtime proof is independent. No userprofile deployment; unrelated staged Fourk warning remains. NitroHack retains network client; optional PostgreSQL server omitted per explicit original456brief. Exercised localcurses only, remoteprotocol untested. Same-file saved-game continuity, screenshotHP15/16T9; renamedNGPL notices retained.
tay closed this issue 2026-10-02 17:35:33 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tay/guix-channel#456
No description provided.