Skip to content

fix(cutter): re-enable once nixpkgs ships shiboken6 6.11 fix #156

@Bad3r

Description

@Bad3r

Type

fix

Scope

cutter

Summary

programs.cutter.extended.enable is forced false on both system76 and
tpnix, and the cutter entry in the pentesting devshell (toolDefs /
toolPackageMap in modules/devshell/pentesting.nix) is commented out. This
workaround keeps nix flake check green: without it, the auto-derived
checks.x86_64-linux.packages/pentest-cutter (see
modules/package-checks.nix) tries to build nixpkgs.cutter 2.4.1, which
fails to compile against qtbase / shiboken6 6.11 with error: use of undeclared identifier 'SBK_CUTTERPLUGIN_IDX' in
src/plugins/PluginManager.cpp.

The fix has been merged upstream in rizinorg/cutter#3606 (handles the
camel-case-to-uppercase type-index rename in shiboken6 6.11), but it is
only on the dev branch — there is no Cutter release yet that contains
it, and nixpkgs/pkgs/development/tools/analysis/rizin/cutter.nix still
pins v2.4.1. We are waiting on either a new upstream Cutter release
that ships the fix or a nixpkgs cutter bump to a snapshot containing
commit 07fea9c772dc573588dc2e5771f0740ee1883738.

Unblock condition

Unblocked when nixpkgs unstable ships a cutter derivation that builds
against shiboken6 6.11 (i.e., contains
rizinorg/cutter@07fea9c772dc573588dc2e5771f0740ee1883738 or a later
release with that fix).

Upstream pull requests

fix rizinorg/cutter#3606 - merged 2026-05-01, lands on dev branch only

Upstream issues

blocker NixOS/nixpkgs#514250 - nixpkgs cutter build failure tracker
related rizinorg/cutter#3599 - upstream root-cause issue (closed by rizinorg/cutter#3606)

Upstream releases and channels

fix https://github.com/rizinorg/cutter/tree/dev - contains rizinorg/cutter@07fea9c
fix https://github.com/rizinorg/cutter/releases - target >= 2.4.2

Local workaround / affected code

Pentesting devshell toolDefs — cutter entry commented out (uncomment to re-enable):

# ghidra: installed system-wide via programs.ghidra.extended
# cutter: disabled — upstream cutter 2.4.1 fails to build against Qt/PySide6 6.11.
# Tracking: https://github.com/Bad3r/nixos/issues/156
# {
# name = "cutter";
# desktop = {
# desktopName = "Cutter (Pentesting Shell)";
# comment = "Reverse engineering platform powered by rizin";
# categories = [
# "Development"
# "Security"
# ];
# icon = "cutter";
# };
# }

Pentesting devshell toolPackageMapcutter removed from the inherit (pkgs) list (uncomment to re-enable):

inherit (pkgs)
wireshark
nmap
aircrack-ng
john
sqlmap
hashcat
# cutter # disabled — see https://github.com/Bad3r/nixos/issues/156
iaito
radare2
rizin
mitmproxy
whatweb
;

Host-level disable on system76 (flip falsetrue to re-enable):

cutter.extended.enable = lib.mkOverride 1100 false; # Disabled — see https://github.com/Bad3r/nixos/issues/156

Host-level disable on tpnix (flip falsetrue to re-enable):

cutter.extended.enable = lib.mkOverride 1100 false; # Disabled — see https://github.com/Bad3r/nixos/issues/156

Exit criteria

  • Unblock condition satisfied
  • ./build.sh --update pulls in a lockfile revision with the fix
  • cutter block uncommented in modules/devshell/pentesting.nix (toolDefs and toolPackageMap)
  • cutter.extended.enable = lib.mkOverride 1100 true; on system76
  • cutter.extended.enable = lib.mkOverride 1100 true; on tpnix
  • nix build .#nixosConfigurations.system76.config.system.build.toplevel succeeds
  • nix build .#nixosConfigurations.tpnix.config.system.build.toplevel succeeds
  • nix build .#packages.x86_64-linux.pentest-cutter succeeds

Validation

nix eval --raw .#nixosConfigurations.system76.pkgs.cutter.version
nix build .#packages.x86_64-linux.pentest-cutter
nix build .#nixosConfigurations.system76.config.system.build.toplevel
nix build .#nixosConfigurations.tpnix.config.system.build.toplevel

Notes

Disable landed in #157 (commit
8c890090386deb42de77f3d5b3d68defb926eb3f) — code is commented out
rather than removed, so reverting once the upstream fix lands is a
one-shot uncomment plus host flip.

Failing build symptom (NixOS/nixpkgs#514250 / rizinorg/cutter#3599):

src/plugins/PluginManager.cpp:221:77: error: use of undeclared identifier 'SBK_CUTTERPLUGIN_IDX'
  221 |             reinterpret_cast<PyTypeObject **>(SbkCutterBindingsTypeStructs)[SBK_CUTTERPLUGIN_IDX],
      |                                                                             ^~~~~~~~~~~~~~~~~~~~

Root cause: shiboken6 6.11 generates the type-index enum as
SBK_CutterPlugin_IDX (camel case) instead of the previous
SBK_CUTTERPLUGIN_IDX (upper case). rizinorg/cutter#3606 makes
PluginManager.cpp accept either spelling.

Confirmations

  • I searched existing status(blocked-upstream) issues and this is not a duplicate.
  • Upstream references are canonical for their role: blocker/fix entries point at the repo that ships the fix.
  • Every non-none reference line starts with a reserved role keyword (blocker, fix, related, superseded).
  • Every entry in Local workaround / affected code reflects the current state on main.
  • The type and scope in the issue title match the Type and Scope body fields.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area(packages)Package definitions, overrides, overlays, or package-source selection.focus(security)Concrete security risk, secret exposure, auth boundary, or vulnerability.host(system76)Specific to the System76 host or its runtime contract.host(tpnix)Specific to the tpnix host or its runtime contract.status(ready-to-unblock)Upstream blocker resolved; ready to remove the local workaround.

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions