[Guix packaging] NetHack Fourk #454
Labels
No labels
accessibility
bug
category:ai-tool
category:browser
category:command-line-tool
category:compiler-toolchain
category:desktop-application
category:developer-tool
category:editor-extension
category:emulator
category:font
category:game
category:input-accessibility
category:library-framework
category:mud-client
category:multimedia
category:networking-client
category:programming-language
category:roguelike
category:storage-media-tool
category:system-tool
category:terminal-application
complexity:high
complexity:low
complexity:medium
difficulty:blocked
difficulty:easy
difficulty:hard
difficulty:moderate
documentation
duplicate
enhancement
good first issue
gooflow:guix-package-high
gooflow:guix-package-moderate
gooflow:guix-package-quality-gates
gooflow:guix-research-disposition
gooflow:guix-runtime-evidence-refresh
help wanted
invalid
kind:disposition
kind:packaging
needs:license-investigation
priority:quick
question
ready-for-agent
state:available-elsewhere
state:blocked
state:deferred
state:out-of-scope
state:ready
state:research
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tay/guix-channel#454
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Candidate
Scope
Package the independently playable roguelike variant 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
Acceptance checks
guix lint -L . <package>has no package-specific findings.guix build -L . --no-grafts <package>succeeds without network access or opaque binaries.guix build -L . --no-grafts --check <package>verifies reproducibility.Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-24T17:32:09Z.
Goocastle recorded disposition: implementation-ready.
Created implementation ticket: #708.
Package the console-only NetHack Fourk variant as Guix package nhfourk in tay/packages/nhfourk.scm. Canonical maintained upstream is https://github.com/tsadok/nhfourk; use the latest stable release tag v4.3.0.4 at immutable commit b8d1029efb9225638b6cb0041e2187a74dabf4c0, not the newer untagged master tip 479383a1d05d54b2dfda5cfaab4ca5147aefa7e5. The GitHub v4.3.0.4 source archive has SHA-256 f12109456daea57d92fb2194a1401eb109969be21c44c6accd9c5f968befa12f and contains no .gitmodules or separately fetched origin. Upstream README, COPYING, and copyright at that revision establish NGPL for the game, data, documentation, console text tiles, maps, and fonts; libuncursed and libnethack_client permit NGPL or GPL-2+; bundled libjansson is Expat; savemap.pl is Expat; aimake is GPL-3+ build-only; aimake.rules is NGPL. Optional raster assets have explicit CC-BY-3.0, CC-BY-SA-3.0, RLTiles-attribution, or geoduck terms, but exclude them by building with --without=gui; do not install SDL2/libpng GUI, server/PostgreSQL/inetd, optional raster tiles, or any runtime-downloaded content. Install the upstream libnethack/dat/license, COPYING, and copyright as license/notice files, with copyright-details covering the shipped closure. Build offline from the release archive with the upstream Perl aimake system in an out-of-source Guix phase, selecting --without=gui and --without=server and the bundled Jansson; expected native inputs are perl, bison, flex, and the C/C++ toolchain, with zlib as the library input. The checked-in testbench exists but is not wired as a default aimake test target; run any directly buildable testbench target if exposed, otherwise retain the package smoke test as the deterministic acceptance test. Install the real console binary under libexec and a Guix launcher as /bin/nhfourk. Normal launches must copy/link immutable data into ${XDG_STATE_HOME:-$HOME/.local/state}/nhfourk and invoke the real binary with -H there, so saves, scores, locks, and dumps never target the store; the --guix-smoke wrapper mode must instead use a fresh mktemp directory, a fixed TERM/size, a PTY helper, and no network. That mode should launch a real local new game with fixed -u/-p/-r selections, make a movement, save, return to the menu, load the save, assert the save artifact stayed in the isolated directory and the store is unchanged, and print the single-line marker nhfourk isolated smoke passed; capture the resulting PTY screen at .goocastle/evidence/issue-454.png. No equivalent nhfourk package or same-upstream delivery exists in the local channel; acehack, dhack, dnethack, grunthack, hack, and hackem are distinct projects. Acceptance is guix lint -L . nhfourk clean, guix build -L . --no-grafts nhfourk offline, upstream checks where available, and guix build -L . --no-grafts --check nhfourk plus the fresh-HOME/XDG wrapper smoke with no store writes.
Imported from GitHub comment. Originally posted by htayj on 2026-09-11T11:29:48Z.
Blocked by explicit user decision: keep full-original Fourk packaging open pending a clear free-software grant for default Geoduck assets. Pinned source geoduck.map permits unmodified redistribution and personal Jonadab modifications, not general modification rights. Canonical http://www.geoduckthings.net/nhack/nhack.html (updated2026-04-13, retrieved2026-10-01) likewise grants credited redistribution only. No asset silently removed/replaced, no FSDG compatibility claimed. Dedicated recipe/helpers remain unpublished and unverified; no build/runtime or closure. Resume requires broader primary-source licensing permission or a new user-approved asset disposition.