1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
{
mkDerivation, lib,
extra-cmake-modules, kdoctools, fetchpatch,
libepoxy, lcms2, libICE, libSM, libcap, libdrm, libinput, libxkbcommon, mesa,
pipewire, udev, wayland, xcb-util-cursor, xwayland,
plasma-wayland-protocols, wayland-protocols, libxcvt,
qtdeclarative, qtmultimedia, qtquickcontrols2, qtscript, qtsensors,
qtvirtualkeyboard, qtx11extras,
breeze-qt5, kactivities, kcompletion, kcmutils, kconfig, kconfigwidgets,
kcoreaddons, kcrash, kdeclarative, kdecoration, kglobalaccel, ki18n,
kiconthemes, kidletime, kinit, kio, knewstuff, knotifications, kpackage,
krunner, kscreenlocker, kservice, kwayland, kwidgetsaddons,
kwindowsystem, kxmlgui, plasma-framework, libqaccessibilityclient,
python3
}:
# TODO (ttuegel): investigate qmlplugindump failure
mkDerivation {
pname = "kwin";
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
buildInputs = [
libepoxy lcms2 libICE libSM libcap libdrm libinput libxkbcommon mesa pipewire
udev wayland xcb-util-cursor xwayland
libxcvt plasma-wayland-protocols wayland-protocols
qtdeclarative qtmultimedia qtquickcontrols2 qtscript qtsensors
qtvirtualkeyboard qtx11extras
breeze-qt5 kactivities kcmutils kcompletion kconfig kconfigwidgets
kcoreaddons kcrash kdeclarative kdecoration kglobalaccel ki18n kiconthemes
kidletime kinit kio knewstuff knotifications kpackage krunner kscreenlocker
kservice kwayland kwidgetsaddons kwindowsystem kxmlgui
plasma-framework libqaccessibilityclient
];
outputs = [ "out" "dev" ];
postPatch = ''
patchShebangs src/effects/strip-effect-metadata.py
'';
patches = [
./0001-follow-symlinks.patch
./0002-xwayland.patch
./0003-plugins-qpa-allow-using-nixos-wrapper.patch
./0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch
# Pass special environments through arguemnts to `kwin_wayland`, bypassing
# ld.so(8) environment stripping due to `kwin_wayland`'s capabilities.
# We need this to have `TZDIR` correctly set for `plasmashell`, or
# everything related to timezone, like clock widgets, will be broken.
# https://invent.kde.org/plasma/kwin/-/merge_requests/1590
(fetchpatch {
url = "https://invent.kde.org/plasma/kwin/-/commit/9a008b223ad696db3bf5692750f2b74e578e08b8.diff";
sha256 = "sha256-f35G+g2MVABLDbAkCed3ZmtDWrzYn1rdD08mEx35j4k=";
})
];
CXXFLAGS = [
''-DNIXPKGS_XWAYLAND=\"${lib.getBin xwayland}/bin/Xwayland\"''
];
postInstall = ''
# Some package(s) refer to these service types by the wrong name.
# I would prefer to patch those packages, but I cannot find them!
ln -s ''${!outputBin}/share/kservicetypes5/kwineffect.desktop \
''${!outputBin}/share/kservicetypes5/kwin-effect.desktop
ln -s ''${!outputBin}/share/kservicetypes5/kwinscript.desktop \
''${!outputBin}/share/kservicetypes5/kwin-script.desktop
'';
}
|