[Guix packaging] sezanzeb/input-remapper #162

Closed
opened 2026-08-14 13:18:06 +00:00 by htayj · 2 comments
htayj commented 2026-08-14 13:18:06 +00:00 (Migrated from github.com)

Candidate

  • Upstream canonical URL: https://github.com/sezanzeb/input-remapper
  • Source pinned commit/release when known: default-branch HEAD 3b519a18fc39c4d3b4b3074ca96fbcd46585a9ac (checked 2026-08-14)
  • Target concrete installed deliverable: the input-remapper Linux input-device remapping application
  • Primary category: input-accessibility
  • Tags: none
  • Primary language normalized: Python
  • Build system: pyproject-build-system
  • SPDX expression: GPL-3.0
  • License status: confirmed-free
  • License evidence: Inspected the upstream license text at this pinned commit; GitHub identifies it as GPL-3.0 (GNU General Public License v3.0). No GPL only-or-later term is inferred beyond the upstream evidence.
  • Difficulty: hard — udev/system service integration and privileged-device behavior require careful Guix-specific work.
  • Workflow state: research
  • Existing Guix coverage: Checked 2026-08-14: GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix 'R Us, and RDE; no equivalent package with the same upstream origin was found.

Scope and blockers

Package the application and its system integration without modifying host input configuration during build.

Acceptance checks

  • guix lint -L . input-remapper
  • guix build -L . input-remapper
  • run the CLI help and validate a configuration fixture without touching a real input device.

Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:18:06Z.

## Candidate - Upstream canonical URL: https://github.com/sezanzeb/input-remapper - Source pinned commit/release when known: default-branch HEAD `3b519a18fc39c4d3b4b3074ca96fbcd46585a9ac` (checked 2026-08-14) - Target concrete installed deliverable: the input-remapper Linux input-device remapping application - Primary category: input-accessibility - Tags: none - Primary language normalized: Python - Build system: pyproject-build-system - SPDX expression: GPL-3.0 - License status: confirmed-free - License evidence: Inspected the upstream license text at this pinned commit; GitHub identifies it as `GPL-3.0` (GNU General Public License v3.0). No GPL only-or-later term is inferred beyond the upstream evidence. - Difficulty: hard — udev/system service integration and privileged-device behavior require careful Guix-specific work. - Workflow state: research - Existing Guix coverage: Checked 2026-08-14: GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix 'R Us, and RDE; no equivalent package with the same upstream origin was found. ## Scope and blockers Package the application and its system integration without modifying host input configuration during build. ## Acceptance checks - `guix lint -L . input-remapper` - `guix build -L . input-remapper` - run the CLI help and validate a configuration fixture without touching a real input device. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/162). Originally posted by [htayj](https://github.com/htayj) on 2026-08-14T13:18:06Z.
Owner

Goocastle recorded disposition: implementation-ready.

Created implementation ticket: #756.

Implement a new Guix package named input-remapper in guix/tay/packages/input-remapper.scm from canonical upstream git+https://github.com/sezanzeb/input-remapper at exact revision 3b519a18fc39c4d3b4b3074ca96fbcd46585a9ac. The local channel has no existing package or other origin matching this project. Source inspection at that revision identifies version 2.2.1 in pyproject.toml even though the commit is after release tag 2.2.1; retain the candidate commit and record its full hash. Upstream pyproject.toml declares license GPL-3.0-or-later and LICENSE contains the verbatim GNU GPL version 3 text, so use license:gpl3+ (the issue's GPL-3.0-only SPDX evidence is narrower than the authoritative project declaration). The commit has no submodules. Build is source-viable with pyproject-build-system, Python >=3.10, setuptools >=77.0.3, and propagated-inputs python-evdev, python-psutil, python-dasbus, python-pycairo, python-pygobject, python-pydantic, and python-packaging; gettext and pkg-config may be needed only if native/build metadata proves it. Package install remains confined to the store: do not use upstream's root installer. Install the four bin scripts, data assets, desktop/metainfo/icon files, D-Bus system policy, polkit action, and two udev rule files through Guix phases; hard-code store executables and paths as required. Add a search-path-specification or wrapper environment so the Python package and GObject typelibs resolve. Integrate runtime privilege without touching host configuration at build time by providing an etc systemd user/system service pointing ExecStart at store input-remapper-service with BusName inputremapper.Control and Type dbus, plus the D-Bus and polkit files; expose but do not activate udev rules or autostart. The implementation should explain that udev/systemd activation and /dev/input access remain host-administrator actions outside the package build. The Guix daemon was unavailable in this research environment, so no guix shell or package build was attempted; source/build metadata is the build evidence. Runtime smoke proof: install and run the installed executable input-remapper-control with exactly the arguments ["--symbol-names"] in an isolated environment; it exercises the real CLI, GLib, evdev constants, and keyboard-layout output without opening an input device, D-Bus service, polkit, udev, or host configuration. Assert single-line stdout contains KEY_A and exit status 0, then capture the required PNG at .goocastle/evidence/issue-162.png. Acceptance remains guix lint -L . input-remapper and guix build -L . input-remapper in an authorized daemon-backed phase.

