about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/lxqt
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/lxqt')
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/compton-conf/default.nix52
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/default.nix108
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/libfm-qt/default.nix57
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/liblxqt/default.nix62
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/liblxqt/fix-application-path.patch23
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/libqtxdg/default.nix49
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/libsysstat/default.nix41
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lximage-qt/default.nix58
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-about/default.nix49
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-admin/default.nix59
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-archiver/default.nix55
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/LXQtConfigVars.cmake7
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/default.nix70
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/setup-hook.sh15
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-config/default.nix79
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-globalkeys/default.nix51
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-menu-data/default.nix36
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-notificationd/default.nix51
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix52
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-panel/default.nix83
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-policykit/default.nix60
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix57
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-qtplugin/default.nix56
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-runner/default.nix61
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-session/default.nix62
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-sudo/default.nix53
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/lxqt-themes/default.nix34
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/obconf-qt/default.nix53
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/pavucontrol-qt/default.nix45
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/pcmanfm-qt/default.nix59
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/qlipper/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/qps/default.nix49
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/qterminal/default.nix48
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/qtermwidget/default.nix43
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/qtxdg-tools/default.nix41
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/screengrab/default.nix56
-rw-r--r--nixpkgs/pkgs/desktops/lxqt/xdg-desktop-portal-lxqt/default.nix49
37 files changed, 1922 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/lxqt/compton-conf/default.nix b/nixpkgs/pkgs/desktops/lxqt/compton-conf/default.nix
new file mode 100644
index 000000000000..4a9a878d31c7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/compton-conf/default.nix
@@ -0,0 +1,52 @@
+{ stdenv
+, lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qtbase
+, qttools
+, lxqt
+, libconfig
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "compton-conf";
+  version = "0.16.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-GNS0GdkQOEFQHCeXFVNDdT35KCRhfwmkL78tpY71mz0=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt.lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    libconfig
+  ];
+
+  preConfigure = ''
+    substituteInPlace autostart/CMakeLists.txt \
+      --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" \
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    broken = stdenv.isDarwin;
+    homepage = "https://github.com/lxqt/compton-conf";
+    description = "GUI configuration tool for compton X composite manager";
+    license = licenses.lgpl21Plus;
+    platforms = with platforms; unix;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/default.nix b/nixpkgs/pkgs/desktops/lxqt/default.nix
new file mode 100644
index 000000000000..eacdac554136
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/default.nix
@@ -0,0 +1,108 @@
+{ pkgs, makeScope, libsForQt5, qt5 }:
+let
+  packages = self: with self; {
+
+    # For compiling information, see:
+    # - https://github.com/lxqt/lxqt/wiki/Building-from-source
+
+    ### BASE
+    libqtxdg = callPackage ./libqtxdg {};
+    lxqt-build-tools = callPackage ./lxqt-build-tools {};
+    libsysstat = callPackage ./libsysstat {};
+    liblxqt = callPackage ./liblxqt {};
+    qtxdg-tools = callPackage ./qtxdg-tools {};
+
+    ### CORE 1
+    libfm-qt = callPackage ./libfm-qt {};
+    lxqt-about = callPackage ./lxqt-about {};
+    lxqt-admin = callPackage ./lxqt-admin {};
+    lxqt-config = callPackage ./lxqt-config {};
+    lxqt-globalkeys = callPackage ./lxqt-globalkeys {};
+    lxqt-menu-data = callPackage ./lxqt-menu-data {};
+    lxqt-notificationd = callPackage ./lxqt-notificationd {};
+    lxqt-openssh-askpass = callPackage ./lxqt-openssh-askpass {};
+    lxqt-policykit = callPackage ./lxqt-policykit {};
+    lxqt-powermanagement = callPackage ./lxqt-powermanagement {};
+    lxqt-qtplugin = callPackage ./lxqt-qtplugin {};
+    lxqt-session = callPackage ./lxqt-session {};
+    lxqt-sudo = callPackage ./lxqt-sudo {};
+    lxqt-themes = callPackage ./lxqt-themes {};
+    pavucontrol-qt = callPackage ./pavucontrol-qt {};
+    qtermwidget = callPackage ./qtermwidget {};
+
+    ### CORE 2
+    lxqt-panel = callPackage ./lxqt-panel {};
+    lxqt-runner = callPackage ./lxqt-runner {};
+    pcmanfm-qt = callPackage ./pcmanfm-qt {};
+
+    ### OPTIONAL
+    qterminal = callPackage ./qterminal {};
+    compton-conf = callPackage ./compton-conf {};
+    obconf-qt = callPackage ./obconf-qt {};
+    lximage-qt = callPackage ./lximage-qt {};
+    qps = callPackage ./qps {};
+    screengrab = callPackage ./screengrab {};
+    qlipper = callPackage ./qlipper {};
+    lxqt-archiver = callPackage ./lxqt-archiver {};
+    xdg-desktop-portal-lxqt = callPackage ./xdg-desktop-portal-lxqt {};
+
+    preRequisitePackages = [
+      libsForQt5.kwindowsystem # provides some QT5 plugins needed by lxqt-panel
+      libsForQt5.libkscreen # provides plugins for screen management software
+      pkgs.libfm
+      pkgs.libfm-extra
+      pkgs.menu-cache
+      pkgs.openbox # default window manager
+      qt5.qtsvg # provides QT5 plugins for svg icons
+    ];
+
+    corePackages = [
+      ### BASE
+      libqtxdg
+      libsysstat
+      liblxqt
+
+      ### CORE 1
+      libfm-qt
+      lxqt-about
+      lxqt-admin
+      lxqt-config
+      lxqt-globalkeys
+      lxqt-menu-data
+      lxqt-notificationd
+      lxqt-openssh-askpass
+      lxqt-policykit
+      lxqt-powermanagement
+      lxqt-qtplugin
+      lxqt-session
+      lxqt-sudo
+      lxqt-themes
+      pavucontrol-qt
+
+      ### CORE 2
+      lxqt-panel
+      lxqt-runner
+      pcmanfm-qt
+    ];
+
+    optionalPackages = [
+      ### LXQt project
+      qterminal
+      obconf-qt
+      lximage-qt
+      lxqt-archiver
+
+      ### QtDesktop project
+      qps
+      screengrab
+
+      ### Default icon theme
+      libsForQt5.breeze-icons
+
+      ### Screen saver
+      pkgs.xscreensaver
+    ];
+
+  };
+in
+makeScope libsForQt5.newScope packages
diff --git a/nixpkgs/pkgs/desktops/lxqt/libfm-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/libfm-qt/default.nix
new file mode 100644
index 000000000000..c945107aaf3b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/libfm-qt/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, lxqt-build-tools
+, lxqt-menu-data
+, pcre
+, libexif
+, xorg
+, libfm
+, menu-cache
+, qtx11extras
+, qttools
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "libfm-qt";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = "libfm-qt";
+    rev = version;
+    hash = "sha256-QxPYSA7537K+/dRTxIYyg+Q/kj75rZOdzlUsmSdQcn4=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    lxqt-menu-data
+    pcre
+    libexif
+    xorg.libpthreadstubs
+    xorg.libxcb
+    xorg.libXdmcp
+    qtx11extras
+    libfm
+    menu-cache
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/libfm-qt";
+    description = "Core library of PCManFM-Qt (Qt binding for libfm)";
+    license = licenses.lgpl21Plus;
+    platforms = with platforms; unix;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/liblxqt/default.nix b/nixpkgs/pkgs/desktops/lxqt/liblxqt/default.nix
new file mode 100644
index 000000000000..f7fba687bb86
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/liblxqt/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, qtx11extras
+, qttools
+, qtsvg
+, libqtxdg
+, polkit-qt
+, kwindowsystem
+, xorg
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "liblxqt";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-daD4okYc4J2nRrO6423W0IUK9173zcepCvvMtx7Vho4=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtx11extras
+    qtsvg
+    polkit-qt
+    kwindowsystem
+    libqtxdg
+    xorg.libXScrnSaver
+  ];
+
+  # convert name of wrapped binary, e.g. .lxqt-whatever-wrapped to the original name, e.g. lxqt-whatever so binaries can find their resources
+  patches = [ ./fix-application-path.patch ];
+
+  postPatch = ''
+    # https://github.com/NixOS/nixpkgs/issues/119766
+    substituteInPlace lxqtbacklight/linux_backend/driver/libbacklight_backend.c \
+      --replace "pkexec lxqt-backlight_backend" "pkexec $out/bin/lxqt-backlight_backend"
+
+    sed -i "s|\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}|''${out}/share/polkit-1/actions|" CMakeLists.txt
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Core utility library for all LXQt components";
+    homepage = "https://github.com/lxqt/liblxqt";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/liblxqt/fix-application-path.patch b/nixpkgs/pkgs/desktops/lxqt/liblxqt/fix-application-path.patch
new file mode 100644
index 000000000000..12ef97db5d82
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/liblxqt/fix-application-path.patch
@@ -0,0 +1,23 @@
+--- a/lxqtapplication.cpp
++++ b/lxqtapplication.cpp
+@@ -77,7 +77,7 @@ Application::Application(int &argc, char** argv, bool handleQuitSignals)
+ 
+ void Application::updateTheme()
+ {
+-    const QString styleSheetKey = QFileInfo(applicationFilePath()).fileName();
++    const QString styleSheetKey = QFileInfo(applicationFilePath()).fileName().mid(1).chopped(8);
+     setStyleSheet(lxqtTheme.qss(styleSheetKey));
+     Q_EMIT themeChanged();
+ }
+
+--- a/lxqttranslator.cpp
++++ b/lxqttranslator.cpp
+@@ -147,7 +147,7 @@ bool Translator::translateApplication(const QString &applicationName)
+     if (!applicationName.isEmpty())
+         return translate(applicationName);
+     else
+-        return translate(QFileInfo(QCoreApplication::applicationFilePath()).baseName());
++        return translate(QFileInfo(QCoreApplication::applicationFilePath()).baseName().mid(1).chopped(8));
+ }
+ 
+ 
diff --git a/nixpkgs/pkgs/desktops/lxqt/libqtxdg/default.nix b/nixpkgs/pkgs/desktops/lxqt/libqtxdg/default.nix
new file mode 100644
index 000000000000..f2c42ccca592
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/libqtxdg/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, qtbase
+, qtsvg
+, lxqt-build-tools
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "libqtxdg";
+  version = "3.12.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-y+3noaHubZnwUUs8vbMVvZPk+6Fhv37QXUb//reedCU=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtsvg
+  ];
+
+  preConfigure = ''
+    cmakeFlagsArray+=(
+      "-DQTXDGX_ICONENGINEPLUGIN_INSTALL_PATH=$out/$qtPluginPrefix/iconengines"
+      "-DCMAKE_INSTALL_INCLUDEDIR=include"
+      "-DCMAKE_INSTALL_LIBDIR=lib"
+    )
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/libqtxdg";
+    description = "Qt implementation of freedesktop.org xdg specs";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/libsysstat/default.nix b/nixpkgs/pkgs/desktops/lxqt/libsysstat/default.nix
new file mode 100644
index 000000000000..5e3514310c3d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/libsysstat/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, qtbase
+, lxqt-build-tools
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "libsysstat";
+  version = "0.4.6";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-dk3I+bkU2ztqIe33rTYneSUd8VFzrElTqVrjHQhAWXw=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+  ];
+
+  buildInputs = [
+    qtbase
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    broken = stdenv.isDarwin;
+    description = "Library used to query system info and statistics";
+    homepage = "https://github.com/lxqt/libsysstat";
+    license = licenses.lgpl21Plus;
+    platforms = with platforms; unix;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lximage-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/lximage-qt/default.nix
new file mode 100644
index 000000000000..ec95c19b0c5a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lximage-qt/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qtbase
+, qttools
+, qtx11extras
+, qtsvg
+, qtimageformats
+, xorg
+, lxqt-build-tools
+, libfm-qt
+, libexif
+, menu-cache
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lximage-qt";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-Igfd8lhKDjdseQeARiirj+tEoJdcaeHuyd4mfQHOVg0=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    qtsvg
+    qtimageformats # add-on module to support more image file formats
+    libfm-qt
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    libexif
+    menu-cache
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lximage-qt";
+    description = "The image viewer and screenshot tool for lxqt";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; unix;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-about/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-about/default.nix
new file mode 100644
index 000000000000..fd20c68ba863
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-about/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, qtx11extras
+, qttools
+, qtsvg
+, kwindowsystem
+, liblxqt
+, libqtxdg
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-about";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-FA9xvIi45qpD6iGxiiNKNlcLKzJtb0cWmvDBJRnJFwA=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtx11extras
+    qtsvg
+    kwindowsystem
+    liblxqt
+    libqtxdg
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-about";
+    description = "Dialogue window providing information about LXQt and the system it's running on";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-admin/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-admin/default.nix
new file mode 100644
index 000000000000..fc911cf27ea5
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-admin/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, qtx11extras
+, qttools
+, qtsvg
+, kwindowsystem
+, liblxqt
+, libqtxdg
+, polkit-qt
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-admin";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-wPK3TMBC359GnisjpdY2zU+Jnvr7Hdzb6r+HuUQC3mo=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtx11extras
+    qtsvg
+    kwindowsystem
+    liblxqt
+    libqtxdg
+    polkit-qt
+  ];
+
+  postPatch = ''
+    for f in lxqt-admin-{time,user}/CMakeLists.txt; do
+      substituteInPlace $f --replace \
+        "\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}" \
+        "$out/share/polkit-1/actions"
+    done
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-admin";
+    description = "LXQt system administration tool";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-archiver/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-archiver/default.nix
new file mode 100644
index 000000000000..40cad3cb6082
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-archiver/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, lxqt-build-tools
+, json-glib
+, libexif
+, libfm-qt
+, menu-cache
+, qtbase
+, qttools
+, qtx11extras
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-archiver";
+  version = "0.9.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = "lxqt-archiver";
+    rev = version;
+    hash = "sha256-8pfUpyjn01D8CL+2PjGkZqyHu+lpHZIXlXn67rZoxMY=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    json-glib
+    libexif
+    libfm-qt
+    menu-cache
+    qtbase
+    qtx11extras
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-archiver/";
+    description = "Archive tool for the LXQt desktop environment";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; unix;
+    maintainers = with maintainers; [ jchw ] ++ teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/LXQtConfigVars.cmake b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/LXQtConfigVars.cmake
new file mode 100644
index 000000000000..fd7ef927f8b3
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/LXQtConfigVars.cmake
@@ -0,0 +1,7 @@
+add_definitions("-DLXQT_RELATIVE_SHARE_DIR=\"${LXQT_RELATIVE_SHARE_DIR}\"")
+add_definitions("-DLXQT_SHARE_DIR=\"${LXQT_SHARE_DIR}\"")
+add_definitions("-DLXQT_RELATIVE_SHARE_TRANSLATIONS_DIR=\"${LXQT_RELATIVE_TRANSLATIONS_DIR}\"")
+add_definitions("-DLXQT_SHARE_TRANSLATIONS_DIR=\"${LXQT_TRANSLATIONS_DIR}\"")
+add_definitions("-DLXQT_GRAPHICS_DIR=\"${LXQT_GRAPHICS_DIR}\"")
+add_definitions("-DLXQT_ETC_XDG_DIR=\"${LXQT_ETC_XDG_DIR}\"")
+add_definitions("-DLXQT_DATA_DIR=\"${LXQT_DATA_DIR}\"")
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/default.nix
new file mode 100644
index 000000000000..b3874abfa576
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/default.nix
@@ -0,0 +1,70 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, pcre
+, qtbase
+, glib
+, perl
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-build-tools";
+  version = "0.13.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-4/hVlEdqqqd6CNitCRkIzsS1R941vPJdirIklp4acXA=";
+  };
+
+  postPatch = ''
+    # Nix clang on darwin identifies as 'Clang', not 'AppleClang'
+    # Without this, dependants fail to link.
+    substituteInPlace cmake/modules/LXQtCompilerSettings.cmake \
+      --replace AppleClang Clang
+
+    # GLib 2.72 moved the file from gio-unix-2.0 to gio-2.0.
+    # https://github.com/lxqt/lxqt-build-tools/pull/74
+    substituteInPlace cmake/find-modules/FindGLIB.cmake \
+      --replace gio/gunixconnection.h gio/gunixfdlist.h
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    setupHook
+  ];
+
+  buildInputs = [
+    qtbase
+    glib
+    pcre
+  ];
+
+  propagatedBuildInputs = [
+    perl # needed by LXQtTranslateDesktop.cmake
+  ];
+
+  setupHook = ./setup-hook.sh;
+
+  # We're dependent on this macro doing add_definitions in most places
+  # But we have the setup-hook to set the values.
+  postInstall = ''
+    rm $out/share/cmake/lxqt-build-tools/modules/LXQtConfigVars.cmake
+    cp ${./LXQtConfigVars.cmake} $out/share/cmake/lxqt-build-tools/modules/LXQtConfigVars.cmake
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-build-tools";
+    description = "Various packaging tools and scripts for LXQt applications";
+    license = licenses.lgpl21Plus;
+    platforms = with platforms; unix;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/setup-hook.sh b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/setup-hook.sh
new file mode 100644
index 000000000000..e40765116e9c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/setup-hook.sh
@@ -0,0 +1,15 @@
+LXQtCMakePostHook() {
+  cmakeFlagsArray+=(
+    -DLXQT_LIBRARY_NAME=lxqt
+    -DLXQT_SHARE_DIR=$out/share/lxqt
+    -DLXQT_TRANSLATIONS_DIR=$out/share/lxqt/translations
+    -DLXQT_GRAPHICS_DIR=$out/share/lxqt/graphics
+    -DLXQT_ETC_XDG_DIR=$out/etc/xdg
+    -DLXQT_DATA_DIR=$out/share
+    -DLXQT_RELATIVE_SHARE_DIR=lxqt
+    -DLXQT_RELATIVE_SHARE_TRANSLATIONS_DIR=lxqt/translations
+  )
+
+}
+
+postHooks+=(LXQtCMakePostHook)
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-config/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-config/default.nix
new file mode 100644
index 000000000000..64b54b3e6bc3
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-config/default.nix
@@ -0,0 +1,79 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, glib
+, lxqt-build-tools
+, lxqt-menu-data
+, qtbase
+, qtx11extras
+, qttools
+, qtsvg
+, kwindowsystem
+, libkscreen
+, liblxqt
+, libqtxdg
+, xkeyboard_config
+, xorg
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-config";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-ypHjUYRtrWx1Cp9KGSqsWpRHg7zoV0YDW6P4amJKapI=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    glib.bin
+    qtbase
+    qtx11extras
+    qtsvg
+    kwindowsystem
+    libkscreen
+    liblxqt
+    libqtxdg
+    lxqt-menu-data
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    xorg.libXScrnSaver
+    xorg.libxcb
+    xorg.libXcursor
+    xorg.xf86inputlibinput
+    xorg.xf86inputlibinput.dev
+  ];
+
+  postPatch = ''
+    substituteInPlace lxqt-config-appearance/configothertoolkits.cpp \
+      --replace 'QStringLiteral("gsettings' \
+                'QStringLiteral("${glib.bin}/bin/gsettings'
+
+    substituteInPlace lxqt-config-input/keyboardlayoutconfig.h \
+      --replace '/usr/share/X11/xkb/rules/base.lst' \
+                '${xkeyboard_config}/share/X11/xkb/rules/base.lst'
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-config";
+    description = "Tools to configure LXQt and the underlying operating system";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-globalkeys/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-globalkeys/default.nix
new file mode 100644
index 000000000000..83235bfdaebd
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-globalkeys/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, qtbase
+, qttools
+, qtx11extras
+, qtsvg
+, kwindowsystem
+, liblxqt
+, libqtxdg
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-globalkeys";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-2S61d7BSuDPU1dNXLENpmpt6BB+CAeCtBVQS+ZGxrtU=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    qtsvg
+    kwindowsystem
+    liblxqt
+    libqtxdg
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-globalkeys";
+    description = "LXQt service for global keyboard shortcuts registration";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-menu-data/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-menu-data/default.nix
new file mode 100644
index 000000000000..5ac4a5b0b714
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-menu-data/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, qttools
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-menu-data";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-I9jb2e57ZBvND27F5C1zMaoFtij5TetmN9zbJSjxiS4=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-menu-data";
+    description = "Menu files for LXQt Panel, Configuration Center and PCManFM-Qt/libfm-qt";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-notificationd/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-notificationd/default.nix
new file mode 100644
index 000000000000..a39c560d48d0
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-notificationd/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, qtbase
+, qttools
+, qtsvg
+, kwindowsystem
+, liblxqt
+, libqtxdg
+, qtx11extras
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-notificationd";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-Y3+ShGb1DKJw4zv3SCwEq2unJesI1q5OaTlSO8fP76A=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtsvg
+    kwindowsystem
+    liblxqt
+    libqtxdg
+    qtx11extras
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-notificationd";
+    description = "The LXQt notification daemon";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix
new file mode 100644
index 000000000000..ab23fc36da83
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, qtbase
+, qttools
+, qtsvg
+, qtx11extras
+, kwindowsystem
+, liblxqt
+, libqtxdg
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-openssh-askpass";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-o/hJdaGtjcJiwjqfvfwfcOUv4YdAeeW+rCxsmZZdJQ0=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    qtsvg
+    kwindowsystem
+    liblxqt
+    libqtxdg
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-openssh-askpass";
+    description = "GUI to query passwords on behalf of SSH agents";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+    mainProgram = "lxqt-openssh-askpass";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-panel/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-panel/default.nix
new file mode 100644
index 000000000000..16895a1aa956
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-panel/default.nix
@@ -0,0 +1,83 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, alsa-lib
+, kguiaddons
+, kwindowsystem
+, libXdamage
+, libdbusmenu
+, liblxqt
+, libpulseaudio
+, libqtxdg
+, libstatgrab
+, libsysstat
+, lm_sensors
+, lxqt-build-tools
+, lxqt-globalkeys
+, lxqt-menu-data
+, gitUpdater
+, menu-cache
+, pcre
+, qtbase
+, qtsvg
+, qttools
+, qtx11extras
+, solid
+, xorg
+}:
+
+mkDerivation rec {
+  pname = "lxqt-panel";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-LQq1XOA0dGXXORVr2H/gI+axvCAd4P3nB4zCFYWgagc=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    alsa-lib
+    kguiaddons
+    kwindowsystem
+    libXdamage
+    libdbusmenu
+    liblxqt
+    libpulseaudio
+    libqtxdg
+    libstatgrab
+    libsysstat
+    lm_sensors
+    lxqt-globalkeys
+    lxqt-menu-data
+    menu-cache
+    pcre
+    qtbase
+    qtsvg
+    qtx11extras
+    solid
+    xorg.libXdmcp
+    xorg.libXtst
+    xorg.libpthreadstubs
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-panel";
+    description = "The LXQt desktop panel";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-policykit/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-policykit/default.nix
new file mode 100644
index 000000000000..da3480b73e39
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-policykit/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, lxqt-build-tools
+, qtbase
+, qttools
+, qtx11extras
+, qtsvg
+, polkit
+, polkit-qt
+, kwindowsystem
+, liblxqt
+, libqtxdg
+, pcre
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-policykit";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-w0o76oBFNy3syQqyFZdAbFUu8yX+uA6cMOHf3WfKPEU=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    qtsvg
+    polkit
+    polkit-qt
+    kwindowsystem
+    liblxqt
+    libqtxdg
+    pcre
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-policykit";
+    description = "The LXQt PolicyKit agent";
+    mainProgram = "lxqt-policykit-agent";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix
new file mode 100644
index 000000000000..1823e7fb5d0d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, qtbase
+, qttools
+, qtx11extras
+, qtsvg
+, kwindowsystem
+, solid
+, kidletime
+, liblxqt
+, libqtxdg
+, lxqt-globalkeys
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-powermanagement";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-1koP+ElW5e85TJqToaErnGkTn3uRHk45bDDrXG6Oy68=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    qtsvg
+    kwindowsystem
+    solid
+    kidletime
+    liblxqt
+    libqtxdg
+    lxqt-globalkeys
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-powermanagement";
+    description = "Power management module for LXQt";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-qtplugin/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-qtplugin/default.nix
new file mode 100644
index 000000000000..264575b019d8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-qtplugin/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, libdbusmenu
+, libfm-qt
+, libqtxdg
+, lxqt-build-tools
+, gitUpdater
+, qtbase
+, qtsvg
+, qttools
+, qtx11extras
+}:
+
+mkDerivation rec {
+  pname = "lxqt-qtplugin";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-0shNkM1AGAjzMQDGLOIP2DFx6goJGoD0U0Gr+rRRFrk=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    libdbusmenu
+    libfm-qt
+    libqtxdg
+    qtbase
+    qtsvg
+    qtx11extras
+  ];
+
+  postPatch = ''
+    substituteInPlace src/CMakeLists.txt \
+      --replace "DESTINATION \"\''${QT_PLUGINS_DIR}" "DESTINATION \"$qtPluginPrefix"
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-qtplugin";
+    description = "LXQt Qt platform integration plugin";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-runner/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-runner/default.nix
new file mode 100644
index 000000000000..3d5bdf0a01b8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-runner/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, lxqt-build-tools
+, qtbase
+, qttools
+, qtsvg
+, kwindowsystem
+, liblxqt
+, libqtxdg
+, lxqt-globalkeys
+, qtx11extras
+, menu-cache
+, muparser
+, pcre
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-runner";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-NGytLQ2D5t1UdMGZoeHxHaXPwbRFDx+11ocjImXqZBU=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtsvg
+    qtx11extras
+    kwindowsystem
+    liblxqt
+    libqtxdg
+    lxqt-globalkeys
+    menu-cache
+    muparser
+    pcre
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-runner";
+    description = "Tool used to launch programs quickly by typing their names";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-session/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-session/default.nix
new file mode 100644
index 000000000000..421d166734f1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-session/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, lxqt-build-tools
+, qtbase
+, qttools
+, qtsvg
+, qtx11extras
+, kwindowsystem
+, liblxqt
+, libqtxdg
+, qtxdg-tools
+, procps
+, xorg
+, xdg-user-dirs
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-session";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-kVDPJPYBwK7aXCIWGClwfM9J3067U8lPVWt0jFfqooY=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtsvg
+    qtx11extras
+    kwindowsystem
+    liblxqt
+    libqtxdg
+    qtxdg-tools
+    procps
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    xdg-user-dirs
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-session";
+    description = "An alternative session manager ported from the original razor-session";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-sudo/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-sudo/default.nix
new file mode 100644
index 000000000000..73794bad7a1f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-sudo/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, qtbase
+, qttools
+, qtx11extras
+, qtsvg
+, kwindowsystem
+, liblxqt
+, libqtxdg
+, sudo
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-sudo";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-J7jiap3qZD+P0kGzt+b3wa16pxbS2fr3OmalhV5O9ro=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    qtsvg
+    kwindowsystem
+    liblxqt
+    libqtxdg
+    sudo
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-sudo";
+    description = "GUI frontend for sudo/su";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-themes/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-themes/default.nix
new file mode 100644
index 000000000000..a9a957091df4
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-themes/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "lxqt-themes";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-bmkvg62lNFRhSerKFSo2POP8MWa1ZrdSi2E9nWDQSRQ=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/lxqt-themes";
+    description = "Themes, graphics and icons for LXQt";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/obconf-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/obconf-qt/default.nix
new file mode 100644
index 000000000000..4ebd052a5ef4
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/obconf-qt/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, pcre
+, qtbase
+, qttools
+, qtx11extras
+, xorg
+, lxqt-build-tools
+, openbox
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "obconf-qt";
+  version = "0.16.3";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-ExBcP+j1uf9Y8f6YfZsqyD6YTx1PriS3w8I6qdqQGeE=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    pcre
+    qtbase
+    qtx11extras
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    xorg.libSM
+    openbox
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/obconf-qt";
+    description = "The Qt port of obconf, the Openbox configuration tool";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; unix;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/pavucontrol-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/pavucontrol-qt/default.nix
new file mode 100644
index 000000000000..f5b69b2e85fa
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/pavucontrol-qt/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, lxqt-build-tools
+, libpulseaudio
+, qtbase
+, qttools
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "pavucontrol-qt";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-eNhoqY1pak96x0xCypvgHmgCYjw4CYH8ABtWjIZrD3w=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    libpulseaudio
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/pavucontrol-qt";
+    description = "A Pulseaudio mixer in Qt (port of pavucontrol)";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/pcmanfm-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/pcmanfm-qt/default.nix
new file mode 100644
index 000000000000..ea2f60474574
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/pcmanfm-qt/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, libexif
+, lxqt-build-tools
+, lxqt-menu-data
+, qtbase
+, qttools
+, qtx11extras
+, qtimageformats
+, libfm-qt
+, menu-cache
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "pcmanfm-qt";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-+U8eV6oDpaJfTzejsVtbcaQrfSjWUnVpnIDbkvVCY/c=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    libexif
+    lxqt-menu-data
+    qtbase
+    qtx11extras
+    qtimageformats # add-on module to support more image file formats
+    libfm-qt
+    menu-cache
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  postPatch = ''
+    substituteInPlace config/pcmanfm-qt/lxqt/settings.conf.in --replace @LXQT_SHARE_DIR@ /run/current-system/sw/share/lxqt
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/pcmanfm-qt";
+    description = "File manager and desktop icon manager (Qt port of PCManFM and libfm)";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; unix;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/qlipper/default.nix b/nixpkgs/pkgs/desktops/lxqt/qlipper/default.nix
new file mode 100644
index 000000000000..91f11e8d1374
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/qlipper/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, qtbase
+, qttools
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "qlipper";
+  version = "5.1.2";
+
+  src = fetchFromGitHub {
+    owner = "pvanek";
+    repo = pname;
+    rev = version;
+    hash = "sha256-wHhaRtNiNCk5dtO2dVjRFDVicmYtrnCb2twx6h1m834=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Cross-platform clipboard history applet";
+    homepage = "https://github.com/pvanek/qlipper";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; unix;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/qps/default.nix b/nixpkgs/pkgs/desktops/lxqt/qps/default.nix
new file mode 100644
index 000000000000..0b6b81a4e39f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/qps/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, kwindowsystem
+, liblxqt
+, libqtxdg
+, lxqt-build-tools
+, gitUpdater
+, qtbase
+, qttools
+, qtx11extras
+}:
+
+mkDerivation rec {
+  pname = "qps";
+  version = "2.8.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-Xr+61t6LzoXASHuXrE5ro3eWGxMSDCVnck49dCtiaww=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    kwindowsystem
+    liblxqt
+    libqtxdg
+    qtbase
+    qtx11extras
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/qps";
+    description = "Qt based process manager";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; linux; # does not build on darwin
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/qterminal/default.nix b/nixpkgs/pkgs/desktops/lxqt/qterminal/default.nix
new file mode 100644
index 000000000000..0a1bf1f82d12
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/qterminal/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, lxqt-build-tools
+, qtermwidget
+, qtbase
+, qttools
+, qtx11extras
+, gitUpdater
+, nixosTests
+}:
+
+mkDerivation rec {
+  pname = "qterminal";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-nojNx351lYw0jVKEvzAIDP1WrZWcCAlfYMxNG95GcEo=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    qtermwidget
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  passthru.tests.test = nixosTests.terminal-emulators.qterminal;
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/qterminal";
+    description = "A lightweight Qt-based terminal emulator";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; unix;
+    maintainers = with maintainers; teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/qtermwidget/default.nix b/nixpkgs/pkgs/desktops/lxqt/qtermwidget/default.nix
new file mode 100644
index 000000000000..e92df23f2d5f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/qtermwidget/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, qtbase
+, qttools
+, lxqt-build-tools
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "qtermwidget";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-wYUOqAiBjnupX1ITbFMw7sAk42V37yDz9SrjVhE4FgU=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    broken = stdenv.isDarwin;
+    homepage = "https://github.com/lxqt/qtermwidget";
+    description = "A terminal emulator widget for Qt 5";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; unix;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/qtxdg-tools/default.nix b/nixpkgs/pkgs/desktops/lxqt/qtxdg-tools/default.nix
new file mode 100644
index 000000000000..10476a00cf73
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/qtxdg-tools/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, qtbase
+, libqtxdg
+, lxqt-build-tools
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "qtxdg-tools";
+  version = "3.12.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-3i5SVhEMHar09xoSfVCxJtPXeR81orcNR7pSIJImipQ=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    lxqt-build-tools
+  ];
+
+  buildInputs = [
+    qtbase
+    libqtxdg
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/qtxdg-tools";
+    description = "libqtxdg user tools";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/screengrab/default.nix b/nixpkgs/pkgs/desktops/lxqt/screengrab/default.nix
new file mode 100644
index 000000000000..59513dfebfda
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/screengrab/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qtbase
+, qttools
+, qtx11extras
+, qtsvg
+, kwindowsystem
+, libqtxdg
+, perl
+, xorg
+, autoPatchelfHook
+, gitUpdater
+}:
+
+mkDerivation rec {
+  pname = "screengrab";
+  version = "2.7.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-mmN3BQum7X0GWTUYauEN2mAo3GWdmtkIl2i84g5cp78=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    perl # needed by LXQtTranslateDesktop.cmake
+    qttools
+    autoPatchelfHook # fix libuploader.so and libextedit.so not found
+  ];
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    qtsvg
+    kwindowsystem
+    libqtxdg
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/screengrab";
+    description = "Crossplatform tool for fast making screenshots";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = teams.lxqt.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/lxqt/xdg-desktop-portal-lxqt/default.nix b/nixpkgs/pkgs/desktops/lxqt/xdg-desktop-portal-lxqt/default.nix
new file mode 100644
index 000000000000..622a445bb9fd
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lxqt/xdg-desktop-portal-lxqt/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, kwindowsystem
+, libexif
+, libfm-qt
+, lxqt-qtplugin
+, menu-cache
+, qtx11extras
+, gitUpdater
+, extraQtStyles ? []
+}:
+
+mkDerivation rec {
+  pname = "xdg-desktop-portal-lxqt";
+  version = "0.5.0";
+
+  src = fetchFromGitHub {
+    owner = "lxqt";
+    repo = pname;
+    rev = version;
+    hash = "sha256-6yfLjDK8g8cpeeyuFUEjERTLLn6h3meKjD2Eb7Cj9qY=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  buildInputs = [
+    kwindowsystem
+    libexif
+    libfm-qt
+    lxqt-qtplugin
+    menu-cache
+    qtx11extras
+  ]
+  ++ extraQtStyles;
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    homepage = "https://github.com/lxqt/xdg-desktop-portal-lxqt";
+    description = "Backend implementation for xdg-desktop-portal that is using Qt/KF5/libfm-qt";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}