about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/deepin/dde-kwin/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/deepin/dde-kwin/default.nix')
-rw-r--r--nixpkgs/pkgs/desktops/deepin/dde-kwin/default.nix140
1 files changed, 140 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/deepin/dde-kwin/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-kwin/default.nix
new file mode 100644
index 000000000000..850186953f63
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/dde-kwin/default.nix
@@ -0,0 +1,140 @@
+{ 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 ];
+  };
+}