[Guix packaging] Marenz/notion-river #74
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#74
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
e79dea34c3f32987c42e338db6a5c341bce0af23(default-branch snapshot checked 2026-08-14)Scope and blockers
Install the compositor configuration/helper as a user desktop component only.
Acceptance checks
guix lint -L. <package-name>andguix build -L. <package-name>pass once a package definition exists.Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:17:02Z.
Goocastle recorded disposition: implementation-ready.
Created implementation ticket: #624.
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.
Imported from GitHub comment. Originally posted by htayj on 2026-08-26T09:18:19Z.