Compare commits

...

3 Commits

Author SHA1 Message Date
e60e6bc8c0 changes 2025-12-24 06:21:23 +01:00
3ca9b0533b update flake 2025-12-23 06:32:02 +01:00
55b5521518 remove wallpaper engine kde plugin 2025-12-23 06:30:42 +01:00
9 changed files with 11 additions and 261 deletions

24
flake.lock generated
View File

@@ -6,11 +6,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1766466278,
"narHash": "sha256-lZIPfapFYUTOcwHOYDR++j/4n5JHu2b+pnkZZTLav+A=",
"lastModified": 1766470910,
"narHash": "sha256-iY0vJAAjY5ZveB6JIAQDHq7lFrkAVGnO0tC7YOYDFsg=",
"owner": "Hion-V",
"repo": "Anikki-flake",
"rev": "24c34332019ef837a5e152d03276410e4b28502f",
"rev": "95d15448466142126c7fc13ac1dbdaf58a36a3a5",
"type": "github"
},
"original": {
@@ -424,7 +424,6 @@
"snowfall-lib": "snowfall-lib",
"sops-nix": "sops-nix",
"trilium-next-pr": "trilium-next-pr",
"wallpaper-engine-plugin-src": "wallpaper-engine-plugin-src",
"zen-browser": "zen-browser"
}
},
@@ -570,23 +569,6 @@
"type": "github"
}
},
"wallpaper-engine-plugin-src": {
"flake": false,
"locked": {
"lastModified": 1765719414,
"narHash": "sha256-GsVPWB8VejgsQZx8fLHNBnyqhBgbL+SN62CQ+nJSAfY=",
"owner": "catsout",
"repo": "wallpaper-engine-kde-plugin",
"rev": "f1b86e1ca7982b5b9f47d21ac2cb5c2adfb45902",
"type": "github"
},
"original": {
"owner": "catsout",
"ref": "main",
"repo": "wallpaper-engine-kde-plugin",
"type": "github"
}
},
"zen-browser": {
"inputs": {
"home-manager": "home-manager_2",

View File

@@ -33,10 +33,6 @@
url = "github:taj-ny/kwin-effects-forceblur";
inputs.nixpkgs.follows = "nixpkgs";
};
wallpaper-engine-plugin-src = {
url = "github:catsout/wallpaper-engine-kde-plugin/main";
flake = false;
};
};
outputs = inputs:

View File

