From 0fdd641b21631dc64db71b81caf77418b88c46f8 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sun, 30 Mar 2014 19:32:10 +0200 Subject: [PATCH] Ensure that slim's theme applies to slimlock --- .../services/x11/display-managers/slim.nix | 30 ++++++------------ .../display-managers/slim/default.nix | 23 ++------------ .../display-managers/slim/runtime-paths.patch | 31 ++++++++++++++++--- 3 files changed, 38 insertions(+), 46 deletions(-) diff --git a/nixos/modules/services/x11/display-managers/slim.nix b/nixos/modules/services/x11/display-managers/slim.nix index b4f42ec7649..cfe3ee53224 100644 --- a/nixos/modules/services/x11/display-managers/slim.nix +++ b/nixos/modules/services/x11/display-managers/slim.nix @@ -7,8 +7,6 @@ let dmcfg = config.services.xserver.displayManager; cfg = dmcfg.slim; - - slimPackage = cfg.package; slimConfig = pkgs.writeText "slim.cfg" '' @@ -35,7 +33,7 @@ let ln -s * default ''; }; - in if cfg.theme == null then "${slimPackage}/share/slim/themes" else unpackedTheme; + in if cfg.theme == null then "${pkgs.slim}/share/slim/themes" else unpackedTheme; in @@ -82,22 +80,6 @@ in the focus is placed on the password. ''; }; - - package = mkOption { - type = types.package; - default = pkgs.slim; - description = '' - Configure slim package. - ''; - example = '' - pkgs.slim.override { - theme = pkgs.fetchurl { - url = http://download.berlios.de/slim/slim-wave.tar.gz; - sha256 = "0ndr419i5myzcylvxb89m9grl2xyq6fbnyc3lkd711mzlmnnfxdy"; - }; - }; - ''; - }; autoLogin = mkOption { type = types.bool; @@ -125,9 +107,15 @@ in { SLIM_CFGFILE = slimConfig; SLIM_THEMESDIR = slimThemesDir; }; - execCmd = "exec ${slimPackage}/bin/slim"; + execCmd = "exec ${pkgs.slim}/bin/slim"; }; + services.xserver.displayManager.sessionCommands = + '' + # Export the config/themes for slimlock. + export SLIM_THEMESDIR=${slimThemesDir} + ''; + # Allow null passwords so that the user can login as root on the # installation CD. security.pam.services.slim = { allowNullPassword = true; startSession = true; }; @@ -135,7 +123,7 @@ in # Allow slimlock to work. security.pam.services.slimlock = {}; - environment.systemPackages = [ slimPackage ]; + environment.systemPackages = [ pkgs.slim ]; }; diff --git a/pkgs/applications/display-managers/slim/default.nix b/pkgs/applications/display-managers/slim/default.nix index caf8a7c4222..bf2c34b9318 100644 --- a/pkgs/applications/display-managers/slim/default.nix +++ b/pkgs/applications/display-managers/slim/default.nix @@ -1,20 +1,5 @@ { stdenv, fetchurl, cmake, pkgconfig, xorg, libjpeg, libpng -, fontconfig, freetype, pam, dbus_libs, makeWrapper, pkgs, theme ? null }: - -let - slimThemesDir = - let - unpackedTheme = pkgs.stdenv.mkDerivation { - name = "slim-theme"; - buildCommand = '' - ensureDir $out - cd $out - unpackFile ${theme} - ln -s * default - ''; - }; - in if theme == null then "$out/share/slim/themes" else unpackedTheme; -in +, fontconfig, freetype, pam, dbus_libs, makeWrapper, pkgs }: stdenv.mkDerivation rec { name = "slim-1.3.6"; @@ -35,7 +20,7 @@ stdenv.mkDerivation rec { ./run-once.patch ]; - preConfigure = "substituteInPlace CMakeLists.txt --replace /etc $out/etc --replace /lib $out/lib"; + preConfigure = "substituteInPlace CMakeLists.txt --replace /lib $out/lib"; cmakeFlags = [ "-DUSE_PAM=1" ]; @@ -47,10 +32,6 @@ stdenv.mkDerivation rec { xorg.libX11 xorg.libXext xorg.libXrandr xorg.libXrender xorg.libXmu xorg.libXft makeWrapper ]; - postInstall = '' - wrapProgram $out/bin/slimlock --set SLIM_THEMESDIR "${slimThemesDir}" --set SLIM_CFGFILE "$out/etc/slim.cfg" - ''; - NIX_CFLAGS_LINK = "-lXmu"; meta = { diff --git a/pkgs/applications/display-managers/slim/runtime-paths.patch b/pkgs/applications/display-managers/slim/runtime-paths.patch index 2e4868092e5..5a8e07bfbf0 100644 --- a/pkgs/applications/display-managers/slim/runtime-paths.patch +++ b/pkgs/applications/display-managers/slim/runtime-paths.patch @@ -1,6 +1,6 @@ -diff -ru -x '*~' slim-1.3.6-orig/app.cpp slim-1.3.6/app.cpp +diff -ru slim-1.3.6-orig/app.cpp slim-1.3.6/app.cpp --- slim-1.3.6-orig/app.cpp 2013-10-02 00:38:05.000000000 +0200 -+++ slim-1.3.6/app.cpp 2013-10-15 11:02:55.629263422 +0200 ++++ slim-1.3.6/app.cpp 2014-03-30 19:01:04.115414201 +0200 @@ -200,7 +200,9 @@ /* Read configuration and theme */ @@ -23,8 +23,31 @@ diff -ru -x '*~' slim-1.3.6-orig/app.cpp slim-1.3.6/app.cpp themeName = cfg->getOption("current_theme"); string::size_type pos; if ((pos = themeName.find(",")) != string::npos) { ---- slim-1.3.6-orig/slimlock.cpp 2014-02-05 01:58:01.576560731 +0400 -+++ slim-1.3.6/slimlock.cpp 2014-02-05 02:11:16.587634246 +0400 +diff -ru slim-1.3.6-orig/CMakeLists.txt slim-1.3.6/CMakeLists.txt +--- slim-1.3.6-orig/CMakeLists.txt 2013-10-02 00:38:05.000000000 +0200 ++++ slim-1.3.6/CMakeLists.txt 2014-03-30 19:16:48.445069729 +0200 +@@ -23,7 +23,7 @@ + + set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation Directory") + set(PKGDATADIR "${CMAKE_INSTALL_PREFIX}/share/slim") +-set(SYSCONFDIR "/etc") ++set(SYSCONFDIR "$ENV{out}/etc") + set(LIBDIR "/lib") + set(MANDIR "${CMAKE_INSTALL_PREFIX}/share/man") + +@@ -40,7 +40,7 @@ + set(SLIM_DEFINITIONS ${SLIM_DEFINITIONS} "-DPACKAGE=\"slim\"") + set(SLIM_DEFINITIONS ${SLIM_DEFINITIONS} "-DVERSION=\"${SLIM_VERSION}\"") + set(SLIM_DEFINITIONS ${SLIM_DEFINITIONS} "-DPKGDATADIR=\"${PKGDATADIR}\"") +-set(SLIM_DEFINITIONS ${SLIM_DEFINITIONS} "-DSYSCONFDIR=\"${SYSCONFDIR}\"") ++set(SLIM_DEFINITIONS ${SLIM_DEFINITIONS} "-DSYSCONFDIR=\"/etc\"") + + # Flags + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -g -O2") +Only in slim-1.3.6: CMakeLists.txt~ +diff -ru slim-1.3.6-orig/slimlock.cpp slim-1.3.6/slimlock.cpp +--- slim-1.3.6-orig/slimlock.cpp 2013-10-02 00:38:05.000000000 +0200 ++++ slim-1.3.6/slimlock.cpp 2014-03-30 19:01:04.115414201 +0200 @@ -106,13 +106,17 @@ unsigned int cfg_passwd_timeout; // Read user's current theme