nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix

177 lines
3.2 KiB
Nix

{ mkDerivation
, lib
, extra-cmake-modules
, kdoctools
, isocodes
, libdbusmenu
, libSM
, libXcursor
, libXtst
, libXft
, pam
, wayland
, xmessage
, xsetroot
, baloo
, breeze-qt5
, kactivities
, kactivities-stats
, kcmutils
, kconfig
, kcrash
, kdbusaddons
, kdeclarative
, kdelibs4support
, kdesu
, kglobalaccel
, kidletime
, kinit
, kjsembed
, knewstuff
, knotifyconfig
, kpackage
, kpeople
, krunner
, kscreenlocker
, ktexteditor
, ktextwidgets
, kwallet
, kwayland
, kwin
, kxmlrpcclient
, libkscreen
, libksysguard
, libqalculate
, networkmanager-qt
, phonon
, plasma-framework
, prison
, solid
, kholidays
, kquickcharts
, appstream-qt
, plasma-wayland-protocols
, kpipewire
, libkexiv2
, kuserfeedback
, qtgraphicaleffects
, qtquickcontrols
, qtquickcontrols2
, qtscript
, qttools
, qtwayland
, qtx11extras
, qqc2-desktop-style
, polkit-qt
, pipewire
, libdrm
, fetchpatch
}:
let inherit (lib) getBin getLib; in
mkDerivation {
pname = "plasma-workspace";
passthru.providedSessions = [ "plasma" "plasmawayland" ];
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
buildInputs = [
isocodes
libdbusmenu
libSM
libXcursor
libXtst
libXft
pam
wayland
baloo
kactivities
kactivities-stats
kcmutils
kconfig
kcrash
kdbusaddons
kdeclarative
kdelibs4support
kdesu
kglobalaccel
kidletime
kjsembed
knewstuff
knotifyconfig
kpackage
kpeople
krunner
kscreenlocker
ktexteditor
ktextwidgets
kwallet
kwayland
kwin
kxmlrpcclient
libkscreen
libksysguard
libqalculate
networkmanager-qt
phonon
plasma-framework
prison
solid
kholidays
kquickcharts
appstream-qt
plasma-wayland-protocols
kpipewire
libkexiv2
kuserfeedback
qtgraphicaleffects
qtquickcontrols
qtquickcontrols2
qtscript
qtwayland
qtx11extras
qqc2-desktop-style
polkit-qt
pipewire
libdrm
];
propagatedUserEnvPkgs = [ qtgraphicaleffects ];
outputs = [ "out" "dev" ];
cmakeFlags = [
''-DNIXPKGS_BREEZE_WALLPAPERS=${getBin breeze-qt5}/share/wallpapers''
];
patches = [
./0001-startkde.patch
./0002-absolute-wallpaper-install-dir.patch
# Backport patch for cleaner shutdowns
(fetchpatch {
url = "https://invent.kde.org/plasma/plasma-workspace/-/commit/6ce8f434139f47e6a71bf0b68beae92be8845ce4.patch";
hash = "sha256-cYw/4/9tSnCbArLr72O8F8V0NLkVXdCVnJGoGxSzZMg=";
})
];
# QT_INSTALL_BINS refers to qtbase, and qdbus is in qttools
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace 'ecm_query_qt(QtBinariesDir QT_INSTALL_BINS)' 'set(QtBinariesDir "${lib.getBin qttools}/bin")'
'';
# work around wrapQtAppsHook double-wrapping kcminit_startup,
# which is a symlink to kcminit
postFixup = ''
ln -sf $out/bin/kcminit $out/bin/kcminit_startup
'';
env.NIX_CFLAGS_COMPILE = toString [
''-DNIXPKGS_XMESSAGE="${getBin xmessage}/bin/xmessage"''
''-DNIXPKGS_XSETROOT="${getBin xsetroot}/bin/xsetroot"''
''-DNIXPKGS_START_KDEINIT_WRAPPER="${getLib kinit}/libexec/kf5/start_kdeinit_wrapper"''
''-DNIXPKGS_KDEINIT5_SHUTDOWN="${getBin kinit}/bin/kdeinit5_shutdown"''
];
}