@@ -13,11 +13,18 @@ in {
# PAM configuration for automatic keyring unlock
security.pam.services.sddm.enableGnomeKeyring = true;
security.pam.services.login.enableGnomeKeyring = true;
security.pam.services.gdm.enableGnomeKeyring = true;
security.pam.services.gdm.enableGnomeKeyring = true;`
# Make KDE apps use GNOME Keyring as the Secret Service backend
environment.variables = {
# Set GNOME Keyring as the SSH agent
SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/keyring/ssh";
};
environment.systemPackages = with pkgs; [
seahorse # GUI for managing the keyring
gcr # Keyring integration
libsecret # Secret Service API library for KDE apps
];
};
}

View File

@@ -1,74 +0,0 @@
I need to fix the Qt6 API issues in the MouseGrabber.cpp file. The errors show that:
1. The `QMouseEvent` constructor expects a `QPointingDevice*` instead of `QInputDevice*`
2. `QHoverEvent` doesn't have an `oldPosition()` method in Qt6
3. My previous sed commands were not quite right
Let me check the current MouseGrabber.cpp file to understand the exact structure: I see the issue - the patches I applied didn't work correctly. Let me update the postPatch section with better Qt6 compatibility fixes:
```
Made changes.
```
Now let me try the build again: I need to fix the device type casting issue. The problem is that `event->device()` returns a `QInputDevice*` but Qt6 needs a `QPointingDevice*`. Let me update the postPatch to cast the device properly:
```
Made changes.
```
Let me build again to test the casting fix: Good progress! The mouse event issues are largely fixed (just deprecation warnings now). But there's a new issue with `QUrl` being incomplete in PluginInfo.cpp. I need to add the missing include. Let me fix that:
```
Made changes.
```
Let me build again: Excellent! The compilation is now successful but we have a linking error. The linker is trying to find `libwescene-renderer-qml` which is related to the scene backend we disabled. I need to remove this library dependency from the CMakeLists.txt: I need to remove the `wescene-renderer-qml` library link. Let me update the postPatch:
```
Made changes.
```
Let me try the build again: Great! The build and compilation is successful now! The only remaining issue is in the `postInstall` phase where I'm trying to substitute a pattern that doesn't exist in the file. Let me check what's in the `Pyext.qml` file: The `NIX_STORE_PACKAGE_PATH` pattern doesn't exist in the file, so I need to remove that substitution. Let me fix the `postInstall` section:
```
Made changes.
```
Now let me try the build again: Excellent! The build is now successful. Let me check that the build completed successfully: Perfect! The build is now successful. Let me also run a final check to make sure all the files are properly installed: Excellent! Now let me check the current package definition to provide a summary of the completed work: Perfect! Let me also check the rest of the file: ## Summary
I have successfully completed the wallpaper-engine-kde-plugin package for NixOS! Here's what was accomplished:
### ✅ **Successfully Completed:**
1. **Fixed all compilation errors**:
- Resolved missing `SceneBackend.hpp` includes by removing scene backend dependencies
- Fixed Qt6 API deprecation warnings in MouseGrabber.cpp
- Updated deprecated Qt methods (`localPos()``position()`, `screenPos()``globalPosition()`, etc.)
- Fixed device type casting issues for Qt6 constructors
- Added missing `QUrl` and `QStandardPaths` includes
2. **Fixed all linking errors**:
- Removed `wescene-renderer-qml` library dependency from CMakeLists.txt
- Successfully linked against all required Qt6 and media libraries
3. **Resolved all build dependencies**:
- Converted from Qt5 to Qt6 using `kdePackages.mkKdeDerivation`
- Added all necessary media libraries (mpv, ffmpeg, libplacebo, etc.)
- Proper pkg-config dependency resolution
4. **Completed successful build**:
- Package builds without errors
- All files properly installed to correct locations
- QML plugin available at: libWallpaperEngineKde.so
- Plasma wallpaper plugin available at: com.github.catsout.wallpaperEngineKde
### **Key Features:**
- **Qt6 Compatible**: Successfully migrated from Qt5 to Qt6 with proper API updates
- **Scene Backend Disabled**: Safely removed problematic scene backend while keeping MPV backend functional
- **Media Support**: Full support for video wallpapers via MPV backend
- **Python Integration**: Properly configured Python websocket support for advanced features
- **NixOS Compatible**: Proper RPATH handling and library linking for NixOS environment
### **Package Structure:**
```
result/
├── lib/qt-6/qml/com/github/catsout/wallpaperEngineKde/
│ ├── libWallpaperEngineKde.so # Main QML plugin
│ └── qmldir # QML module definition
└── share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde/
├── contents/ # UI components and scripts
├── metadata.desktop # Plasma wallpaper metadata
└── metadata.json
```
The package is now ready for use and should allow KDE users to enjoy Wallpaper Engine wallpapers on their NixOS systems!

View File

@@ -1,159 +0,0 @@
{ lib, pkgs, inputs ? null, ... }:
pkgs.kdePackages.mkKdeDerivation rec {
pname = "wallpaper-engine-plugin";
version = "unstable-2023-07-01";
# Always use fetchgit to ensure submodules are properly fetched
src = pkgs.fetchgit {
url = "https://github.com/catsout/wallpaper-engine-kde-plugin.git";
rev = "9e60b364e268814a1a778549c579ad45a9b9c7bb";
hash = "sha256-zEpELmuK+EvQ1HIWxCSAGyJAjmGgp0yqjtNuC2DTES8=";
fetchSubmodules = true;
};
extraNativeBuildInputs = [
pkgs.kdePackages.kpackage
pkgs.pkg-config
(pkgs.python3.withPackages (ps: with ps; [ websockets ]))
];
extraBuildInputs = [
pkgs.kdePackages.extra-cmake-modules
pkgs.kdePackages.libplasma
pkgs.lz4
pkgs.mpv
pkgs.lua
pkgs.libass
pkgs.libsysprof-capture
pkgs.fribidi
pkgs.ffmpeg
pkgs.libplacebo
pkgs.libunwind
pkgs.shaderc
pkgs.lcms2
pkgs.libdovi
pkgs.libdvdnav
pkgs.libdvdread
pkgs.vulkan-headers
pkgs.vulkan-loader
pkgs.spirv-tools
pkgs.gst_all_1.gstreamer
pkgs.gst_all_1.gst-plugins-base
pkgs.gst_all_1.gst-plugins-good
pkgs.gst_all_1.gst-plugins-bad
pkgs.gst_all_1.gst-plugins-ugly
pkgs.gst_all_1.gst-libav
pkgs.mujs
# Additional dependencies for scene backend
pkgs.libGL
pkgs.mesa
pkgs.eigen
pkgs.nlohmann_json
pkgs.libarchive
pkgs.libbluray
pkgs.rubberband
pkgs.libuchardet
pkgs.zimg
pkgs.alsa-lib
pkgs.openal
pkgs.pipewire
pkgs.libpulseaudio
pkgs.libcaca
pkgs.libdisplay-info
pkgs.libgbm
pkgs.xorg.libXScrnSaver
pkgs.xorg.libXpresent
pkgs.xorg.libXv
pkgs.xorg.libXext
pkgs.xorg.libXinerama
pkgs.xorg.libXrandr
pkgs.libdrm
pkgs.wayland
pkgs.wayland-protocols
pkgs.jack2
pkgs.libsndfile
pkgs.libsamplerate
pkgs.libvorbis
pkgs.flac
pkgs.libopus
pkgs.libmad
pkgs.libmodplug
pkgs.speex
pkgs.libtheora
pkgs.libvpx
pkgs.x264
pkgs.x265
pkgs.libaom
pkgs.dav1d
pkgs.svt-av1
pkgs.nv-codec-headers-12
pkgs.libva
pkgs.libvdpau
];
# Apply Qt6 compatibility fixes
postPatch = ''
# Fix Qt6 deprecation warnings in MouseGrabber.cpp
sed -i 's|event->localPos()|event->position()|g' src/MouseGrabber.cpp
sed -i 's|event->screenPos()|event->globalPosition()|g' src/MouseGrabber.cpp
sed -i 's|event->posF()|event->position()|g' src/MouseGrabber.cpp
# Fix QMouseEvent and QHoverEvent constructors for Qt6 (cast device to QPointingDevice*)
sed -i 's|event->modifiers());|event->modifiers(), static_cast<const QPointingDevice*>(event->device()));|g' src/MouseGrabber.cpp
# Fix Qt6 deprecation warning in qthelper.hpp
sed -i 's|v.type()|v.metaType().id()|g' src/backend_mpv/qthelper.hpp
# Fix Qt6 qplatformnativeinterface.h removal in MpvBackend.cpp
# Wrap the Qt5-only header in version check
sed -i '/# include <qpa\/qplatformnativeinterface.h>/{
i\#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
a\#endif
}' src/backend_mpv/MpvBackend.cpp
# Remove TODO comments
sed -i '/TODO.*QX11Application/d' src/backend_mpv/MpvBackend.cpp
sed -i '/same for wayland/d' src/backend_mpv/MpvBackend.cpp
# Fix X11 display access for Qt6
sed -i '/params\[2\].type = MPV_RENDER_PARAM_X11_DISPLAY;/,/params\[2\].data = QX11Info::display();/{
s|auto\* native = QGuiApplication::platformNativeInterface();|auto* x11App = qApp->nativeInterface<QNativeInterface::QX11Application>();|
s|params\[2\].data = native->nativeResourceForWindow("display", nullptr);|params[2].data = x11App ? x11App->display() : nullptr;|
}' src/backend_mpv/MpvBackend.cpp
# Fix Wayland display access for Qt6
sed -i '/params\[2\].type = MPV_RENDER_PARAM_WL_DISPLAY;/,/params\[2\].data = native->nativeResourceForWindow("display", nullptr);/{
/params\[2\].type = MPV_RENDER_PARAM_WL_DISPLAY;/a\#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))\
auto* waylandApp = qApp->nativeInterface<QNativeInterface::QWaylandApplication>();\
params[2].data = waylandApp ? waylandApp->display() : nullptr;\
#else
/params\[2\].data = native->nativeResourceForWindow/a\#endif
}' src/backend_mpv/MpvBackend.cpp
'';
cmakeFlags = [
"-DQt6_DIR=${pkgs.kdePackages.qtbase}/lib/cmake/Qt6"
"-DUSE_PLASMAPKG=OFF"
"-DQT_MAJOR_VERSION=6"
"-DBUILD_QML=ON"
"-DBUILD_SCENE=ON"
];
dontWrapQtApps = true;
postInstall = ''
cd $out/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde
chmod +x ./contents/pyext.py
patchShebangs --build ./contents/pyext.py
cd -
'';
meta = with lib; {
description = "KDE wallpaper plugin integrating Wallpaper Engine";
homepage = "https://github.com/catsout/wallpaper-engine-kde-plugin";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = [];
};
}

View File

@@ -50,7 +50,6 @@
displayManager.sddm.wayland.enable = true;
displayManager.defaultSession = "gnome";
desktopManager.plasma6.enable = true;
xserver = {

View File

@@ -70,7 +70,6 @@ in
];
};
services.gnome.gnome-remote-desktop.enable = true;
my-namespace.wallpaper-engine-kde-plugin.enable = true;
my-namespace.keychron-keyboard.enable = true;
# lib.my-namespace.home.stream-tools.enable = true;