157 lines
3.1 KiB
Nix
157 lines
3.1 KiB
Nix
{ 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
|
|
}:
|
|
|
|
# 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
|
|
./0001-Lower-CAP_SYS_NICE-from-the-ambient-set.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.getExe 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
|
|
'';
|
|
}
|