Unable to load hyprexpo plugin in nix
Hi there! I installed the hyprexpo plugin using the instructions for nix provided on the nix website.
Unfortunately, when I loaded hyprland was complaining that it didn't know what hyprexpo was at a dispatcher. I think this is because there was an issue loading the library as follows:
I found my hyprexpo installation at the following path: /nix/store/wcln0v7006bmfgc0mqb15xkm3b/lib/libhyprexpo.so
Running hyprctl plugin load /nix/store/wcln0v7006bmfgc0mqb15xkm3b/lib/libhyprexpo.so I get:
~ ✖ : hyprctl plugin load /nix/store/wcln0v7006bmfgc0mqb15xkm3biwcg9c-hyprexpo-0.1/lib/libhyprexpo.so
Plugin /nix/store/wcln0v7006bmfgc0mqb15xkm3biwcg9c-hyprexpo-0.1/lib/libhyprexpo.so could not be loaded: /nix/store/wcln0v7006bmfgc0mqb15xkm3biwcg9c-hyprexpo-0.1/lib/libhyprexpo.so: undefined symbol: _ZN6Cursor24CShapeOverrideController13unsetOverrideENS_25eCursorShapeOverrideGroupE
My guess is that it silently fails when loading the plugin and this is why my config is complaining.
Hyprland usually shows notifications when loading plugins, on success and on failure. Unless you've disabled it or something changed, that should've popped up.
By "nix website" are you referring to the wiki? https://wiki.hypr.land/Nix/Plugins/#hyprland-plugins
Yes apologies I typo'd the resource where I got it :) Also I was looking at https://github.com/hyprwm/hyprland-plugins/tree/main/hyprexpo for configuring
Didn't have the error for hyprexpo, but hyprscrolling.
Workaround
{
inputs = {
hyprland = {
url = "github:hyprwm/Hyprland/71a1216abcc7031776630a6d88f105605c4dc1c9";
};
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
};
}
update home then reboot
hyprexpo gives me the following when updating home:
Last 25 log lines:
> includedir : /nix/store/8xzvg5mivd83zmzanvg3vl6nxh5rxdyy-hyprexpo-0.1/include
> infodir : /nix/store/8xzvg5mivd83zmzanvg3vl6nxh5rxdyy-hyprexpo-0.1/share/info
> libdir : /nix/store/8xzvg5mivd83zmzanvg3vl6nxh5rxdyy-hyprexpo-0.1/lib
> libexecdir : /nix/store/8xzvg5mivd83zmzanvg3vl6nxh5rxdyy-hyprexpo-0.1/libexec
> localedir : /nix/store/8xzvg5mivd83zmzanvg3vl6nxh5rxdyy-hyprexpo-0.1/share/locale
> mandir : /nix/store/8xzvg5mivd83zmzanvg3vl6nxh5rxdyy-hyprexpo-0.1/share/man
> prefix : /nix/store/8xzvg5mivd83zmzanvg3vl6nxh5rxdyy-hyprexpo-0.1
> sbindir : /nix/store/8xzvg5mivd83zmzanvg3vl6nxh5rxdyy-hyprexpo-0.1/sbin
> wrap_mode : nodownload
>
> Found ninja-1.13.1 at /nix/store/7bgiqc706pzzb1gmwgpzdfg491w4a8nx-ninja-1.13.1/bin/ninja
> mesonConfigurePhase: enabled\ parallel\ building
> Running phase: buildPhase
> build flags: -j16
> [1/5] Compiling C++ object libhyprexpo.so.p/overview.cpp.o
> FAILED: [code=1] libhyprexpo.so.p/overview.cpp.o
> g++ -Ilibhyprexpo.so.p -I. -I.. -I/nix/store/ghildkb71llzd5khrfxlfm29aa2bwhss-hyprland-0.51.1+date=2025-09-22_71a1216-dev/include -I/nix/store/ghildkb71llzd5khrfxlfm29aa2bwhss-hyprland-0.51.1+date=2025-09-22_71a1216-dev/include/hyprland/protocols -I/nix/store/ghildkb71llzd5khrfxlfm29aa2bwhss-hyprland-0.51.1+date=2025-09-22_71a1216-dev/include/hyprland -I/nix/store/ssshfj3zgwnx3j77spypa7c5v5ixc5sc-pixman-0.46.2/include/pixman-1 -I/nix/store/myrhngjdaz6fxk4izl3phi0l0p7zir61-libdrm-2.4.125-dev/include -I/nix/store/myrhngjdaz6fxk4izl3phi0l0p7zir61-libdrm-2.4.125-dev/include/libdrm -I/nix/store/d7i09anhjnmavn42210ai7ash9dyrcqf-cairo-1.18.4-dev/include/cairo -I/nix/store/l0giy21i8c3acqsp2y678h5x4m95v7l0-freetype-2.13.3-dev/include/freetype2 -I/nix/store/l0giy21i8c3acqsp2y678h5x4m95v7l0-freetype-2.13.3-dev/include -I/nix/store/qw775vf7aqiyix3hrz7afmlm9g6bdmvf-glib-2.84.4-dev/include -I/nix/store/qw775vf7aqiyix3hrz7afmlm9g6bdmvf-glib-2.84.4-dev/include/glib-2.0 -I/nix/store/qfm3kqdbpd289nnmdhd4dis4svd2nzwv-glib-2.84.4/lib/glib-2.0/include -I/nix/store/c2nmrh02fwlk1hklc36swf5b87ag2573-pango-1.56.3-dev/include/pango-1.0 -I/nix/store/p8nav9w75fvlfy58rd936bvvhgi39n93-harfbuzz-11.2.1-dev/include/harfbuzz -I/nix/store/sjrgmkq1ad15z3w6g0am0avk3mwhwb2j-libinput-1.29.0-dev/include -I/nix/store/aj3zbws4lcb2qgbdfp7bcqlxwsvxs8n5-systemd-minimal-libs-257.8-dev/include -I/nix/store/799yc9m4iflqpnaw831zc586zwc5k36a-wayland-1.24.0-dev/include -I/nix/store/y300dk1dnb8rkl9vnm4zv0ih6jffidyb-libxkbcommon-1.11.0-dev/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wno-narrowing -std=c++23 -fPIC -MD -MQ libhyprexpo.so.p/overview.cpp.o -MF libhyprexpo.so.p/overview.cpp.o.d -o libhyprexpo.so.p/overview.cpp.o -c ../overview.cpp
> ../overview.cpp:10:10: fatal error: hyprland/src/managers/cursor/CursorShapeOverrideController.hpp: No such file or directory
> 10 | #include <hyprland/src/managers/cursor/CursorShapeOverrideController.hpp>
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> compilation terminated.
> [2/5] Compiling C++ object libhyprexpo.so.p/OverviewPassElement.cpp.o
> [3/5] Compiling C++ object libhyprexpo.so.p/ExpoGesture.cpp.o
> [4/5] Compiling C++ object libhyprexpo.so.p/main.cpp.o
> ninja: build stopped: subcommand failed.