summary refs log tree commit diff
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-03-02 20:58:05 +0300
committerNikolay Amiantov <ab@fmap.me>2015-03-05 20:49:26 +0300
commitc532beeb0d0515610b824abd9a1dd995086e8a20 (patch)
treebf14dea91a159e44db91185bf7596904be62c7a9
parent02ce9456933838917d32b65bc5bdd3a6a2ffdeb0 (diff)
downloadnixlib-c532beeb0d0515610b824abd9a1dd995086e8a20.tar
nixlib-c532beeb0d0515610b824abd9a1dd995086e8a20.tar.gz
nixlib-c532beeb0d0515610b824abd9a1dd995086e8a20.tar.bz2
nixlib-c532beeb0d0515610b824abd9a1dd995086e8a20.tar.lz
nixlib-c532beeb0d0515610b824abd9a1dd995086e8a20.tar.xz
nixlib-c532beeb0d0515610b824abd9a1dd995086e8a20.tar.zst
nixlib-c532beeb0d0515610b824abd9a1dd995086e8a20.zip
sddm: add package
-rw-r--r--pkgs/applications/display-managers/sddm/cmake_paths.patch55
-rw-r--r--pkgs/applications/display-managers/sddm/default.nix47
-rw-r--r--pkgs/top-level/all-packages.nix5
3 files changed, 106 insertions, 1 deletions
diff --git a/pkgs/applications/display-managers/sddm/cmake_paths.patch b/pkgs/applications/display-managers/sddm/cmake_paths.patch
new file mode 100644
index 000000000000..7deb3e2e1bd9
--- /dev/null
+++ b/pkgs/applications/display-managers/sddm/cmake_paths.patch
@@ -0,0 +1,55 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4d6e0a9..df4ad28 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -77,7 +77,9 @@ find_package(Qt5LinguistTools REQUIRED)
+ 
+ # find qt5 imports dir
+ get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
+-exec_program(${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_QML" RETURN_VALUE return_code OUTPUT_VARIABLE QT_IMPORTS_DIR)
++if(NOT QT_IMPORTS_DIR)
++    exec_program(${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_QML" RETURN_VALUE return_code OUTPUT_VARIABLE QT_IMPORTS_DIR)
++endif()
+ 
+ # Set components version
+ set(COMPONENTS_VERSION 2.0)
+diff --git a/data/man/sddm.conf.rst.in b/data/man/sddm.conf.rst.in
+index 6a28224..798bc5c 100644
+--- a/data/man/sddm.conf.rst.in
++++ b/data/man/sddm.conf.rst.in
+@@ -65,6 +65,10 @@ OPTIONS
+ 	Path of the X server.
+ 	Default value is "/usr/bin/X".
+ 
++`XephyrPath=`
++	Path of the Xephyr.
++	Default value is "/usr/bin/Xephyr".
++
+ `XauthPath=`
+ 	Path of the Xauth.
+ 	Default value is "/usr/bin/xauth".
+diff --git a/src/common/Configuration.h b/src/common/Configuration.h
+index 72aa6f4..854cc22 100644
+--- a/src/common/Configuration.h
++++ b/src/common/Configuration.h
+@@ -54,6 +54,7 @@ namespace SDDM {
+         // TODO: Not absolutely sure if everything belongs here. Xsessions, VT and probably some more seem universal
+         Section(XDisplay,
+             Entry(ServerPath,          QString,     _S("/usr/bin/X"),                           _S("X server path"));
++            Entry(XephyrPath,          QString,     _S("/usr/bin/Xephyr"),                      _S("Xephyr path"));
+             Entry(XauthPath,           QString,     _S("/usr/bin/xauth"),                       _S("Xauth path"));
+             Entry(SessionDir,          QString,     _S("/usr/share/xsessions"),                 _S("Session description directory"));
+             Entry(SessionCommand,      QString,     _S(SESSION_COMMAND),                        _S("Xsession script path\n"
+diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp
+index f10ad82..cb9de3f 100644
+--- a/src/daemon/XorgDisplayServer.cpp
++++ b/src/daemon/XorgDisplayServer.cpp
+@@ -136,7 +136,7 @@ namespace SDDM {
+         if (daemonApp->testing()) {
+             QStringList args;
+             args << m_display << "-ac" << "-br" << "-noreset" << "-screen" << "800x600";
+-            process->start("/usr/bin/Xephyr", args);
++            process->start(mainConfig.XDisplay.XephyrPath.get(), args);
+         } else {
+             // set process environment
+             QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
diff --git a/pkgs/applications/display-managers/sddm/default.nix b/pkgs/applications/display-managers/sddm/default.nix
new file mode 100644
index 000000000000..73a188af0cf5
--- /dev/null
+++ b/pkgs/applications/display-managers/sddm/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchpatch, makeWrapper, fetchFromGitHub, cmake, pkgconfig, libxcb, libpthreadstubs
+, libXdmcp, libXau, qt5, pam, systemd }:
+
+let
+  version = "0.11.0";
+in
+stdenv.mkDerivation rec {
+  name = "sddm-${version}";
+
+  src = fetchFromGitHub {
+    owner = "sddm";
+    repo = "sddm";
+    rev = "v${version}";
+    sha256 = "1s1gm0xvgwzrpxgni3ngdj8phzg21gkk1jyiv2l2i5ayl0jdm7ig";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig qt5.tools makeWrapper ];
+
+  buildInputs = [ libxcb libpthreadstubs libXdmcp libXau qt5.base pam systemd ];
+
+  patches = [ (fetchpatch {
+                url = "https://github.com/sddm/sddm/commit/9bc21ee7da5de6b2531d47d1af4d7b0a169990b9.patch";
+                sha256 = "1pda0wf4xljdadja7iyh5c48h0347imadg9ya1dw5slgb7w1d94l";
+              })
+              ./cmake_paths.patch
+            ];
+
+  cmakeFlags = [ "-DCONFIG_FILE=/etc/sddm.conf" ];
+
+  preConfigure = ''
+    export cmakeFlags="$cmakeFlags -DQT_IMPORTS_DIR=$out/lib/qt5/qml -DCMAKE_INSTALL_SYSCONFDIR=$out/etc -DSYSTEMD_SYSTEM_UNIT_DIR=$out/lib/systemd/system"
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/sddm-greeter \
+      --set QML2_IMPORT_PATH "${qt5.declarative}/lib/qt5/qml/"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "QML based X11 display manager";
+    homepage = http://launchpad.net/lightdm;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1e1506b3338d..aa91dbd48c05 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -11449,11 +11449,14 @@ let
 
   printrun = callPackage ../applications/misc/printrun { };
 
+  sddm = callPackage ../applications/display-managers/sddm {
+    qt5 = qt54;
+  };
+
   slim = callPackage ../applications/display-managers/slim {
     libpng = libpng12;
   };
 
-
   smartgithg = callPackage ../applications/version-management/smartgithg { };
 
   slimThemes = recurseIntoAttrs (import ../applications/display-managers/slim/themes.nix {