diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index a02b6f0be78f..0b9854a306aa 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -12292,6 +12292,15 @@ githubId = 401263; keys = [ { fingerprint = "1147 43F1 E707 6F3E 6F4B 2C96 B9A8 B592 F126 F8E8"; } ]; }; + macronova = { + name = "Sicheng Pan"; + email = "trivial@invariantspace.com"; + matrix = "@macronova:invariantspace.com"; + github = "Sicheng-Pan"; + githubId = 60079945; + keys = [ { fingerprint = "49D3 FFDA 4D30 DDEE 68EF AE84 EBC4 A200 6737 3921"; } ]; + }; + mac-chaffee = { name = "Mac Chaffee"; github = "mac-chaffee"; diff --git a/pkgs/kde/default.nix b/pkgs/kde/default.nix index 6f80e4eaadb4..e2fd6c7e1dac 100644 --- a/pkgs/kde/default.nix +++ b/pkgs/kde/default.nix @@ -78,6 +78,7 @@ phonon-vlc = self.callPackage ./misc/phonon-vlc {}; polkit-qt-1 = self.callPackage ./misc/polkit-qt-1 {}; pulseaudio-qt = self.callPackage ./misc/pulseaudio-qt {}; + wallpaper-engine-plugin = self.callPackage ./third-party/wallpaper-engine-plugin {}; } ); in diff --git a/pkgs/kde/third-party/wallpaper-engine-plugin/default.nix b/pkgs/kde/third-party/wallpaper-engine-plugin/default.nix new file mode 100644 index 000000000000..210b93f87464 --- /dev/null +++ b/pkgs/kde/third-party/wallpaper-engine-plugin/default.nix @@ -0,0 +1,61 @@ +{ + extra-cmake-modules, + fetchFromGitHub, + full, + kpackage, + libplasma, + lib, + lz4, + mkKdeDerivation, + mpv, + pkg-config, + python3, +}: +mkKdeDerivation { + pname = "wallpaper-engine-kde-plugin"; + version = "qt6"; + + src = fetchFromGitHub { + owner = "catsout"; + repo = "wallpaper-engine-kde-plugin"; + rev = "1e604105c586c7938c5b2c19e3dc8677b2eb4bb4"; + hash = "sha256-bKGQxyS8gUi+37lODLVHphMoQwLKZt/hpSjR5MN+5GA="; + fetchSubmodules = true; + }; + + patches = [./nix-plugin.patch]; + + extraBuildInputs = [ + extra-cmake-modules + full + libplasma + lz4 + mpv + ]; + + extraCmakeFlags = ["-DUSE_PLASMAPKG=ON"]; + + extraNativeBuildInputs = [ + kpackage + pkg-config + ]; + + postInstall = let + py3-ws = python3.withPackages (ps: + with ps; [ + websockets + ]); + in '' + cd ../plugin + PATH=${py3-ws}/bin:$PATH patchShebangs --build ./contents/pyext.py + substituteInPlace ./contents/ui/Pyext.qml --replace-fail NIX_STORE_PACKAGE_PATH ${placeholder "out"} + kpackagetool6 -i ./ -p $out/share/plasma/wallpapers/ + ''; + + meta = with lib; { + description = "A KDE wallpaper plugin integrating Wallpaper Engine"; + homepage = "https://github.com/catsout/wallpaper-engine-kde-plugin"; + license = licenses.gpl2; + maintainers = with maintainers; [ macronova ]; + }; +} diff --git a/pkgs/kde/third-party/wallpaper-engine-plugin/nix-plugin.patch b/pkgs/kde/third-party/wallpaper-engine-plugin/nix-plugin.patch new file mode 100644 index 000000000000..042226d6dabe --- /dev/null +++ b/pkgs/kde/third-party/wallpaper-engine-plugin/nix-plugin.patch @@ -0,0 +1,17 @@ +diff --git a/plugin/contents/pyext.py b/plugin/contents/pyext.py +old mode 100644 +new mode 100755 +diff --git a/plugin/contents/ui/Pyext.qml b/plugin/contents/ui/Pyext.qml +index 1a48f5e..8a9c9c9 100644 +--- a/plugin/contents/ui/Pyext.qml ++++ b/plugin/contents/ui/Pyext.qml +@@ -15,7 +15,8 @@ Item { + "[ -f /usr/share/$EXT ] && WKD=/usr/share/$EXT", + "[ -f \"$HOME/.local/share/$EXT\" ] && WKD=\"$HOME/.local/share/$EXT\"", + "[ -f \"$XDG_DATA_HOME/$EXT\" ] && WKD=\"$XDG_DATA_HOME/$EXT\"", +- `exec python3 "$WKD" "${ws_server.url}"` ++ "[ -f \"NIX_STORE_PACKAGE_PATH/share/$EXT\" ] && WKD=\"NIX_STORE_PACKAGE_PATH/share/$EXT\"", ++ `"$WKD" "${ws_server.url}"` + ].join("\n"); + return sh; + }