nixpkgs/pkgs/desktops/deepin/dde-kwin/default.nix
2019-10-22 17:36:39 -04:00

141 lines
3 KiB
Nix

{ stdenv
, mkDerivation
, pkgconfig
, fetchFromGitHub
, deepin
, cmake
, extra-cmake-modules
, qtbase
, libxcb
, kglobalaccel
, kwindowsystem
, kcoreaddons
, kwin
, dtkcore
, gsettings-qt
, fontconfig
, deepin-desktop-schemas
, glib
, libXrender
, mtdev
, qttools
, deepin-gettext-tools
, kwayland
, qtx11extras
, qtquickcontrols2
, epoxy
, qt5integration
, dde-session-ui
, dbus
, wrapGAppsHook
}:
mkDerivation rec {
pname = "dde-kwin";
version = "5.0.0";
src = fetchFromGitHub {
owner = "linuxdeepin";
repo = pname;
rev = version;
sha256 = "0bvkx9h5ygj46a0j76kfyq3gvk6zn4fx6clhrmcr40hbi2k33cbl";
};
nativeBuildInputs = [
cmake
deepin-gettext-tools
deepin.setupHook
extra-cmake-modules
pkgconfig
wrapGAppsHook
];
buildInputs = [
deepin-desktop-schemas
dtkcore
epoxy
fontconfig
glib
gsettings-qt
kcoreaddons
kglobalaccel
kwayland
kwin
kwindowsystem
libXrender
libxcb
mtdev
qtbase
qtquickcontrols2
qttools
qtx11extras
qt5integration
];
# Need to add kwayland around:
# * https://github.com/linuxdeepin/dde-kwin/blob/5226bb984c844129f9fa589da56e77decb7b39a1/plugins/kwineffects/blur/CMakeLists.txt#L14
NIX_CFLAGS_COMPILE = "-I${kwayland.dev}/include/KF5";
cmakeFlags = [
"-DKWIN_VERSION=${(builtins.parseDrvName kwin.name).version}"
];
patches = [
./0001-dde-kwin.pc-make-paths-relative.patch
./fix-paths.patch
];
postPatch = ''
searchHardCodedPaths
patchShebangs translate_ts2desktop.sh \
translate_generation.sh \
translate_desktop2ts.sh \
plugins/kwin-xcb/plugin/translate_generation.sh
fixPath ${deepin-gettext-tools} /usr/bin/deepin-desktop-ts-convert translate_desktop2ts.sh translate_ts2desktop.sh
fixPath $out /etc/xdg configures/CMakeLists.txt deepin-wm-dbus/deepinwmfaker.cpp
# TODO: Need environmental patch
fixPath /run/current-system/sw /usr/lib plugins/kwin-xcb/plugin/main.cpp
substituteInPlace configures/kwin-wm-multitaskingview.desktop \
--replace "dbus-send" "${dbus}/bin/dbus-send"
fixPath ${dde-session-ui} /usr/lib/deepin-daemon/dde-warning-dialog deepin-wm-dbus/deepinwmfaker.cpp
# Correct qt plugin installation path to be within dde-kwin prefix.
substituteInPlace CMakeLists.txt \
--subst-var-by plugin_path "$out/$qtPluginPrefix"
'';
postInstall = ''
# Correct invalid path in .pc
substituteInPlace $out/lib/pkgconfig/dde-kwin.pc \
--replace "-L/usr/X11R6/lib64" ""
chmod +x $out/bin/kwin_no_scale
'';
dontWrapQtApps = true;
preFixup = ''
gappsWrapperArgs+=(
"''${qtWrapperArgs[@]}"
)
'';
enableParallelBuilding = true;
passthru.updateScript = deepin.updateScript { name = "${pname}-${version}"; };
meta = with stdenv.lib; {
description = "KWin configuration for Deepin Desktop Environment";
homepage = "https://github.com/linuxdeepin/dde-kwin";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ romildo worldofpeace ];
};
}