Implement researched Guix package outcome for #74: [Guix packaging] Marenz/notion-river #624
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tay/guix-channel#624
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?
Context
This delivery ticket was created from research issue #74 ([Guix packaging] Marenz/notion-river).
The host-validated research finding follows:
Implementation-ready delivery brief. Canonical upstream is https://github.com/Marenz/notion-river at fixed parent commit e79dea34c3f32987c42e338db6a5c341bce0af23, fetched as https://codeload.github.com/Marenz/notion-river/tar.gz/e79dea34c3f32987c42e338db6a5c341bce0af23 with Guix base32 hash 1lllgc5nf5gz0qhqiga17rlxrw73jjq4ba09d7k8lirjps1dyin. The nearest upstream tag is v0.6.0 and git describe is v0.6.0-14-ge79dea3; use a Guix revision version such as 0.6.0-14.ge79dea3, while recording that Cargo.toml and the --version path at this commit still report 0.5.3. The parent LICENSE at the fixed commit is the standard MIT grant for Marenz. The five checked-in protocol XML origins used to generate bindings are independently covered: river-layer-shell-v1.xml, river-window-management-v1.xml, and river-xkb-bindings-v1.xml each carry an explicit SPDX MIT notice; viewporter.xml carries Collabora's explicit MIT grant; and wlr-output-management-unstable-v1.xml carries an explicit permissive grant to use, copy, modify, distribute, and sell with attribution and no-endorsement/no-warranty terms, which must be preserved. Cargo.lock at the fixed parent commit contains 107 external packages, all registry sources with exact versions, checksums, and no git/path dependencies; every exact name/version was checked against its crates.io API record, the API checksum matched Cargo.lock, and every record had nonempty license or license_file evidence. The license expressions observed were Unlicense OR MIT (5), MIT OR Apache-2.0 (60), MIT/Apache-2.0 (3), MIT (26), Apache-2.0 OR MIT (6), Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT (3), MPL-2.0 (1), Apache-2.0 WITH LLVM-exception (1), (MIT OR Apache-2.0) AND Unicode-3.0 (1), and MIT OR Apache-2.0 OR Zlib (1), so the fixed crate origins have explicit redistribution evidence. The parent has one separate git submodule origin, https://codeberg.org/river/river.git, at exact gitlink revision edbfbe1dbe14f9c3c5f14ff30ace26162912e1dc; that exact revision contains LICENSES/MIT.txt, LICENSES/GPL-3.0-only.txt, LICENSES/0BSD.txt, and LICENSES/CC-BY-SA-4.0.txt, and its README/build metadata explicitly identify River source as GPL-3.0-only, Wayland protocols as MIT, and logo/docs as CC-BY-SA-4.0. The submodule is not required by notion-river's Cargo build: the parent uses only its checked-in protocol XML files and has no vendor, git, or path crate dependency. Use a nonrecursive fixed parent source and do not fetch, build, or install the River submodule; if that policy changes, its separate licensing and all of its pinned Zig dependency origins require a new review. No equivalent installed helper package exists in the inspected local channel or the checked GNU Guix-related channels: the local marenz-notion-river-source is only a copy-build-system source snapshot at this commit, and the existing river package is a different compositor at 0.3.12, below upstream's River 0.4.x runtime requirement. Add a package in the channel's normal package module, e.g. tay/packages/notion-river.scm, using cargo-build-system and the exact parent origin, with all 107 fixed crate archives as cargo inputs so the build is offline and reproducible. Use the channel's rust-1.93-compatible compiler, preserve the upstream Cargo.lock through configure, build with --release --locked, test with --locked, and set install-source? to false. Use pkg-config as a native input and cairo, pango, freetype, libxkbcommon, and wayland as target inputs for the cairo-rs/pango/pangocairo/xkbcommon/Wayland system libraries; do not add wlroots, Zig, or River as package build inputs. Install both target/release/notion-river and target/release/notion-ctl. Install notion-river-session and the desktop file as session integration, patch the desktop Exec from /usr/bin/notion-river-session to the store path, patch the session script's hardcoded $HOME/.config checks to honor XDG_CONFIG_HOME, and patch config-examples/river-init's /usr/share/notion-river/examples reference to the store share path. Ship configuration/examples/docs under the store share directory; keep optional foot, waybar, rofi, wdisplays, systemctl, and similar user tools out of hard runtime inputs. The installed helper connects to the user's Wayland display, requires River protocol globals river_window_manager_v1 version at least 4 and river_xkb_bindings_v1 version at least 2, reads config and state below XDG_CONFIG_HOME/notion-river (with the upstream fallback), and creates notion-river.sock and notion-river-workspaces below XDG_RUNTIME_DIR (with the upstream fallback); the session wrapper must invoke a separately supplied compatible river executable by PATH and default to river -c notion-river. Acceptance must include guix lint -L. notion-river and guix build -L. notion-river after implementation, with no current package proof claimed because the local Guix daemon socket is unavailable. In the build/test environment run cargo test --locked with private XDG_RUNTIME_DIR and XDG_CONFIG_HOME. Then run installed notion-river --version and require notion-river 0.5.3, run notion-ctl with no arguments and require usage plus exit status 2, validate a valid and invalid private config, and perform an isolated nested Wayland smoke using a pre-provisioned River >=0.4.7 binary rather than the incompatible in-channel river 0.3.12: start River with private XDG directories and a temporary init, launch notion-river and a simple Wayland client such as foot, assert the connection log, private notion-river.sock and notion-river-workspaces, query notion-ctl list-workspaces and list-windows and validate the returned JSON/window, then SIGTERM notion-river and assert the private state file is written and no live user/repository socket was touched. This proves the protocol handshake, runtime paths, IPC, and shutdown persistence without bundling or fetching the separate compositor.
Acceptance criteria
Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-26T09:18:14Z.
Completed and verified through the Guix package quality gates. Evidence: source-count inventory passed; offline Guix lint passed (with only unrelated optional Nonguix module warnings); fresh source build and
guix build --checksucceeded; Cargo ran 82 upstream tests; the isolated HOME/XDG smoke test verified the session wrapper, IPC-path behavior, notices, and no output/store writes.Imported from GitHub comment. Originally posted by htayj on 2026-08-26T23:04:22Z.