Plugin version mismatch on nixos
Regression?
No
System Info and Version
System/Version info
Hyprland, built from branch main at commit 918d8340afd652b011b937d29d5eea0be08467f5 (flake.lock: update).
Date: 2024-06-25
Tag: v0.41.2, commits: 918d8340afd652b011b937d29d5eea0be08467f5
flags: (if any)
System Information:
System name: Linux
Node name: xxxxxx
Release: 6.6.39
Version: #1-NixOS SMP PREEMPT_DYNAMIC Thu Jul 11 10:49:22 UTC 2024
GPU information:
28:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M] [1002:744c] (rev cc) (prog-if 00 [VGA controller])
os-release: ANSI_COLOR="1;34"
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
BUILD_ID="24.05.20240714.53e81e7"
DOCUMENTATION_URL="https://nixos.org/learn.html"
HOME_URL="https://nixos.org/"
ID=nixos
IMAGE_ID=""
IMAGE_VERSION=""
LOGO="nix-snowflake"
NAME=NixOS
PRETTY_NAME="NixOS 24.05 (Uakari)"
SUPPORT_END="2024-12-31"
SUPPORT_URL="https://nixos.org/community.html"
VERSION="24.05 (Uakari)"
VERSION_CODENAME=uakari
VERSION_ID="24.05"
plugins:
======Config-Start======
Config File: /home/xxxxxx/.config/hypr/hyprland.conf: Read Succeeded
exec-once = /nix/store/nn54yahdasinv9hyk1hjwpakw8sqqyq0-dbus-1.14.10/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target
plugin=/nix/store/611ni8dn971ab7wa5r25vlqnsm9zx27f-hyprsplit-0.1/lib/libhyprsplit.so
#exec-once = /nix/store/nn54yahdasinv9hyk1hjwpakw8sqqyq0-dbus-1.14.10/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=DP-1,1920x1080@60,0x0,1
monitor=DP-3,1920x1080@60,-1920x75,1
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = kitty
$fileManager = thunar
$menu = wofi --show drun
#################
### AUTOSTART ###
#################
exec-once = easyeffects --gapplication-service
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
exec-once = hyprctl setcursor capitaine-cursors-light 24
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 5
gaps_out = 20
border_size = 2
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(b4d6f2aa)
col.inactive_border = rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 10
drop_shadow = true
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 5
passes = 3
new_optimizations=true
}
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = true
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
disable_splash_rendering = true
focus_on_activate = true
}
binds {
workspace_back_and_forth = true
workspace_center_on = 1
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = us,pl
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
workspace_swipe = false
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
####################
### KEYBINDINGSS ###
####################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, Q, exec, $terminal
bind = $mainMod SHIFT, C, killactive,
bind = $mainMod, M, fullscreen, 1
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, F, togglefloating,
bind = $mainMod, B, exec, floorp
bind = $mainMod, D, exec, vesktop --enable-features=VaapiIgnoreDriverChecks,VaapiVideoEncoder,VaapiVideoDecoder,CanvasOopRasterization,UseMultiPlaneFormatForHardwareVideo
bind = $mainMod, K, exec, hyprctl switchxkblayout royuan-akko-multi-modes-keyboard-b next
bind = $mainMod, R, fullscreen
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movewindow, l
bind = $mainMod, right, movewindow, r
bind = $mainMod CTRL_L, left, swapactiveworkspaces, DP-1 DP-3
bind = $mainMod CTRL_L, right, swapactiveworkspaces, DP-1 DP-3
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Asking for password in various situations
exec-once=/usr/lib/polkit-kde-authentication-agent-1
# Waybar
exec-once=waybar
# rofi
bind = CTRL, SPACE, exec, rofi -show combi -combi-modes "window,drun" -modes combi
# grimblast (screenshots)
bind = SHIFT, PRINT, exec, grimblast save area
bind = , PRINT, exec, grimblast copy area
bind = CTRL_SHIFT, PRINT, exec, grimblast save output
bind = CTRL, PRINT, exec, grimblast copy output
# copyq
exec-once = copyq --start-server
bind = $mainMod, V, exec, copyq show
windowrule = float,(com.github.hluk.copyq)
windowrule = size 400 250,(com.github.hluk.copyq)
# waybar reload
bind = SUPER, M, exec, killall waybar && waybar
# Wallpaper
exec-once = swaybg -i .config/wallpapers/stars.jpg -m fit
layerrule = noanim, swaybg
# League of Legends
windowrule = fullscreen,(league of legends.exe)
windowrule = monitor DP-1,(league of legends.exe)
# GTA 5
windowrulev2 = fullscreen,class:(steam_app_271590),title:(Grand Theft Auto V)
windowrule = monitor DP-1,title:(Grand Theft Auto V)
bind = SUPER_ALT, G, exec, pkill -STOP GTA5.exe && sleep 10 && pkill -CONT GTA5.exe
# play pause next previous
bind = $mainMod, Z, exec, playerctl previous
bind = $mainMod, X, exec, playerctl next
bind = $mainMod, C, exec, playerctl play-pause
# nwg-bar
bind = $mainMod, L, exec, nwg-bar
# steam friends list
windowrulev2 = float,title:(Friends List)
# File Operation Progress
windowrulev2 = float,title:(File Operation Progress)
windowrule = move 1450 75,title:(File Operation Progress)
windowrule = noinitialfocus,title:(File Operation Progress)
# File Operation Dialog
windowrulev2 = float,title:(Confirm to replace files)
# File upload window
windowrule = size 960 700,title:(File Upload)
windowrule = move 500 200,title:(File Upload)
# Hyprshade
exec-once = dbus-update-activation-environment --systemd HYPRLAND_INSTANCE_SIGNATURE
exec = hyprshade auto
bind = $mainMod, H, exec, hyprshade toggle
======Config-End========
Description
Hi, I'm trying to install hyprsplit, but I'm getting hyprsplit: Failure in initialization: Version mismatch (headers ver is not equal to running hyprland ver. Configs seem correct, but there must be something wrong if it doesn't work.
I've asked the hyprsplit author, but he doesn't use nix, so I thought I would have more luck here.
How to reproduce
flake.nix
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
hyprsplit = {
url = "github:shezdy/hyprsplit/main";
inputs.hyprland.follows = "hyprland";
};
home-manager = {
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
};
...
outputs = { nixpkgs, hyprland, home-manager, ... } @ inputs:
{
nixosConfigurations.kubapc = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
...
home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.jakub = import ./home.nix;
# Optionally, use home-manager.extraSpecialArgs to pass
# arguments to home.nix
}
];
};
};
}
home.nix
{ config, pkgs, inputs, ... }:
{
wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.extraConfig = ''${builtins.readFile ./dotfiles/hypr/hyprland.conf}'';
wayland.windowManager.hyprland.plugins = [ inputs.hyprsplit.packages.${pkgs.stdenv.hostPlatform.system}.hyprsplit ];
}
configuration.nix
programs.hyprland.enable = true;
programs.hyprland.package = inputs.hyprland.packages."${pkgs.system}".hyprland;
Crash reports, logs, images, videos
No response
Make sure you're starting the correct Hyprland version from your display manager. With the flake you'll want to make sure that you don't use pkgs.hyprland anywhere in the config.
You can also try packaging the plugin for nixpkgs and using that instead of the Hyprland flake, which simplifies the config a bit.
Make sure you're starting the correct Hyprland version from your display manager
Still doesn't work. I added services.displayManager.sddm.settings.Wayland.SessionDir = "${inputs.hyprland.packages.x86_64-linux.hyprland}/share/wayland-sessions"; still no dice.
don't use
pkgs.hyprlandanywhere in the config
I don't use it in any of the configuration, flake or home files. Only the inputs.hyprland.packages...
You can also try packaging the plugin
Might be the easiest to do honestly, but I'll see if anyone has any other suggestions first.
I suspect the issue comes from hyprsplit not using the same stdenv as hyprland (https://github.com/shezdy/hyprsplit/blob/main/flake.nix#L18). A simple inputs.hyprland.packages.${system}.default.stdenv.mkDerivation in place of pkgs.stdenv.mkDerivation should do the trick.
So I cloned the hyprsplit repo, changed what you said. Updated the flake in the repo. Changed the input of the main flake to the local repo. Aaaaand it still doesn't work. I feel like I'm doing something wrong, but I have no clue how to find that error
Fun fact, I tried installing the hyprexpo plugin just now, and it has exactly the same error.
Please keep in mind I only switched to nixos recently, and I can be making just some basic mistake
Hyprexpo from nixpkgs or from hyprland-plugins?
Hyprland-plugins
Trying to repro, but I'm hitting other issues while at it. Will post when I'm done.
Awesome, thanks! Let me know if you need any more info or anything
Sorry I didn't get back to you on this, but I haven't had time to test. Does it still happen now, after the aquamarine merge?
No problem, everyone's busy :) Yeah it still happens for both hyprsplit and hyprexpo, and probably the rest of the plugins as well. It's probably my config, or something that I did that messed something up :/
In my case it seems to load just fine using hyprctl plugin load /path/to/libhyprexpo.so. I'll test adding it to the config shortly.
I tried the same thing just now
error in loading plugin, last error: Plugin /nix/store/hmhhaspiaw38xnn5b4nnr1c8dqxzb29j-hyprexpo-0.1/lib/libhyprexpo.so could not be loaded: plugin crashed/threw in main: [he] Version mismatch
I think it actually builds with a different version, but I have no idea how. Even tho hyprland-plugins follows hyprland in the flake.
├───Hyprspace: github:KZDKM/Hyprspace/e8662093ae5b6e13a3cf1145d21d4804a3e84aeb
│ └───hyprland follows input 'hyprland'
├───home-manager: github:nix-community/home-manager/e1391fb22e18a36f57e6999c7a9f966dc80ac073
│ └───nixpkgs follows input 'nixpkgs'
├───hyprland: git+https://github.com/hyprwm/Hyprland?ref=refs/heads/main&rev=33a5c8ce325e1657ec5571b57e05c6378706f4cd
│ ├───aquamarine: github:hyprwm/aquamarine/353dc1b7299d43f08de44276b93ae32726ff9d70
│ │ ├───hyprutils follows input 'hyprland/hyprutils'
│ │ ├───hyprwayland-scanner follows input 'hyprland/hyprwayland-scanner'
│ │ ├───nixpkgs follows input 'hyprland/nixpkgs'
│ │ └───systems follows input 'hyprland/systems'
│ ├───hyprcursor: github:hyprwm/hyprcursor/4493a972b48f9c3014befbbf381ed5fff91a65dc
│ │ ├───hyprlang follows input 'hyprland/hyprlang'
│ │ ├───nixpkgs follows input 'hyprland/nixpkgs'
│ │ └───systems follows input 'hyprland/systems'
│ ├───hyprlang: github:hyprwm/hyprlang/adbefbf49664a6c2c8bf36b6487fd31e3eb68086
│ │ ├───hyprutils follows input 'hyprland/hyprutils'
│ │ ├───nixpkgs follows input 'hyprland/nixpkgs'
│ │ └───systems follows input 'hyprland/systems'
│ ├───hyprutils: github:hyprwm/hyprutils/962582a090bc233c4de9d9897f46794280288989
│ │ ├───nixpkgs follows input 'hyprland/nixpkgs'
│ │ └───systems follows input 'hyprland/systems'
│ ├───hyprwayland-scanner: github:hyprwm/hyprwayland-scanner/a048a6cb015340bd82f97c1f40a4b595ca85cc30
│ │ ├───nixpkgs follows input 'hyprland/nixpkgs'
│ │ └───systems follows input 'hyprland/systems'
│ ├───nixpkgs: github:NixOS/nixpkgs/1d9c2c9b3e71b9ee663d11c5d298727dace8d374
│ ├───systems: github:nix-systems/default-linux/31732fcf5e8fea42e59c2488ad31a0e651500f68
│ └───xdph: github:hyprwm/xdg-desktop-portal-hyprland/663be9cad424b170b28b9fa8a61042d721007f3b
│ ├───hyprland-protocols: github:hyprwm/hyprland-protocols/1b61f0093afff20ab44d88ad707aed8bf2215290
│ │ ├───nixpkgs follows input 'hyprland/xdph/nixpkgs'
│ │ └───systems follows input 'hyprland/xdph/systems'
│ ├───hyprlang follows input 'hyprland/hyprlang'
│ ├───nixpkgs follows input 'hyprland/nixpkgs'
│ └───systems follows input 'hyprland/systems'
├───hyprland-plugins: github:hyprwm/hyprland-plugins/4c2cef8326711fbd91b7a313f095545eb50d2a57
│ ├───hyprland follows input 'hyprland'
│ ├───nixpkgs follows input 'hyprland-plugins/hyprland/nixpkgs'
│ └───systems follows input 'hyprland-plugins/hyprland/systems'
├───hyprsplit: github:shezdy/hyprsplit/fcf00b770e3b89fd93de2de1bb5e68721090f5fe
│ └───hyprland follows input 'hyprland'
├───nixpkgs: github:nixos/nixpkgs/d0907b75146a0ccc1ec0d6c3db287ec287588ef6
└───nixpkgs-unstable: github:nixos/nixpkgs/4f02464258baaf54992debfd010a7a3662a25536
Can you remove the lockfile and then nix flake lock to regenerate it? In some weird cases the lockfile isn't updated properly.
Should I try adding the plugin now, or should I nix flake update before? (better ask lol)
Never mind, I tried both, still the same thing. Can it be that home-manager has to be on the same nixpkgs as hyprland and by extension, the plugins?
No, all it does is it sets up your config nix -> hyprlang. The problem lies between hyprland and the plugins.
I had the exact same issue, spent about 9 hours debugging and searching online. Turns out, for me at least, that switch-ing nix profiles doesn't play nicely with hyprland. Once I enabled the plugins, and received the mismatch errors, I simply rebooted and they loaded fine afterwards. Hope this can help someone!
Okay, I'm curious, but could you explain step by step what you did please?
I tried:
- enabling the plugin in the flake, nixos-rebuild switch, reboot
- enabling the plugin in the flake, nixos-rebuild boot, reboot
And neither work. I guess they're both switching the profile. So what do you mean by
Once I enabled the plugins, and received the mismatch errors, I simply rebooted and they loaded fine afterwards.
@jeikashu sorry, I meant nixos-rebuild switch alone didn't work. I rebooted afterwards and it did. You're welcome to look at my config to see if there's maybe something different from your one https://github.com/PolarizedIons/nixos-config/tree/7a2e79e0d1a0180eb2323b01c650c335ed594e6a .
Yeah that didn't work :/. I saw your config, but it really seems the same as mine. I installed NixOS to not have to deal with this, and here I am lmao
@jeikashu only other thing I can think of, is that I ran sudo nix-collect-garbage -d not too long before I made that comment.
Tried just now, and nothing (: How is this even possible lmao
I am facing the same thing with hyprbars
Maybe make sure you're using inputs.hyprland.homeManagerModules.default home manager module, and inputs.hyprland.nixosModules.default nixos module, since they setup some stuff iirc as well
Might have worked, but after adding inputs.hyprland.homeManagerModules.default to hyprland flake and inputs.hyprland.nixosModules.default to configuration.nix, Hyprland-wrapp dumps core lol
Maybe make sure you're using
inputs.hyprland.homeManagerModules.defaulthome manager module, andinputs.hyprland.nixosModules.defaultnixos module, since they setup some stuff iirc as well
I did but hyprland completely failed to open from terminal. So i just kept nixos module. It opened but still getting the same error.
Just tried installing plugins and faced this mismatch error.
i have cachix enabled
and my flake.nix is
hyprland.url = "github:hyprwm/Hyprland";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
and everywhere i have made sure to use this input hyprland only.
@niksingh710 I've just compiled the whole hyprland-plugins repo with the latest hyprland with no errors. Can you provide more info? Are you sure your inputs are up to date?
@fufexan Just updated my whole flake and below is the details.
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
hyprland.url = "github:hyprwm/Hyprland";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
Overlay
nixpkgs.overlays = [
(next: prev: {
wmhypr = inputs.hyprland.inputs.nixpkgs.legacyPackages.${prev.system};
})
];
Hyprland Config
programs.hyprland = {
enable = true;
package = pkgs.wmhypr.hyprland;
portalPackage = pkgs.wmhypr.xdg-desktop-portal-hyprland;
};
plugins.nix
{ inputs, pkgs, ... }: {
wayland.windowManager.hyprland.plugins = [
inputs.hyprland-plugins.packages.${pkgs.system}.hyprtrails
];
}