about summary refs log tree commit diff
path: root/pkgs/applications/display-managers/sddm
diff options
context:
space:
mode:
authorThomas Tuegel2015-12-11 06:58:04 -0600
committerThomas Tuegel2015-12-11 07:09:07 -0600
commit78a6d62b4894089fe58c1706cda7c2b801294728 (patch)
tree4ff6414c70b18880d4d11fc5c573804d39a8978b /pkgs/applications/display-managers/sddm
parent34f2addf11e8f210f151c75a40e367558c89e346 (diff)
sddm: wrap to include themes
Diffstat (limited to 'pkgs/applications/display-managers/sddm')
-rw-r--r--pkgs/applications/display-managers/sddm/default.nix106
1 files changed, 66 insertions, 40 deletions
diff --git a/pkgs/applications/display-managers/sddm/default.nix b/pkgs/applications/display-managers/sddm/default.nix
index dc891605d1b6..8e5174869250 100644
--- a/pkgs/applications/display-managers/sddm/default.nix
+++ b/pkgs/applications/display-managers/sddm/default.nix
@@ -1,54 +1,80 @@
-{ stdenv, fetchpatch, makeQtWrapper, fetchFromGitHub, cmake, pkgconfig, libxcb, libpthreadstubs
-, libXdmcp, libXau, qtbase, qtdeclarative, qttools, pam, systemd }:
+{ stdenv, makeQtWrapper, fetchFromGitHub
+, cmake, pkgconfig, libxcb, libpthreadstubs, lndir
+, libXdmcp, libXau, qtbase, qtdeclarative, qttools, pam, systemd
+, themes
+}:
 
 let
   version = "0.13.0";
-in
-stdenv.mkDerivation rec {
-  name = "sddm-${version}";
 
-  src = fetchFromGitHub {
-    owner = "sddm";
-    repo = "sddm";
-    rev = "v${version}";
-    sha256 = "0c3q8lpb123m9k5x3i71mm8lmyzhknw77zxh89yfl8qmn6zd61i1";
-  };
+  unwrapped = stdenv.mkDerivation rec {
+    name = "sddm-unwrapped-${version}";
 
-  patches = [
-    ./0001-ignore-config-mtime.patch
-    ./0002-fix-ConfigReader-QStringList-corruption.patch
-  ];
+    src = fetchFromGitHub {
+      owner = "sddm";
+      repo = "sddm";
+      rev = "v${version}";
+      sha256 = "0c3q8lpb123m9k5x3i71mm8lmyzhknw77zxh89yfl8qmn6zd61i1";
+    };
 
-  nativeBuildInputs = [ cmake makeQtWrapper pkgconfig qttools ];
+    patches = [
+      ./0001-ignore-config-mtime.patch
+      ./0002-fix-ConfigReader-QStringList-corruption.patch
+    ];
 
-  buildInputs = [ libxcb libpthreadstubs libXdmcp libXau qtbase qtdeclarative pam systemd ];
+    nativeBuildInputs = [ cmake pkgconfig qttools ];
 
-  cmakeFlags = [
-    "-DCONFIG_FILE=/etc/sddm.conf"
-    # Set UID_MIN and UID_MAX so that the build script won't try
-    # to read them from /etc/login.defs (fails in chroot).
-    # The values come from NixOS; they may not be appropriate
-    # for running SDDM outside NixOS, but that configuration is
-    # not supported anyway.
-    "-DUID_MIN=1000"
-    "-DUID_MAX=29999"
-  ];
+    buildInputs = [
+      libxcb libpthreadstubs libXdmcp libXau qtbase qtdeclarative pam systemd
+    ];
 
-  preConfigure = ''
-    export cmakeFlags="$cmakeFlags -DQT_IMPORTS_DIR=$out/lib/qt5/qml -DCMAKE_INSTALL_SYSCONFDIR=$out/etc -DSYSTEMD_SYSTEM_UNIT_DIR=$out/lib/systemd/system"
-  '';
+    cmakeFlags = [
+      "-DCONFIG_FILE=/etc/sddm.conf"
+      # Set UID_MIN and UID_MAX so that the build script won't try
+      # to read them from /etc/login.defs (fails in chroot).
+      # The values come from NixOS; they may not be appropriate
+      # for running SDDM outside NixOS, but that configuration is
+      # not supported anyway.
+      "-DUID_MIN=1000"
+      "-DUID_MAX=29999"
+    ];
 
-  postInstall = ''
-    wrapQtProgram $out/bin/sddm
-    wrapQtProgram $out/bin/sddm-greeter
-  '';
+    preConfigure = ''
+      export cmakeFlags="$cmakeFlags -DQT_IMPORTS_DIR=$out/lib/qt5/qml -DCMAKE_INSTALL_SYSCONFDIR=$out/etc -DSYSTEMD_SYSTEM_UNIT_DIR=$out/lib/systemd/system"
+    '';
 
-  enableParallelBuilding = true;
+    enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
-    description = "QML based X11 display manager";
-    homepage = https://github.com/sddm/sddm;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ abbradar ];
+    meta = with stdenv.lib; {
+      description = "QML based X11 display manager";
+      homepage = https://github.com/sddm/sddm;
+      platforms = platforms.linux;
+      maintainers = with maintainers; [ abbradar ];
+    };
   };
+
+in
+
+stdenv.mkDerivation {
+  name = "sddm-${version}";
+  phases = "installPhase";
+
+  nativeBuildInputs = [ lndir makeQtWrapper ];
+  buildInputs = [ unwrapped ] ++ themes;
+  inherit themes;
+  inherit unwrapped;
+
+  installPhase = ''
+    makeQtWrapper "$unwrapped/bin/sddm" "$out/bin/sddm"
+
+    mkdir -p "$out/share/sddm"
+    for pkg in $unwrapped $themes; do
+        local sddmDir="$pkg/share/sddm"
+        if [[ -d "$sddmDir" ]]; then
+            lndir -silent "$sddmDir" "$out/share/sddm"
+        fi
+    done
+  '';
+
+  inherit (unwrapped) meta;
 }