diff options
-rw-r--r-- | nixos/modules/services/x11/desktop-managers/plasma5.nix | 1 | ||||
-rw-r--r-- | nixos/modules/services/x11/display-managers/sddm.nix | 26 | ||||
-rw-r--r-- | pkgs/applications/display-managers/sddm/default.nix | 159 | ||||
-rw-r--r-- | pkgs/applications/display-managers/sddm/sddm-ignore-config-mtime.patch (renamed from pkgs/applications/display-managers/sddm/0001-ignore-config-mtime.patch) | 0 | ||||
-rw-r--r-- | pkgs/applications/display-managers/sddm/sddm-nix-profiles.patch | 24 | ||||
-rw-r--r-- | pkgs/applications/display-managers/sddm/series | 2 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 11 |
7 files changed, 94 insertions, 129 deletions
diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix index 27678fda1b50..0a64429c24f6 100644 --- a/nixos/modules/services/x11/desktop-managers/plasma5.nix +++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix @@ -190,7 +190,6 @@ in services.xserver.displayManager.sddm = { theme = "breeze"; - package = pkgs.sddmPlasma5; }; security.pam.services.kde = { allowNullPassword = true; }; diff --git a/nixos/modules/services/x11/display-managers/sddm.nix b/nixos/modules/services/x11/display-managers/sddm.nix index 2eb7ddcb1ec0..bf516235eb25 100644 --- a/nixos/modules/services/x11/display-managers/sddm.nix +++ b/nixos/modules/services/x11/display-managers/sddm.nix @@ -9,7 +9,7 @@ let cfg = dmcfg.sddm; xEnv = config.systemd.services."display-manager".environment; - sddm = cfg.package; + inherit (pkgs) sddm; xserverWrapper = pkgs.writeScript "xserver-wrapper" '' #!/bin/sh @@ -37,8 +37,8 @@ let [Theme] Current=${cfg.theme} - ThemeDir=${sddm}/share/sddm/themes - FacesDir=${sddm}/share/sddm/faces + ThemeDir=/run/current-system/sw/share/sddm/themes + FacesDir=/run/current-system/sw/share/sddm/faces [Users] MaximumUid=${toString config.ids.uids.nixbld} @@ -105,15 +105,6 @@ in ''; }; - package = mkOption { - type = types.package; - default = pkgs.sddm; - description = '' - The SDDM package to install. - The default package can be overridden to provide extra themes. - ''; - }; - autoNumlock = mkOption { type = types.bool; default = false; @@ -205,7 +196,13 @@ in services.xserver.displayManager.job = { logsXsession = true; - execCmd = "exec ${sddm}/bin/sddm"; + environment = { + # Take themes system environment + NIX_PROFILES = "/run/current-system/sw"; + XDG_DATA_DIRS = "/run/current-system/sw/share"; + }; + + execCmd = "exec /run/current-system/sw/bin/sddm"; }; security.pam.services = { @@ -254,7 +251,8 @@ in users.extraGroups.sddm.gid = config.ids.gids.sddm; - services.dbus.packages = [ sddm.unwrapped ]; + environment.systemPackages = [ sddm ]; + services.dbus.packages = [ sddm ]; # To enable user switching, allow sddm to allocate TTYs/displays dynamically. services.xserver.tty = null; diff --git a/pkgs/applications/display-managers/sddm/default.nix b/pkgs/applications/display-managers/sddm/default.nix index 07c1e8cee331..d54fb455fcb1 100644 --- a/pkgs/applications/display-managers/sddm/default.nix +++ b/pkgs/applications/display-managers/sddm/default.nix @@ -1,121 +1,72 @@ -{ stdenv, lib, makeQtWrapper, fetchFromGitHub, fetchpatch +{ mkDerivation, lib, copyPathsToStore, fetchFromGitHub, fetchpatch , cmake, extra-cmake-modules, pkgconfig, libxcb, libpthreadstubs, lndir , libXdmcp, libXau, qtbase, qtdeclarative, qttools, pam, systemd -, themes }: let - version = "0.14.0"; - - unwrapped = stdenv.mkDerivation rec { - name = "sddm-unwrapped-${version}"; - - src = fetchFromGitHub { - owner = "sddm"; - repo = "sddm"; - rev = "v${version}"; - sha256 = "0wwid23kw0725zpw67zchalg9mmharr7sn4yzhijq7wqpsczjfxj"; - }; - - patches = [ - ./0001-ignore-config-mtime.patch - (fetchpatch { /* Fix display of user avatars. */ - url = https://github.com/sddm/sddm/commit/ecb903e48822bd90650bdd64fe80754e3e9664cb.patch; - sha256 = "0zm88944pwdad8grmv0xwnxl23xml85ryc71x2xac233jxdyx6ms"; - }) - ]; - - postPatch = - # Module Qt5::Test must be included in `find_package` before it is used. - '' - sed -i CMakeLists.txt -e '/find_package(Qt5/ s|)| Test)|' - ''; - - nativeBuildInputs = [ cmake extra-cmake-modules pkgconfig qttools ]; - - buildInputs = [ - libxcb libpthreadstubs libXdmcp libXau pam systemd - ]; - - propagatedBuildInputs = [ - qtbase qtdeclarative - ]; - - 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" - ]; - - preConfigure = '' - export cmakeFlags="$cmakeFlags -DQT_IMPORTS_DIR=$out/$qtQmlPrefix -DCMAKE_INSTALL_SYSCONFDIR=$out/etc -DSYSTEMD_SYSTEM_UNIT_DIR=$out/lib/systemd/system" - ''; - enableParallelBuilding = true; - - postInstall = '' - # remove empty scripts - rm "$out/share/sddm/scripts/Xsetup" "$out/share/sddm/scripts/Xstop" - ''; + version = "0.14.0"; - meta = with stdenv.lib; { - description = "QML based X11 display manager"; - homepage = "https://github.com/sddm/sddm"; - platforms = platforms.linux; - maintainers = with maintainers; [ abbradar ttuegel ]; - }; + /* Fix display of user avatars. */ + patchFixUserAvatars = fetchpatch { + url = https://github.com/sddm/sddm/commit/ecb903e48822bd90650bdd64fe80754e3e9664cb.patch; + sha256 = "0zm88944pwdad8grmv0xwnxl23xml85ryc71x2xac233jxdyx6ms"; }; -in - -stdenv.mkDerivation { - name = "sddm-${version}"; - - nativeBuildInputs = [ lndir makeQtWrapper ]; - buildInputs = [ unwrapped ] ++ themes; - themes = map (pkg: pkg.out or pkg) themes; - inherit unwrapped; - - unpackPhase = "true"; - configurePhase = "runHook preConfigure; runHook postConfigure"; - buildPhase = "runHook preBuild; runHook postBuild"; +in mkDerivation rec { + name = "sddm-unwrapped-${version}"; - installPhase = '' - runHook preInstall - - propagated= - for i in $unwrapped $themes; do - findInputs $i propagated propagated-user-env-packages - if [ -z "$crossConfig" ]; then - findInputs $i propagated propagated-native-build-inputs - else - findInputs $i propagated propagated-build-inputs - fi - done + src = fetchFromGitHub { + owner = "sddm"; + repo = "sddm"; + rev = "v${version}"; + sha256 = "0wwid23kw0725zpw67zchalg9mmharr7sn4yzhijq7wqpsczjfxj"; + }; - for pkg in $propagated; do - addToSearchPath RUNTIME_XDG_DATA_DIRS "$pkg/share" - addToSearchPath RUNTIME_XDG_CONFIG_DIRS "$pkg/etc/xdg" - done + patches = + copyPathsToStore (lib.readPathsFromFile ./. ./series) + ++ [ patchFixUserAvatars ]; - mkdir -p "$out/bin" - makeQtWrapper "$unwrapped/bin/sddm" "$out/bin/sddm" + postPatch = + # Module Qt5::Test must be included in `find_package` before it is used. + '' + sed -i CMakeLists.txt -e '/find_package(Qt5/ s|)| Test)|' + ''; - 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 + nativeBuildInputs = [ cmake extra-cmake-modules pkgconfig qttools ]; + + buildInputs = [ + libxcb libpthreadstubs libXdmcp libXau pam systemd + ]; + + propagatedBuildInputs = [ + qtbase qtdeclarative + ]; + + 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" + ]; + + preConfigure = '' + export cmakeFlags="$cmakeFlags -DQT_IMPORTS_DIR=$out/$qtQmlPrefix -DCMAKE_INSTALL_SYSCONFDIR=$out/etc -DSYSTEMD_SYSTEM_UNIT_DIR=$out/lib/systemd/system" + ''; - runHook postInstall + postInstall = '' + # remove empty scripts + rm "$out/share/sddm/scripts/Xsetup" "$out/share/sddm/scripts/Xstop" ''; - inherit (unwrapped) meta; + meta = with lib; { + description = "QML based X11 display manager"; + homepage = "https://github.com/sddm/sddm"; + platforms = platforms.linux; + maintainers = with maintainers; [ abbradar ttuegel ]; + }; } diff --git a/pkgs/applications/display-managers/sddm/0001-ignore-config-mtime.patch b/pkgs/applications/display-managers/sddm/sddm-ignore-config-mtime.patch index 836df2de292d..836df2de292d 100644 --- a/pkgs/applications/display-managers/sddm/0001-ignore-config-mtime.patch +++ b/pkgs/applications/display-managers/sddm/sddm-ignore-config-mtime.patch diff --git a/pkgs/applications/display-managers/sddm/sddm-nix-profiles.patch b/pkgs/applications/display-managers/sddm/sddm-nix-profiles.patch new file mode 100644 index 000000000000..1783164af46d --- /dev/null +++ b/pkgs/applications/display-managers/sddm/sddm-nix-profiles.patch @@ -0,0 +1,24 @@ +Index: sddm-0.14.0/src/daemon/Greeter.cpp +=================================================================== +--- sddm-0.14.0.orig/src/daemon/Greeter.cpp ++++ sddm-0.14.0/src/daemon/Greeter.cpp +@@ -157,18 +157,7 @@ namespace SDDM { + << args; + + // greeter environment +- QProcessEnvironment env; +- QProcessEnvironment sysenv = QProcessEnvironment::systemEnvironment(); +- +- insertEnvironmentList({QStringLiteral("LANG"), QStringLiteral("LANGUAGE"), +- QStringLiteral("LC_CTYPE"), QStringLiteral("LC_NUMERIC"), QStringLiteral("LC_TIME"), QStringLiteral("LC_COLLATE"), +- QStringLiteral("LC_MONETARY"), QStringLiteral("LC_MESSAGES"), QStringLiteral("LC_PAPER"), QStringLiteral("LC_NAME"), +- QStringLiteral("LC_ADDRESS"), QStringLiteral("LC_TELEPHONE"), QStringLiteral("LC_MEASUREMENT"), QStringLiteral("LC_IDENTIFICATION"), +- QStringLiteral("LD_LIBRARY_PATH"), +- QStringLiteral("QML2_IMPORT_PATH"), +- QStringLiteral("QT_PLUGIN_PATH"), +- QStringLiteral("XDG_DATA_DIRS") +- }, sysenv, env); ++ QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + + env.insert(QStringLiteral("PATH"), mainConfig.Users.DefaultPath.get()); + env.insert(QStringLiteral("DISPLAY"), m_display->name()); diff --git a/pkgs/applications/display-managers/sddm/series b/pkgs/applications/display-managers/sddm/series new file mode 100644 index 000000000000..703fb6a3fe14 --- /dev/null +++ b/pkgs/applications/display-managers/sddm/series @@ -0,0 +1,2 @@ +sddm-ignore-config-mtime.patch +sddm-nix-profiles.patch diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ec153fd4666e..13ec940b1c91 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15866,16 +15866,7 @@ with pkgs; printrun = callPackage ../applications/misc/printrun { }; - sddm = libsForQt5.callPackage ../applications/display-managers/sddm { - themes = []; # extra themes, etc. - }; - - sddmPlasma5 = sddm.override { - themes = [ - plasma5.plasma-workspace - pkgs.breeze-icons - ]; - }; + sddm = libsForQt5.callPackage ../applications/display-managers/sddm { }; skrooge = libsForQt5.callPackage ../applications/office/skrooge {}; |