<!-- goocastle-disposition:sequential-reviewer:162:1:implementation-ready --> Goocastle recorded disposition: implementation-ready. Created implementation ticket: #756. Implement a new Guix package named input-remapper in guix/tay/packages/input-remapper.scm from canonical upstream git+https://github.com/sezanzeb/input-remapper at exact revision 3b519a18fc39c4d3b4b3074ca96fbcd46585a9ac. The local channel has no existing package or other origin matching this project. Source inspection at that revision identifies version 2.2.1 in pyproject.toml even though the commit is after release tag 2.2.1; retain the candidate commit and record its full hash. Upstream pyproject.toml declares license GPL-3.0-or-later and LICENSE contains the verbatim GNU GPL version 3 text, so use license:gpl3+ (the issue's GPL-3.0-only SPDX evidence is narrower than the authoritative project declaration). The commit has no submodules. Build is source-viable with pyproject-build-system, Python >=3.10, setuptools >=77.0.3, and propagated-inputs python-evdev, python-psutil, python-dasbus, python-pycairo, python-pygobject, python-pydantic, and python-packaging; gettext and pkg-config may be needed only if native/build metadata proves it. Package install remains confined to the store: do not use upstream's root installer. Install the four bin scripts, data assets, desktop/metainfo/icon files, D-Bus system policy, polkit action, and two udev rule files through Guix phases; hard-code store executables and paths as required. Add a search-path-specification or wrapper environment so the Python package and GObject typelibs resolve. Integrate runtime privilege without touching host configuration at build time by providing an etc systemd user/system service pointing ExecStart at store input-remapper-service with BusName inputremapper.Control and Type dbus, plus the D-Bus and polkit files; expose but do not activate udev rules or autostart. The implementation should explain that udev/systemd activation and /dev/input access remain host-administrator actions outside the package build. The Guix daemon was unavailable in this research environment, so no guix shell or package build was attempted; source/build metadata is the build evidence. Runtime smoke proof: install and run the installed executable input-remapper-control with exactly the arguments ["--symbol-names"] in an isolated environment; it exercises the real CLI, GLib, evdev constants, and keyboard-layout output without opening an input device, D-Bus service, polkit, udev, or host configuration. Assert single-line stdout contains KEY_A and exit status 0, then capture the required PNG at .goocastle/evidence/issue-162.png. Acceptance remains guix lint -L . input-remapper and guix build -L . input-remapper in an authorized daemon-backed phase.
Owner

Completed through #756 in signed/authenticated commit c8964b52578859f3d5701d95dfc8dddfdfc1e2ec. See source/reproducibility/lint/unit-test evidence, genuine network-isolated symbol enumeration and fresh PNG. Integration assets are inert; no physical devices or host services changed.

Completed through #756 in signed/authenticated commit `c8964b52578859f3d5701d95dfc8dddfdfc1e2ec`. See source/reproducibility/lint/unit-test evidence, genuine network-isolated symbol enumeration and fresh PNG. Integration assets are inert; no physical devices or host services changed.
tay closed this issue 2026-09-29 23:34:23 +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#162
No description provided.